<?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>52128</bug_id>
          
          <creation_ts>2011-01-09 01:52:38 -0800</creation_ts>
          <short_desc>ISO-8859-8 Hebrew text displayed reversed with dir=&quot;rtl&quot;</short_desc>
          <delta_ts>2011-02-14 12:22:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://berry.co.il/disco/chalordeluna/playme.php</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Moskovich">playmobil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>jshin</cc>
    
    <cc>mitz</cc>
    
    <cc>ophers</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>331404</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-01-09 01:52:38 -0800</bug_when>
    <thetext>Chromium bug: http://crbug.com/60403

This page declares it&apos;s encoding as ISO-8859-8 using a meta tag.  Content is in Logical order.

Safari/Chrome incorrectly display the text in Visual order.
IE/FF/Opera display the text correctly in Logical order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331409</commentid>
    <comment_count>1</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-01-09 02:19:36 -0800</bug_when>
    <thetext>*** Bug 42048 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331410</commentid>
    <comment_count>2</comment_count>
      <attachid>78345</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-01-09 02:20:44 -0800</bug_when>
    <thetext>Created attachment 78345
Testcase by Ilya Konstantionov</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331539</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-01-10 01:33:23 -0800</bug_when>
    <thetext>ap: This bug is about interpreting Visual Hebrew as Logical Hebrew - i.e. purely encoding related, so if my understanding is correct then dir=rtl doesn&apos;t seem relevant.

FYI: Mozilla has code to detect logical/visual Hebrew: 
http://mxr.mozilla.org/mozilla-central/source/extensions/universalchardet/src/base/nsHebrewProber.cpp

Wikipedia says that the ISO-8859-8 encoding can represent either logical or visual Hebrew so my guess is that we need to add similar logic in WebKit.

While this doesn&apos;t affect many modern sites, there is a long tail of legacy sites that are affecte. It appears that WebKit is the only major browsing engine that doesn&apos;t display these correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331540</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-01-10 01:34:08 -0800</bug_when>
    <thetext>ap: Whoops make that &quot;interpreting logical Hebrew as visual Hebrew&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331550</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-10 02:03:45 -0800</bug_when>
    <thetext>We match Firefox if there&apos;s no dir=&quot;rtl&quot;. I&apos;m no expert, but it seems relevant to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331806</commentid>
    <comment_count>6</comment_count>
    <who name="Opher Shachar">ophers</who>
    <bug_when>2011-01-10 12:05:44 -0800</bug_when>
    <thetext>jm: I, humbly, refer you to my comment in my bug report https://bugs.webkit.org/show_bug.cgi?id=42048#c0
My before last sentence reads:
     When an element has &apos;dir=rtl&apos; attribute IE and FF treat the &quot;primary display 
     direction&quot; as being Right-To-Left. Chrome does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331844</commentid>
    <comment_count>7</comment_count>
    <who name="Opher Shachar">ophers</who>
    <bug_when>2011-01-10 12:31:09 -0800</bug_when>
    <thetext>jm: The Wikipedia article is wrong in making that point.
ISO-8859-8 in HTML has *always* and *still* refer exclusively to &quot;visual order&quot;.

It&apos;s true that in XML it would, probably, be treated as visual ordering. But, I have yet to see an XML document encoded &apos;iso-8859-8&apos; outside of textbook examples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332746</commentid>
    <comment_count>8</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-01-11 15:47:48 -0800</bug_when>
    <thetext>Following change fixes the problem.

Index: RenderBlockLineLayout.cpp
===================================================================
--- RenderBlockLineLayout.cpp   (revision 75315)
+++ RenderBlockLineLayout.cpp   (working copy)
@@ -269,7 +269,7 @@
         parentBox-&gt;addToLine(box);

         bool visuallyOrdered = r-&gt;m_object-&gt;style()-&gt;visuallyOrdered();
-        box-&gt;setBidiLevel(visuallyOrdered ? 0 : r-&gt;level());
+        box-&gt;setBidiLevel(visuallyOrdered ? (style()-&gt;isLeftToRightDirection()
? 0 : 1) : r-&gt;level());

         if (box-&gt;isInlineTextBox()) {
             InlineTextBox* text = static_cast&lt;InlineTextBox*&gt;(box);




One question is how to handle the following case:
&lt;div&gt;שנב &lt;span dir=rtl&gt;גקכ&lt;/span&gt;&lt;/div&gt;

FF and IE give different result on displaying גקכ. FF displays it LTR, while IE displays it RTL. 

RFC1556 says:
Visual

   Visual directionality is a presentation method that displays text
   according to the primary display direction only, which is left to
   right.  All text is viewed in the same direction which is the primary
   display direction.  The displaying application is not aware of the
   contents direction and displays the text as if it were a uni-
   directional text.  The composing application needs to prepare the
   text in such a way that it will be displayed correctly.  No control
   characters or algorithms are used to determine how the data is to be
   displayed. This is the simplest of all methods and the default method
   for use with MIME encoded texts.


Looks like using the block&apos;s directionality as primary display directionality is more reasonable. Above fix matches the FF behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333026</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2011-01-12 04:24:29 -0800</bug_when>
    <thetext>Another URL that&apos;s actually logical: https://service.isracard.co.il/templates/isracardEntry/contactus.jsp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333411</commentid>
    <comment_count>10</comment_count>
      <attachid>78755</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-01-12 16:33:04 -0800</bug_when>
    <thetext>Created attachment 78755
patch w/ layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343331</commentid>
    <comment_count>11</comment_count>
      <attachid>78755</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-01 10:35:14 -0800</bug_when>
    <thetext>Comment on attachment 78755
patch w/ layout test

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        Fix rendering of ISO-8859-8 when dir=&quot;rtl&quot;.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=52128
&gt; +
&gt; +        Test: fast/dom/iso-8859-8.html
&gt; +
&gt; +        * platform/text/BidiResolver.h:
&gt; +        (WebCore::::createBidiRunsForLine):
&gt; +        * rendering/RenderBlockLineLayout.cpp:
&gt; +        (WebCore::RenderBlock::constructLine):
&gt; +        (WebCore::RenderBlock::layoutInlineChildren):
&gt; +

This should explain what is changing and why. I can’t even review the patch without knowing what it’s trying to do.

&gt; Source/WebCore/platform/text/BidiResolver.h:965
&gt; +    } else if (direction == RTL) {
&gt; +        reverseRuns(0, runCount() - 1);
&gt;      }

There shouldn’t be braces around a single-line block.

&gt; LayoutTests/ChangeLog:9
&gt; +        * fast/dom/iso-8859-8.html: Added.

This is not a DOM change. Please don’t put the test in fast/dom.

&gt; LayoutTests/fast/dom/iso-8859-8.html:55
&gt; +    function checkRenderingResult(sel, node, offset, direction, element, index) {
&gt; +        for (var i = 0; i &lt; element.innerText.length; ++i) {
&gt; +            sel.setBaseAndExtent(node, offset, node, offset);
&gt; +            if (direction == &quot;ltr&quot;) {
&gt; +                sel.modify(&quot;move&quot;, &quot;right&quot;, &quot;character&quot;);
&gt; +                sel.modify(&quot;extend&quot;, &quot;left&quot;, &quot;character&quot;);
&gt; +            } else {
&gt; +                sel.modify(&quot;move&quot;, &quot;left&quot;, &quot;character&quot;);
&gt; +                sel.modify(&quot;extend&quot;, &quot;right&quot;, &quot;character&quot;);
&gt; +            }
&gt; +            if (direction == &quot;ltr&quot;) {
&gt; +                assertEqual(&quot;Test &quot; + index + &quot; &quot; + direction + &quot; the &quot; + i + &quot;th character from left&quot;, sel.toString(), element.innerText[i]);
&gt; +            } else {
&gt; +                assertEqual(&quot;Test &quot; + index + &quot; &quot; + direction + &quot; the &quot; + i + &quot;th character from right&quot;, sel.toString(), element.innerText[i]);
&gt; +            }
&gt; +            node = sel.baseNode;
&gt; +            offset = sel.baseOffset;
&gt; +        }
&gt; +    }

Using the non-trivial logic for modifying selection is a very indirect way to test this change. The best test for this would be a render tree dump. Those include the directionality (and override state) of individual text runs, which should suffice. If you can’t do that, then you can test directly for the visual position of characters using Range.getClientRects().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343403</commentid>
    <comment_count>12</comment_count>
      <attachid>80800</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-01 12:05:07 -0800</bug_when>
    <thetext>Created attachment 80800
patch w/ layout test

