<?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>41987</bug_id>
          
          <creation_ts>2010-07-09 14:21:34 -0700</creation_ts>
          <short_desc>up arrow doesn&apos;t work with RTL text with word wrapping</short_desc>
          <delta_ts>2010-11-29 19:19:28 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>harrison</cc>
    
    <cc>hyatt</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>progame+wk</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249266</commentid>
    <comment_count>0</comment_count>
      <attachid>61095</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-09 14:21:34 -0700</bug_when>
    <thetext>Created attachment 61095
test case

See test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249277</commentid>
    <comment_count>1</comment_count>
      <attachid>61098</attachid>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-07-09 14:31:54 -0700</bug_when>
    <thetext>Created attachment 61098
testcase2

it&apos;s not clear (to me) how your testcase works because there is no second line (which is mentioned in the instructions)
so i&apos;ll also add my own:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291821</commentid>
    <comment_count>2</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-10-08 12:52:12 -0700</bug_when>
    <thetext>In Chromium bug: 
http://code.google.com/p/chromium/issues/detail?id=46239</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300340</commentid>
    <comment_count>3</comment_count>
      <attachid>61095</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-10-27 10:23:59 -0700</bug_when>
    <thetext>Comment on attachment 61095
test case

Obsoleting since Yair&apos;s test case is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300350</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-10-27 10:31:09 -0700</bug_when>
    <thetext>IMHO the desired behavior here with the up/down arrow keys on multiline text match the LTR case.  There may be corner cases I&apos;m not aware of, but for this testcase I think things are pretty clear cut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303264</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-02 01:34:24 -0700</bug_when>
    <thetext>This seems to be a bug in RenderText::positionForPoint.  The following change fixes the issue:

Index: WebCore/rendering/RenderText.cpp
===================================================================
--- WebCore/rendering/RenderText.cpp	(revision 70891)
+++ WebCore/rendering/RenderText.cpp	(working copy)
@@ -423,7 +423,7 @@
         // at the y coordinate of the first line or above
         // and the x coordinate is to the left of the first text box left edge
         offset = firstTextBox()-&gt;offsetForPosition(point.x());