(In reply to comment #11)
&gt; (From update of attachment 78755 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78755&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        Fix rendering of ISO-8859-8 when dir=&quot;rtl&quot;.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=52128
&gt; &gt; +
&gt; &gt; +        Test: fast/dom/iso-8859-8.html
&gt; &gt; +
&gt; &gt; +        * platform/text/BidiResolver.h:
&gt; &gt; +        (WebCore::::createBidiRunsForLine):
&gt; &gt; +        * rendering/RenderBlockLineLayout.cpp:
&gt; &gt; +        (WebCore::RenderBlock::constructLine):
&gt; &gt; +        (WebCore::RenderBlock::layoutInlineChildren):
&gt; &gt; +
&gt; 
&gt; This should explain what is changing and why. I can’t even review the patch without knowing what it’s trying to do.

Done.


&gt; 
&gt; &gt; Source/WebCore/platform/text/BidiResolver.h:965
&gt; &gt; +    } else if (direction == RTL) {
&gt; &gt; +        reverseRuns(0, runCount() - 1);
&gt; &gt;      }
&gt; 
&gt; There shouldn’t be braces around a single-line block.

Done.
Thought it needs to be braces due to the braces in &quot;if&quot; part.

&gt; 
&gt; &gt; LayoutTests/ChangeLog:9
&gt; &gt; +        * fast/dom/iso-8859-8.html: Added.
&gt; 
&gt; This is not a DOM change. Please don’t put the test in fast/dom.

Moved to fast/text/international/

&gt; 
&gt; &gt; LayoutTests/fast/dom/iso-8859-8.html:55
&gt; &gt; +    function checkRenderingResult(sel, node, offset, direction, element, index) {
&gt; &gt; +        for (var i = 0; i &lt; element.innerText.length; ++i) {
&gt; &gt; +            sel.setBaseAndExtent(node, offset, node, offset);
&gt; &gt; +            if (direction == &quot;ltr&quot;) {
&gt; &gt; +                sel.modify(&quot;move&quot;, &quot;right&quot;, &quot;character&quot;);
&gt; &gt; +                sel.modify(&quot;extend&quot;, &quot;left&quot;, &quot;character&quot;);
&gt; &gt; +            } else {
&gt; &gt; +                sel.modify(&quot;move&quot;, &quot;left&quot;, &quot;character&quot;);
&gt; &gt; +                sel.modify(&quot;extend&quot;, &quot;right&quot;, &quot;character&quot;);
&gt; &gt; +            }
&gt; &gt; +            if (direction == &quot;ltr&quot;) {
&gt; &gt; +                assertEqual(&quot;Test &quot; + index + &quot; &quot; + direction + &quot; the &quot; + i + &quot;th character from left&quot;, sel.toString(), element.innerText[i]);
&gt; &gt; +            } else {
&gt; &gt; +                assertEqual(&quot;Test &quot; + index + &quot; &quot; + direction + &quot; the &quot; + i + &quot;th character from right&quot;, sel.toString(), element.innerText[i]);
&gt; &gt; +            }
&gt; &gt; +            node = sel.baseNode;
&gt; &gt; +            offset = sel.baseOffset;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; Using the non-trivial logic for modifying selection is a very indirect way to test this change. The best test for this would be a render tree dump. Those include the directionality (and override state) of individual text runs, which should suffice. If you can’t do that, then you can test directly for the visual position of characters using Range.getClientRects().

You&apos;re right. Changed to use dumpRenderTree. I was thinking to make the expected result cross-platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343406</commentid>
    <comment_count>13</comment_count>
      <attachid>80800</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-01 12:06:57 -0800</bug_when>
    <thetext>Comment on attachment 80800
patch w/ layout test

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343579</commentid>
    <comment_count>14</comment_count>
      <attachid>80800</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-01 15:07:59 -0800</bug_when>
    <thetext>Comment on attachment 80800
patch w/ layout test

This is not a very elegant way to achieve this behavior (whose benefit is questionable anyway), and it’s unfortunate that BidiResolver is even used (and goes through all the work of resolving bidi levels) for lines that override bidi reordering. It’s especially ugly that this comes in the form of an extra parameter which you can’t even tell only affects the visualOrder == true case. At the very least, I think you should instead of adding a parameter, change the existing parameter to an enum type such as DirectionOverride { NoOverride, LeftToRightOverride, RightToLeftOverride }.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343583</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-01 15:11:26 -0800</bug_when>
    <thetext>(In reply to comment #12)

&gt; &gt; Using the non-trivial logic for modifying selection is a very indirect way to test this change. The best test for this would be a render tree dump. Those include the directionality (and override state) of individual text runs, which should suffice. If you can’t do that, then you can test directly for the visual position of characters using Range.getClientRects().
&gt; 
&gt; You&apos;re right. Changed to use dumpRenderTree. I was thinking to make the expected result cross-platform.

For a cross-platform test, you can use getClientRects() and compare coordinates to determine whether one range (which can be a single character) is to the left or to the right of another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347878</commentid>
    <comment_count>16</comment_count>
      <attachid>81727</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-08 18:15:09 -0800</bug_when>
    <thetext>Created attachment 81727
patch w/ layout test

Thanks for the review!
Updated patch per feedback.

The 2nd part of the diff (about reordering runs) inside void BidiResolver&lt;Iterator, Run&gt;::createBidiRunsForLine() is format change (decrease indent) due to the removal of condition &quot;if (!visualOrder)&quot;.

I tested the bidi resolver part for lines with visual ordering using
https://service.isracard.co.il/templates/isracardEntry/contactus.jsp and http://berry.co.il/disco/chalordeluna/playme.php
they works correctly.

Dan, Jeremy, if you have more real webpage that uses iso-8859-8, please pass them to me for test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348364</commentid>
    <comment_count>17</comment_count>
      <attachid>81727</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-09 10:33:19 -0800</bug_when>
    <thetext>Comment on attachment 81727
patch w/ layout test

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

Very nice, but needs some improvement.

&gt; Source/WebCore/ChangeLog:11
&gt; +        (WebCore::::createBidiRunsForLine): For lines with visually direction override, create bidi runs without resolving bidi levels (one run per render object), set bidi level as 0 or 1 depends on LTR or RTL override, and reverse run s for RTL override.

typo: “run s”

&gt; Source/WebCore/platform/text/BidiResolver.h:133
&gt; +enum VisuallyDirectionOverride {
&gt; +    NoVisuallyOverride,
&gt; +    VisuallyLeftToRightOverride,
&gt; +    VisuallyRightToLeftOverride
&gt; +};

I don’t think the adverb “visually” is the right part of speech here. You could use “visual” but really “DirectionOverride” is best.

&gt; Source/WebCore/platform/text/BidiResolver.h:531
&gt; +        while (true) {

What if current == end or current.atEnd() when you enter this loop? Won’t you miss it? I.e. is there a reason why this isn’t a while(current != end &amp;&amp; !current.atEnd()) loop?

&gt; Source/WebCore/platform/text/BidiResolver.h:535
&gt; +            eor = current;

Is it necessary to change eor inside the loop? Does increment() depend on it?

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:680
&gt; +                enum VisuallyDirectionOverride override = (style()-&gt;visuallyOrdered() ? (style()-&gt;direction() == LTR ? VisuallyLeftToRightOverride : VisuallyRightToLeftOverride) : NoVisuallyOverride);

You shouldn’t need “enum” here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348750</commentid>
    <comment_count>18</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-09 18:01:35 -0800</bug_when>
    <thetext>Thanks for the quick review!
Please see my comments inline.


(In reply to comment #17)
&gt; (From update of attachment 81727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81727&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/text/BidiResolver.h:133
&gt; &gt; +enum VisuallyDirectionOverride {
&gt; &gt; +    NoVisuallyOverride,
&gt; &gt; +    VisuallyLeftToRightOverride,
&gt; &gt; +    VisuallyRightToLeftOverride
&gt; &gt; +};
&gt; 
&gt; I don’t think the adverb “visually” is the right part of speech here. You could use “visual” but really “DirectionOverride” is best.


LeftToRightOverride and RightToLeftOverride are defined in WTF::Unicode.
If I reuse the names here, I need to prepend every usage of the existing names with WTF::Unicode, which I think is not neat and not consistent. That is why &quot;Visually&quot; is prepended here.

&gt; 
&gt; &gt; Source/WebCore/platform/text/BidiResolver.h:531
&gt; &gt; +        while (true) {
&gt; 
&gt; What if current == end or current.atEnd() when you enter this loop? Won’t you miss it? I.e. is there a reason why this isn’t a while(current != end &amp;&amp; !current.atEnd()) loop?

You are right.
It should be:
        eor = Iterator();
        while(current != end &amp;&amp; !current.atEnd()) {
            eor = current;
            increment();
        }


&gt; 
&gt; &gt; Source/WebCore/platform/text/BidiResolver.h:535
&gt; &gt; +            eor = current;
&gt; 
&gt; Is it necessary to change eor inside the loop? Does increment() depend on it?

increment() does not depend or update it.
But eor need to be assigned inside the loop to be the inclusive end of the line.
On exit of the loop, current will be the exclusive end of the line (similar as string.length() vs. string.length() -1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349235</commentid>
    <comment_count>19</comment_count>
      <attachid>82015</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-10 11:41:01 -0800</bug_when>
    <thetext>Created attachment 82015
patch w/ layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350438</commentid>
    <comment_count>20</comment_count>
      <attachid>82015</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-13 13:10:13 -0800</bug_when>
    <thetext>Comment on attachment 82015
patch w/ layout test

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        (WebCore::::createBidiRunsForLine): For lines with visually direction override, create bidi runs without resolving bidi levels (one run per render object), set bidi level as 0 or 1 depends on LTR or RTL override, and reverse runs for RTL override.

You may want to use shorter lines in the change log (~100 characters seems to be the norm). Also change “visually” to “visual” and “depends” to “depending”.

&gt; LayoutTests/fast/text/international/iso-8859-8.html:4
&gt; +&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-8&quot;/&gt;

The / before the &gt; is not necessary. And in HTML5 this can be expressed simply as &lt;meta charset=&quot;ISO-8859-8&quot;&gt;.

&gt; LayoutTests/fast/text/international/iso-8859-8.html:13
&gt; +&lt;div contenteditable class=&quot;test&quot;&gt;ùðá&lt;/div&gt;
&gt; +&lt;div contenteditable class=&quot;test&quot;&gt;ùðá â÷ë &lt;/div&gt;
&gt; +&lt;div contenteditable class=&quot;test&quot;&gt;ùðá abc â÷ë&lt;/div&gt;
&gt; +&lt;div contenteditable class=&quot;test&quot;&gt;abc ùðá def&lt;/div&gt;
&gt; +&lt;div contenteditable class=&quot;test&quot;&gt;ùðá &lt;span dir=ltr&gt;â÷ë&lt;/span&gt;&lt;/div&gt;
&gt; +&lt;div contenteditable class=&quot;test&quot;&gt;ùðá &lt;span dir=rtl&gt;â÷ë&lt;/span&gt;&lt;/div&gt;

Do these really need to be contenteditable?

&gt; LayoutTests/fast/text/international/iso-8859-8.html:24
&gt; +    function log(str)
&gt; +    {
&gt; +        var li = document.createElement(&quot;li&quot;);
&gt; +        li.appendChild(document.createTextNode(str));
&gt; +        var console = document.getElementById(&quot;console&quot;);
&gt; +        console.appendChild(li);
&gt; +    }

Since you’re already including js-test-pre.js, why not use testPassed() and testFailed()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350779</commentid>
    <comment_count>21</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-14 11:21:41 -0800</bug_when>
    <thetext>Committed r78491: &lt;http://trac.webkit.org/changeset/78491&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350780</commentid>
    <comment_count>22</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-14 11:23:15 -0800</bug_when>
    <thetext>updated patch per Dan&apos;s comment in #20 and committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350820</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 12:22:33 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/78491 might have broken GTK Linux 32-bit Release and GTK Linux 64-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>78345</attachid>
            <date>2011-01-09 02:20:44 -0800</date>
            <delta_ts>2011-01-09 02:20:44 -0800</delta_ts>
            <desc>Testcase by Ilya Konstantionov</desc>
            <filename>testcase (1).html</filename>
            <type>text/html; charset=ISO-8859-8</type>
            <size>141</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTgiLz4NCjxib2R5Pg0KPGRpdiBkaXI9InJ0bCI+
4OHiPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78755</attachid>
            <date>2011-01-12 16:33:04 -0800</date>
            <delta_ts>2011-02-01 12:05:07 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>52128.v1</filename>
            <type>text/plain</type>
            <size>12105</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1NjU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMTIgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOCB3aGVuIGRpcj0icnRs
Ii4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMTI4
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaXNvLTg4NTktOC5odG1sCisKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVC
aWRpUnVuc0ZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlv
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKToKKwog
MjAxMS0wMS0xMiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29s
dmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaAkocmV2aXNpb24gNzU2MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0JpZGlSZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5l
IEJpZGlSZXNvbHZlcl9oCiAKICNpbmNsdWRlICJCaWRpQ29udGV4dC5oIgorI2luY2x1ZGUgIlRl
eHREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE2Miw3ICsxNjMs
NyBAQCBwdWJsaWMgOgogICAgIHZvaWQgZW1iZWQoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24pOwog
ICAgIHZvaWQgY29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKIAotICAgIHZvaWQgY3JlYXRlQmlk
aVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIGJvb2wgdmlzdWFsT3JkZXIgPSBmYWxz
ZSwgYm9vbCBoYXJkTGluZUJyZWFrID0gZmFsc2UpOworICAgIHZvaWQgY3JlYXRlQmlkaVJ1bnNG
b3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIGJvb2wgdmlzdWFsT3JkZXIgPSBmYWxzZSwgYm9v
bCBoYXJkTGluZUJyZWFrID0gZmFsc2UsIFRleHREaXJlY3Rpb24gPSBMVFIpOwogCiAgICAgUnVu
KiBmaXJzdFJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RSdW47IH0KICAgICBSdW4qIGxhc3RS
dW4oKSBjb25zdCB7IHJldHVybiBtX2xhc3RSdW47IH0KQEAgLTUxOSw3ICs1MjAsNyBAQCB2b2lk
IEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6cmV2ZXJzCiB9CiAKIHRlbXBsYXRlIDxjbGFz
cyBJdGVyYXRvciwgY2xhc3MgUnVuPgotdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46
OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBib29sIHZpc3VhbE9y
ZGVyLCBib29sIGhhcmRMaW5lQnJlYWspCit2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVu
Pjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIGJvb2wgdmlzdWFs
T3JkZXIsIGJvb2wgaGFyZExpbmVCcmVhaywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIApAQCAtOTU5LDYgKzk2MCw4IEBAIHZv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGUKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGxldmVsSGlnaC0tOwogICAgICAgICB9CisgICAgfSBlbHNlIGlmIChkaXJlY3Rp
b24gPT0gUlRMKSB7CisgICAgICAgIHJldmVyc2VSdW5zKDAsIHJ1bkNvdW50KCkgLSAxKTsKICAg
ICB9CiAgICAgZW5kT2ZMaW5lID0gSXRlcmF0b3IoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiA3
NTYyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNyArMjY5LDcgQEAgUm9vdElubGluZUJveCogUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdExpbgogICAgICAgICBwYXJlbnRCb3gtPmFkZFRvTGluZShib3gp
OwogCiAgICAgICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVkID0gci0+bV9vYmplY3QtPnN0eWxlKCkt
PnZpc3VhbGx5T3JkZXJlZCgpOwotICAgICAgICBib3gtPnNldEJpZGlMZXZlbCh2aXN1YWxseU9y
ZGVyZWQgPyAwIDogci0+bGV2ZWwoKSk7CisgICAgICAgIGJveC0+c2V0QmlkaUxldmVsKHZpc3Vh
bGx5T3JkZXJlZCA/IChzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyAwIDogMSkg
OiByLT5sZXZlbCgpKTsKIAogICAgICAgICBpZiAoYm94LT5pc0lubGluZVRleHRCb3goKSkgewog
ICAgICAgICAgICAgSW5saW5lVGV4dEJveCogdGV4dCA9IHN0YXRpY19jYXN0PElubGluZVRleHRC
b3gqPihib3gpOwpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElu
bGluZUNoaWxkcmVuKGIKICAgICAgICAgICAgIEFTU0VSVChlbmQgIT0gcmVzb2x2ZXIucG9zaXRp
b24oKSk7CiAKICAgICAgICAgICAgIGlmICghaXNMaW5lRW1wdHkpIHsKLSAgICAgICAgICAgICAg
ICByZXNvbHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kLCBzdHlsZSgpLT52aXN1YWxseU9y
ZGVyZWQoKSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kLCBzdHlsZSgpLT52aXN1YWxseU9yZGVyZWQo
KSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBzdHlsZSgpLT5kaXJlY3Rpb24oKSk7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVyLnBvc2l0aW9uKCkgPT0gZW5kKTsKIAogICAgICAg
ICAgICAgICAgIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4gPSAwOwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNzU2NTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wMS0xMiAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHJlbmRl
cmluZyBvZiBJU08tODg1OS04IHdoZW4gZGlyPSJydGwiLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMjgKKworICAgICAgICAqIGZhc3QvZG9tL2lz
by04ODU5LTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pc28tODg1
OS04Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTExICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5l
eUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vaXNvLTg4NTktOC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaXNvLTg4NTktOC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pc28tODg1OS04LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorVGVzdCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOC4K
KworVGVzdCAwIGx0ciB0aGUgMHRoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3Qg
MCBsdHIgdGhlIDF0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDAgbHRyIHRo
ZSAydGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCAwIHJ0bCB0aGUgMHRoIGNo
YXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDAgcnRsIHRoZSAxdGggY2hhcmFjdGVy
IGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgMCBydGwgdGhlIDJ0aCBjaGFyYWN0ZXIgZnJvbSBy
aWdodDogU3VjY2VzcworVGVzdCAxIGx0ciB0aGUgMHRoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1
Y2Nlc3MKK1Rlc3QgMSBsdHIgdGhlIDF0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitU
ZXN0IDEgbHRyIHRoZSAydGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCAxIGx0
ciB0aGUgM3RoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMSBsdHIgdGhlIDR0
aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDEgbHRyIHRoZSA1dGggY2hhcmFj
dGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCAxIGx0ciB0aGUgNnRoIGNoYXJhY3RlciBmcm9t
IGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMSBydGwgdGhlIDB0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDog
U3VjY2VzcworVGVzdCAxIHJ0bCB0aGUgMXRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNz
CitUZXN0IDEgcnRsIHRoZSAydGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3Qg
MSBydGwgdGhlIDN0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCAxIHJ0bCB0
aGUgNHRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDEgcnRsIHRoZSA1dGgg
Y2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgMSBydGwgdGhlIDZ0aCBjaGFyYWN0
ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCAyIGx0ciB0aGUgMHRoIGNoYXJhY3RlciBmcm9t
IGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMiBsdHIgdGhlIDF0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBT
dWNjZXNzCitUZXN0IDIgbHRyIHRoZSAydGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2Vzcwor
VGVzdCAyIGx0ciB0aGUgM3RoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMiBs
dHIgdGhlIDR0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDIgbHRyIHRoZSA1
dGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCAyIGx0ciB0aGUgNnRoIGNoYXJh
Y3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMiBsdHIgdGhlIDd0aCBjaGFyYWN0ZXIgZnJv
bSBsZWZ0OiBTdWNjZXNzCitUZXN0IDIgbHRyIHRoZSA4dGggY2hhcmFjdGVyIGZyb20gbGVmdDog
U3VjY2VzcworVGVzdCAyIGx0ciB0aGUgOXRoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MK
K1Rlc3QgMiBsdHIgdGhlIDEwdGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCAy
IHJ0bCB0aGUgMHRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDIgcnRsIHRo
ZSAxdGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgMiBydGwgdGhlIDJ0aCBj
aGFyYWN0ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCAyIHJ0bCB0aGUgM3RoIGNoYXJhY3Rl
ciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDIgcnRsIHRoZSA0dGggY2hhcmFjdGVyIGZyb20g
cmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgMiBydGwgdGhlIDV0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDog
U3VjY2VzcworVGVzdCAyIHJ0bCB0aGUgNnRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNz
CitUZXN0IDIgcnRsIHRoZSA3dGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3Qg
MiBydGwgdGhlIDh0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCAyIHJ0bCB0
aGUgOXRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDIgcnRsIHRoZSAxMHRo
IGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDMgbHRyIHRoZSAwdGggY2hhcmFj
dGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCAzIGx0ciB0aGUgMXRoIGNoYXJhY3RlciBmcm9t
IGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMyBsdHIgdGhlIDJ0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBT
dWNjZXNzCitUZXN0IDMgbHRyIHRoZSAzdGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2Vzcwor
VGVzdCAzIGx0ciB0aGUgNHRoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMyBs
dHIgdGhlIDV0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDMgbHRyIHRoZSA2
dGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCAzIGx0ciB0aGUgN3RoIGNoYXJh
Y3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgMyBsdHIgdGhlIDh0aCBjaGFyYWN0ZXIgZnJv
bSBsZWZ0OiBTdWNjZXNzCitUZXN0IDMgbHRyIHRoZSA5dGggY2hhcmFjdGVyIGZyb20gbGVmdDog
U3VjY2VzcworVGVzdCAzIGx0ciB0aGUgMTB0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNz
CitUZXN0IDMgcnRsIHRoZSAwdGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3Qg
MyBydGwgdGhlIDF0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCAzIHJ0bCB0
aGUgMnRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDMgcnRsIHRoZSAzdGgg
Y2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgMyBydGwgdGhlIDR0aCBjaGFyYWN0
ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCAzIHJ0bCB0aGUgNXRoIGNoYXJhY3RlciBmcm9t
IHJpZ2h0OiBTdWNjZXNzCitUZXN0IDMgcnRsIHRoZSA2dGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6
IFN1Y2Nlc3MKK1Rlc3QgMyBydGwgdGhlIDd0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDogU3VjY2Vz
cworVGVzdCAzIHJ0bCB0aGUgOHRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0
IDMgcnRsIHRoZSA5dGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgMyBydGwg
dGhlIDEwdGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgNCBsdHIgdGhlIDB0
aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDQgbHRyIHRoZSAxdGggY2hhcmFj
dGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCA0IGx0ciB0aGUgMnRoIGNoYXJhY3RlciBmcm9t
IGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgNCBsdHIgdGhlIDN0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBT
dWNjZXNzCitUZXN0IDQgbHRyIHRoZSA0dGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2Vzcwor
VGVzdCA0IGx0ciB0aGUgNXRoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgNCBs
dHIgdGhlIDZ0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDQgcnRsIHRoZSAw
dGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgNCBydGwgdGhlIDF0aCBjaGFy
YWN0ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCA0IHJ0bCB0aGUgMnRoIGNoYXJhY3RlciBm
cm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDQgcnRsIHRoZSAzdGggY2hhcmFjdGVyIGZyb20gcmln
aHQ6IFN1Y2Nlc3MKK1Rlc3QgNCBydGwgdGhlIDR0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDogU3Vj
Y2VzcworVGVzdCA0IHJ0bCB0aGUgNXRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitU
ZXN0IDQgcnRsIHRoZSA2dGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgNSBs
dHIgdGhlIDB0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDUgbHRyIHRoZSAx
dGggY2hhcmFjdGVyIGZyb20gbGVmdDogU3VjY2VzcworVGVzdCA1IGx0ciB0aGUgMnRoIGNoYXJh
Y3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MKK1Rlc3QgNSBsdHIgdGhlIDN0aCBjaGFyYWN0ZXIgZnJv
bSBsZWZ0OiBTdWNjZXNzCitUZXN0IDUgbHRyIHRoZSA0dGggY2hhcmFjdGVyIGZyb20gbGVmdDog
U3VjY2VzcworVGVzdCA1IGx0ciB0aGUgNXRoIGNoYXJhY3RlciBmcm9tIGxlZnQ6IFN1Y2Nlc3MK
K1Rlc3QgNSBsdHIgdGhlIDZ0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0OiBTdWNjZXNzCitUZXN0IDUg
cnRsIHRoZSAwdGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgNSBydGwgdGhl
IDF0aCBjaGFyYWN0ZXIgZnJvbSByaWdodDogU3VjY2VzcworVGVzdCA1IHJ0bCB0aGUgMnRoIGNo
YXJhY3RlciBmcm9tIHJpZ2h0OiBTdWNjZXNzCitUZXN0IDUgcnRsIHRoZSAzdGggY2hhcmFjdGVy
IGZyb20gcmlnaHQ6IFN1Y2Nlc3MKK1Rlc3QgNSBydGwgdGhlIDR0aCBjaGFyYWN0ZXIgZnJvbSBy
aWdodDogU3VjY2VzcworVGVzdCA1IHJ0bCB0aGUgNXRoIGNoYXJhY3RlciBmcm9tIHJpZ2h0OiBT
dWNjZXNzCitUZXN0IDUgcnRsIHRoZSA2dGggY2hhcmFjdGVyIGZyb20gcmlnaHQ6IFN1Y2Nlc3MK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2lzby04ODU5LTguaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pc28tODg1OS04Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9pc28tODg1OS04Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODAgQEAKKworPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTgiLz4KKzxib2R5PgorPHA+
VGVzdCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOC4KKzxwPgorPGRpdiBjb250ZW50ZWRpdGFibGUg
Y2xhc3M9InRlc3QiPvnw4TwvZGl2PgorPGRpdiBjb250ZW50ZWRpdGFibGUgY2xhc3M9InRlc3Qi
Pvnw4SDi9+sgPC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBjbGFzcz0idGVzdCI++fDhIGFi
YyDi9+s8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij5hYmMg+fDhIGRl
ZjwvZGl2PgorPGRpdiBjb250ZW50ZWRpdGFibGUgY2xhc3M9InRlc3QiPvnw4SA8c3BhbiBkaXI9
bHRyPuL36zwvc3Bhbj48L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij75
8OEgPHNwYW4gZGlyPXJ0bD7i9+s8L3NwYW4+PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiIGRpcj1s
dHI+PC91bD4KKworPHNjcmlwdD4gCisgCisgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICB7Cisg
ICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgIGxp
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICB2YXIg
Y29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgIGNv
bnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBhc3NlcnRF
cXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAgaWYgKGFjdHVh
bCAhPSBleHBlY3RlZCkKKyAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1
cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7
CisgICAgfQorICAgICAgICAgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAK
KyAgICBmdW5jdGlvbiBjaGVja1JlbmRlcmluZ1Jlc3VsdChzZWwsIG5vZGUsIG9mZnNldCwgZGly
ZWN0aW9uLCBlbGVtZW50LCBpbmRleCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVs
ZW1lbnQuaW5uZXJUZXh0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBzZWwuc2V0QmFzZUFu
ZEV4dGVudChub2RlLCBvZmZzZXQsIG5vZGUsIG9mZnNldCk7CisgICAgICAgICAgICBpZiAoZGly
ZWN0aW9uID09ICJsdHIiKSB7CisgICAgICAgICAgICAgICAgc2VsLm1vZGlmeSgibW92ZSIsICJy
aWdodCIsICJjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgICAgICBzZWwubW9kaWZ5KCJleHRlbmQi
LCAibGVmdCIsICJjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgc2VsLm1vZGlmeSgibW92ZSIsICJsZWZ0IiwgImNoYXJhY3RlciIpOworICAgICAgICAg
ICAgICAgIHNlbC5tb2RpZnkoImV4dGVuZCIsICJyaWdodCIsICJjaGFyYWN0ZXIiKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gImx0ciIpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRFcXVhbCgiVGVzdCAiICsgaW5kZXggKyAiICIgKyBkaXJlY3Rpb24gKyAi
IHRoZSAiICsgaSArICJ0aCBjaGFyYWN0ZXIgZnJvbSBsZWZ0Iiwgc2VsLnRvU3RyaW5nKCksIGVs
ZW1lbnQuaW5uZXJUZXh0W2ldKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0RXF1YWwoIlRlc3QgIiArIGluZGV4ICsgIiAiICsgZGlyZWN0aW9uICsgIiB0aGUg
IiArIGkgKyAidGggY2hhcmFjdGVyIGZyb20gcmlnaHQiLCBzZWwudG9TdHJpbmcoKSwgZWxlbWVu
dC5pbm5lclRleHRbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9kZSA9IHNlbC5i
YXNlTm9kZTsKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbC5iYXNlT2Zmc2V0OworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoJ3Rlc3QnKTsKKyAgICB2YXIgc2VsID0gZ2V0U2VsZWN0aW9uKCk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICBzZWwuc2V0UG9zaXRp
b24odGVzdHNbaV0sMCk7CisgICAgICAgIGNoZWNrUmVuZGVyaW5nUmVzdWx0KHNlbCwgc2VsLmFu
Y2hvck5vZGUsIHNlbC5hbmNob3JPZmZzZXQsICJsdHIiLCB0ZXN0c1tpXSwgaSk7CisgICAgCisg
ICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJydGwiOworICAgICAgICBzZWwuc2V0
UG9zaXRpb24odGVzdHNbaV0sMCk7CisgICAgICAgIHZhciBub2RlID0gc2VsLmFuY2hvck5vZGU7
CisgICAgICAgIHZhciBvZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0OworICAgICAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICAgICAgc2VsLm1vZGlmeSgibW92ZSIsICJyaWdodCIsICJjaGFyYWN0
ZXIiKTsKKyAgICAgICAgICAgIGlmIChzZWwuYW5jaG9yTm9kZSA9PSBub2RlICYmIHNlbC5hbmNo
b3JPZmZzZXQgPT0gb2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
bm9kZSA9IHNlbC5hbmNob3JOb2RlOworICAgICAgICAgICAgb2Zmc2V0ID0gc2VsLmFuY2hvck9m
ZnNldDsKKyAgICAgICAgfQorICAgICAgICBjaGVja1JlbmRlcmluZ1Jlc3VsdChzZWwsIHNlbC5h
bmNob3JOb2RlLCBzZWwuYW5jaG9yT2Zmc2V0LCAicnRsIiwgdGVzdHNbaV0sIGkpOworICAgIAor
ICAgICAgICB0ZXN0c1tpXS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgIH0KKzwvc2NyaXB0
PiAKKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="70119"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80800</attachid>
            <date>2011-02-01 12:05:07 -0800</date>
            <delta_ts>2011-02-08 18:15:09 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>52128.v2</filename>
            <type>text/plain</type>
            <size>10286</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MjY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDItMDEgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOCB3aGVuIGRpcj0icnRs
Ii4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMTI4
CisKKyAgICAgICAgV2hlbiByZW5kZXJpbmcgSVNPLTg4NTktOCB3aGVuIGRpcj0icnRsIiwgcmV2
ZXJzZSBhbGwgdGV4dCBydW5zCisgICAgICAgIGFuZCBzZXQgZWFjaCB0ZXh0IHJ1bidzIGJpZGkg
bGV2ZWwgdG8gMS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9pc28tODg1OS04Lmh0bWwKKwor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3Jl
Ojo6OmNyZWF0ZUJpZGlSdW5zRm9yTGluZSk6IEFkZCBUZXh0RGlyZWN0aW9uIGFzIGxhc3QgcGFy
YW1ldGVyLgorICAgICAgICBJZiAidmlzdWFsT3JkZXIiIGlzIHRydWUgKGZvciBJU08tODg1OS04
KSBhbmQgVGV4dERpcmVjdGlvbiBpcyBSVEwsIAorICAgICAgICByZXZlcnNlIGFsbCB0aGUgdGV4
dCBydW5zLiAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RMaW5lKTogRm9yICJ2aXN1
YWxseU9yZGVyZWQiIEJpZGlSdW4sCisgICAgICAgIHNldCBpdHMgYmlkaSBsZXZlbCB0byAwIGlm
IGl0cyBkaXJlY3Rpb24gaXMgTFRSLCBvdGhlcndpc2UsIHNldCBpdHMKKyAgICAgICAgYmlkaSBs
ZXZlbCB0byAxLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNo
aWxkcmVuKTogUGFzcyBpbiB0aGUgVGV4dERpcmVjdGlvbgorICAgICAgICB0byBjcmVhdGVCaWRp
UnVuc0ZvckxpbmUoKS4KKwogMjAxMS0wMi0wMSAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHJldmlzaW9uIDc3
MTgxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBCaWRpUmVzb2x2ZXJfaAogCiAj
aW5jbHVkZSAiQmlkaUNvbnRleHQuaCIKKyNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNjMsNyArMTY0LDcgQEAgcHVibGljIDoKICAgICB2
b2lkIGVtYmVkKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uKTsKICAgICB2b2lkIGNvbW1pdEV4cGxp
Y2l0RW1iZWRkaW5nKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJ
dGVyYXRvciYgZW5kLCBib29sIHZpc3VhbE9yZGVyID0gZmFsc2UsIGJvb2wgaGFyZExpbmVCcmVh
ayA9IGZhbHNlKTsKKyAgICB2b2lkIGNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRv
ciYgZW5kLCBib29sIHZpc3VhbE9yZGVyID0gZmFsc2UsIGJvb2wgaGFyZExpbmVCcmVhayA9IGZh
bHNlLCBUZXh0RGlyZWN0aW9uID0gTFRSKTsKIAogICAgIFJ1biogZmlyc3RSdW4oKSBjb25zdCB7
IHJldHVybiBtX2ZpcnN0UnVuOyB9CiAgICAgUnVuKiBsYXN0UnVuKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0UnVuOyB9CkBAIC01MTIsNyArNTEzLDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0
b3IsIFJ1bj46OnJldmVycwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1
bj4KLXZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0Zvckxp
bmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgYm9vbCB2aXN1YWxPcmRlciwgYm9vbCBoYXJkTGluZUJy
ZWFrKQordm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9y
TGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBib29sIHZpc3VhbE9yZGVyLCBib29sIGhhcmRMaW5l
QnJlYWssIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBX
VEY6OlVuaWNvZGU7CiAKQEAgLTk1Nyw3ICs5NTgsOCBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVy
YXRvciwgUnVuPjo6Y3JlYXRlCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsZXZlbEhpZ2gt
LTsKICAgICAgICAgfQotICAgIH0KKyAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBSVEwpCisg
ICAgICAgIHJldmVyc2VSdW5zKDAsIHJ1bkNvdW50KCkgLSAxKTsKICAgICBlbmRPZkxpbmUgPSBJ
dGVyYXRvcigpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gNzcxODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcxLDcgKzI3MSw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RM
aW4KICAgICAgICAgcGFyZW50Qm94LT5hZGRUb0xpbmUoYm94KTsKIAogICAgICAgICBib29sIHZp
c3VhbGx5T3JkZXJlZCA9IHItPm1fb2JqZWN0LT5zdHlsZSgpLT52aXN1YWxseU9yZGVyZWQoKTsK
LSAgICAgICAgYm94LT5zZXRCaWRpTGV2ZWwodmlzdWFsbHlPcmRlcmVkID8gMCA6IHItPmxldmVs
KCkpOworICAgICAgICBib3gtPnNldEJpZGlMZXZlbCh2aXN1YWxseU9yZGVyZWQgPyAoc3R5bGUo
KS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gMCA6IDEpIDogci0+bGV2ZWwoKSk7CiAKICAg
ICAgICAgaWYgKGJveC0+aXNJbmxpbmVUZXh0Qm94KCkpIHsKICAgICAgICAgICAgIElubGluZVRl
eHRCb3gqIHRleHQgPSBzdGF0aWNfY2FzdDxJbmxpbmVUZXh0Qm94Kj4oYm94KTsKQEAgLTY3Nyw3
ICs2NzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbihiCiAgICAg
ICAgICAgICBBU1NFUlQoZW5kICE9IHJlc29sdmVyLnBvc2l0aW9uKCkpOwogCiAgICAgICAgICAg
ICBpZiAoIWlzTGluZUVtcHR5KSB7Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZXIuY3JlYXRlQmlk
aVJ1bnNGb3JMaW5lKGVuZCwgc3R5bGUoKS0+dmlzdWFsbHlPcmRlcmVkKCksIHByZXZpb3VzTGlu
ZUJyb2tlQ2xlYW5seSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIuY3JlYXRlQmlkaVJ1bnNG
b3JMaW5lKGVuZCwgc3R5bGUoKS0+dmlzdWFsbHlPcmRlcmVkKCksIHByZXZpb3VzTGluZUJyb2tl
Q2xlYW5seSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCk7CiAKICAgICAgICAgICAgICAgICBCaWRpUnVuKiB0
cmFpbGluZ1NwYWNlUnVuID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MjY2KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDIt
MDEgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOCB3
aGVuIGRpcj0icnRsIi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUyMTI4CisKKyAgICAgICAgV2hlbiByZW5kZXJpbmcgSVNPLTg4NTktOCB3aGVuIGRp
cj0icnRsIiwgcmV2ZXJzZSBhbGwgdGV4dCBydW5zCisgICAgICAgIGFuZCBzZXQgZWFjaCB0ZXh0
IHJ1bidzIGJpZGkgbGV2ZWwgdG8gMS4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2lzby04ODU5LTguaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2lzby04ODU5LTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MS0wMi0wMSAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLiBJbmNsdWRlIGFjdHVhbCB2YWx1ZXMgaW4gZmFzdC9jYW52YXMvd2ViZ2wv
Z2wtdGV4aW1hZ2UuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaXNvLTg4NTktOC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2lzby04ODU5LTguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lzby04ODU5LTguaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNSBAQAorCis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktOCIvPgorPGJvZHk+
Cis8cD5UZXN0IHJlbmRlcmluZyBvZiBJU08tODg1OS04LgorPHA+Cis8ZGl2IGRpcj1ydGw+Cis8
ZGl2IGNvbnRlbnRlZGl0YWJsZSBjbGFzcz0idGVzdCI++fDhPC9kaXY+Cis8ZGl2IGNvbnRlbnRl
ZGl0YWJsZSBjbGFzcz0idGVzdCI++fDhIOL36yA8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxl
IGNsYXNzPSJ0ZXN0Ij758OEgYWJjIOL36zwvZGl2PgorPGRpdiBjb250ZW50ZWRpdGFibGUgY2xh
c3M9InRlc3QiPmFiYyD58OEgZGVmPC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBjbGFzcz0i
dGVzdCI++fDhIDxzcGFuIGRpcj1sdHI+4vfrPC9zcGFuPjwvZGl2PgorPGRpdiBjb250ZW50ZWRp
dGFibGUgY2xhc3M9InRlc3QiPvnw4SA8c3BhbiBkaXI9cnRsPuL36zwvc3Bhbj48L2Rpdj4KKzwv
ZGl2PgorPGRpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij758OE8L2Rpdj4K
KzxkaXYgY29udGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij758OEg4vfrIDwvZGl2PgorPGRpdiBj
b250ZW50ZWRpdGFibGUgY2xhc3M9InRlc3QiPvnw4SBhYmMg4vfrPC9kaXY+Cis8ZGl2IGNvbnRl
bnRlZGl0YWJsZSBjbGFzcz0idGVzdCI+YWJjIPnw4SBkZWY8L2Rpdj4KKzxkaXYgY29udGVudGVk
aXRhYmxlIGNsYXNzPSJ0ZXN0Ij758OEgPHNwYW4gZGlyPWx0cj7i9+s8L3NwYW4+PC9kaXY+Cis8
ZGl2IGNvbnRlbnRlZGl0YWJsZSBjbGFzcz0idGVzdCI++fDhIDxzcGFuIGRpcj1ydGw+4vfrPC9z
cGFuPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2lzby04ODU5LTgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lzby04ODU5LTgtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTkyeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTkyIExUUiBvdmVycmlkZTogIlRlc3QgcmVuZGVyaW5nIG9mIElTTy04ODU5LTgu
IgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgwCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTE0CisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDE5CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICg3NTYsMSkgc2l6ZSAyOHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDc1NiwxKSB3
aWR0aCAyOCBSVEwgb3ZlcnJpZGU6ICJceHs1RTl9XHh7NUUwfVx4ezVEMX0iCisgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDE5KSBzaXplIDc4NHgxOQorICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoNzI1LDEpIHNpemUgNTl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICg3MjUsMSkgd2lkdGggNTkgUlRMIG92ZXJyaWRlOiAiXHh7NUU5fVx4ezVFMH1ceHs1RDF9IFx4
ezVEMn1ceHs1RTd9XHh7NURCfSIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzgp
IHNpemUgNzg0eDE5CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2OTksMSkgc2l6
ZSA4NXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDY5OSwxKSB3aWR0aCAzMSBSVEwgb3Zl
cnJpZGU6ICIgXHh7NUQyfVx4ezVFN31ceHs1REJ9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDczMCwxKSB3aWR0aCAyMiBSVEwgb3ZlcnJpZGU6ICJhYmMiCisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNzUyLDEpIHdpZHRoIDMyIFJUTCBvdmVycmlkZTogIlx4ezVFOX1ceHs1RTB9XHh7NUQx
fSAiCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDU3KSBzaXplIDc4NHgxOQorICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNzA2LDEpIHNpemUgNzh4MTgKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICg3MDYsMSkgd2lkdGggMjAgUlRMIG92ZXJyaWRlOiAiZGVmIgorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDcyNiwxKSB3aWR0aCAzNiBSVEwgb3ZlcnJpZGU6ICIgXHh7
NUU5fVx4ezVFMH1ceHs1RDF9ICIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg3NjIsMSkgd2lk
dGggMjIgUlRMIG92ZXJyaWRlOiAiYWJjIgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCw3Nikgc2l6ZSA3ODR4MTkKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDc1Miwx
KSBzaXplIDMyeDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzUyLDEpIHdpZHRoIDMyIFJU
TCBvdmVycmlkZTogIlx4ezVFOX1ceHs1RTB9XHh7NUQxfSAiCisgICAgICAgICAgUmVuZGVySW5s
aW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDI3eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDcyNSwxKSBzaXplIDI3eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg3
MjUsMSkgd2lkdGggMjcgUlRMIG92ZXJyaWRlOiAiXHh7NUQyfVx4ezVFN31ceHs1REJ9IgorICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw5NSkgc2l6ZSA3ODR4MTkKKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDc1MiwxKSBzaXplIDMyeDE4CisgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoNzUyLDEpIHdpZHRoIDMyIFJUTCBvdmVycmlkZTogIlx4ezVFOX1ceHs1RTB9XHh7
NUQxfSAiCisgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDI3eDE4
CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDcyNSwxKSBzaXplIDI3eDE4Cisg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg3MjUsMSkgd2lkdGggMjcgUlRMIG92ZXJyaWRlOiAi
XHh7NUQyfVx4ezVFN31ceHs1REJ9IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTQ4
KSBzaXplIDc4NHgxMTQKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3
ODR4MTkKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkgc2l6ZSAyOHgxOAor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGggMjggTFRSIG92ZXJyaWRlOiAiXHh7
NUU5fVx4ezVFMH1ceHs1RDF9IgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOSkg
c2l6ZSA3ODR4MTkKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkgc2l6ZSA1
OXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGggNTkgTFRSIG92ZXJyaWRl
OiAiXHh7NUU5fVx4ezVFMH1ceHs1RDF9IFx4ezVEMn1ceHs1RTd9XHh7NURCfSIKKyAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzgpIHNpemUgNzg0eDE5CisgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDEpIHNpemUgODV4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDEpIHdpZHRoIDI4IExUUiBvdmVycmlkZTogIlx4ezVFOX1ceHs1RTB9XHh7NUQxfSIKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgyOCwxKSB3aWR0aCAzMCBMVFIgb3ZlcnJpZGU6ICIgYWJj
ICIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1OCwxKSB3aWR0aCAyNyBMVFIgb3ZlcnJpZGU6
ICJceHs1RDJ9XHh7NUU3fVx4ezVEQn0iCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDU3KSBzaXplIDc4NHgxOQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxKSBz
aXplIDc4eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxKSB3aWR0aCAyNiBMVFIgb3Zl
cnJpZGU6ICJhYmMgIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI2LDEpIHdpZHRoIDI4IExU
UiBvdmVycmlkZTogIlx4ezVFOX1ceHs1RTB9XHh7NUQxfSIKKyAgICAgICAgICAgIHRleHQgcnVu
IGF0ICg1NCwxKSB3aWR0aCAyNCBMVFIgb3ZlcnJpZGU6ICIgZGVmIgorICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCw3Nikgc2l6ZSA3ODR4MTkKKyAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMSkgc2l6ZSAzMngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkg
d2lkdGggMjggTFRSIG92ZXJyaWRlOiAiXHh7NUU5fVx4ezVFMH1ceHs1RDF9IgorICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDI4LDEpIHdpZHRoIDQgTFRSIG92ZXJyaWRlOiAiICIKKyAgICAgICAg
ICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjd4MTgKKyAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMzIsMSkgc2l6ZSAyN3gxOAorICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMzIsMSkgd2lkdGggMjcgTFRSIG92ZXJyaWRlOiAiXHh7NUQyfVx4ezVFN31ceHs1
REJ9IgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw5NSkgc2l6ZSA3ODR4MTkKKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkgc2l6ZSAzMngxOAorICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGggMzIgTFRSIG92ZXJyaWRlOiAiXHh7NUU5fVx4ezVF
MH1ceHs1RDF9ICIKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
Mjd4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzIsMSkgc2l6ZSAyN3gx
OAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzIsMSkgd2lkdGggMjcgTFRSIG92ZXJyaWRl
OiAiXHh7NUQyfVx4ezVFN31ceHs1REJ9Igo=
</data>
<flag name="review"
          id="72295"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81727</attachid>
            <date>2011-02-08 18:15:09 -0800</date>
            <delta_ts>2011-02-10 11:41:01 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>52128.v3</filename>
            <type>text/plain</type>
            <size>15370</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMDggIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOCB3aGVuIGRpcj0icnRs
Ii4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMTI4
CisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOiBBZGQgVmlzdWFsbHlE
aXJlY3Rpb25PdmVycmlkZSBlbnVtLgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVCaWRpUnVu
c0ZvckxpbmUpOiBGb3IgbGluZXMgd2l0aCB2aXN1YWxseSBkaXJlY3Rpb24gb3ZlcnJpZGUsIGNy
ZWF0ZSBiaWRpIHJ1bnMgd2l0aG91dCByZXNvbHZpbmcgYmlkaSBsZXZlbHMgKG9uZSBydW4gcGVy
IHJlbmRlciBvYmplY3QpLCBzZXQgYmlkaSBsZXZlbCBhcyAwIG9yIDEgZGVwZW5kcyBvbiBMVFIg
b3IgUlRMIG92ZXJyaWRlLCBhbmQgcmV2ZXJzZSBydW4gcyBmb3IgUlRMIG92ZXJyaWRlLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUpOiBTZXQgaW5saW5lIGJveCBiaWRpIGxl
dmVsIHRoZSBzYW1lIGFzIEJpZGlSdW4ncyBiaWRpIGxldmVsIHdpdGhvdXQgc3BlY2lhbCBoYW5k
bGluZyBvZiBWaXN1YWxseURpcmVjdGlvbk92ZXJyaWRlLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKTogUGFzcyBpbiBWaXN1YWxseURpcmVjdGlv
bk92ZXJyaWRlIHRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZSgpLgorCiAyMDExLTAyLTA4ICBaaGVu
eWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
dXNzZWxsLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZl
ci5oCShyZXZpc2lvbiA3NzE4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsMTIgQEAgc3RydWN0IEJp
ZGlDaGFyYWN0ZXJSdW4gewogICAgIEJpZGlDaGFyYWN0ZXJSdW4qIG1fbmV4dDsKIH07CiAKK2Vu
dW0gVmlzdWFsbHlEaXJlY3Rpb25PdmVycmlkZSB7CisgICAgTm9WaXN1YWxseU92ZXJyaWRlLAor
ICAgIFZpc3VhbGx5TGVmdFRvUmlnaHRPdmVycmlkZSwKKyAgICBWaXN1YWxseVJpZ2h0VG9MZWZ0
T3ZlcnJpZGUKK307CisKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPiBjbGFz
cyBCaWRpUmVzb2x2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJpZGlSZXNvbHZlcik7
CiBwdWJsaWMgOgpAQCAtMTYzLDcgKzE2OSw3IEBAIHB1YmxpYyA6CiAgICAgdm9pZCBlbWJlZChX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbik7CiAgICAgdm9pZCBjb21taXRFeHBsaWNpdEVtYmVkZGlu
ZygpOwogCi0gICAgdm9pZCBjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVu
ZCwgYm9vbCB2aXN1YWxPcmRlciA9IGZhbHNlLCBib29sIGhhcmRMaW5lQnJlYWsgPSBmYWxzZSk7
CisgICAgdm9pZCBjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlz
dWFsbHlEaXJlY3Rpb25PdmVycmlkZSA9IE5vVmlzdWFsbHlPdmVycmlkZSwgYm9vbCBoYXJkTGlu
ZUJyZWFrID0gZmFsc2UpOwogCiAgICAgUnVuKiBmaXJzdFJ1bigpIGNvbnN0IHsgcmV0dXJuIG1f
Zmlyc3RSdW47IH0KICAgICBSdW4qIGxhc3RSdW4oKSBjb25zdCB7IHJldHVybiBtX2xhc3RSdW47
IH0KQEAgLTUxMiwxMiArNTE4LDMwIEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+
OjpyZXZlcnMKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci12b2lk
IEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0
IEl0ZXJhdG9yJiBlbmQsIGJvb2wgdmlzdWFsT3JkZXIsIGJvb2wgaGFyZExpbmVCcmVhaykKK3Zv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29u
c3QgSXRlcmF0b3ImIGVuZCwgVmlzdWFsbHlEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9v
bCBoYXJkTGluZUJyZWFrKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAK
ICAgICBBU1NFUlQobV9kaXJlY3Rpb24gPT0gT3RoZXJOZXV0cmFsKTsKIAorICAgIGlmIChvdmVy
cmlkZSAhPSBOb1Zpc3VhbGx5T3ZlcnJpZGUpIHsKKyAgICAgICAgZW1wdHlSdW4gPSBmYWxzZTsK
KyAgICAgICAgc29yID0gY3VycmVudDsKKyAgICAgICAgZW9yID0gY3VycmVudDsKKyAgICAgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGluY3JlbWVudCgpOworICAgICAgICAgICAgaWYg
KGN1cnJlbnQgPT0gZW5kIHx8IGN1cnJlbnQuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGVvciA9IGN1cnJlbnQ7CisgICAgICAgIH0KKyAgICAgICAgbV9kaXJl
Y3Rpb24gPSBvdmVycmlkZSA9PSBWaXN1YWxseUxlZnRUb1JpZ2h0T3ZlcnJpZGUgPyBMZWZ0VG9S
aWdodCA6IFJpZ2h0VG9MZWZ0OworICAgICAgICBhcHBlbmRSdW4oKTsKKyAgICAgICAgbV9sb2dp
Y2FsbHlMYXN0UnVuID0gbV9sYXN0UnVuOworICAgICAgICBpZiAob3ZlcnJpZGUgPT0gVmlzdWFs
bHlSaWdodFRvTGVmdE92ZXJyaWRlKQorICAgICAgICAgICAgcmV2ZXJzZVJ1bnMoMCwgcnVuQ291
bnQoKSAtIDEpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZW1wdHlSdW4gPSB0cnVl
OwogCiAgICAgZW9yID0gSXRlcmF0b3IoKTsKQEAgLTkxNCw0OSArOTM4LDQ1IEBAIHZvaWQgQmlk
aVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGUKICAgICBtX2xvZ2ljYWxseUxhc3RSdW4g
PSBtX2xhc3RSdW47CiAKICAgICAvLyByZW9yZGVyIGxpbmUgYWNjb3JkaW5nIHRvIHJ1biBzdHJ1
Y3R1cmUuLi4KLSAgICAvLyBkbyBub3QgcmV2ZXJzZSBmb3IgdmlzdWFsbHkgb3JkZXJlZCB3ZWIg
c2l0ZXMKLSAgICBpZiAoIXZpc3VhbE9yZGVyKSB7Ci0KLSAgICAgICAgLy8gZmlyc3QgZmluZCBo
aWdoZXN0IGFuZCBsb3dlc3QgbGV2ZWxzCi0gICAgICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWxMb3cg
PSAxMjg7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWxIaWdoID0gMDsKLSAgICAgICAgUnVu
KiByID0gZmlyc3RSdW4oKTsKLSAgICAgICAgd2hpbGUgKHIpIHsKLSAgICAgICAgICAgIGlmIChy
LT5tX2xldmVsID4gbGV2ZWxIaWdoKQotICAgICAgICAgICAgICAgIGxldmVsSGlnaCA9IHItPm1f
bGV2ZWw7Ci0gICAgICAgICAgICBpZiAoci0+bV9sZXZlbCA8IGxldmVsTG93KQotICAgICAgICAg
ICAgICAgIGxldmVsTG93ID0gci0+bV9sZXZlbDsKLSAgICAgICAgICAgIHIgPSByLT5uZXh0KCk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBpbXBsZW1lbnRzIHJlb3JkZXJpbmcgb2YgdGhlIGxp
bmUgKEwyIGFjY29yZGluZyB0byBCaWRpIHNwZWMpOgotICAgICAgICAvLyBMMi4gRnJvbSB0aGUg
aGlnaGVzdCBsZXZlbCBmb3VuZCBpbiB0aGUgdGV4dCB0byB0aGUgbG93ZXN0IG9kZCBsZXZlbCBv
biBlYWNoIGxpbmUsCi0gICAgICAgIC8vIHJldmVyc2UgYW55IGNvbnRpZ3VvdXMgc2VxdWVuY2Ug
b2YgY2hhcmFjdGVycyB0aGF0IGFyZSBhdCB0aGF0IGxldmVsIG9yIGhpZ2hlci4KLQotICAgICAg
ICAvLyByZXZlcnNpbmcgaXMgb25seSBkb25lIHVwIHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsCi0g
ICAgICAgIGlmICghKGxldmVsTG93ICUgMikpCi0gICAgICAgICAgICBsZXZlbExvdysrOwotCi0g
ICAgICAgIHVuc2lnbmVkIGNvdW50ID0gcnVuQ291bnQoKSAtIDE7Ci0KLSAgICAgICAgd2hpbGUg
KGxldmVsSGlnaCA+PSBsZXZlbExvdykgewotICAgICAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0g
ICAgICAgICAgICBSdW4qIGN1cnJSdW4gPSBmaXJzdFJ1bigpOwotICAgICAgICAgICAgd2hpbGUg
KGkgPCBjb3VudCkgewotICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgY291bnQgJiYgY3VyclJ1
biAmJiBjdXJyUnVuLT5tX2xldmVsIDwgbGV2ZWxIaWdoKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGkrKzsKLSAgICAgICAgICAgICAgICAgICAgY3VyclJ1biA9IGN1cnJSdW4tPm5leHQoKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBpOwotICAg
ICAgICAgICAgICAgIHdoaWxlIChpIDw9IGNvdW50ICYmIGN1cnJSdW4gJiYgY3VyclJ1bi0+bV9s
ZXZlbCA+PSBsZXZlbEhpZ2gpIHsKLSAgICAgICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAg
ICAgICAgICAgICBjdXJyUnVuID0gY3VyclJ1bi0+bmV4dCgpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBpIC0gMTsKLSAgICAgICAgICAgICAgICBy
ZXZlcnNlUnVucyhzdGFydCwgZW5kKTsKKyAgICAvLyBmaXJzdCBmaW5kIGhpZ2hlc3QgYW5kIGxv
d2VzdCBsZXZlbHMKKyAgICB1bnNpZ25lZCBjaGFyIGxldmVsTG93ID0gMTI4OworICAgIHVuc2ln
bmVkIGNoYXIgbGV2ZWxIaWdoID0gMDsKKyAgICBSdW4qIHIgPSBmaXJzdFJ1bigpOworICAgIHdo
aWxlIChyKSB7CisgICAgICAgIGlmIChyLT5tX2xldmVsID4gbGV2ZWxIaWdoKQorICAgICAgICAg
ICAgbGV2ZWxIaWdoID0gci0+bV9sZXZlbDsKKyAgICAgICAgaWYgKHItPm1fbGV2ZWwgPCBsZXZl
bExvdykKKyAgICAgICAgICAgIGxldmVsTG93ID0gci0+bV9sZXZlbDsKKyAgICAgICAgciA9IHIt
Pm5leHQoKTsKKyAgICB9CisKKyAgICAvLyBpbXBsZW1lbnRzIHJlb3JkZXJpbmcgb2YgdGhlIGxp
bmUgKEwyIGFjY29yZGluZyB0byBCaWRpIHNwZWMpOgorICAgIC8vIEwyLiBGcm9tIHRoZSBoaWdo
ZXN0IGxldmVsIGZvdW5kIGluIHRoZSB0ZXh0IHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsIG9uIGVh
Y2ggbGluZSwKKyAgICAvLyByZXZlcnNlIGFueSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJh
Y3RlcnMgdGhhdCBhcmUgYXQgdGhhdCBsZXZlbCBvciBoaWdoZXIuCisKKyAgICAvLyByZXZlcnNp
bmcgaXMgb25seSBkb25lIHVwIHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsCisgICAgaWYgKCEobGV2
ZWxMb3cgJSAyKSkKKyAgICAgICAgbGV2ZWxMb3crKzsKKworICAgIHVuc2lnbmVkIGNvdW50ID0g
cnVuQ291bnQoKSAtIDE7CisKKyAgICB3aGlsZSAobGV2ZWxIaWdoID49IGxldmVsTG93KSB7Cisg
ICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBSdW4qIGN1cnJSdW4gPSBmaXJzdFJ1bigp
OworICAgICAgICB3aGlsZSAoaSA8IGNvdW50KSB7CisgICAgICAgICAgICB3aGlsZSAoaSA8IGNv
dW50ICYmIGN1cnJSdW4gJiYgY3VyclJ1bi0+bV9sZXZlbCA8IGxldmVsSGlnaCkgeworICAgICAg
ICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBjdXJyUnVuID0gY3VyclJ1bi0+bmV4dCgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgPSBpOworICAgICAg
ICAgICAgd2hpbGUgKGkgPD0gY291bnQgJiYgY3VyclJ1biAmJiBjdXJyUnVuLT5tX2xldmVsID49
IGxldmVsSGlnaCkgeworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBjdXJy
UnVuID0gY3VyclJ1bi0+bmV4dCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbGV2ZWxI
aWdoLS07CisgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBpIC0gMTsKKyAgICAgICAgICAgIHJl
dmVyc2VSdW5zKHN0YXJ0LCBlbmQpOwogICAgICAgICB9CisgICAgICAgIGxldmVsSGlnaC0tOwog
ICAgIH0KICAgICBlbmRPZkxpbmUgPSBJdGVyYXRvcigpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9u
IDc3MTgxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQCBSb290SW5saW5lQm94KiBS
ZW5kZXJCbG9jazo6Y29uc3RydWN0TGluCiAgICAgICAgIHBhcmVudEJveC0+YWRkVG9MaW5lKGJv
eCk7CiAKICAgICAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQgPSByLT5tX29iamVjdC0+c3R5bGUo
KS0+dmlzdWFsbHlPcmRlcmVkKCk7Ci0gICAgICAgIGJveC0+c2V0QmlkaUxldmVsKHZpc3VhbGx5
T3JkZXJlZCA/IDAgOiByLT5sZXZlbCgpKTsKKyAgICAgICAgYm94LT5zZXRCaWRpTGV2ZWwoci0+
bGV2ZWwoKSk7CiAKICAgICAgICAgaWYgKGJveC0+aXNJbmxpbmVUZXh0Qm94KCkpIHsKICAgICAg
ICAgICAgIElubGluZVRleHRCb3gqIHRleHQgPSBzdGF0aWNfY2FzdDxJbmxpbmVUZXh0Qm94Kj4o
Ym94KTsKQEAgLTY3Nyw3ICs2NzcsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVD
aGlsZHJlbihiCiAgICAgICAgICAgICBBU1NFUlQoZW5kICE9IHJlc29sdmVyLnBvc2l0aW9uKCkp
OwogCiAgICAgICAgICAgICBpZiAoIWlzTGluZUVtcHR5KSB7Ci0gICAgICAgICAgICAgICAgcmVz
b2x2ZXIuY3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGVuZCwgc3R5bGUoKS0+dmlzdWFsbHlPcmRlcmVk
KCksIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CisgICAgICAgICAgICAgICAgZW51bSBWaXN1
YWxseURpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlID0gKHN0eWxlKCktPnZpc3VhbGx5T3JkZXJl
ZCgpID8gKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IFZpc3VhbGx5TGVmdFRvUmlnaHRP
dmVycmlkZSA6IFZpc3VhbGx5UmlnaHRUb0xlZnRPdmVycmlkZSkgOiBOb1Zpc3VhbGx5T3ZlcnJp
ZGUpOworICAgICAgICAgICAgICAgIHJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmQs
IG92ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChyZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCk7CiAKICAgICAgICAgICAgICAgICBCaWRp
UnVuKiB0cmFpbGluZ1NwYWNlUnVuID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTk5KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTEtMDItMDggIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biBhbmQgYnVnIFVSTCAoT09QUyEpCisgICAgICAgIEZpeCByZW5kZXJpbmcgb2YgSVNPLTg4NTkt
OCB3aGVuIGRpcj0icnRsIi4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lz
by04ODU5LTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9pc28tODg1OS04Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9m
YXN0L2Nzcy9ydGwtb3JkZXJpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9mYXN0L2Zvcm1zL3NlbGVjdC12aXN1YWwtaGVicmV3LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy92aXN1YWwtaGVicmV3LXRleHQtZmllbGQtZXhwZWN0
ZWQudHh0OgorCiAyMDExLTAyLTA4ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvaXNvLTg4NTktOC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pc28tODg1
OS04LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUZXN0IHJlbmRl
cmluZyBvZiBJU08tODg1OS04LgorCitUZXN0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lzby04ODU5LTguaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pc28tODg1OS04
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9pc28tODg1OS04Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKworPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PUlTTy04ODU5LTgiLz4KKzxib2R5PgorPHA+VGVzdCByZW5kZXJpbmcgb2Yg
SVNPLTg4NTktOC4KKzxwPgorPGRpdiBjb250ZW50ZWRpdGFibGUgY2xhc3M9InRlc3QiPvnw4Twv
ZGl2PgorPGRpdiBjb250ZW50ZWRpdGFibGUgY2xhc3M9InRlc3QiPvnw4SDi9+sgPC9kaXY+Cis8
ZGl2IGNvbnRlbnRlZGl0YWJsZSBjbGFzcz0idGVzdCI++fDhIGFiYyDi9+s8L2Rpdj4KKzxkaXYg
Y29udGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij5hYmMg+fDhIGRlZjwvZGl2PgorPGRpdiBjb250
ZW50ZWRpdGFibGUgY2xhc3M9InRlc3QiPvnw4SA8c3BhbiBkaXI9bHRyPuL36zwvc3Bhbj48L2Rp
dj4KKzxkaXYgY29udGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij758OEgPHNwYW4gZGlyPXJ0bD7i
9+s8L3NwYW4+PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiIGRpcj1sdHI+PC91bD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PiAKKyAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgIHsKKyAgICAgICAgdmFyIGxpID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgY29uc29sZS5hcHBlbmRDaGlsZChs
aSk7CisgICAgfQorICAgIAorICAgIHZhciBzdWNjZWVkID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9u
IGNoZWNrQ2xpZW50UmVjdCh0ZXN0LCBpbmRleCwgb2Zmc2V0LCBkaXIsIGNoYXIpCisgICAgewor
ICAgICAgICBpZiAodGVzdC5ub2RlVHlwZSA9PSAzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRlc3QudGV4dENvbnRlbnQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICByYW5nZS5zZXRTdGFydCh0ZXN0LCBpKTsKKyAgICAgICAgICAgICAgICByYW5nZS5zZXRFbmQo
dGVzdCwgaSsxKTsgCisgICAgICAgICAgICAgICAgcmVjdHMgPSByYW5nZS5nZXRDbGllbnRSZWN0
cygpOworICAgICAgICAgICAgICAgIGlmIChkaXIgPT0gImx0ciIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlY3RzWzBdLmxlZnQgPCBvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZygiVGVzdCAiICsgaW5kZXggKyAiIEZhaWx1cmU6IGNoYXJhY3RlciAiICsgcmFuZ2Uu
dG9TdHJpbmcoKSArICIgc2hvdWxkIGJlIHJlbmRlcmVkIHJpZ2h0IG9mICIgKyBjaGFyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN1Y2NlZWQgPSBmYWxzZTsKKyAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChyZWN0c1swXS5sZWZ0ID4gb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsb2coIlRlc3QgIiArIGluZGV4ICsgIiBGYWlsdXJlOiBjaGFyYWN0ZXIgIiArIHJhbmdl
LnRvU3RyaW5nKCkgKyAiIHNob3VsZCBiZSByZW5kZXJlZCBsZWZ0IG9mICIgKyBjaGFyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN1Y2NlZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvZmZzZXQgPSByZWN0c1sw
XS5sZWZ0OworICAgICAgICAgICAgICAgIGNoYXIgPSByYW5nZS50b1N0cmluZygpOworICAgICAg
ICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAodGVzdC5ub2RlVHlwZSA9PSAxKSB7CisgICAg
ICAgICAgICBmb3IgKHZhciBub2RlID0gdGVzdC5maXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9k
ZS5uZXh0U2libGluZykgeworICAgICAgICAgICAgICAgIGNoZWNrQ2xpZW50UmVjdChub2RlLCBp
bmRleCwgb2Zmc2V0LCBkaXIsIGNoYXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgICAgICAgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAKKyAgICB2
YXIgdGVzdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZXN0Jyk7CisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRlc3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGNoZWNrQ2xpZW50UmVjdCh0ZXN0c1tp
XSwgaSwgLTEsICJsdHIiLCAiICIpOworCisgICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlv
biA9ICJydGwiOworICAgICAgICBjaGVja0NsaWVudFJlY3QodGVzdHNbaV0sIGksIDEwMDAwLCAi
cnRsIiwgIiAiKTsKKyAgICAKKyAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlzcGxheSA9ICJub25l
IjsKKyAgICB9CisgICAgaWYgKHN1Y2NlZWQgPT0gdHJ1ZSkgCisgICAgICAgIGxvZygiVGVzdCBj
b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Iik7Cis8L3NjcmlwdD4gCis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvcnRsLW9yZGVyaW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3Mv
cnRsLW9yZGVyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzcxODEpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvcnRsLW9yZGVyaW5nLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgsOCArMTgsNyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
ICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsNTIpIHNpemUgNzg0eDIgW2JvcmRlcjogKDFweCBp
bnNldCAjMDAwMDAwKV0KICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw3MCkgc2l6ZSA3ODR4
MTkKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDEpIHNpemUgMzA0eDE4Ci0gICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGggMjYxIExUUiBvdmVycmlkZTogIlRoZSB0ZXh0
IG9uIGJvdGggYnV0dG9ucyBzaG91bGQgbGlrZSB0aGlzOiAiCi0gICAgICAgICAgdGV4dCBydW4g
YXQgKDI2MSwxKSB3aWR0aCA0MyBMVFIgb3ZlcnJpZGU6ICJceHs1RTh9XHh7NUQ1fVx4ezVFQX1c
eHs1RTR9XHh7NURCfSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxKSB3aWR0aCAzMDQgTFRS
IG92ZXJyaWRlOiAiVGhlIHRleHQgb24gYm90aCBidXR0b25zIHNob3VsZCBsaWtlIHRoaXM6IFx4
ezVFOH1ceHs1RDV9XHh7NUVBfVx4ezVFNH1ceHs1REJ9IgogICAgICAgUmVuZGVyQmxvY2sgKGFu
b255bW91cykgYXQgKDAsMTA1KSBzaXplIDc4NHg0NAogICAgICAgICBSZW5kZXJCdXR0b24ge0JV
VFRPTn0gYXQgKDIsMikgc2l6ZSA0NngxOCBbYmdjb2xvcj0jQzBDMEMwXSBbYm9yZGVyOiAoMnB4
IG91dHNldCAjQzBDMEMwKSBub25lICgycHggb3V0c2V0ICNDMEMwQzApXQogICAgICAgICAgIFJl
bmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg4LDIpIHNpemUgMzB4MTMKQEAgLTQzLDUgKzQyLDQg
QEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2
LDEpIHdpZHRoIDY2IFJUTDogIlx4ezVENH1ceHs1REV9XHh7NUQwfVx4ezVENH0gXHh7NUQ0fS0i
CiAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMjQ0KSBzaXplIDc4NHgxOQogICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkgc2l6ZSA4MngxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDEpIHdpZHRoIDIxIExUUiBvdmVycmlkZTogIjIxLSIKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMjEsMSkgd2lkdGggNjEgTFRSIG92ZXJyaWRlOiAiXHh7NUQ0fSBceHs1RDR9XHh7NUQw
fVx4ezVERX1ceHs1RDR9IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDgyIExU
UiBvdmVycmlkZTogIjIxLVx4ezVENH0gXHh7NUQ0fVx4ezVEMH1ceHs1REV9XHh7NUQ0fSIKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3NlbGVjdC12aXN1YWwtaGVi
cmV3LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9mb3Jtcy9zZWxlY3QtdmlzdWFsLWhlYnJldy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDc3
MTgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvc2VsZWN0LXZpc3Vh
bC1oZWJyZXctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksNyBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsMzQp
IHNpemUgNzg0eDIgW2JvcmRlcjogKDFweCBpbnNldCAjMDAwMDAwKV0KICAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCw1Mikgc2l6ZSA3ODR4MTkKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDEpIHNpemUgMzkxeDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGgg
MzQ4IExUUiBvdmVycmlkZTogIlRleHQgb24gdGhlIHBvcC11cCBhbmQgaW4gdGhlIGxpc3Qgc2hv
dWxkIGxvb2sgbGlrZSB0aGlzOiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDM0OCwxKSB3aWR0
aCA0MyBMVFIgb3ZlcnJpZGU6ICJceHs1RTh9XHh7NUQ1fVx4ezVFQX1ceHs1RTR9XHh7NURCfSIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxKSB3aWR0aCAzOTEgTFRSIG92ZXJyaWRlOiAiVGV4
dCBvbiB0aGUgcG9wLXVwIGFuZCBpbiB0aGUgbGlzdCBzaG91bGQgbG9vayBsaWtlIHRoaXM6IFx4
ezVFOH1ceHs1RDV9XHh7NUVBfVx4ezVFNH1ceHs1REJ9IgogICAgICAgUmVuZGVyQmxvY2sgKGFu
b255bW91cykgYXQgKDAsODcpIHNpemUgNzg0eDIyCiAgICAgICAgIFJlbmRlck1lbnVMaXN0IHtT
RUxFQ1R9IGF0ICgyLDIpIHNpemUgNjF4MTggW2JnY29sb3I9I0ZGRkZGRl0KICAgICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDYxeDE4CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy92aXN1YWwtaGVicmV3LXRleHQtZmllbGQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zv
cm1zL3Zpc3VhbC1oZWJyZXctdGV4dC1maWVsZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDc3MTgx
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvdmlzdWFsLWhlYnJldy10
ZXh0LWZpZWxkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsNyBAQCBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAs
NTIpIHNpemUgNzg0eDIgW2JvcmRlcjogKDFweCBpbnNldCAjMDAwMDAwKV0KICAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCw3MCkgc2l6ZSA3ODR4MTkKICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDEpIHNpemUgMjgyeDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lk
dGggMjM5IExUUiBvdmVycmlkZTogIlRleHQgaW4gdGhlIGZpZWxkIHNob3VsZCBsb29rIGxpa2Ug
dGhpczogIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgyMzksMSkgd2lkdGggNDMgTFRSIG92ZXJy
aWRlOiAiXHh7NUU4fVx4ezVENX1ceHs1RUF9XHh7NUU0fVx4ezVEQn0iCisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMSkgd2lkdGggMjgyIExUUiBvdmVycmlkZTogIlRleHQgaW4gdGhlIGZpZWxk
IHNob3VsZCBsb29rIGxpa2UgdGhpczogXHh7NUU4fVx4ezVENX1ceHs1RUF9XHh7NUU0fVx4ezVE
Qn0iCiAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxMDUpIHNpemUgNzg0eDIz
CiAgICAgICAgIFJlbmRlclRleHRDb250cm9sIHtJTlBVVH0gYXQgKDIsMikgc2l6ZSAxMjV4MTkg
W2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCg==
</data>
<flag name="review"
          id="73335"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82015</attachid>
            <date>2011-02-10 11:41:01 -0800</date>
            <delta_ts>2011-02-13 13:10:13 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>52128.v4</filename>
            <type>text/plain</type>
            <size>15287</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMDggIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOCB3aGVuIGRpcj0icnRs
Ii4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMTI4
CisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOiBBZGQgVmlzdWFsRGly
ZWN0aW9uT3ZlcnJpZGUgZW51bS4KKyAgICAgICAgKFdlYkNvcmU6Ojo6Y3JlYXRlQmlkaVJ1bnNG
b3JMaW5lKTogRm9yIGxpbmVzIHdpdGggdmlzdWFsbHkgZGlyZWN0aW9uIG92ZXJyaWRlLCBjcmVh
dGUgYmlkaSBydW5zIHdpdGhvdXQgcmVzb2x2aW5nIGJpZGkgbGV2ZWxzIChvbmUgcnVuIHBlciBy
ZW5kZXIgb2JqZWN0KSwgc2V0IGJpZGkgbGV2ZWwgYXMgMCBvciAxIGRlcGVuZHMgb24gTFRSIG9y
IFJUTCBvdmVycmlkZSwgYW5kIHJldmVyc2UgcnVucyBmb3IgUlRMIG92ZXJyaWRlLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdExpbmUpOiBTZXQgaW5saW5lIGJveCBiaWRpIGxldmVs
IHRoZSBzYW1lIGFzIEJpZGlSdW4ncyBiaWRpIGxldmVsIHdpdGhvdXQgc3BlY2lhbCBoYW5kbGlu
ZyBvZiBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbik6IFBhc3MgaW4gVmlzdWFsRGlyZWN0aW9uT3ZlcnJp
ZGUgdG8gY3JlYXRlQmlkaVJ1bnNGb3JMaW5lKCkuCisKIDIwMTEtMDItMDggIFpoZW55YW8gTW8g
IDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHJl
dmlzaW9uIDc3MTgxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiwxMiBAQCBzdHJ1Y3QgQmlkaUNoYXJh
Y3RlclJ1biB7CiAgICAgQmlkaUNoYXJhY3RlclJ1biogbV9uZXh0OwogfTsKIAorZW51bSBWaXN1
YWxEaXJlY3Rpb25PdmVycmlkZSB7CisgICAgTm9WaXN1YWxPdmVycmlkZSwKKyAgICBWaXN1YWxM
ZWZ0VG9SaWdodE92ZXJyaWRlLAorICAgIFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUKK307CisK
IHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPiBjbGFzcyBCaWRpUmVzb2x2ZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJpZGlSZXNvbHZlcik7CiBwdWJsaWMgOgpAQCAt
MTYzLDcgKzE2OSw3IEBAIHB1YmxpYyA6CiAgICAgdm9pZCBlbWJlZChXVEY6OlVuaWNvZGU6OkRp
cmVjdGlvbik7CiAgICAgdm9pZCBjb21taXRFeHBsaWNpdEVtYmVkZGluZygpOwogCi0gICAgdm9p
ZCBjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgYm9vbCB2aXN1YWxP
cmRlciA9IGZhbHNlLCBib29sIGhhcmRMaW5lQnJlYWsgPSBmYWxzZSk7CisgICAgdm9pZCBjcmVh
dGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzdWFsRGlyZWN0aW9uT3Zl
cnJpZGUgPSBOb1Zpc3VhbE92ZXJyaWRlLCBib29sIGhhcmRMaW5lQnJlYWsgPSBmYWxzZSk7CiAK
ICAgICBSdW4qIGZpcnN0UnVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFJ1bjsgfQogICAgIFJ1
biogbGFzdFJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJ1bjsgfQpAQCAtNTEyLDEyICs1MTgs
MjggQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnJldmVycwogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLXZvaWQgQmlkaVJlc29sdmVyPEl0ZXJh
dG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgYm9v
bCB2aXN1YWxPcmRlciwgYm9vbCBoYXJkTGluZUJyZWFrKQordm9pZCBCaWRpUmVzb2x2ZXI8SXRl
cmF0b3IsIFJ1bj46OmNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBW
aXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSwgYm9vbCBoYXJkTGluZUJyZWFrKQogewog
ICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKICAgICBBU1NFUlQobV9kaXJlY3Rp
b24gPT0gT3RoZXJOZXV0cmFsKTsKIAorICAgIGlmIChvdmVycmlkZSAhPSBOb1Zpc3VhbE92ZXJy
aWRlKSB7CisgICAgICAgIGVtcHR5UnVuID0gZmFsc2U7CisgICAgICAgIHNvciA9IGN1cnJlbnQ7
CisgICAgICAgIGVvciA9IEl0ZXJhdG9yKCk7CisgICAgICAgIHdoaWxlIChjdXJyZW50ICE9IGVu
ZCAmJiAhY3VycmVudC5hdEVuZCgpKSB7CisgICAgICAgICAgICBlb3IgPSBjdXJyZW50OworICAg
ICAgICAgICAgaW5jcmVtZW50KCk7CisgICAgICAgIH0KKyAgICAgICAgbV9kaXJlY3Rpb24gPSBv
dmVycmlkZSA9PSBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlID8gTGVmdFRvUmlnaHQgOiBSaWdo
dFRvTGVmdDsKKyAgICAgICAgYXBwZW5kUnVuKCk7CisgICAgICAgIG1fbG9naWNhbGx5TGFzdFJ1
biA9IG1fbGFzdFJ1bjsKKyAgICAgICAgaWYgKG92ZXJyaWRlID09IFZpc3VhbFJpZ2h0VG9MZWZ0
T3ZlcnJpZGUpCisgICAgICAgICAgICByZXZlcnNlUnVucygwLCBydW5Db3VudCgpIC0gMSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBlbXB0eVJ1biA9IHRydWU7CiAKICAgICBlb3Ig
PSBJdGVyYXRvcigpOwpAQCAtOTE0LDQ5ICs5MzYsNDUgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRl
cmF0b3IsIFJ1bj46OmNyZWF0ZQogICAgIG1fbG9naWNhbGx5TGFzdFJ1biA9IG1fbGFzdFJ1bjsK
IAogICAgIC8vIHJlb3JkZXIgbGluZSBhY2NvcmRpbmcgdG8gcnVuIHN0cnVjdHVyZS4uLgotICAg
IC8vIGRvIG5vdCByZXZlcnNlIGZvciB2aXN1YWxseSBvcmRlcmVkIHdlYiBzaXRlcwotICAgIGlm
ICghdmlzdWFsT3JkZXIpIHsKLQotICAgICAgICAvLyBmaXJzdCBmaW5kIGhpZ2hlc3QgYW5kIGxv
d2VzdCBsZXZlbHMKLSAgICAgICAgdW5zaWduZWQgY2hhciBsZXZlbExvdyA9IDEyODsKLSAgICAg
ICAgdW5zaWduZWQgY2hhciBsZXZlbEhpZ2ggPSAwOwotICAgICAgICBSdW4qIHIgPSBmaXJzdFJ1
bigpOwotICAgICAgICB3aGlsZSAocikgewotICAgICAgICAgICAgaWYgKHItPm1fbGV2ZWwgPiBs
ZXZlbEhpZ2gpCi0gICAgICAgICAgICAgICAgbGV2ZWxIaWdoID0gci0+bV9sZXZlbDsKLSAgICAg
ICAgICAgIGlmIChyLT5tX2xldmVsIDwgbGV2ZWxMb3cpCi0gICAgICAgICAgICAgICAgbGV2ZWxM
b3cgPSByLT5tX2xldmVsOwotICAgICAgICAgICAgciA9IHItPm5leHQoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIGltcGxlbWVudHMgcmVvcmRlcmluZyBvZiB0aGUgbGluZSAoTDIgYWNjb3Jk
aW5nIHRvIEJpZGkgc3BlYyk6Ci0gICAgICAgIC8vIEwyLiBGcm9tIHRoZSBoaWdoZXN0IGxldmVs
IGZvdW5kIGluIHRoZSB0ZXh0IHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsIG9uIGVhY2ggbGluZSwK
LSAgICAgICAgLy8gcmV2ZXJzZSBhbnkgY29udGlndW91cyBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJz
IHRoYXQgYXJlIGF0IHRoYXQgbGV2ZWwgb3IgaGlnaGVyLgotCi0gICAgICAgIC8vIHJldmVyc2lu
ZyBpcyBvbmx5IGRvbmUgdXAgdG8gdGhlIGxvd2VzdCBvZGQgbGV2ZWwKLSAgICAgICAgaWYgKCEo
bGV2ZWxMb3cgJSAyKSkKLSAgICAgICAgICAgIGxldmVsTG93Kys7Ci0KLSAgICAgICAgdW5zaWdu
ZWQgY291bnQgPSBydW5Db3VudCgpIC0gMTsKLQotICAgICAgICB3aGlsZSAobGV2ZWxIaWdoID49
IGxldmVsTG93KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgICAgIFJ1
biogY3VyclJ1biA9IGZpcnN0UnVuKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaSA8IGNvdW50KSB7
Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBjb3VudCAmJiBjdXJyUnVuICYmIGN1cnJSdW4t
Pm1fbGV2ZWwgPCBsZXZlbEhpZ2gpIHsKLSAgICAgICAgICAgICAgICAgICAgaSsrOwotICAgICAg
ICAgICAgICAgICAgICBjdXJyUnVuID0gY3VyclJ1bi0+bmV4dCgpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCA9IGk7Ci0gICAgICAgICAgICAgICAg
d2hpbGUgKGkgPD0gY291bnQgJiYgY3VyclJ1biAmJiBjdXJyUnVuLT5tX2xldmVsID49IGxldmVs
SGlnaCkgewotICAgICAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICAgICAgICAgIGN1
cnJSdW4gPSBjdXJyUnVuLT5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGVuZCA9IGkgLSAxOwotICAgICAgICAgICAgICAgIHJldmVyc2VSdW5zKHN0
YXJ0LCBlbmQpOworICAgIC8vIGZpcnN0IGZpbmQgaGlnaGVzdCBhbmQgbG93ZXN0IGxldmVscwor
ICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWxMb3cgPSAxMjg7CisgICAgdW5zaWduZWQgY2hhciBsZXZl
bEhpZ2ggPSAwOworICAgIFJ1biogciA9IGZpcnN0UnVuKCk7CisgICAgd2hpbGUgKHIpIHsKKyAg
ICAgICAgaWYgKHItPm1fbGV2ZWwgPiBsZXZlbEhpZ2gpCisgICAgICAgICAgICBsZXZlbEhpZ2gg
PSByLT5tX2xldmVsOworICAgICAgICBpZiAoci0+bV9sZXZlbCA8IGxldmVsTG93KQorICAgICAg
ICAgICAgbGV2ZWxMb3cgPSByLT5tX2xldmVsOworICAgICAgICByID0gci0+bmV4dCgpOworICAg
IH0KKworICAgIC8vIGltcGxlbWVudHMgcmVvcmRlcmluZyBvZiB0aGUgbGluZSAoTDIgYWNjb3Jk
aW5nIHRvIEJpZGkgc3BlYyk6CisgICAgLy8gTDIuIEZyb20gdGhlIGhpZ2hlc3QgbGV2ZWwgZm91
bmQgaW4gdGhlIHRleHQgdG8gdGhlIGxvd2VzdCBvZGQgbGV2ZWwgb24gZWFjaCBsaW5lLAorICAg
IC8vIHJldmVyc2UgYW55IGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGFy
ZSBhdCB0aGF0IGxldmVsIG9yIGhpZ2hlci4KKworICAgIC8vIHJldmVyc2luZyBpcyBvbmx5IGRv
bmUgdXAgdG8gdGhlIGxvd2VzdCBvZGQgbGV2ZWwKKyAgICBpZiAoIShsZXZlbExvdyAlIDIpKQor
ICAgICAgICBsZXZlbExvdysrOworCisgICAgdW5zaWduZWQgY291bnQgPSBydW5Db3VudCgpIC0g
MTsKKworICAgIHdoaWxlIChsZXZlbEhpZ2ggPj0gbGV2ZWxMb3cpIHsKKyAgICAgICAgdW5zaWdu
ZWQgaSA9IDA7CisgICAgICAgIFJ1biogY3VyclJ1biA9IGZpcnN0UnVuKCk7CisgICAgICAgIHdo
aWxlIChpIDwgY291bnQpIHsKKyAgICAgICAgICAgIHdoaWxlIChpIDwgY291bnQgJiYgY3VyclJ1
biAmJiBjdXJyUnVuLT5tX2xldmVsIDwgbGV2ZWxIaWdoKSB7CisgICAgICAgICAgICAgICAgaSsr
OworICAgICAgICAgICAgICAgIGN1cnJSdW4gPSBjdXJyUnVuLT5uZXh0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCA9IGk7CisgICAgICAgICAgICB3aGlsZSAo
aSA8PSBjb3VudCAmJiBjdXJyUnVuICYmIGN1cnJSdW4tPm1fbGV2ZWwgPj0gbGV2ZWxIaWdoKSB7
CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGN1cnJSdW4gPSBjdXJyUnVu
LT5uZXh0KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsZXZlbEhpZ2gtLTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGVuZCA9IGkgLSAxOworICAgICAgICAgICAgcmV2ZXJzZVJ1bnMoc3Rh
cnQsIGVuZCk7CiAgICAgICAgIH0KKyAgICAgICAgbGV2ZWxIaWdoLS07CiAgICAgfQogICAgIGVu
ZE9mTGluZSA9IEl0ZXJhdG9yKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gNzcxODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RMaW4KICAgICAgICAgcGFyZW50Qm94LT5hZGRUb0xpbmUoYm94KTsKIAogICAgICAg
ICBib29sIHZpc3VhbGx5T3JkZXJlZCA9IHItPm1fb2JqZWN0LT5zdHlsZSgpLT52aXN1YWxseU9y
ZGVyZWQoKTsKLSAgICAgICAgYm94LT5zZXRCaWRpTGV2ZWwodmlzdWFsbHlPcmRlcmVkID8gMCA6
IHItPmxldmVsKCkpOworICAgICAgICBib3gtPnNldEJpZGlMZXZlbChyLT5sZXZlbCgpKTsKIAog
ICAgICAgICBpZiAoYm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgSW5saW5l
VGV4dEJveCogdGV4dCA9IHN0YXRpY19jYXN0PElubGluZVRleHRCb3gqPihib3gpOwpAQCAtNjc3
LDcgKzY3Nyw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGIKICAg
ICAgICAgICAgIEFTU0VSVChlbmQgIT0gcmVzb2x2ZXIucG9zaXRpb24oKSk7CiAKICAgICAgICAg
ICAgIGlmICghaXNMaW5lRW1wdHkpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlci5jcmVhdGVC
aWRpUnVuc0ZvckxpbmUoZW5kLCBzdHlsZSgpLT52aXN1YWxseU9yZGVyZWQoKSwgcHJldmlvdXNM
aW5lQnJva2VDbGVhbmx5KTsKKyAgICAgICAgICAgICAgICBWaXN1YWxEaXJlY3Rpb25PdmVycmlk
ZSBvdmVycmlkZSA9IChzdHlsZSgpLT52aXN1YWxseU9yZGVyZWQoKSA/IChzdHlsZSgpLT5kaXJl
Y3Rpb24oKSA9PSBMVFIgPyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRU
b0xlZnRPdmVycmlkZSkgOiBOb1Zpc3VhbE92ZXJyaWRlKTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlci5jcmVhdGVCaWRpUnVuc0ZvckxpbmUoZW5kLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJv
a2VDbGVhbmx5KTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZXIucG9zaXRpb24oKSA9
PSBlbmQpOwogCiAgICAgICAgICAgICAgICAgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biA9IDA7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3Nzk5OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTAyLTA4ICBYaWFvbWVpIEppICA8eGpp
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorICAg
ICAgICBGaXggcmVuZGVyaW5nIG9mIElTTy04ODU5LTggd2hlbiBkaXI9InJ0bCIuCisKKyAgICAg
ICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pc28tODg1OS04LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9jc3MvcnRsLW9yZGVyaW5nLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9zZWxlY3QtdmlzdWFs
LWhlYnJldy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMv
dmlzdWFsLWhlYnJldy10ZXh0LWZpZWxkLWV4cGVjdGVkLnR4dDoKKwogMjAxMS0wMi0wOCAgSmlh
IFB1ICA8anB1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lzby04ODU5LTgtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2lzby04ODU5LTgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorVGVzdCByZW5kZXJpbmcgb2YgSVNPLTg4NTktOC4KKworVGVz
dCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9pc28tODg1OS04Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaXNvLTg4NTktOC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDc1IEBACisKKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS04Ii8+
Cis8Ym9keT4KKzxwPlRlc3QgcmVuZGVyaW5nIG9mIElTTy04ODU5LTguCis8cD4KKzxkaXYgY29u
dGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij758OE8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxl
IGNsYXNzPSJ0ZXN0Ij758OEg4vfrIDwvZGl2PgorPGRpdiBjb250ZW50ZWRpdGFibGUgY2xhc3M9
InRlc3QiPvnw4SBhYmMg4vfrPC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBjbGFzcz0idGVz
dCI+YWJjIPnw4SBkZWY8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlIGNsYXNzPSJ0ZXN0Ij75
8OEgPHNwYW4gZGlyPWx0cj7i9+s8L3NwYW4+PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBj
bGFzcz0idGVzdCI++fDhIDxzcGFuIGRpcj1ydGw+4vfrPC9zcGFuPjwvZGl2PgorPHVsIGlkPSJj
b25zb2xlIiBkaXI9bHRyPjwvdWw+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4gCisgICAgZnVuY3Rpb24gbG9nKHN0
cikKKyAgICB7CisgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7
CisgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOwor
ICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7
CisgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgIH0KKyAgICAKKyAgICB2YXIg
c3VjY2VlZCA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBjaGVja0NsaWVudFJlY3QodGVzdCwgaW5k
ZXgsIG9mZnNldCwgZGlyLCBjaGFyKQorICAgIHsKKyAgICAgICAgaWYgKHRlc3Qubm9kZVR5cGUg
PT0gMykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0LnRleHRDb250ZW50
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGVzdCwgaSk7
CisgICAgICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKHRlc3QsIGkrMSk7IAorICAgICAgICAgICAg
ICAgIHJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZGlyID09ICJsdHIiKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWN0c1swXS5sZWZ0IDwg
b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlRlc3QgIiArIGluZGV4ICsg
IiBGYWlsdXJlOiBjaGFyYWN0ZXIgIiArIHJhbmdlLnRvU3RyaW5nKCkgKyAiIHNob3VsZCBiZSBy
ZW5kZXJlZCByaWdodCBvZiAiICsgY2hhcik7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWNj
ZWVkID0gZmFsc2U7CisgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVjdHNbMF0ubGVmdCA+
IG9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJUZXN0ICIgKyBpbmRleCAr
ICIgRmFpbHVyZTogY2hhcmFjdGVyICIgKyByYW5nZS50b1N0cmluZygpICsgIiBzaG91bGQgYmUg
cmVuZGVyZWQgbGVmdCBvZiAiICsgY2hhcik7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWNj
ZWVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgb2Zmc2V0ID0gcmVjdHNbMF0ubGVmdDsKKyAgICAgICAgICAgICAgICBj
aGFyID0gcmFuZ2UudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2Ug
aWYgKHRlc3Qubm9kZVR5cGUgPT0gMSkgeworICAgICAgICAgICAgZm9yICh2YXIgbm9kZSA9IHRl
c3QuZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpIHsKKyAgICAgICAg
ICAgICAgICBjaGVja0NsaWVudFJlY3Qobm9kZSwgaW5kZXgsIG9mZnNldCwgZGlyLCBjaGFyKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgICAgIAorICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgCisgICAgdmFyIHRlc3RzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgndGVzdCcpOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgewor
ICAgICAgICBjaGVja0NsaWVudFJlY3QodGVzdHNbaV0sIGksIC0xLCAibHRyIiwgIiAiKTsKKwor
ICAgICAgICB0ZXN0c1tpXS5zdHlsZS5kaXJlY3Rpb24gPSAicnRsIjsKKyAgICAgICAgY2hlY2tD
bGllbnRSZWN0KHRlc3RzW2ldLCBpLCAxMDAwMCwgInJ0bCIsICIgIik7CisgICAgCisgICAgICAg
IHRlc3RzW2ldLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgfQorICAgIGlmIChzdWNjZWVk
ID09IHRydWUpIAorICAgICAgICBsb2coIlRlc3QgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSIpOwor
PC9zY3JpcHQ+IAorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvY3NzL3J0bC1vcmRlcmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL3J0bC1vcmRlcmluZy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDc3MTgxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL3J0
bC1vcmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDcgQEAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgw
LDUyKSBzaXplIDc4NHgyIFtib3JkZXI6ICgxcHggaW5zZXQgIzAwMDAwMCldCiAgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsNzApIHNpemUgNzg0eDE5CiAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwxKSBzaXplIDMwNHgxOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdp
ZHRoIDI2MSBMVFIgb3ZlcnJpZGU6ICJUaGUgdGV4dCBvbiBib3RoIGJ1dHRvbnMgc2hvdWxkIGxp
a2UgdGhpczogIgotICAgICAgICAgIHRleHQgcnVuIGF0ICgyNjEsMSkgd2lkdGggNDMgTFRSIG92
ZXJyaWRlOiAiXHh7NUU4fVx4ezVENX1ceHs1RUF9XHh7NUU0fVx4ezVEQn0iCisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMSkgd2lkdGggMzA0IExUUiBvdmVycmlkZTogIlRoZSB0ZXh0IG9uIGJv
dGggYnV0dG9ucyBzaG91bGQgbGlrZSB0aGlzOiBceHs1RTh9XHh7NUQ1fVx4ezVFQX1ceHs1RTR9
XHh7NURCfSIKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEwNSkgc2l6ZSA3
ODR4NDQKICAgICAgICAgUmVuZGVyQnV0dG9uIHtCVVRUT059IGF0ICgyLDIpIHNpemUgNDZ4MTgg
W2JnY29sb3I9I0MwQzBDMF0gW2JvcmRlcjogKDJweCBvdXRzZXQgI0MwQzBDMCkgbm9uZSAoMnB4
IG91dHNldCAjQzBDMEMwKV0KICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
OCwyKSBzaXplIDMweDEzCkBAIC00Myw1ICs0Miw0IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAogICAgICAgICAgIHRleHQgcnVuIGF0ICgxNiwxKSB3aWR0aCA2NiBSVEw6ICJceHs1RDR9
XHh7NURFfVx4ezVEMH1ceHs1RDR9IFx4ezVENH0tIgogICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDI0NCkgc2l6ZSA3ODR4MTkKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDEp
IHNpemUgODJ4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxKSB3aWR0aCAyMSBMVFIgb3Zl
cnJpZGU6ICIyMS0iCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDIxLDEpIHdpZHRoIDYxIExUUiBv
dmVycmlkZTogIlx4ezVENH0gXHh7NUQ0fVx4ezVEMH1ceHs1REV9XHh7NUQ0fSIKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwxKSB3aWR0aCA4MiBMVFIgb3ZlcnJpZGU6ICIyMS1ceHs1RDR9IFx4
ezVENH1ceHs1RDB9XHh7NURFfVx4ezVENH0iCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9zZWxlY3QtdmlzdWFsLWhlYnJldy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvc2VsZWN0LXZpc3VhbC1o
ZWJyZXctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3NzE4MSkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL3NlbGVjdC12aXN1YWwtaGVicmV3LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtOSw4ICs5LDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAg
ICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDM0KSBzaXplIDc4NHgyIFtib3JkZXI6ICgxcHgg
aW5zZXQgIzAwMDAwMCldCiAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNTIpIHNpemUgNzg0
eDE5CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxKSBzaXplIDM5MXgxOAotICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDM0OCBMVFIgb3ZlcnJpZGU6ICJUZXh0IG9u
IHRoZSBwb3AtdXAgYW5kIGluIHRoZSBsaXN0IHNob3VsZCBsb29rIGxpa2UgdGhpczogIgotICAg
ICAgICAgIHRleHQgcnVuIGF0ICgzNDgsMSkgd2lkdGggNDMgTFRSIG92ZXJyaWRlOiAiXHh7NUU4
fVx4ezVENX1ceHs1RUF9XHh7NUU0fVx4ezVEQn0iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MSkgd2lkdGggMzkxIExUUiBvdmVycmlkZTogIlRleHQgb24gdGhlIHBvcC11cCBhbmQgaW4gdGhl
IGxpc3Qgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOiBceHs1RTh9XHh7NUQ1fVx4ezVFQX1ceHs1RTR9
XHh7NURCfSIKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDg3KSBzaXplIDc4
NHgyMgogICAgICAgICBSZW5kZXJNZW51TGlzdCB7U0VMRUNUfSBhdCAoMiwyKSBzaXplIDYxeDE4
IFtiZ2NvbG9yPSNGRkZGRkZdCiAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQg
KDAsMCkgc2l6ZSA2MXgxOApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9y
bXMvdmlzdWFsLWhlYnJldy10ZXh0LWZpZWxkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy92aXN1YWwtaGVicmV3LXRleHQtZmll
bGQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3NzE4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Zvcm1zL3Zpc3VhbC1oZWJyZXctdGV4dC1maWVsZC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDUyKSBzaXplIDc4NHgyIFtib3JkZXI6ICgx
cHggaW5zZXQgIzAwMDAwMCldCiAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNzApIHNpemUg
Nzg0eDE5CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxKSBzaXplIDI4MngxOAot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDIzOSBMVFIgb3ZlcnJpZGU6ICJUZXh0
IGluIHRoZSBmaWVsZCBzaG91bGQgbG9vayBsaWtlIHRoaXM6ICIKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMjM5LDEpIHdpZHRoIDQzIExUUiBvdmVycmlkZTogIlx4ezVFOH1ceHs1RDV9XHh7NUVB
fVx4ezVFNH1ceHs1REJ9IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDI4MiBM
VFIgb3ZlcnJpZGU6ICJUZXh0IGluIHRoZSBmaWVsZCBzaG91bGQgbG9vayBsaWtlIHRoaXM6IFx4
ezVFOH1ceHs1RDV9XHh7NUVBfVx4ezVFNH1ceHs1REJ9IgogICAgICAgUmVuZGVyQmxvY2sgKGFu
b255bW91cykgYXQgKDAsMTA1KSBzaXplIDc4NHgyMwogICAgICAgICBSZW5kZXJUZXh0Q29udHJv
bCB7SU5QVVR9IGF0ICgyLDIpIHNpemUgMTI1eDE5IFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6
ICgycHggaW5zZXQgIzAwMDAwMCldCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDB4MAo=
</data>
<flag name="review"
          id="73638"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>