-        return createVisiblePosition(offset + firstTextBox()-&gt;start(), DOWNSTREAM);
+        return createVisiblePosition(offset + firstTextBox()-&gt;start(), offset &gt; 0 ? VP_UPSTREAM_IF_POSSIBLE : DOWNSTREAM);
     }
     if (lastTextBox() &amp;&amp; point.y() &gt;= lastTextBox()-&gt;root()-&gt;lineTop() &amp;&amp; point.x() &gt;= lastTextBox()-&gt;m_x + lastTextBox()-&gt;logicalWidth()) {
         // at the y coordinate of the last line or below

I&apos;ll write some tests and post a patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303696</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-02 14:56:15 -0700</bug_when>
    <thetext>My suggested change fixes the testcase but not the testcase2:
&lt;div dir=&quot;rtl&quot; contenteditable style=&quot;width: 5ex;&quot;&gt;&amp;#1490;&amp;#1499; &amp;#1497;&amp;#1490;&amp;#1499;&amp;#1506;&amp;#1497; &amp;#1490;&lt;/div&gt;

In this editable region, the problem still reproduces even with my change.  The problem seems to be in startPositionForLine in visible_units.cpp in the following stack trace:

#0	0x10213da38 in WebCore::rootBoxForLine at visible_units.cpp:358
#1	0x10213f100 in WebCore::startPositionForLine at visible_units.cpp:376
#2	0x10213f295 in WebCore::startOfLine at visible_units.cpp:419
#3	0x10213f4c4 in WebCore::inSameLine at visible_units.cpp:508
#4	0x102143749 in WebCore::VisiblePosition::init at VisiblePosition.cpp:64
#5	0x102143803 in WebCore::VisiblePosition::VisiblePosition at VisiblePosition.cpp:54
#6	0x101eedbe0 in WebCore::RenderObject::createVisiblePosition at RenderObject.cpp:2636
#7	0x101f4c74d in WebCore::RenderText::positionForPoint at RenderText.cpp:426

We&apos;re trying to decide whether or not we should keep UPSTREAM in VisiblePosition&apos;s constructor.  To do that, we check whether or not DOWNSTREAM and UPSTREAM belong to the same line.  However, we&apos;re obtaining a wrong visible position for the DOWNSTREAM.

In startPositionForLine, we call rootBoxForLine(c) and retrieve the first leaf child of the root box.  However, this the first leaf child (offset 8) is different from the box we had in rootBoxForLine (offset 3).

+Justin, Harrison, Eric, &amp; Darin who seem to have worked on startPositionForLine according to http://trac.webkit.org/browser/trunk/WebCore/editing/visible_units.cpp?annotate=blame&amp;rev=70932</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303959</commentid>
    <comment_count>7</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-11-03 03:38:33 -0700</bug_when>
    <thetext>note: the first test case seems to only work under Linux (in Windows the lines doesn&apos;t wrap -at least in my computers)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304076</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-03 10:01:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; note: the first test case seems to only work under Linux (in Windows the lines doesn&apos;t wrap -at least in my computers)

That&apos;s quite irrelevant here since I can always adjust the width and reproduce the issue but yes, we shouldn&apos;t be specifying the width of div by px.  we should be using ex instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308808</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-12 15:27:32 -0800</bug_when>
    <thetext>Xiaomei is right, removing the following code after adding my suggested change will fix the issue:

    if (visPos.isNotNull()) {
        // Make sure the start of line is not greater than the given input position.  Else use the previous position to 
        // obtain start of line.  This condition happens when the input position is before the space character at the end 
        // of a soft-wrapped non-editable line. In this scenario, startPositionForLine would incorrectly hand back a position
        // greater than the input position.  This fix is to account for the discrepancy between lines with webkit-line-break:after-white-space 
        // style versus lines without that style, which would break before a space by default. 
        Position p = visPos.deepEquivalent();
        if (p.deprecatedEditingOffset() &gt; c.deepEquivalent().deprecatedEditingOffset() &amp;&amp; p.node()-&gt;isSameNode(c.deepEquivalent().node())) {
            visPos = c.previous();
            if (visPos.isNull())
                return VisiblePosition();
            visPos = startPositionForLine(visPos);
        }
    }

This change was added in http://trac.webkit.org/changeset/23608 but I have no idea what it&apos;s doing since it doesn&apos;t have a test or bug.
Could someone from Apple elaborate on what rdar://problem/5237325 is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309821</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-16 10:56:28 -0800</bug_when>
    <thetext>From the conversion I had with Enrica:

&quot;The real problem is due to how inline text boxes are laid out in RenderBlock, not accounting for the space character at the end of a wrapped line if the line lacks a webkit-line-break:after-white-space style.  So an inline text box without  webkit-line-break:after-white-space style will have a length one less than that of an inline text box containing webkit-line-break:after-white-space style.  This discrepancy, in turn, affects the result of RenderText&apos;s isAtLineWrap routine, which then affect which inlineTextBox is fetched by startOfLine/endOfLine.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309827</commentid>
    <comment_count>11</comment_count>
      <attachid>74013</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-16 11:04:13 -0800</bug_when>
    <thetext>Created attachment 74013
failed attempt to write a test for r23608

I tried to make a test case per Enrica&apos;s comment &amp; comment in the code but the problem doesn&apos;t reproduce anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309834</commentid>
    <comment_count>12</comment_count>
      <attachid>74016</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-16 11:10:20 -0800</bug_when>
    <thetext>Created attachment 74016
test case(?) for r23608

Oops, my previous test had a typo. It was missing leading &quot;-&quot;.  However, now the problem seems to reproduce on TOT as well regardless of the code&apos;s presence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309869</commentid>
    <comment_count>13</comment_count>
      <attachid>74022</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-16 12:22:11 -0800</bug_when>
    <thetext>Created attachment 74022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310995</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-18 11:28:36 -0800</bug_when>
    <thetext>Could someone review my patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311586</commentid>
    <comment_count>15</comment_count>
      <attachid>74022</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-19 11:32:03 -0800</bug_when>
    <thetext>Comment on attachment 74022
Patch

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

&gt; WebCore/rendering/RenderText.cpp:432
&gt; +        return createVisiblePosition(offset + firstTextBox()-&gt;start(), offset &gt; 0 &amp;&amp; firstTextBox()-&gt;start() ? VP_UPSTREAM_IF_POSSIBLE : DOWNSTREAM);

I don’t understand why an offset of 0 is a special case. What are the conditions where the offset is 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311587</commentid>
    <comment_count>16</comment_count>
      <attachid>74022</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-19 11:37:32 -0800</bug_when>
    <thetext>Comment on attachment 74022
Patch

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

&gt;&gt; WebCore/rendering/RenderText.cpp:432
&gt;&gt; +        return createVisiblePosition(offset + firstTextBox()-&gt;start(), offset &gt; 0 &amp;&amp; firstTextBox()-&gt;start() ? VP_UPSTREAM_IF_POSSIBLE : DOWNSTREAM);
&gt; 
&gt; I don’t understand why an offset of 0 is a special case. What are the conditions where the offset is 0?

We check that condition because if offset was 0, then we&apos;re at the beginning of LTR text, and we don&apos;t want to move to the upstream in that case.  See http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderText.cpp#L421.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311616</commentid>
    <comment_count>17</comment_count>
      <attachid>74022</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-19 12:15:12 -0800</bug_when>
    <thetext>Comment on attachment 74022
Patch

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

&gt;&gt;&gt; WebCore/rendering/RenderText.cpp:432
&gt;&gt;&gt; +        return createVisiblePosition(offset + firstTextBox()-&gt;start(), offset &gt; 0 &amp;&amp; firstTextBox()-&gt;start() ? VP_UPSTREAM_IF_POSSIBLE : DOWNSTREAM);
&gt;&gt; 
&gt;&gt; I don’t understand why an offset of 0 is a special case. What are the conditions where the offset is 0?
&gt; 
&gt; We check that condition because if offset was 0, then we&apos;re at the beginning of LTR text, and we don&apos;t want to move to the upstream in that case.  See http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderText.cpp#L421.

So offset of 0 can’t mean anything about collapsed spaces or visibility:hidden text or the like?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311623</commentid>
    <comment_count>18</comment_count>
      <attachid>74022</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-19 12:27:13 -0800</bug_when>
    <thetext>Comment on attachment 74022
Patch

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

&gt;&gt;&gt;&gt; WebCore/rendering/RenderText.cpp:432
&gt;&gt;&gt;&gt; +        return createVisiblePosition(offset + firstTextBox()-&gt;start(), offset &gt; 0 &amp;&amp; firstTextBox()-&gt;start() ? VP_UPSTREAM_IF_POSSIBLE : DOWNSTREAM);
&gt;&gt;&gt; 
&gt;&gt;&gt; I don’t understand why an offset of 0 is a special case. What are the conditions where the offset is 0?
&gt;&gt; 
&gt;&gt; We check that condition because if offset was 0, then we&apos;re at the beginning of LTR text, and we don&apos;t want to move to the upstream in that case.  See http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderText.cpp#L421.
&gt; 
&gt; So offset of 0 can’t mean anything about collapsed spaces or visibility:hidden text or the like?

Ah, that&apos;s a good point.  I think the condition for firstTextBox()-&gt;start() is wrong.  It should just be checking offset.  But &quot;offset&quot; shouldn&apos;t be affected by collapsed spaces or visibility:hidden because it&apos;s the offset inside the inline text box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311732</commentid>
    <comment_count>19</comment_count>
      <attachid>74434</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-19 15:41:47 -0800</bug_when>
    <thetext>Created attachment 74434
removed the condition that firstTextBox()-&gt;start() &gt; 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314645</commentid>
    <comment_count>20</comment_count>
      <attachid>74434</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-11-29 14:23:10 -0800</bug_when>
    <thetext>Comment on attachment 74434
removed the condition that firstTextBox()-&gt;start() &gt; 0

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314809</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-29 18:55:10 -0800</bug_when>
    <thetext>Committed r72861: &lt;http://trac.webkit.org/changeset/72861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314824</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-29 19:19:28 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72861 might have broken Qt Linux Release
The following tests are not passing:
editing/selection/click-left-of-rtl-wrapping-text.html
editing/selection/extend-selection-home-end.html
editing/selection/modify-up-on-rtl-wrapping-text.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>61095</attachid>
            <date>2010-07-09 14:21:34 -0700</date>
            <delta_ts>2010-10-27 10:23:59 -0700</delta_ts>
            <desc>test case</desc>
            <filename>46239.htm</filename>
            <type>text/html</type>
            <size>180</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">UHV0IHRoZSBjdXJzb3IgYmVmb3JlIHRoZSAmIzE0OTk7IHRoZW4gcHJlc3MgdXAgdHdpY2UuIFRo
ZSB1cCBhcnJvdyBnZXRzIHN0dWNrIG9uIHRoZSBzZWNvbmQgbGluZS4NCjxkaXYgY29udGVudEVk
aXRhYmxlIGRpcj0icnRsIiBzdHlsZT0id2lkdGg6IDMwcHg7Ij4mIzE0OTg7ICYjMTUwMDsmIzE0
OTk7PC9kaXY+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>61098</attachid>
            <date>2010-07-09 14:31:54 -0700</date>
            <delta_ts>2010-07-09 14:31:54 -0700</delta_ts>
            <desc>testcase2</desc>
            <filename>46239.htm</filename>
            <type>text/html</type>
            <size>1076</size>
            <attacher name="Yair Yogev">progame+wk</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8Ym9keT4NCjEuIFB1dCB0aGUgY3Vyc29yIGluIHRoZSBlbmQgb2YgdGhlIGxhc3Qg
bGluZSAodGhlIGxlZnQgbW9zdCBwYXJ0IG9mIHRoZSB0aGUgYm90dG9tIGxpbmUpLiA8YnI+DQoy
LiBQcmVzcyB0aGUgVXAgYXJyb3cga2V5IC0gY3Vyc29yIHdpbGwgbW92ZSBvbmUgbGluZSB1cHdh
cmRzLiA8YnI+DQozLiBQcmVzcyB0aGUgVXAgYXJyb3cga2V5IGFnYWluIC0gY3Vyc29yIHdpbGwg
bW92ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IGxpbmUgaW5zdGVhZCBvZiBtb3Zp
bmcgb25lIGxpbmUgdXB3YXJkcy4gPGJyPg0KNC4gQW55IGFkZGl0aW9uYWwgVXAgYXJyb3cga2V5
IHByZXNzIHdpbGwgaGF2ZSBubyBlZmZlY3QuIDxicj4NCjxicj4NCjx0ZXh0YXJlYSBkaXI9InJ0
bCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAycHg7IG1hcmdpbi1yaWdodDogMnB4OyB3aWR0aDogMjY4
cHg7IG1hcmdpbi10b3A6IDJweDsgbWFyZ2luLWJvdHRvbTogMnB4OyBoZWlnaHQ6IDgwcHg7ICI+
DQomIzE0OTA7JiMxNDk5OyYjMTUwNjsmIzE0OTc7ICYjMTQ5MDsmIzE0OTk7JiMxNTA2OyYjMTQ5
NzsgJiMxNDkwOyYjMTQ5OTsmIzE1MDY7JiMxNDk3OyAmIzE0OTA7JiMxNDk5OyYjMTUwNjsmIzE0
OTc7JiMxNDkwOyYjMTQ5OTsgJiMxNDk3OyYjMTQ5MDsmIzE0OTk7JiMxNTA2OyYjMTQ5NzsmIzE1
MDA7JiMxNDkwOyYjMTQ5NTsmIzE1MDY7JiMxNDk3OyYjMTUwOTsmIzE1MDU7JiMxNTAwOyYjMTQ5
OTsmIzE1MDY7JiMxNDk1OyYjMTQ5NzsmIzE0OTg7JiMxNDg5OyYjMTUwMDsmIzE0OTc7JiMxNDk4
OyYjMTUwMDsmIzE1MDY7JiMxNDk5OyYjMTUwNTsmIzE0OTU7JiMxNTAwOyYjMTQ5NTsmIzE0OTc7
JiMxNTA2OyAmIzE0OTA7JiMxNDkxOyYjMTUwMDsmIzE0OTc7JiMxNDk4OyYjMTUwMDsmIzE0OTU7
JiMxNDkxOyYjMTQ5NzsmIzE0OTg7JiMxNTAwOyYjMTQ5MTsmIzE0OTc7JiMxNTA2OyYjMTQ5OTsm
IzE0OTU7ICYjMTQ5ODsmIzE1MDA7JiMxNDkwOyYjMTUwNjsmIzE0OTc7ICYjMTUwMDsmIzE0OTg7
JiMxNDkxOyYjMTQ5MDsmIzE1MDY7PC90ZXh0YXJlYT4NCjwvYm9keT4NCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>74013</attachid>
            <date>2010-11-16 11:04:13 -0800</date>
            <delta_ts>2010-11-16 11:10:20 -0800</delta_ts>
            <desc>failed attempt to write a test for r23608</desc>
            <filename>ax.html</filename>
            <type>text/html</type>
            <size>997</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPGRpdiBzdHlsZT0id2lkdGg6IDdleDsgd2Vi
a2l0LWxpbmUtYnJlYWs6YWZ0ZXItd2hpdGUtc3BhY2U7Ij4gaGVsbG8gIDwvZGl2Pgo8ZGl2IHN0
eWxlPSJ3aWR0aDogN2V4OyB3ZWJraXQtbGluZS1icmVhazpub3JtYWw7Ij4gaGVsbG8gPC9kaXY+
CjxwcmU+CjxzY3JpcHQ+CgpmdW5jdGlvbiBhc3NlcnRFcXVhbCh2MSwgdjIpIHsKICAgIGRvY3Vt
ZW50LndyaXRlbG4odjEgPT0gdjIgPyAnUEFTUycgOiAoJ0ZBSUw6ICcgKyB2MSArICcgIT0gJyAr
IHYyKSk7Cn0KCndpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0sIDApOwp3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9k
aWZ5KCdtb3ZlJywgJ2ZvcndhcmQnLCAnbGluZUJvdW5kYXJ5Jyk7CnZhciByMSA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApOwp3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9kaWZ5
KCdtb3ZlJywgJ2JhY2t3YXJkJywgJ2xpbmVCb3VuZGFyeScpOwp2YXIgcjIgPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKTsKCndpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbihkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMV0sIDApOwp3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdtb3ZlJywgJ2ZvcndhcmQnLCAnbGluZUJvdW5kYXJ5Jyk7
CmFzc2VydEVxdWFsKHIxLnN0YXJ0T2Zmc2V0LCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFu
Z2VBdCgwKS5zdGFydE9mZnNldCkKCndpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ21vdmUn
LCAnYmFja3dhcmQnLCAnbGluZUJvdW5kYXJ5Jyk7CmFzc2VydEVxdWFsKHIyLnN0YXJ0T2Zmc2V0
LCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5zdGFydE9mZnNldCkKCjwvc2Ny
aXB0Pgo8L3ByZT4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>74016</attachid>
            <date>2010-11-16 11:10:20 -0800</date>
            <delta_ts>2010-11-16 11:10:20 -0800</delta_ts>
            <desc>test case(?) for r23608</desc>
            <filename>ax.html</filename>
            <type>text/html</type>
            <size>1009</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPGRpdiBzdHlsZT0id2lkdGg6IDdleDsgLXdl
YmtpdC1saW5lLWJyZWFrOmFmdGVyLXdoaXRlLXNwYWNlOyI+IGhlbGxvIHdvcmxkIDwvZGl2Pgo8
ZGl2IHN0eWxlPSJ3aWR0aDogN2V4OyAtd2Via2l0LWxpbmUtYnJlYWs6bm9ybWFsOyI+IGhlbGxv
IHdvcmxkIDwvZGl2Pgo8cHJlPgo8c2NyaXB0PgoKZnVuY3Rpb24gYXNzZXJ0RXF1YWwodjEsIHYy
KSB7CiAgICBkb2N1bWVudC53cml0ZWxuKHYxID09IHYyID8gJ1BBU1MnIDogKCdGQUlMOiAnICsg
djEgKyAnICE9ICcgKyB2MikpOwp9Cgp3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpWzBdLCAwKTsKd2luZG93LmdldFNl
bGVjdGlvbigpLm1vZGlmeSgnbW92ZScsICdmb3J3YXJkJywgJ2xpbmVCb3VuZGFyeScpOwp2YXIg
cjEgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKTsKd2luZG93LmdldFNlbGVj
dGlvbigpLm1vZGlmeSgnbW92ZScsICdiYWNrd2FyZCcsICdsaW5lQm91bmRhcnknKTsKdmFyIHIy
ID0gd2luZG93LmdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCk7Cgp3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpWzFd
LCAwKTsKd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnbW92ZScsICdmb3J3YXJkJywgJ2xp
bmVCb3VuZGFyeScpOwphc3NlcnRFcXVhbChyMS5zdGFydE9mZnNldCwgd2luZG93LmdldFNlbGVj
dGlvbigpLmdldFJhbmdlQXQoMCkuc3RhcnRPZmZzZXQpCndpbmRvdy5nZXRTZWxlY3Rpb24oKS5t
b2RpZnkoJ21vdmUnLCAnYmFja3dhcmQnLCAnbGluZUJvdW5kYXJ5Jyk7CmFzc2VydEVxdWFsKHIy
LnN0YXJ0T2Zmc2V0LCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5zdGFydE9m
ZnNldCkKCjwvc2NyaXB0Pgo8L3ByZT4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74022</attachid>
            <date>2010-11-16 12:22:11 -0800</date>
            <delta_ts>2010-11-19 15:41:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41987-20101116122210.patch</filename>
            <type>text/plain</type>
            <size>16982</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjEyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdXAg
YXJyb3cgZG9lc24ndCB3b3JrIHdpdGggUlRMIHRleHQgd2l0aCB3b3JkIHdyYXBwaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTk4NworCisgICAg
ICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBwb3NpdGlvbkZvclBvaW50J3Mgbm90IHJldHVybmlu
ZyB0aGUgY29ycmVjdCBhZmZpbml0eSB3aGVuIHRoZSB4IGNvb3JkaWF0ZQorICAgICAgICBpcyB0
byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgbGluZSwgYW5kIHN0YXJ0T2ZMaW5lJ3MgaW5jb3JyZWN0
bHkgbW92aW5nIHBvc2l0aW9uIHRvIHRoZSBwcmV2aW91cyBjYW5kaWRhdGUuCisKKyAgICAgICAg
Rml4ZWQgdGhlIGJ1ZyBieSByZXR1cm5pbmcgdXBzdHJlYW0gVmlzaWJsZVBvc2l0aW9uIGluIHBv
c2l0aW9uRm9yUG9pbnQgaWYgdGhlIGZpcnN0IGlubGluZSB0ZXh0IGJveCdzIG9mZnNldAorICAg
ICAgICBpcyBncmVhdGVyIHRoYW4gMC4gIEFsc28gcmVtb3ZlZCB0aGUgY29kZSBhZGRlZCBieSBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzYwOCBzaW5jZSB0aGlzIGNoYW5nZXNl
dAorICAgICAgICBkb2VzIG5vdCBhZGQgYW55IHRlc3QsIGFuZCB0aGUgcHJvYmxlbSBkZXNjcmli
ZWQgaW4gdGhlIGNoYW5nZWxvZyByZXByb2R1Y2VzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvZGUncyBw
cmVzZW5jZS4KKworICAgICAgICBUZXN0czogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stbGVmdC1v
Zi1ydGwtd3JhcHBpbmctdGV4dC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NlbGVjdGlv
bi9tb2RpZnktdXAtb24tcnRsLXdyYXBwaW5nLXRleHQuaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZMaW5lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToKKwogMjAxMC0xMS0xMiAgWmhlbnlhbyBNbyAgPHpt
b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDcxOTQ5KQorKysgV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsMjEgKzQx
OCw2IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbkZvckwKIFZpc2libGVQ
b3NpdGlvbiBzdGFydE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMpCiB7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc1BvcyA9IHN0YXJ0UG9zaXRpb25Gb3JMaW5lKGMpOwotICAgIAotICAg
IGlmICh2aXNQb3MuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdGFy
dCBvZiBsaW5lIGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGdpdmVuIGlucHV0IHBvc2l0aW9uLiAg
RWxzZSB1c2UgdGhlIHByZXZpb3VzIHBvc2l0aW9uIHRvIAotICAgICAgICAvLyBvYnRhaW4gc3Rh
cnQgb2YgbGluZS4gIFRoaXMgY29uZGl0aW9uIGhhcHBlbnMgd2hlbiB0aGUgaW5wdXQgcG9zaXRp
b24gaXMgYmVmb3JlIHRoZSBzcGFjZSBjaGFyYWN0ZXIgYXQgdGhlIGVuZCAKLSAgICAgICAgLy8g
b2YgYSBzb2Z0LXdyYXBwZWQgbm9uLWVkaXRhYmxlIGxpbmUuIEluIHRoaXMgc2NlbmFyaW8sIHN0
YXJ0UG9zaXRpb25Gb3JMaW5lIHdvdWxkIGluY29ycmVjdGx5IGhhbmQgYmFjayBhIHBvc2l0aW9u
Ci0gICAgICAgIC8vIGdyZWF0ZXIgdGhhbiB0aGUgaW5wdXQgcG9zaXRpb24uICBUaGlzIGZpeCBp
cyB0byBhY2NvdW50IGZvciB0aGUgZGlzY3JlcGFuY3kgYmV0d2VlbiBsaW5lcyB3aXRoIHdlYmtp
dC1saW5lLWJyZWFrOmFmdGVyLXdoaXRlLXNwYWNlIAotICAgICAgICAvLyBzdHlsZSB2ZXJzdXMg
bGluZXMgd2l0aG91dCB0aGF0IHN0eWxlLCB3aGljaCB3b3VsZCBicmVhayBiZWZvcmUgYSBzcGFj
ZSBieSBkZWZhdWx0LiAKLSAgICAgICAgUG9zaXRpb24gcCA9IHZpc1Bvcy5kZWVwRXF1aXZhbGVu
dCgpOwotICAgICAgICBpZiAocC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gYy5kZWVwRXF1
aXZhbGVudCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgJiYgcC5ub2RlKCktPmlzU2FtZU5v
ZGUoYy5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgIHZpc1BvcyA9IGMu
cHJldmlvdXMoKTsKLSAgICAgICAgICAgIGlmICh2aXNQb3MuaXNOdWxsKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgICAgICAgICAgdmlzUG9zID0gc3Rh
cnRQb3NpdGlvbkZvckxpbmUodmlzUG9zKTsKLSAgICAgICAgfQotICAgIH0KIAogICAgIHJldHVy
biBjLmhvbm9yRWRpdGFibGVCb3VuZGFyeUF0T3JBZnRlcih2aXNQb3MpOwogfQpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDcxOTQ5KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOSw3ICs0MjksNyBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQCiAgICAgICAgIC8vIGF0IHRoZSB5
IGNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IGxpbmUgb3IgYWJvdmUKICAgICAgICAgLy8gYW5kIHRo
ZSB4IGNvb3JkaW5hdGUgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IHRleHQgYm94IGxlZnQg
ZWRnZQogICAgICAgICBvZmZzZXQgPSBmaXJzdFRleHRCb3goKS0+b2Zmc2V0Rm9yUG9zaXRpb24o
cG9pbnRMaW5lRGlyZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlv
bihvZmZzZXQgKyBmaXJzdFRleHRCb3goKS0+c3RhcnQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24ob2Zmc2V0ICsgZmlyc3RUZXh0Qm94KCktPnN0
YXJ0KCksIG9mZnNldCA+IDAgJiYgZmlyc3RUZXh0Qm94KCktPnN0YXJ0KCkgPyBWUF9VUFNUUkVB
TV9JRl9QT1NTSUJMRSA6IERPV05TVFJFQU0pOwogICAgIH0KICAgICBpZiAobGFzdFRleHRCb3go
KSAmJiBwb2ludEJsb2NrRGlyZWN0aW9uID49IGxhc3RUZXh0Qm94KCktPnJvb3QoKS0+c2VsZWN0
aW9uVG9wKCkgJiYgcG9pbnRMaW5lRGlyZWN0aW9uID49IGxhc3RUZXh0Qm94KCktPmxvZ2ljYWxS
aWdodCgpKSB7CiAgICAgICAgIC8vIGF0IHRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIGxhc3QgbGlu
ZSBvciBiZWxvdwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzIxMjUpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMS0xNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB1cCBhcnJvdyBkb2Vzbid0IHdvcmsgd2l0aCBSVEwgdGV4dCB3
aXRoIHdvcmQgd3JhcHBpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxOTg3CisKKyAgICAgICAgQWRkZWQgdGVzdHMgdG8gZW5zdXJlIFdlYktpdCBw
bGFjZXMgY2FyZXQgYXQgdGhlIHJpZ2h0IHBvc2l0aW9uIGluIHNvZnQtd3JhcHBpbmcgUlRMIHRl
eHQgd2hlbiBjbGlja2luZworICAgICAgICB0byB0aGUgbGVmdCBvZiBSVEwgdGV4dCBvciB3aGVu
IG1vdmluZyB1cHdhcmRzIGF0IHRoZSBlbmQgb2YgbGluZS4KKworICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1sZWZ0LW9mLXJ0bC13cmFw
cGluZy10ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVu
ZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2hv
bWUtZW5kLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb2RpZnkt
dXAtb24tcnRsLXdyYXBwaW5nLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9tb2RpZnktdXAtb24tcnRsLXdyYXBwaW5nLXRleHQuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMTEtMTYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgUXQgc3BlY2lmaWMgZXhwZWN0ZWQgcmVzdWx0
cyBhZnRlciByNzIxMTYuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGlj
ay1sZWZ0LW9mLXJ0bC13cmFwcGluZy10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1sZWZ0LW9mLXJ0bC13cmFwcGluZy10
ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3RzIGNsaWNraW5nIG9uIHRoZSBsZWZ0
IG9mIFJUTCB0ZXh0IHB1dHMgdGhlIGNhcmV0IGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuCisKK1BB
U1M6IGNsaWNraW5nIG9uIHRoZSBsZWZ0IG9mIHRoZSAxc3QgbGluZSBvZiDXmiDXnNebIHB1dCB0
aGUgY2FyZXQgYXQgMgorUEFTUzogY2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgdGhlIDJuZCBsaW5l
IG9mINeaINec15sgcHV0IHRoZSBjYXJldCBhdCA0CitQQVNTOiBjbGlja2luZyBvbiB0aGUgbGVm
dCBvZiB0aGUgMXN0IGxpbmUgb2Yg15LXmyDXmdeS15vXoiDXkiBwdXQgdGhlIGNhcmV0IGF0IDMK
K1BBU1M6IGNsaWNraW5nIG9uIHRoZSBsZWZ0IG9mIHRoZSAybmQgbGluZSBvZiDXktebINeZ15LX
m9eiINeSIHB1dCB0aGUgY2FyZXQgYXQgOAorRkFJTDogY2xpY2tpbmcgb24gdGhlIGxlZnQgb2Yg
dGhlIDNyZCBsaW5lIG9mINeS15sg15nXkteb16Ig15IgcHV0IHRoZSBjYXJldCBhdCA5IGJ1dCBl
eHBlY3RlZCBhdCAxMAorUEFTUzogY2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgdGhlIDFzdCBsaW5l
IG9mINeS15sg15nXktebINeZ15LXmyDXmdeS15sg15nXktebIHB1dCB0aGUgY2FyZXQgYXQgMwor
UEFTUzogY2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgdGhlIDJuZCBsaW5lIG9mINeS15sg15nXkteb
INeZ15LXmyDXmdeS15sg15nXktebIHB1dCB0aGUgY2FyZXQgYXQgNworUEFTUzogY2xpY2tpbmcg
b24gdGhlIGxlZnQgb2YgdGhlIDNyZCBsaW5lIG9mINeS15sg15nXktebINeZ15LXmyDXmdeS15sg
15nXktebIHB1dCB0aGUgY2FyZXQgYXQgMTEKK1BBU1M6IGNsaWNraW5nIG9uIHRoZSBsZWZ0IG9m
IHRoZSA0dGggbGluZSBvZiDXktebINeZ15LXmyDXmdeS15sg15nXktebINeZ15LXmyBwdXQgdGhl
IGNhcmV0IGF0IDE1CitQQVNTOiBjbGlja2luZyBvbiB0aGUgbGVmdCBvZiB0aGUgNXRoIGxpbmUg
b2Yg15LXmyDXmdeS15sg15nXktebINeZ15LXmyDXmdeS15sgcHV0IHRoZSBjYXJldCBhdCAxOAor
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1sZWZ0LW9mLXJ0bC13
cmFwcGluZy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vY2xpY2stbGVmdC1vZi1ydGwtd3JhcHBpbmctdGV4dC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stbGVmdC1vZi1ydGwtd3JhcHBp
bmctdGV4dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sIGNoYXJzZXQ9InV0Zi04Ij4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyBjbGlja2lu
ZyBvbiB0aGUgbGVmdCBvZiBSVEwgdGV4dCBwdXRzIHRoZSBjYXJldCBhdCB0aGUgZW5kIG9mIHRo
ZSBsaW5lLjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKK3ZhciB0ZXN0cyA9IFsKKyAgICB7Y29udGVudDogIiYjMTQ5ODsgJiMxNTAw
OyYjMTQ5OTsiLCB3aWR0aDogIjIuNWV4IiwgZXhwZWN0ZWQ6IFsyLCA0XX0sCisgICAge2NvbnRl
bnQ6ICImIzE0OTA7JiMxNDk5OyAmIzE0OTc7JiMxNDkwOyYjMTQ5OTsmIzE1MDY7ICYjMTQ5MDsi
LCB3aWR0aDogIjVleCIsIGV4cGVjdGVkOiBbMywgOCwgMTBdfSwKKyAgICB7Y29udGVudDogIiYj
MTQ5MDsmIzE0OTk7ICYjMTQ5NzsmIzE0OTA7JiMxNDk5OyAmIzE0OTc7JiMxNDkwOyYjMTQ5OTsg
JiMxNDk3OyYjMTQ5MDsmIzE0OTk7ICYjMTQ5NzsmIzE0OTA7JiMxNDk5OyIsIHdpZHRoOiAiNWV4
IiwKKyAgICAgICAgZXhwZWN0ZWQ6IFszLCA3LCAxMSwgMTUsIDE4XX0sCitdOworCitmdW5jdGlv
biBmYWlsZWQobWVzc2FnZSkgeworICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9ICdGQUlMOiAnICsg
bWVzc2FnZSArICdcbic7Cit9CisKK2Z1bmN0aW9uIHBhc3NlZChtZXNzYWdlKSB7CisgICAgY29u
c29sZS5pbm5lckhUTUwgKz0gJ1BBU1M6ICcgKyBtZXNzYWdlICsgJ1xuJzsKK30KKworZnVuY3Rp
b24gcnVuVGVzdChjb250YWluZXIsIHRlc3QpIHsKKyAgICBjb250YWluZXIuaW5uZXJIVE1MID0g
dGVzdC5jb250ZW50OworICAgIGNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRlc3Qud2lkdGg7CisK
KyAgICB2YXIgeCA9IDI7CisgICAgdmFyIHkgPSAyOworICAgIHZhciB5SW5jcmVtZW50ID0gY29u
dGFpbmVyLm9mZnNldEhlaWdodCAvIHRlc3QuZXhwZWN0ZWQubGVuZ3RoOworICAgIHZhciBsaW5l
cyA9IFsnc3QnLCAnbmQnLCAncmQnLCAndGgnXTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGVzdC5leHBlY3RlZC5sZW5ndGg7IGkrKykgeworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhjb250YWluZXIub2Zmc2V0TGVmdCArIHgsIGNvbnRhaW5lci5vZmZzZXRUb3AgKyB5KTsK
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLmxl
YXBGb3J3YXJkKDUwMCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAg
dmFyIGxpbmUgPSAoaSArIDEpICsgbGluZXNbTWF0aC5taW4oaSwgbGluZXMubGVuZ3RoIC0gMSld
OworICAgICAgICB2YXIgYWN0aW9uID0gJ2NsaWNraW5nIG9uIHRoZSBsZWZ0IG9mIHRoZSAnICsg
bGluZSArICcgbGluZSBvZiAnICsgdGVzdC5jb250ZW50OworCisgICAgICAgIGlmICghd2luZG93
LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQorICAgICAgICAgICAgcmV0dXJuIGZhaWxlZChh
Y3Rpb24gKyAnIHB1dCBzZWxlY3Rpb24gaW5zdGVhZCBvZiBjYXJldCcpOworCisgICAgICAgIHZh
ciByYW5nZSA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApOworICAgICAgICBp
ZiAocmFuZ2Uuc3RhcnRDb250YWluZXIgIT0gY29udGFpbmVyLmZpcnN0Q2hpbGQpCisgICAgICAg
ICAgICByZXR1cm4gZmFpbGVkKGFjdGlvbiArICcgcHV0IHRoZSBjYXJldCBhdCBhIHdyb25nIGNv
bnRhaW5lcicpOworCisgICAgICAgIGFjdGlvbiArPSAnIHB1dCB0aGUgY2FyZXQgYXQgJyArIHJh
bmdlLnN0YXJ0T2Zmc2V0OworICAgICAgICBpZiAocmFuZ2Uuc3RhcnRPZmZzZXQgIT0gdGVzdC5l
eHBlY3RlZFtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWlsZWQoYWN0aW9uICsgJyBidXQgZXhw
ZWN0ZWQgYXQgJyArIHRlc3QuZXhwZWN0ZWRbaV0pOworICAgICAgICB5ICs9IHlJbmNyZW1lbnQ7
CisgICAgICAgIHBhc3NlZChhY3Rpb24pOworICAgIH0KKworfQorCit2YXIgY29uc29sZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2NvbnRhaW5lci5jb250ZW50RWRpdGFibGUgPSB0
cnVlOworY29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZGlyJywgJ3J0bCcpOworZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChjb250YWluZXIpOworCitpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAg
ICBmYWlsZWQoJ0NsaWNraW5nIHRlc3RzIHJlcXVpcmUgZXZlbnRTZW5kZXInKTsKK2Vsc2Ugewor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspCisgICAgICAgIHJ1blRl
c3QoY29udGFpbmVyLCB0ZXN0c1tpXSk7CisgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnOwor
fQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA3MTk0OSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4
dGVuZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MTcsMTIgKzUx
NywxMiBAQCBUZXN0IDIxLCBMVFI6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQogICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnICJbKDAsOCldCiBUZXN0IDIxLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJk
OiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAs
MCksICgwLDcpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsNyldCisgIEV4dGVuZGluZyBmb3J3YXJk
OiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAs
MCksICgwLDgpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCiBUZXN0IDIyLCBMVFI6CiAgIEV4
dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQogICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCiBUZXN0
IDIyLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDcpXQotICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
ICJbKDAsNyldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQorICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
ICJbKDAsOCldCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hvbWUtZW5k
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9ob21lLWVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcxOTQ5KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1lbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMTYsMTIgKzExNiwxMiBAQCBUZXN0IDIwLCBMVFI6CiAgIE1vdmluZyBmb3J3YXJkOiAiYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgOF0KICAg
TW92aW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAiWzgsIDBdCiBUZXN0IDIwLCBSVEw6Ci0gIE1vdmluZyBmb3J3YXJkOiAiYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgN10KLSAg
TW92aW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAiWzcsIDBdCisgIE1vdmluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgOF0KKyAgTW92aW5nIGJhY2t3YXJk
OiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzgs
IDBdCiBUZXN0IDIxLCBMVFI6CiAgIE1vdmluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgOF0KICAgTW92aW5nIGJhY2t3YXJk
OiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzgs
IDBdCiBUZXN0IDIxLCBSVEw6Ci0gIE1vdmluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgN10KLSAgTW92aW5nIGJhY2t3YXJk
OiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzcs
IDBdCisgIE1vdmluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnICJbMCwgOF0KKyAgTW92aW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzgsIDBdCiAKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vZGlmeS11cC1vbi1ydGwtd3JhcHBpbmctdGV4
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vbW9kaWZ5LXVwLW9uLXJ0bC13cmFwcGluZy10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vZGlmeS11cC1vbi1ydGwtd3Jh
cHBpbmctdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1Ro
aXMgdGVzdHMgY2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgUlRMIHRleHQgcHV0cyB0aGUgY2FyZXQg
YXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KKworUEFTUzogb24g15og15zXmywgY2FyZXQgaXMgYXQg
NCBpbml0aWFsbHkKK1BBU1M6IG9uINeaINec15ssIGNhcmV0IGlzIGF0IDIgYWZ0ZXIgbW92aW5n
IHVwd2FyZHMgb25jZQorUEFTUzogb24g15Ig15LXmyDXm9ei15ksIGNhcmV0IGlzIGF0IDggaW5p
dGlhbGx5CitQQVNTOiBvbiDXkiDXktebINeb16LXmSwgY2FyZXQgaXMgYXQgNSBhZnRlciBtb3Zp
bmcgdXB3YXJkcyBvbmNlCitQQVNTOiBvbiDXkiDXktebINeb16LXmSwgY2FyZXQgaXMgYXQgMiBh
ZnRlciBtb3ZpbmcgdXB3YXJkcyB0d2ljZQorUEFTUzogb24g15LXmyDXmdeS15sg15nXktebINeZ
15LXmyDXmdeS15ssIGNhcmV0IGlzIGF0IDE4IGluaXRpYWxseQorUEFTUzogb24g15LXmyDXmdeS
15sg15nXktebINeZ15LXmyDXmdeS15ssIGNhcmV0IGlzIGF0IDE0IGFmdGVyIG1vdmluZyB1cHdh
cmRzIG9uY2UKK1BBU1M6IG9uINeS15sg15nXktebINeZ15LXmyDXmdeS15sg15nXktebLCBjYXJl
dCBpcyBhdCAxMCBhZnRlciBtb3ZpbmcgdXB3YXJkcyB0d2ljZQorUEFTUzogb24g15LXmyDXmdeS
15sg15nXktebINeZ15LXmyDXmdeS15ssIGNhcmV0IGlzIGF0IDYgYWZ0ZXIgbW92aW5nIHVwd2Fy
ZHMgMyB0aW1lcworUEFTUzogb24g15LXmyDXmdeS15sg15nXktebINeZ15LXmyDXmdeS15ssIGNh
cmV0IGlzIGF0IDMgYWZ0ZXIgbW92aW5nIHVwd2FyZHMgNCB0aW1lcwor15LXmyDXmdeS15sg15nX
ktebINeZ15LXmyDXmdeS15sKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21v
ZGlmeS11cC1vbi1ydGwtd3JhcHBpbmctdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vZGlmeS11cC1vbi1ydGwtd3JhcHBpbmctdGV4dC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW9kaWZ5LXVw
LW9uLXJ0bC13cmFwcGluZy10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWwgY2hhcnNldD0idXRmLTgiPgorPGJvZHk+Cis8cD5UaGlz
IHRlc3RzIGNsaWNraW5nIG9uIHRoZSBsZWZ0IG9mIFJUTCB0ZXh0IHB1dHMgdGhlIGNhcmV0IGF0
IHRoZSBlbmQgb2YgdGhlIGxpbmUuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2Ny
aXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIHRlc3RzID0gWworICAgIHtjb250ZW50OiAi
JiMxNDk4OyAmIzE1MDA7JiMxNDk5OyIsIHdpZHRoOiAiMi41ZXgiLCBleHBlY3RlZDogWzIsIDRd
fSwKKyAgICB7Y29udGVudDogIiYjMTQ5MDsgJiMxNDkwOyYjMTQ5OTsgJiMxNDk5OyYjMTUwNjsm
IzE0OTc7Iiwgd2lkdGg6ICIzLjVleCIsIGV4cGVjdGVkOiBbMiwgNSwgOF19LAorICAgIHtjb250
ZW50OiAiJiMxNDkwOyYjMTQ5OTsgJiMxNDk3OyYjMTQ5MDsmIzE0OTk7ICYjMTQ5NzsmIzE0OTA7
JiMxNDk5OyAmIzE0OTc7JiMxNDkwOyYjMTQ5OTsgJiMxNDk3OyYjMTQ5MDsmIzE0OTk7Iiwgd2lk
dGg6ICI1ZXgiLAorICAgICAgICBleHBlY3RlZDogWzMsIDYsIDEwLCAxNCwgMThdfSwKK107CisK
K2Z1bmN0aW9uIGZhaWxlZChtZXNzYWdlKSB7CisgICAgY29uc29sZS5pbm5lckhUTUwgKz0gJ0ZB
SUw6ICcgKyBtZXNzYWdlICsgJ1xuJzsKK30KKworZnVuY3Rpb24gcGFzc2VkKG1lc3NhZ2UpIHsK
KyAgICBjb25zb2xlLmlubmVySFRNTCArPSAnUEFTUzogJyArIG1lc3NhZ2UgKyAnXG4nOworfQor
CitmdW5jdGlvbiBydW5UZXN0KGNvbnRhaW5lciwgdGVzdCkgeworICAgIGNvbnRhaW5lci5pbm5l
ckhUTUwgPSB0ZXN0LmNvbnRlbnQ7CisgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gdGVzdC53
aWR0aDsKKworICAgIHZhciBsaW5lcyA9IFsnc3QnLCAnbmQnLCAncmQnLCAndGgnXTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oY29udGFpbmVyLmZpcnN0Q2hpbGQsIHRl
c3QuY29udGVudC5sZW5ndGgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0LmV4cGVj
dGVkLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghd2luZG93LmdldFNlbGVjdGlvbigpLmlz
Q29sbGFwc2VkKQorICAgICAgICAgICAgcmV0dXJuIGZhaWxlZCgndGhlIHNlbGVjdGlvbiB3YXMg
bm90IGNvbGxhcHNlZCcpOworCisgICAgICAgIHZhciByYW5nZSA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5nZXRSYW5nZUF0KDApOworICAgICAgICBpZiAocmFuZ2Uuc3RhcnRDb250YWluZXIgIT0g
Y29udGFpbmVyLmZpcnN0Q2hpbGQpCisgICAgICAgICAgICByZXR1cm4gZmFpbGVkKCdjYXJldCB3
YXMgYXQgYSB3cm9uZyBjb250YWluZXInKTsKKworICAgICAgICB2YXIgYWN0aW9uID0gJ29uICcg
KyB0ZXN0LmNvbnRlbnQgKyAnLCBjYXJldCBpcyBhdCAnICsgcmFuZ2Uuc3RhcnRPZmZzZXQ7Cisg
ICAgICAgIGlmIChpID09IDApIGFjdGlvbiArPSAnIGluaXRpYWxseSc7CisgICAgICAgIGVsc2Ug
aWYgKGkgPT0gMSkgYWN0aW9uICs9ICcgYWZ0ZXIgbW92aW5nIHVwd2FyZHMgb25jZSc7CisgICAg
ICAgIGVsc2UgaWYgKGkgPT0gMikgYWN0aW9uICs9ICcgYWZ0ZXIgbW92aW5nIHVwd2FyZHMgdHdp
Y2UnOworICAgICAgICBlbHNlIGFjdGlvbiArPSAnIGFmdGVyIG1vdmluZyB1cHdhcmRzICcgKyBp
ICsgJyB0aW1lcyc7CisgICAgICAgIGlmIChyYW5nZS5zdGFydE9mZnNldCAhPSB0ZXN0LmV4cGVj
dGVkW3Rlc3QuZXhwZWN0ZWQubGVuZ3RoIC0gaSAtIDFdKQorICAgICAgICAgICAgcmV0dXJuIGZh
aWxlZChhY3Rpb24gKyAnIGJ1dCBleHBlY3RlZCBhdCAnICsgdGVzdC5leHBlY3RlZFtpXSk7Cisg
ICAgICAgIHBhc3NlZChhY3Rpb24pOworICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9k
aWZ5KCdtb3ZlJywgJ2JhY2t3YXJkJywgJ2xpbmUnKQorICAgIH0KK30KKwordmFyIGNvbnNvbGUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworCit2YXIgY29udGFpbmVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citjb250YWluZXIuY29udGVudEVkaXRhYmxl
ID0gdHJ1ZTsKK2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2RpcicsICdydGwnKTsKK2RvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0
cy5sZW5ndGg7IGkrKykKKyAgICBydW5UZXN0KGNvbnRhaW5lciwgdGVzdHNbaV0pOworLy9jb250
YWluZXIuaW5uZXJIVE1MID0gJyc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74434</attachid>
            <date>2010-11-19 15:41:47 -0800</date>
            <delta_ts>2010-11-29 14:23:10 -0800</delta_ts>
            <desc>removed the condition that firstTextBox()-&gt;start() &gt; 0</desc>
            <filename>bug-41987-20101119154146.patch</filename>
            <type>text/plain</type>
            <size>16933</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdXAg
YXJyb3cgZG9lc24ndCB3b3JrIHdpdGggUlRMIHRleHQgd2l0aCB3b3JkIHdyYXBwaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTk4NworCisgICAg
ICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBwb3NpdGlvbkZvclBvaW50J3Mgbm90IHJldHVybmlu
ZyB0aGUgY29ycmVjdCBhZmZpbml0eSB3aGVuIHRoZSB4IGNvb3JkaWF0ZQorICAgICAgICBpcyB0
byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgbGluZSwgYW5kIHN0YXJ0T2ZMaW5lJ3MgaW5jb3JyZWN0
bHkgbW92aW5nIHBvc2l0aW9uIHRvIHRoZSBwcmV2aW91cyBjYW5kaWRhdGUuCisKKyAgICAgICAg
Rml4ZWQgdGhlIGJ1ZyBieSByZXR1cm5pbmcgdXBzdHJlYW0gVmlzaWJsZVBvc2l0aW9uIGluIHBv
c2l0aW9uRm9yUG9pbnQgaWYgdGhlIGZpcnN0IGlubGluZSB0ZXh0IGJveCdzIG9mZnNldAorICAg
ICAgICBpcyBncmVhdGVyIHRoYW4gMC4gIEFsc28gcmVtb3ZlZCB0aGUgY29kZSBhZGRlZCBieSBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzYwOCBzaW5jZSB0aGlzIGNoYW5nZXNl
dAorICAgICAgICBkb2VzIG5vdCBhZGQgYW55IHRlc3QsIGFuZCB0aGUgcHJvYmxlbSBkZXNjcmli
ZWQgaW4gdGhlIGNoYW5nZWxvZyByZXByb2R1Y2VzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvZGUncyBw
cmVzZW5jZS4KKworICAgICAgICBUZXN0czogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stbGVmdC1v
Zi1ydGwtd3JhcHBpbmctdGV4dC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NlbGVjdGlv
bi9tb2RpZnktdXAtb24tcnRsLXdyYXBwaW5nLXRleHQuaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T2ZMaW5lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToKKwogMjAxMC0xMS0xOSAgTmF0ZSBDaGFwaW4gIDxq
YXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3Vy
eWFrb3YuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiA3MjQzNSkK
KysrIFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDE4LDIxICs0MTgsNiBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb25Gb3JM
CiBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQog
ewogICAgIFZpc2libGVQb3NpdGlvbiB2aXNQb3MgPSBzdGFydFBvc2l0aW9uRm9yTGluZShjKTsK
LSAgICAKLSAgICBpZiAodmlzUG9zLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgc3RhcnQgb2YgbGluZSBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBnaXZlbiBpbnB1dCBw
b3NpdGlvbi4gIEVsc2UgdXNlIHRoZSBwcmV2aW91cyBwb3NpdGlvbiB0byAKLSAgICAgICAgLy8g
b2J0YWluIHN0YXJ0IG9mIGxpbmUuICBUaGlzIGNvbmRpdGlvbiBoYXBwZW5zIHdoZW4gdGhlIGlu
cHV0IHBvc2l0aW9uIGlzIGJlZm9yZSB0aGUgc3BhY2UgY2hhcmFjdGVyIGF0IHRoZSBlbmQgCi0g
ICAgICAgIC8vIG9mIGEgc29mdC13cmFwcGVkIG5vbi1lZGl0YWJsZSBsaW5lLiBJbiB0aGlzIHNj
ZW5hcmlvLCBzdGFydFBvc2l0aW9uRm9yTGluZSB3b3VsZCBpbmNvcnJlY3RseSBoYW5kIGJhY2sg
YSBwb3NpdGlvbgotICAgICAgICAvLyBncmVhdGVyIHRoYW4gdGhlIGlucHV0IHBvc2l0aW9uLiAg
VGhpcyBmaXggaXMgdG8gYWNjb3VudCBmb3IgdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gbGluZXMg
d2l0aCB3ZWJraXQtbGluZS1icmVhazphZnRlci13aGl0ZS1zcGFjZSAKLSAgICAgICAgLy8gc3R5
bGUgdmVyc3VzIGxpbmVzIHdpdGhvdXQgdGhhdCBzdHlsZSwgd2hpY2ggd291bGQgYnJlYWsgYmVm
b3JlIGEgc3BhY2UgYnkgZGVmYXVsdC4gCi0gICAgICAgIFBvc2l0aW9uIHAgPSB2aXNQb3MuZGVl
cEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYgKHAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+
IGMuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICYmIHAubm9kZSgp
LT5pc1NhbWVOb2RlKGMuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICB2
aXNQb3MgPSBjLnByZXZpb3VzKCk7Ci0gICAgICAgICAgICBpZiAodmlzUG9zLmlzTnVsbCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICAgICAgICAgIHZp
c1BvcyA9IHN0YXJ0UG9zaXRpb25Gb3JMaW5lKHZpc1Bvcyk7Ci0gICAgICAgIH0KLSAgICB9CiAK
ICAgICByZXR1cm4gYy5ob25vckVkaXRhYmxlQm91bmRhcnlBdE9yQWZ0ZXIodmlzUG9zKTsKIH0K
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiA3MjQzNSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNyArNDI5
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUAogICAgICAgICAv
LyBhdCB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBsaW5lIG9yIGFib3ZlCiAgICAgICAg
IC8vIGFuZCB0aGUgeCBjb29yZGluYXRlIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCB0ZXh0
IGJveCBsZWZ0IGVkZ2UKICAgICAgICAgb2Zmc2V0ID0gZmlyc3RUZXh0Qm94KCktPm9mZnNldEZv
clBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlvbik7Ci0gICAgICAgIHJldHVybiBjcmVhdGVWaXNp
YmxlUG9zaXRpb24ob2Zmc2V0ICsgZmlyc3RUZXh0Qm94KCktPnN0YXJ0KCksIERPV05TVFJFQU0p
OworICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKG9mZnNldCArIGZpcnN0VGV4
dEJveCgpLT5zdGFydCgpLCBvZmZzZXQgPiAwID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBE
T1dOU1RSRUFNKTsKICAgICB9CiAgICAgaWYgKGxhc3RUZXh0Qm94KCkgJiYgcG9pbnRCbG9ja0Rp
cmVjdGlvbiA+PSBsYXN0VGV4dEJveCgpLT5yb290KCktPnNlbGVjdGlvblRvcCgpICYmIHBvaW50
TGluZURpcmVjdGlvbiA+PSBsYXN0VGV4dEJveCgpLT5sb2dpY2FsUmlnaHQoKSkgewogICAgICAg
ICAvLyBhdCB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSBsYXN0IGxpbmUgb3IgYmVsb3cKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDcyNDM1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgdXAgYXJyb3cgZG9lc24ndCB3b3JrIHdpdGggUlRMIHRleHQgd2l0aCB3b3JkIHdyYXBwaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTk4Nwor
CisgICAgICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSBXZWJLaXQgcGxhY2VzIGNhcmV0IGF0IHRo
ZSByaWdodCBwb3NpdGlvbiBpbiBzb2Z0LXdyYXBwaW5nIFJUTCB0ZXh0IHdoZW4gY2xpY2tpbmcK
KyAgICAgICAgdG8gdGhlIGxlZnQgb2YgUlRMIHRleHQgb3Igd2hlbiBtb3ZpbmcgdXB3YXJkcyBh
dCB0aGUgZW5kIG9mIGxpbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1s
ZWZ0LW9mLXJ0bC13cmFwcGluZy10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stbGVmdC1vZi1ydGwtd3JhcHBpbmctdGV4dC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW9kaWZ5LXVwLW9uLXJ0bC13cmFwcGlu
Zy10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24v
bW9kaWZ5LXVwLW9uLXJ0bC13cmFwcGluZy10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTExLTE5
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdyYXBwaW5nLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQtb2YtcnRsLXdy
YXBwaW5nLXRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vY2xpY2stbGVmdC1vZi1ydGwtd3JhcHBpbmctdGV4dC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdHMgY2xpY2tpbmcgb24g
dGhlIGxlZnQgb2YgUlRMIHRleHQgcHV0cyB0aGUgY2FyZXQgYXQgdGhlIGVuZCBvZiB0aGUgbGlu
ZS4KKworUEFTUzogY2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgdGhlIDFzdCBsaW5lIG9mINeaINec
15sgcHV0IHRoZSBjYXJldCBhdCAyCitQQVNTOiBjbGlja2luZyBvbiB0aGUgbGVmdCBvZiB0aGUg
Mm5kIGxpbmUgb2Yg15og15zXmyBwdXQgdGhlIGNhcmV0IGF0IDQKK1BBU1M6IGNsaWNraW5nIG9u
IHRoZSBsZWZ0IG9mIHRoZSAxc3QgbGluZSBvZiDXktebINeZ15LXm9eiINeSIHB1dCB0aGUgY2Fy
ZXQgYXQgMworUEFTUzogY2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgdGhlIDJuZCBsaW5lIG9mINeS
15sg15nXkteb16Ig15IgcHV0IHRoZSBjYXJldCBhdCA4CitGQUlMOiBjbGlja2luZyBvbiB0aGUg
bGVmdCBvZiB0aGUgM3JkIGxpbmUgb2Yg15LXmyDXmdeS15vXoiDXkiBwdXQgdGhlIGNhcmV0IGF0
IDkgYnV0IGV4cGVjdGVkIGF0IDEwCitQQVNTOiBjbGlja2luZyBvbiB0aGUgbGVmdCBvZiB0aGUg
MXN0IGxpbmUgb2Yg15LXmyDXmdeS15sg15nXktebINeZ15LXmyDXmdeS15sgcHV0IHRoZSBjYXJl
dCBhdCAzCitQQVNTOiBjbGlja2luZyBvbiB0aGUgbGVmdCBvZiB0aGUgMm5kIGxpbmUgb2Yg15LX
myDXmdeS15sg15nXktebINeZ15LXmyDXmdeS15sgcHV0IHRoZSBjYXJldCBhdCA3CitQQVNTOiBj
bGlja2luZyBvbiB0aGUgbGVmdCBvZiB0aGUgM3JkIGxpbmUgb2Yg15LXmyDXmdeS15sg15nXkteb
INeZ15LXmyDXmdeS15sgcHV0IHRoZSBjYXJldCBhdCAxMQorUEFTUzogY2xpY2tpbmcgb24gdGhl
IGxlZnQgb2YgdGhlIDR0aCBsaW5lIG9mINeS15sg15nXktebINeZ15LXmyDXmdeS15sg15nXkteb
IHB1dCB0aGUgY2FyZXQgYXQgMTUKK1BBU1M6IGNsaWNraW5nIG9uIHRoZSBsZWZ0IG9mIHRoZSA1
dGggbGluZSBvZiDXktebINeZ15LXmyDXmdeS15sg15nXktebINeZ15LXmyBwdXQgdGhlIGNhcmV0
IGF0IDE4CisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWxlZnQt
b2YtcnRsLXdyYXBwaW5nLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9jbGljay1sZWZ0LW9mLXJ0bC13cmFwcGluZy10ZXh0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1sZWZ0LW9mLXJ0
bC13cmFwcGluZy10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWwgY2hhcnNldD0idXRmLTgiPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Rz
IGNsaWNraW5nIG9uIHRoZSBsZWZ0IG9mIFJUTCB0ZXh0IHB1dHMgdGhlIGNhcmV0IGF0IHRoZSBl
bmQgb2YgdGhlIGxpbmUuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKwordmFyIHRlc3RzID0gWworICAgIHtjb250ZW50OiAiJiMxNDk4
OyAmIzE1MDA7JiMxNDk5OyIsIHdpZHRoOiAiMi41ZXgiLCBleHBlY3RlZDogWzIsIDRdfSwKKyAg
ICB7Y29udGVudDogIiYjMTQ5MDsmIzE0OTk7ICYjMTQ5NzsmIzE0OTA7JiMxNDk5OyYjMTUwNjsg
JiMxNDkwOyIsIHdpZHRoOiAiNWV4IiwgZXhwZWN0ZWQ6IFszLCA4LCAxMF19LAorICAgIHtjb250
ZW50OiAiJiMxNDkwOyYjMTQ5OTsgJiMxNDk3OyYjMTQ5MDsmIzE0OTk7ICYjMTQ5NzsmIzE0OTA7
JiMxNDk5OyAmIzE0OTc7JiMxNDkwOyYjMTQ5OTsgJiMxNDk3OyYjMTQ5MDsmIzE0OTk7Iiwgd2lk
dGg6ICI1ZXgiLAorICAgICAgICBleHBlY3RlZDogWzMsIDcsIDExLCAxNSwgMThdfSwKK107CisK
K2Z1bmN0aW9uIGZhaWxlZChtZXNzYWdlKSB7CisgICAgY29uc29sZS5pbm5lckhUTUwgKz0gJ0ZB
SUw6ICcgKyBtZXNzYWdlICsgJ1xuJzsKK30KKworZnVuY3Rpb24gcGFzc2VkKG1lc3NhZ2UpIHsK
KyAgICBjb25zb2xlLmlubmVySFRNTCArPSAnUEFTUzogJyArIG1lc3NhZ2UgKyAnXG4nOworfQor
CitmdW5jdGlvbiBydW5UZXN0KGNvbnRhaW5lciwgdGVzdCkgeworICAgIGNvbnRhaW5lci5pbm5l
ckhUTUwgPSB0ZXN0LmNvbnRlbnQ7CisgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gdGVzdC53
aWR0aDsKKworICAgIHZhciB4ID0gMjsKKyAgICB2YXIgeSA9IDI7CisgICAgdmFyIHlJbmNyZW1l
bnQgPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gdGVzdC5leHBlY3RlZC5sZW5ndGg7CisgICAg
dmFyIGxpbmVzID0gWydzdCcsICduZCcsICdyZCcsICd0aCddOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0ZXN0LmV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKGNvbnRhaW5lci5vZmZzZXRMZWZ0ICsgeCwgY29udGFpbmVyLm9mZnNldFRv
cCArIHkpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRT
ZW5kZXIubGVhcEZvcndhcmQoNTAwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgICAgICB2YXIgbGluZSA9IChpICsgMSkgKyBsaW5lc1tNYXRoLm1pbihpLCBsaW5lcy5sZW5n
dGggLSAxKV07CisgICAgICAgIHZhciBhY3Rpb24gPSAnY2xpY2tpbmcgb24gdGhlIGxlZnQgb2Yg
dGhlICcgKyBsaW5lICsgJyBsaW5lIG9mICcgKyB0ZXN0LmNvbnRlbnQ7CisKKyAgICAgICAgaWYg
KCF3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQpCisgICAgICAgICAgICByZXR1cm4g
ZmFpbGVkKGFjdGlvbiArICcgcHV0IHNlbGVjdGlvbiBpbnN0ZWFkIG9mIGNhcmV0Jyk7CisKKyAg
ICAgICAgdmFyIHJhbmdlID0gd2luZG93LmdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCk7Cisg
ICAgICAgIGlmIChyYW5nZS5zdGFydENvbnRhaW5lciAhPSBjb250YWluZXIuZmlyc3RDaGlsZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWlsZWQoYWN0aW9uICsgJyBwdXQgdGhlIGNhcmV0IGF0IGEg
d3JvbmcgY29udGFpbmVyJyk7CisKKyAgICAgICAgYWN0aW9uICs9ICcgcHV0IHRoZSBjYXJldCBh
dCAnICsgcmFuZ2Uuc3RhcnRPZmZzZXQ7CisgICAgICAgIGlmIChyYW5nZS5zdGFydE9mZnNldCAh
PSB0ZXN0LmV4cGVjdGVkW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhaWxlZChhY3Rpb24gKyAn
IGJ1dCBleHBlY3RlZCBhdCAnICsgdGVzdC5leHBlY3RlZFtpXSk7CisgICAgICAgIHkgKz0geUlu
Y3JlbWVudDsKKyAgICAgICAgcGFzc2VkKGFjdGlvbik7CisgICAgfQorCit9CisKK3ZhciBjb25z
b2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKwordmFyIGNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworY29udGFpbmVyLmNvbnRlbnRFZGl0
YWJsZSA9IHRydWU7Citjb250YWluZXIuc2V0QXR0cmlidXRlKCdkaXInLCAncnRsJyk7Citkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2lmICghd2luZG93LmV2ZW50U2Vu
ZGVyKQorICAgIGZhaWxlZCgnQ2xpY2tpbmcgdGVzdHMgcmVxdWlyZSBldmVudFNlbmRlcicpOwor
ZWxzZSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykKKyAgICAg
ICAgcnVuVGVzdChjb250YWluZXIsIHRlc3RzW2ldKTsKKyAgICBjb250YWluZXIuaW5uZXJIVE1M
ID0gJyc7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDcyNDM1KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUx
NywxMiArNTE3LDEyIEBAIFRlc3QgMjEsIExUUjoKICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAs
OCldCiAgIEV4dGVuZGluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KV0KIFRlc3QgMjEsIFJUTDoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgIlsoMCwwKSwgKDAsNyldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw3KV0KKyAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgIlsoMCwwKSwgKDAsOCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KV0KIFRlc3QgMjIsIExU
UjoKICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCiAgIEV4dGVuZGluZyBiYWNrd2FyZDog
ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4
KV0KIFRlc3QgMjIsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsNyldCi0gIEV4dGVu
ZGluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgIlsoMCw3KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCisgIEV4dGVu
ZGluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgIlsoMCw4KV0KIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
aG9tZS1lbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2hvbWUtZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzI0MzUpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiwxMiArMTE2LDEyIEBAIFRlc3QgMjAsIExUUjoKICAgTW92aW5nIGZvcndh
cmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsw
LCA4XQogICBNb3ZpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnICJbOCwgMF0KIFRlc3QgMjAsIFJUTDoKLSAgTW92aW5nIGZvcndh
cmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsw
LCA3XQotICBNb3ZpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnICJbNywgMF0KKyAgTW92aW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQorICBNb3Zpbmcg
YmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnICJbOCwgMF0KIFRlc3QgMjEsIExUUjoKICAgTW92aW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQogICBNb3Zpbmcg
YmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnICJbOCwgMF0KIFRlc3QgMjEsIFJUTDoKLSAgTW92aW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA3XQotICBNb3Zpbmcg
YmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnICJbNywgMF0KKyAgTW92aW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQorICBNb3ZpbmcgYmFja3dhcmQ6ICAiYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbOCwgMF0KIApJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW9kaWZ5LXVwLW9uLXJ0bC13cmFw
cGluZy10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9tb2RpZnktdXAtb24tcnRsLXdyYXBwaW5nLXRleHQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW9kaWZ5LXVwLW9u
LXJ0bC13cmFwcGluZy10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MyBAQAorVGhpcyB0ZXN0cyBjbGlja2luZyBvbiB0aGUgbGVmdCBvZiBSVEwgdGV4dCBwdXRzIHRo
ZSBjYXJldCBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgorCitQQVNTOiBvbiDXmiDXnNebLCBjYXJl
dCBpcyBhdCA0IGluaXRpYWxseQorUEFTUzogb24g15og15zXmywgY2FyZXQgaXMgYXQgMiBhZnRl
ciBtb3ZpbmcgdXB3YXJkcyBvbmNlCitQQVNTOiBvbiDXkiDXktebINeb16LXmSwgY2FyZXQgaXMg
YXQgOCBpbml0aWFsbHkKK1BBU1M6IG9uINeSINeS15sg15vXoteZLCBjYXJldCBpcyBhdCA1IGFm
dGVyIG1vdmluZyB1cHdhcmRzIG9uY2UKK1BBU1M6IG9uINeSINeS15sg15vXoteZLCBjYXJldCBp
cyBhdCAyIGFmdGVyIG1vdmluZyB1cHdhcmRzIHR3aWNlCitQQVNTOiBvbiDXktebINeZ15LXmyDX
mdeS15sg15nXktebINeZ15LXmywgY2FyZXQgaXMgYXQgMTggaW5pdGlhbGx5CitQQVNTOiBvbiDX
ktebINeZ15LXmyDXmdeS15sg15nXktebINeZ15LXmywgY2FyZXQgaXMgYXQgMTQgYWZ0ZXIgbW92
aW5nIHVwd2FyZHMgb25jZQorUEFTUzogb24g15LXmyDXmdeS15sg15nXktebINeZ15LXmyDXmdeS
15ssIGNhcmV0IGlzIGF0IDEwIGFmdGVyIG1vdmluZyB1cHdhcmRzIHR3aWNlCitQQVNTOiBvbiDX
ktebINeZ15LXmyDXmdeS15sg15nXktebINeZ15LXmywgY2FyZXQgaXMgYXQgNiBhZnRlciBtb3Zp
bmcgdXB3YXJkcyAzIHRpbWVzCitQQVNTOiBvbiDXktebINeZ15LXmyDXmdeS15sg15nXktebINeZ
15LXmywgY2FyZXQgaXMgYXQgMyBhZnRlciBtb3ZpbmcgdXB3YXJkcyA0IHRpbWVzCivXktebINeZ
15LXmyDXmdeS15sg15nXktebINeZ15LXmwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vbW9kaWZ5LXVwLW9uLXJ0bC13cmFwcGluZy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW9kaWZ5LXVwLW9uLXJ0bC13cmFwcGluZy10
ZXh0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9t
b2RpZnktdXAtb24tcnRsLXdyYXBwaW5nLXRleHQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBjaGFyc2V0PSJ1dGYtOCI+Cis8Ym9keT4K
KzxwPlRoaXMgdGVzdHMgY2xpY2tpbmcgb24gdGhlIGxlZnQgb2YgUlRMIHRleHQgcHV0cyB0aGUg
Y2FyZXQgYXQgdGhlIGVuZCBvZiB0aGUgbGluZS48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgdGVzdHMgPSBbCisgICAge2Nv
bnRlbnQ6ICImIzE0OTg7ICYjMTUwMDsmIzE0OTk7Iiwgd2lkdGg6ICIyLjVleCIsIGV4cGVjdGVk
OiBbMiwgNF19LAorICAgIHtjb250ZW50OiAiJiMxNDkwOyAmIzE0OTA7JiMxNDk5OyAmIzE0OTk7
JiMxNTA2OyYjMTQ5NzsiLCB3aWR0aDogIjMuNWV4IiwgZXhwZWN0ZWQ6IFsyLCA1LCA4XX0sCisg
ICAge2NvbnRlbnQ6ICImIzE0OTA7JiMxNDk5OyAmIzE0OTc7JiMxNDkwOyYjMTQ5OTsgJiMxNDk3
OyYjMTQ5MDsmIzE0OTk7ICYjMTQ5NzsmIzE0OTA7JiMxNDk5OyAmIzE0OTc7JiMxNDkwOyYjMTQ5
OTsiLCB3aWR0aDogIjVleCIsCisgICAgICAgIGV4cGVjdGVkOiBbMywgNiwgMTAsIDE0LCAxOF19
LAorXTsKKworZnVuY3Rpb24gZmFpbGVkKG1lc3NhZ2UpIHsKKyAgICBjb25zb2xlLmlubmVySFRN
TCArPSAnRkFJTDogJyArIG1lc3NhZ2UgKyAnXG4nOworfQorCitmdW5jdGlvbiBwYXNzZWQobWVz
c2FnZSkgeworICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9ICdQQVNTOiAnICsgbWVzc2FnZSArICdc
bic7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoY29udGFpbmVyLCB0ZXN0KSB7CisgICAgY29udGFp
bmVyLmlubmVySFRNTCA9IHRlc3QuY29udGVudDsKKyAgICBjb250YWluZXIuc3R5bGUud2lkdGgg
PSB0ZXN0LndpZHRoOworCisgICAgdmFyIGxpbmVzID0gWydzdCcsICduZCcsICdyZCcsICd0aCdd
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihjb250YWluZXIuZmlyc3RD
aGlsZCwgdGVzdC5jb250ZW50Lmxlbmd0aCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRl
c3QuZXhwZWN0ZWQubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuaXNDb2xsYXBzZWQpCisgICAgICAgICAgICByZXR1cm4gZmFpbGVkKCd0aGUgc2VsZWN0
aW9uIHdhcyBub3QgY29sbGFwc2VkJyk7CisKKyAgICAgICAgdmFyIHJhbmdlID0gd2luZG93Lmdl
dFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCk7CisgICAgICAgIGlmIChyYW5nZS5zdGFydENvbnRh
aW5lciAhPSBjb250YWluZXIuZmlyc3RDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiBmYWlsZWQo
J2NhcmV0IHdhcyBhdCBhIHdyb25nIGNvbnRhaW5lcicpOworCisgICAgICAgIHZhciBhY3Rpb24g
PSAnb24gJyArIHRlc3QuY29udGVudCArICcsIGNhcmV0IGlzIGF0ICcgKyByYW5nZS5zdGFydE9m
ZnNldDsKKyAgICAgICAgaWYgKGkgPT0gMCkgYWN0aW9uICs9ICcgaW5pdGlhbGx5JzsKKyAgICAg
ICAgZWxzZSBpZiAoaSA9PSAxKSBhY3Rpb24gKz0gJyBhZnRlciBtb3ZpbmcgdXB3YXJkcyBvbmNl
JzsKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAyKSBhY3Rpb24gKz0gJyBhZnRlciBtb3ZpbmcgdXB3
YXJkcyB0d2ljZSc7CisgICAgICAgIGVsc2UgYWN0aW9uICs9ICcgYWZ0ZXIgbW92aW5nIHVwd2Fy
ZHMgJyArIGkgKyAnIHRpbWVzJzsKKyAgICAgICAgaWYgKHJhbmdlLnN0YXJ0T2Zmc2V0ICE9IHRl
c3QuZXhwZWN0ZWRbdGVzdC5leHBlY3RlZC5sZW5ndGggLSBpIC0gMV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFpbGVkKGFjdGlvbiArICcgYnV0IGV4cGVjdGVkIGF0ICcgKyB0ZXN0LmV4cGVjdGVk
W2ldKTsKKyAgICAgICAgcGFzc2VkKGFjdGlvbik7CisgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5tb2RpZnkoJ21vdmUnLCAnYmFja3dhcmQnLCAnbGluZScpCisgICAgfQorfQorCit2YXIg
Y29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisKK3ZhciBjb250
YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2NvbnRhaW5lci5jb250ZW50
RWRpdGFibGUgPSB0cnVlOworY29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZGlyJywgJ3J0bCcpOwor
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgIHJ1blRlc3QoY29udGFpbmVyLCB0ZXN0c1tpXSk7
CisvL2NvbnRhaW5lci5pbm5lckhUTUwgPSAnJzsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="65036"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>