<?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>60430</bug_id>
          
          <creation_ts>2011-05-06 21:46:32 -0700</creation_ts>
          <short_desc>selectstart is not fired when selection was created by arrow keys</short_desc>
          <delta_ts>2011-09-12 14:06:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60424</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>arko</cc>
    
    <cc>japhet</cc>
    
    <cc>kaustubh.ra</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>400032</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-06 21:46:32 -0700</bug_when>
    <thetext>In WebKit, selectstart isn&apos;t fired when a range selection is created by arrow keys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400033</commentid>
    <comment_count>1</comment_count>
      <attachid>92685</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-06 21:46:49 -0700</bug_when>
    <thetext>Created attachment 92685
demo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463270</commentid>
    <comment_count>2</comment_count>
      <attachid>106564</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-07 03:25:54 -0700</bug_when>
    <thetext>Created attachment 106564
Patch

Send selectStart DOM event if old selection is empty and selection type is AlterationExtend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463271</commentid>
    <comment_count>3</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-09-07 03:26:57 -0700</bug_when>
    <thetext>Ryosuke, can u review patch ? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463279</commentid>
    <comment_count>4</comment_count>
      <attachid>106564</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 03:40:11 -0700</bug_when>
    <thetext>Comment on attachment 106564
Patch

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

&gt; Source/WebCore/editing/FrameSelection.cpp:886
&gt; +        if (oldSelection.isCaret()) {
&gt; +            if (!(dispatchedSelectStart = dispatchSelectStart()))
&gt; +                break;
&gt; +        }

This is too late. m_selection.m_isDirectional has already been modified at this point. r- because of this. You should probably do this in the if-statement at the beginning of this function.

&gt; Source/WebCore/editing/FrameSelection.cpp:1923
&gt; +    if (isContentEditable()) {
&gt; +        root = highestEditableRoot(m_selection.start());
&gt; +        if (Node* shadowRoot = m_selection.nonBoundaryShadowTreeRootNode())
&gt; +            selectStartTarget = shadowRoot-&gt;shadowAncestorNode();
&gt; +        else
&gt; +            selectStartTarget = root.get();
&gt; +    } else {
&gt; +        root = m_selection.nonBoundaryShadowTreeRootNode();
&gt; +        if (root)
&gt; +            selectStartTarget = root-&gt;shadowAncestorNode();
&gt; +        else {
&gt; +            root = document-&gt;documentElement();
&gt; +            selectStartTarget = document-&gt;body();
&gt; +        }
&gt; +    }
&gt; +    if (!root || !selectStartTarget)
&gt; +        return true;

Why do we need all this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463303</commentid>
    <comment_count>5</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-07 05:15:36 -0700</bug_when>
    <thetext>Hi Ryosuke,
Thanks for the review.

&gt; 
&gt; This is too late. m_selection.m_isDirectional has already been modified at 
&gt; this point. r- because of this. You should probably do this in the if- 
&gt; statement at the beginning of this function.

We can do this at the beginning of this function. But in IMHO if we keep this in the if-statement at the beginning, selectStart might not execute if modify() function called by JS.
 
&gt; Why do we need all this code?

Here we need to find out selectStart target if the element is content editable, Similar as in case of selectAll(), how the selectStart event is fired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463379</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 09:15:04 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; This is too late. m_selection.m_isDirectional has already been modified at 
&gt; &gt; this point. r- because of this. You should probably do this in the if- 
&gt; &gt; statement at the beginning of this function.
&gt; 
&gt; We can do this at the beginning of this function. But in IMHO if we keep this in the if-statement at the beginning, selectStart might not execute if modify() function called by JS.

I thought selectstart doesn&apos;t fire for programatically set selection anyway. I don&apos;t think we currently fire selectstart when a collapsed selection is replaced by a range selection for example, and this behavior matches that of MSIE. You should definitely check MSIE&apos;s behavior though. 

&gt; &gt; Why do we need all this code?
&gt; 
&gt; Here we need to find out selectStart target if the element is content editable, Similar as in case of selectAll(), how the selectStart event is fired.

We don&apos;t do this elsewhere for firing selectstart so I&apos;d rather not add such a code for this specific case. If this is a bug, then we should fix all those places where we fire selectstart at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463432</commentid>
    <comment_count>7</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-09-07 10:30:52 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; I thought selectstart doesn&apos;t fire for programatically set selection anyway. I don&apos;t think we currently fire selectstart when a collapsed selection is replaced by a range selection for example, and this behavior matches that of MSIE. You should definitely check MSIE&apos;s behavior though. 
&gt;
IE sends out selectstart when a range selection is created. IE fires selectstart only when a user starts extending the selection. I think we should match with IE specs and send out selectStart only in user triggered modify calls for selection.  We will change and put that inside the first if statement. 
 
&gt; &gt; &gt; Why do we need all this code?
&gt; &gt; 
&gt; &gt; Here we need to find out selectStart target if the element is content editable, Similar as in case of selectAll(), how the selectStart event is fired.
&gt; 
&gt; We don&apos;t do this elsewhere for firing selectstart so I&apos;d rather not add such a code for this specific case. If this is a bug, then we should fix all those places where we fire selectstart at once.

I think this is being done for selectAll case right now. So we added the code to retrieve the selectStartTarget node where we need to dispatch the event. In case of text area it might be shadow node. So we need to take the highest editable node as target. Please suggest and correct us if anything missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463462</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 11:04:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; We don&apos;t do this elsewhere for firing selectstart so I&apos;d rather not add such a code for this specific case. If this is a bug, then we should fix all those places where we fire selectstart at once.
&gt; 
&gt; I think this is being done for selectAll case right now. So we added the code to retrieve the selectStartTarget node where we need to dispatch the event. In case of text area it might be shadow node. So we need to take the highest editable node as target. Please suggest and correct us if anything missing.

But then it appears that we have a bug in other code paths that fire selectstart event.  See EventHandler.cpp.  If anything, adding such code should be done in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463850</commentid>
    <comment_count>9</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-09-07 20:09:03 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; 
&gt; But then it appears that we have a bug in other code paths that fire selectstart event.  See EventHandler.cpp.  If anything, adding such code should be done in a separate patch.

 Ok. That seems to be fair. Let&apos;s make that code path for firing selectStart  visit again and get that in seperate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463968</commentid>
    <comment_count>10</comment_count>
      <attachid>106717</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-08 02:46:32 -0700</bug_when>
    <thetext>Created attachment 106717
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464100</commentid>
    <comment_count>11</comment_count>
      <attachid>106717</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-08 09:43:26 -0700</bug_when>
    <thetext>Comment on attachment 106717
Updated patch

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

&gt; Source/WebCore/editing/FrameSelection.cpp:821
&gt; +        if (alter == AlterationExtend &amp;&amp; m_selection.isCaret() &amp;&amp; !dispatchSelectStart())

You should check that new selection is range. You can do that by using trialFrameSelection below.

&gt; Source/WebCore/editing/FrameSelection.cpp:1896
&gt; +    Node* selectStartTarget = m_frame-&gt;document()-&gt;getSelection()-&gt;focusNode();

This seems like an unnecessary indirection. I&apos;d just do extent().containerNode().

&gt; Source/WebCore/editing/FrameSelection.h:247
&gt; +    bool dispatchSelectStart();
&gt; +

This method should be private for now.

&gt; LayoutTests/fast/events/selectstart-by-arrow-keys.html:11
&gt; +if (window.layoutTestController) {
&gt; +    layoutTestController.dumpAsText();
&gt; +}

No curly brackets around one line statement.

&gt; LayoutTests/fast/events/selectstart-by-arrow-keys.html:16
&gt; +div.addEventListener(&apos;selectstart&apos;, function (event) { passed = true; });

We should probably ensure that selectstart event is fired exactly once (not twice or three times).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464670</commentid>
    <comment_count>12</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-08 23:52:33 -0700</bug_when>
    <thetext>&gt; You should check that new selection is range. You can do that by using trialFrameSelection below.
&gt; 
Done.

&gt; This seems like an unnecessary indirection. I&apos;d just do extent().containerNode().
&gt; 
Incorporated this comment.

&gt; This method should be private for now.
&gt; 
Right, moved this method to private.

&gt; No curly brackets around one line statement.
&gt; 
Removed curly brackets.

&gt; We should probably ensure that selectstart event is fired exactly once (not twice or three times).

I have modified the test case to ensure that selectstart event is fired exactly once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464671</commentid>
    <comment_count>13</comment_count>
      <attachid>106844</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-08 23:53:43 -0700</bug_when>
    <thetext>Created attachment 106844
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464684</commentid>
    <comment_count>14</comment_count>
      <attachid>106844</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-09 01:03:05 -0700</bug_when>
    <thetext>Comment on attachment 106844
Updated patch

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

&gt; Source/WebCore/editing/FrameSelection.cpp:825
&gt; +        VisibleSelection trialVisibleSelection = trialFrameSelection.selection();
&gt; +        bool change = shouldChangeSelection(trialVisibleSelection);

Why do we need to make a copy of VisibleSelection here?

&gt; LayoutTests/fast/events/selectstart-by-arrow-keys.html:13
&gt; +div.addEventListener(&apos;selectstart&apos;, function (event) { selectStartCount++; });

We also need a test for preventing the default action.

&gt; LayoutTests/fast/events/selectstart-by-arrow-keys.html:58
&gt; +         document.write(&apos;PASS.&apos;);

Nit: wrong indentation. Also maybe get rid of . at the end?

&gt; LayoutTests/fast/events/selectstart-by-arrow-keys.html:59
&gt; +    document.writeln(&apos;&lt;br /&gt;&apos;);

Don&apos;t think we should use XML-style br.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464701</commentid>
    <comment_count>15</comment_count>
      <attachid>106853</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-09 03:14:26 -0700</bug_when>
    <thetext>Created attachment 106853
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465474</commentid>
    <comment_count>16</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-09-11 21:07:04 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=106853) [details]
&gt; Updated patch

Ryosuke, can you review updated patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465485</commentid>
    <comment_count>17</comment_count>
      <attachid>106853</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-11 22:14:41 -0700</bug_when>
    <thetext>Comment on attachment 106853
Updated patch

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

&gt; Source/WebCore/ChangeLog:1
&gt; +2011-09-09  Arko Saha  &lt;arko@motorola.com&gt; and Kaustubh Atrawalkar  &lt;kaustubh@motorola.com&gt;

We don&apos;t normally list two authors like this. If you&apos;re like to live a credit, then please mention it in the description below (after/before &quot;Fire selectstart when...&quot;).

&gt; LayoutTests/fast/events/selectstart-by-arrow-keys-prevent-default.html:17
&gt; +eventSender.keyDown(&quot;rightArrow&quot;, [&quot;shiftKey&quot;]);

Because this line will throw an exception outside of DRT, you should consider wrapping it in if and explain how you&apos;d test manually on a browser.

&gt; LayoutTests/fast/events/selectstart-by-arrow-keys.html:19
&gt; +eventSender.keyDown(&quot;rightArrow&quot;);
&gt; +logResult(&apos;Check (Right arrow)&apos;, 0);

Ditto about wrapping these in if and explaining how to test manually. If manual test is not possible, you can also say so to clarify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465502</commentid>
    <comment_count>18</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-09-11 23:08:18 -0700</bug_when>
    <thetext>
&gt; We don&apos;t normally list two authors like this. If you&apos;re like to live a credit, then please mention it in the description below (after/before &quot;Fire selectstart when...&quot;).
&gt; 

We listed that referring to various commits in WebKit like this - http://trac.webkit.org/changeset/82570

&gt; &gt; LayoutTests/fast/events/selectstart-by-arrow-keys-prevent-default.html:17
&gt; &gt; +eventSender.keyDown(&quot;rightArrow&quot;, [&quot;shiftKey&quot;]);
&gt; 
&gt; Because this line will throw an exception outside of DRT, you should consider wrapping it in if and explain how you&apos;d test manually on a browser.

Ok. Will make it.
&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465520</commentid>
    <comment_count>19</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-12 00:47:33 -0700</bug_when>
    <thetext>&gt; We don&apos;t normally list two authors like this. If you&apos;re like to live a credit, then please mention it in the description below (after/before &quot;Fire selectstart when...&quot;).

Done.
 
&gt; Because this line will throw an exception outside of DRT, you should consider wrapping it in if and explain how you&apos;d test manually on a browser.

Wrapped DRT specific code in if condition. Also added how to test it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465521</commentid>
    <comment_count>20</comment_count>
      <attachid>107027</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-09-12 00:48:32 -0700</bug_when>
    <thetext>Created attachment 107027
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465681</commentid>
    <comment_count>21</comment_count>
      <attachid>107027</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-12 10:54:54 -0700</bug_when>
    <thetext>Comment on attachment 107027
Updated patch

Clearing flags on attachment: 107027

Committed r94966: &lt;http://trac.webkit.org/changeset/94966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465682</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-12 10:54:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465746</commentid>
    <comment_count>23</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-09-12 12:59:26 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 107027 [details])
&gt; Clearing flags on attachment: 107027
&gt; 
&gt; Committed r94966: &lt;http://trac.webkit.org/changeset/94966&gt;

FYI, selectstart-by-arrow-keys.html is failing on mac (both safari and chormium).  See, e.g., http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fevents%2Fselectstart-by-arrow-keys.html&amp;showExpectations=true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465783</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-12 14:06:35 -0700</bug_when>
    <thetext>Fixed the test for Mac in http://trac.webkit.org/changeset/94977.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>92685</attachid>
            <date>2011-05-06 21:46:49 -0700</date>
            <delta_ts>2011-05-06 21:46:49 -0700</delta_ts>
            <desc>demo</desc>
            <filename>selectstart.html</filename>
            <type>text/html</type>
            <size>314</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPGRpdiBpZD0idGVzdCIgb25zZWxlY3RzdGFy
dD0icGFzc2VkID0gdHJ1ZTsiIGNvbnRlbnRlZGl0YWJsZT5oZWxsbyB3b3JsZDwvZGl2Pgo8c2Ny
aXB0PgoKdmFyIHBhc3NlZCA9IGZhbHNlOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcp
LmZvY3VzKCk7CndpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJk
JywgJ2NoYXJhY3RlcicpOwpkb2N1bWVudC53cml0ZShwYXNzZWQgPyAnUEFTUycgOiAnRkFJTCcp
OwoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106564</attachid>
            <date>2011-09-07 03:25:54 -0700</date>
            <delta_ts>2011-09-08 09:38:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6483</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NjU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMDcgIEFya28gU2Fo
YSAgPGFya29AbW90b3JvbGEuY29tPiBhbmQgS2F1c3R1YmggQXRyYXdhbGthciA8a2F1c3R1YmhA
bW90b3JvbGEuY29tPgorCisgICAgICAgIFNlbGVjdHN0YXJ0IGlzIG5vdCBmaXJlZCB3aGVuIHNl
bGVjdGlvbiB3YXMgY3JlYXRlZCBieSBhcnJvdyBrZXlzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZW5kIHNlbGVjdFN0YXJ0IERPTSBldmVudCBpZiBv
bGQgc2VsZWN0aW9uIGlzIGVtcHR5IGFuZCBzZWxlY3Rpb24gdHlwZSBpcyBBbHRlcmF0aW9uRXh0
ZW5kLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtl
eXMuaHRtbAorCisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OmRpc3BhdGNoU2VsZWN0U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uaDoKKwogMjAxMS0wOS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBDaGFuZ2UgZXZlbnQgaXMgbm90IGZpcmVkIGZvciBpbnB1dFt0
eXBlPW51bWJlcl0gd2hlbiB0aGUgdXNlciByZXZlcnRzIGEgY2hhbmdlIG1hZGUgYnkgc2NyaXB0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNp
b24gOTQ2NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODE2LDYgKzgxNiw5IEBAIHN0YXRpYyBib29sIGlzQm91bmRhcnko
VGV4dEdyYW51bGFyaXR5IGcKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0
aW9uIGFsdGVyLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CisgICAgVmlzaWJs
ZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBtX3NlbGVjdGlvbjsKKyAgICBib29sIGRpc3BhdGNo
ZWRTZWxlY3RTdGFydCA9IGZhbHNlOworCiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRy
aWdnZXJlZCkgewogICAgICAgICBGcmFtZVNlbGVjdGlvbiB0cmlhbEZyYW1lU2VsZWN0aW9uOwog
ICAgICAgICB0cmlhbEZyYW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihtX3NlbGVjdGlvbik7CkBA
IC04NzcsNiArODgwLDExIEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlv
bgogICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFsdGVyYXRpb25FeHRlbmQ6CisgICAgICAgIGlmIChvbGRTZWxlY3Rpb24u
aXNDYXJldCgpKSB7CisgICAgICAgICAgICBpZiAoIShkaXNwYXRjaGVkU2VsZWN0U3RhcnQgPSBk
aXNwYXRjaFNlbGVjdFN0YXJ0KCkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgLy8gU3RhbmRhcmQgTWFjIGJlaGF2aW9yIHdoZW4gZXh0ZW5kaW5nIHRvIGEg
Ym91bmRhcnkgaXMgZ3JvdyB0aGUgc2VsZWN0aW9uIHJhdGhlciB0aGFuIGxlYXZpbmcgdGhlCiAg
ICAgICAgIC8vIGJhc2UgaW4gcGxhY2UgYW5kIG1vdmluZyB0aGUgZXh0ZW50LiBNYXRjaGVzIE5T
VGV4dFZpZXcuCiAgICAgICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+ZWRpdG9yKCktPmJl
aGF2aW9yKCkuc2hvdWxkQWx3YXlzR3Jvd1NlbGVjdGlvbldoZW5FeHRlbmRpbmdUb0JvdW5kYXJ5
KCkgfHwgbV9zZWxlY3Rpb24uaXNDYXJldCgpIHx8ICFpc0JvdW5kYXJ5KGdyYW51bGFyaXR5KSkK
QEAgLTg5MCw3ICs4OTgsMTEgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0
aW9uCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorCisgICAgLy8gVG8g
aGFuZGxlIHByZXZlbnREZWZhdWx0IGNhc2UuCisgICAgaWYgKCFkaXNwYXRjaGVkU2VsZWN0U3Rh
cnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChncmFudWxhcml0eSA9PSBMaW5l
R3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFyYWdyYXBoR3JhbnVsYXJpdHkpCiAgICAg
ICAgIG1feFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uID0geDsKIApAQCAtMTg4NCw2ICsx
ODk2LDM1IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGkKICAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24o
KSwgbmV3U2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24uYWZmaW5pdHkoKSwgZmFsc2UpOwogfQogCiti
b29sIEZyYW1lU2VsZWN0aW9uOjpkaXNwYXRjaFNlbGVjdFN0YXJ0KCkKK3sKKyAgICBpZiAoIW1f
ZnJhbWUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBSZWZQdHI8Tm9kZT4gcm9vdCA9IDA7CisgICAgTm9k
ZSogc2VsZWN0U3RhcnRUYXJnZXQgPSAwOworICAgIGlmIChpc0NvbnRlbnRFZGl0YWJsZSgpKSB7
CisgICAgICAgIHJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KG1fc2VsZWN0aW9uLnN0YXJ0KCkp
OworICAgICAgICBpZiAoTm9kZSogc2hhZG93Um9vdCA9IG1fc2VsZWN0aW9uLm5vbkJvdW5kYXJ5
U2hhZG93VHJlZVJvb3ROb2RlKCkpCisgICAgICAgICAgICBzZWxlY3RTdGFydFRhcmdldCA9IHNo
YWRvd1Jvb3QtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzZWxlY3RTdGFydFRhcmdldCA9IHJvb3QuZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
cm9vdCA9IG1fc2VsZWN0aW9uLm5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7CisgICAg
ICAgIGlmIChyb290KQorICAgICAgICAgICAgc2VsZWN0U3RhcnRUYXJnZXQgPSByb290LT5zaGFk
b3dBbmNlc3Rvck5vZGUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByb290ID0gZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgICAgICAgICAgc2VsZWN0U3RhcnRUYXJnZXQg
PSBkb2N1bWVudC0+Ym9keSgpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghcm9vdCB8fCAh
c2VsZWN0U3RhcnRUYXJnZXQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIHNl
bGVjdFN0YXJ0VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnNlbGVjdHN0YXJ0RXZlbnQsIHRydWUsIHRydWUpKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIAog
dm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5oCShyZXZpc2lvbiA5NDY1NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDYgKzI0Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJldmVhbFNlbGVjdGlvbihjb25zdCBTY3JvbGxBbGlnbm1lbnQmID0gU2Nyb2xsQWxp
Z25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBib29sIHJldmVhbEV4dGVudCA9IGZhbHNlKTsK
ICAgICB2b2lkIHNldFNlbGVjdGlvbkZyb21Ob25lKCk7CiAKKyAgICBib29sIGRpc3BhdGNoU2Vs
ZWN0U3RhcnQoKTsKKwogcHJpdmF0ZToKICAgICBlbnVtIEVQb3NpdGlvblR5cGUgeyBTVEFSVCwg
RU5ELCBCQVNFLCBFWFRFTlQgfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ2NTgpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0w
OS0wNyAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgU2VsZWN0c3Rh
cnQgaXMgbm90IGZpcmVkIHdoZW4gc2VsZWN0aW9uIHdhcyBjcmVhdGVkIGJ5IGFycm93IGtleXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRl
c3QgdG8gZW5zdXJlIHNlbmRpbmcgb2Ygc2VsZWN0c3RhcnQgRE9NIEV2ZW50IG9uIHNlbGV0aW9u
IHVzaW5nIGFycm93IGtleXMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1i
eS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
c2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wOS0wNyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDaGFuZ2UgZXZlbnQgaXMg
bm90IGZpcmVkIGZvciBpbnB1dFt0eXBlPW51bWJlcl0gd2hlbiB0aGUgdXNlciByZXZlcnRzIGEg
Y2hhbmdlIG1hZGUgYnkgc2NyaXB0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxl
Y3RzdGFydC1ieS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFy
cm93LWtleXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMg
dGVzdCBlbnN1cmVzIHNlbGVjdHN0YXJ0IGlzIGZpcmVkIHdoZW4gc2VsZWN0aW9uIGlzIGNyZWF0
ZWQgYnkgYXJyb3cga2V5cy4KKworaGVsbG8gd29ybGQKK1BBU1MKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1h
cnJvdy1rZXlzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHNlbGVjdHN0YXJ0IGlz
IGZpcmVkIHdoZW4gc2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy48L3A+Cis8ZGl2
IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Cit9CisKK3ZhciBwYXNzZWQgPSBmYWxzZTsKK3ZhciBkaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF07CitkaXYuZm9jdXMoKTsKK2Rp
di5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3RzdGFydCcsIGZ1bmN0aW9uIChldmVudCkgeyBwYXNz
ZWQgPSB0cnVlOyB9KTsKKword2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywg
J2ZvcndhcmQnLCAnY2hhcmFjdGVyJyk7Citkb2N1bWVudC53cml0ZShwYXNzZWQgPyAiUEFTUyIg
OiAiRkFJTCIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="103026"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106717</attachid>
            <date>2011-09-08 02:46:32 -0700</date>
            <delta_ts>2011-09-09 03:14:26 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5333</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NzQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMDggIEFya28gU2Fo
YSAgPGFya29AbW90b3JvbGEuY29tPiBhbmQgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJo
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZWxlY3RzdGFydCBpcyBub3QgZmlyZWQgd2hlbiBz
ZWxlY3Rpb24gd2FzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlyZSBzZWxlY3RzdGFydCB3aGVuIGEgdXNlciBz
dGFydHMgZXh0ZW5kaW5nIHRoZSBzZWxlY3Rpb24gdXNpbmcgYXJyb3cga2V5LgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMuaHRtbAorCisgICAg
ICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6bW9kaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpz
aG91bGRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OmRpc3BhdGNoU2VsZWN0U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aDoKKwogMjAxMS0wOS0wNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRyeWluZyB0byBzY3JvbGwgbW91c2Ugd2hlZWwgd2hl
biBpbiBUZXh0Vmlld2VyJ3MgZ3V0dGVyIHBhbmUgY2F1c2VzIEV2ZW50RXhjZXB0aW9uOjpESVNQ
QVRDSF9SRVFVRVNUX0VSUgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAJKHJldmlzaW9uIDk0NzQ5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJGcmFtZVNlbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgorI2luY2x1
ZGUgIkRPTVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtODE3LDYgKzgx
OCw5IEBAIHN0YXRpYyBib29sIGlzQm91bmRhcnkoVGV4dEdyYW51bGFyaXR5IGcKIGJvb2wgRnJh
bWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBFVXNlclRyaWdnZXJlZCB1
c2VyVHJpZ2dlcmVkKQogewogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQp
IHsKKyAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQgJiYgbV9zZWxlY3Rpb24u
aXNDYXJldCgpICYmICFkaXNwYXRjaFNlbGVjdFN0YXJ0KCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICAgICAgRnJhbWVTZWxlY3Rpb24gdHJpYWxGcmFtZVNlbGVjdGlvbjsKICAg
ICAgICAgdHJpYWxGcmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pOwogICAg
ICAgICB0cmlhbEZyYW1lU2VsZWN0aW9uLm1vZGlmeShhbHRlciwgZGlyZWN0aW9uLCBncmFudWxh
cml0eSwgTm90VXNlclRyaWdnZXJlZCk7CkBAIC0xODg0LDYgKzE4ODgsMTggQEAgYm9vbCBGcmFt
ZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0aQogICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0
b3IoKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbigpLCBuZXdTZWxlY3Rpb24sIG5l
d1NlbGVjdGlvbi5hZmZpbml0eSgpLCBmYWxzZSk7CiB9CiAKK2Jvb2wgRnJhbWVTZWxlY3Rpb246
OmRpc3BhdGNoU2VsZWN0U3RhcnQoKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBOb2RlKiBzZWxlY3RTdGFydFRhcmdldCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmdldFNlbGVjdGlvbigpLT5mb2N1c05vZGUoKTsKKyAgICBpZiAoIXNlbGVjdFN0YXJ0
VGFyZ2V0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBzZWxlY3RTdGFydFRh
cmdldC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFy
dEV2ZW50LCB0cnVlLCB0cnVlKSk7Cit9CisKICNpZm5kZWYgTkRFQlVHCiAKIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2
aXNpb24gOTQ3NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0Myw2ICsyNDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXZl
YWxTZWxlY3Rpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6YWxp
Z25DZW50ZXJJZk5lZWRlZCwgYm9vbCByZXZlYWxFeHRlbnQgPSBmYWxzZSk7CiAgICAgdm9pZCBz
ZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwogCisgICAgYm9vbCBkaXNwYXRjaFNlbGVjdFN0YXJ0KCk7
CisKIHByaXZhdGU6CiAgICAgZW51bSBFUG9zaXRpb25UeXBlIHsgU1RBUlQsIEVORCwgQkFTRSwg
RVhURU5UIH07CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NzQ5KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMDggIEFya28g
U2FoYSAgPGFya29AbW90b3JvbGEuY29tPiBhbmQgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0
dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZWxlY3RzdGFydCBpcyBub3QgZmlyZWQgd2hl
biBzZWxlY3Rpb24gd2FzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCB0byBlbnN1cmUgc2VuZGlu
ZyBvZiBzZWxlY3RzdGFydCBET00gRXZlbnQgb24gc2VsZXRpb24gdXNpbmcgYXJyb3cga2V5cy4K
KworICAgICAgICAqIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJv
dy1rZXlzLmh0bWw6IEFkZGVkLgorCiAyMDExLTA5LTA4ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9p
c2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBSZWJhc2VsaW5lcyBmb3Ig
Y2hyb21pdW0uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1h
cnJvdy1rZXlzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBlbnN1cmVz
IHNlbGVjdHN0YXJ0IGlzIGZpcmVkIHdoZW4gc2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJyb3cg
a2V5cy4KKworaGVsbG8gd29ybGQKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHNlbGVjdHN0YXJ0IGlzIGZpcmVkIHdoZW4g
c2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBj
b250ZW50ZWRpdGFibGU+aGVsbG8gd29ybGQ8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2YXIgcGFzc2VkID0gZmFsc2U7
Cit2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKK2Rpdi5mb2N1cygp
OworZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdHN0YXJ0JywgZnVuY3Rpb24gKGV2ZW50KSB7
IHBhc3NlZCA9IHRydWU7IH0pOworCisvLyBTZW5kIHJpZ2h0IGFycm93ICsgc2hpZnQKK2V2ZW50
U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBbInNoaWZ0S2V5Il0pOworbG9nUmVzdWx0KHBh
c3NlZCA/ICJQQVNTIiA6ICJGQUlMIik7CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChzdHIpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gc3RyOworfQor
Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="103212"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106844</attachid>
            <date>2011-09-08 23:53:43 -0700</date>
            <delta_ts>2011-09-09 03:14:26 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6674</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMDggIEFya28gU2Fo
YSAgPGFya29AbW90b3JvbGEuY29tPiBhbmQgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJo
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZWxlY3RzdGFydCBpcyBub3QgZmlyZWQgd2hlbiBz
ZWxlY3Rpb24gd2FzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlyZSBzZWxlY3RzdGFydCB3aGVuIGEgdXNlciBz
dGFydHMgZXh0ZW5kaW5nIHRoZSBzZWxlY3Rpb24gdXNpbmcgYXJyb3cga2V5LgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMuaHRtbAorCisgICAg
ICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6bW9kaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpz
aG91bGRDaGFuZ2VTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OmRpc3BhdGNoU2VsZWN0U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aDoKKwogMjAxMS0wOS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBQdXNoIG1vcmUgY29kZSBmcm9tIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlIHRvIFRl
eHRGaWVsZElucHV0VHlwZTo6c2V0VmFsdWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA5NDgzNikKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjEsOSArODIxLDEz
IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbgogICAgICAgICB0cmlh
bEZyYW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihtX3NlbGVjdGlvbik7CiAgICAgICAgIHRyaWFs
RnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBOb3RV
c2VyVHJpZ2dlcmVkKTsKIAotICAgICAgICBib29sIGNoYW5nZSA9IHNob3VsZENoYW5nZVNlbGVj
dGlvbih0cmlhbEZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpKTsKKyAgICAgICAgVmlzaWJsZVNl
bGVjdGlvbiB0cmlhbFZpc2libGVTZWxlY3Rpb24gPSB0cmlhbEZyYW1lU2VsZWN0aW9uLnNlbGVj
dGlvbigpOworICAgICAgICBib29sIGNoYW5nZSA9IHNob3VsZENoYW5nZVNlbGVjdGlvbih0cmlh
bFZpc2libGVTZWxlY3Rpb24pOwogICAgICAgICBpZiAoIWNoYW5nZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBpZiAodHJpYWxWaXNpYmxlU2VsZWN0aW9uLmlzUmFuZ2Uo
KSAmJiBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgJiYgIWRpc3BhdGNoU2VsZWN0U3RhcnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB3aWxsQmVNb2RpZmllZChhbHRl
ciwgZGlyZWN0aW9uKTsKQEAgLTE4ODQsNiArMTg4OCwxNSBAQCBib29sIEZyYW1lU2VsZWN0aW9u
OjpzaG91bGRDaGFuZ2VTZWxlY3RpCiAgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLT5zaG91
bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCksIG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9u
LmFmZmluaXR5KCksIGZhbHNlKTsKIH0KIAorYm9vbCBGcmFtZVNlbGVjdGlvbjo6ZGlzcGF0Y2hT
ZWxlY3RTdGFydCgpCit7CisgICAgTm9kZSogc2VsZWN0U3RhcnRUYXJnZXQgPSBtX3NlbGVjdGlv
bi5leHRlbnQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKCFzZWxlY3RTdGFydFRhcmdldCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc2VsZWN0U3RhcnRUYXJnZXQtPmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudCwg
dHJ1ZSwgdHJ1ZSkpOworfQorCiAjaWZuZGVmIE5ERUJVRwogCiB2b2lkIEZyYW1lU2VsZWN0aW9u
Ojpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDk0
ODM2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzUsNiArMjc1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2FyZXRW
aXNpYmlsaXR5KENhcmV0VmlzaWJpbGl0eSk7CiAKKyAgICBib29sIGRpc3BhdGNoU2VsZWN0U3Rh
cnQoKTsKKwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCiAgICAgTGF5b3V0VW5pdCBtX3hQb3NGb3JW
ZXJ0aWNhbEFycm93TmF2aWdhdGlvbjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODM2KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MDktMDggIEFya28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPiBhbmQgS2F1c3R1YmggQXRyYXdh
bGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZWxlY3RzdGFydCBpcyBu
b3QgZmlyZWQgd2hlbiBzZWxlY3Rpb24gd2FzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCB0byBl
bnN1cmUgc2VuZGluZyBvZiBzZWxlY3RzdGFydCBET00gRXZlbnQgb24gc2VsZXRpb24gdXNpbmcg
YXJyb3cga2V5cy4KKyAgICAgICAgSXQgYWxzbyBlbnN1cmUgdGhhdCBzZWxlY3RzdGFydCBldmVu
dCBpcyBmaXJlZCBleGFjdGx5IG9uY2UuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zZWxlY3Rz
dGFydC1ieS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
dmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wOS0w
OCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCB1cGRhdGUgY2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1r
ZXlzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE2IEBACitUaGlzIHRlc3QgZW5zdXJlcyBzZWxlY3RzdGFydCBpcyBmaXJlZCB3aGVu
IHNlbGVjdGlvbiBpcyBjcmVhdGVkIGJ5IGFycm93IGtleXMuCisKK0hlbGxvIFdvcmxkCitJbml0
aWFsIHN0YXRlOiBQQVNTLgorQ2hlY2sgKFJpZ2h0IGFycm93KTogUEFTUy4KK0NoZWNrIChSaWdo
dCBhcnJvdyArIFNoaWZ0KTogUEFTUy4KK0NoZWNrIChSaWdodCBhcnJvdyArIFNoaWZ0ICsgQ29u
dHJvbCk6IFBBU1MuCitDaGVjayAoRW5kICsgU2hpZnQpOiBQQVNTLgorQ2hlY2sgKEhvbWUgKyBT
aGlmdCk6IFBBU1MuCitDaGVjayAoRW5kICsgU2hpZnQpOiBQQVNTLgorQ2hlY2sgKExlZnQgYXJy
b3cpOiBQQVNTLgorQ2hlY2sgKExlZnRBcnJvdyArIFNoaWZ0ICsgQ29udHJvbCk6IFBBU1MuCitD
aGVjayAoTGVmdCBhcnJvdyArIFNoaWZ0KTogUEFTUy4KK0NoZWNrIChIb21lICsgU2hpZnQpOiBQ
QVNTLgorQ2hlY2sgKEhvbWUgKyBDb250cm9sKTogUEFTUy4KK0RvbmUuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQt
YnktYXJyb3cta2V5cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyBzZWxlY3RzdGFy
dCBpcyBmaXJlZCB3aGVuIHNlbGVjdGlvbiBpcyBjcmVhdGVkIGJ5IGFycm93IGtleXMuPC9wPgor
PGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPkhlbGxvIFdvcmxkPC9kaXY+Cis8c2NyaXB0
PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIHNlbGVjdFN0YXJ0Q291bnQgPSAwOwordmFyIGRp
diA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CitkaXYuYWRkRXZlbnRMaXN0ZW5l
cignc2VsZWN0c3RhcnQnLCBmdW5jdGlvbiAoZXZlbnQpIHsgc2VsZWN0U3RhcnRDb3VudCsrOyB9
KTsKK2Rpdi5mb2N1cygpOworCitsb2dSZXN1bHQoJ0luaXRpYWwgc3RhdGUnLCAwKTsKKworZXZl
bnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworbG9nUmVzdWx0KCdDaGVjayAoUmlnaHQg
YXJyb3cpJywgMCk7CisKK2V2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBbInNoaWZ0
S2V5Il0pOworbG9nUmVzdWx0KCdDaGVjayAoUmlnaHQgYXJyb3cgKyBTaGlmdCknLCAxKTsKKwor
ZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIsIFsic2hpZnRLZXkiXSwgWyJjdHJsS2V5
Il0pOworbG9nUmVzdWx0KCdDaGVjayAoUmlnaHQgYXJyb3cgKyBTaGlmdCArIENvbnRyb2wpJywg
MSk7CisKK2V2ZW50U2VuZGVyLmtleURvd24oImVuZCIsIFsic2hpZnRLZXkiXSk7Citsb2dSZXN1
bHQoJ0NoZWNrIChFbmQgKyBTaGlmdCknLCAxKTsKKworZXZlbnRTZW5kZXIua2V5RG93bigiaG9t
ZSIsIFsic2hpZnRLZXkiXSk7Citsb2dSZXN1bHQoJ0NoZWNrIChIb21lICsgU2hpZnQpJywgMSk7
CisKK2V2ZW50U2VuZGVyLmtleURvd24oImVuZCIsIFsic2hpZnRLZXkiXSk7Citsb2dSZXN1bHQo
J0NoZWNrIChFbmQgKyBTaGlmdCknLCAxKTsKKworZXZlbnRTZW5kZXIua2V5RG93bigibGVmdEFy
cm93Iik7Citsb2dSZXN1bHQoJ0NoZWNrIChMZWZ0IGFycm93KScsIDEpOworCitldmVudFNlbmRl
ci5rZXlEb3duKCJsZWZ0QXJyb3ciLCBbInNoaWZ0S2V5Il0sIFsiY3RybEtleSJdKTsKK2xvZ1Jl
c3VsdCgnQ2hlY2sgKExlZnRBcnJvdyArIFNoaWZ0ICsgQ29udHJvbCknLCAyKTsKKworZXZlbnRT
ZW5kZXIua2V5RG93bigibGVmdEFycm93IiwgWyJzaGlmdEtleSJdKTsKK2xvZ1Jlc3VsdCgnQ2hl
Y2sgKExlZnQgYXJyb3cgKyBTaGlmdCknLCAyKTsKKworZXZlbnRTZW5kZXIua2V5RG93bigiZW5k
IiwgWyJzaGlmdEtleSJdKTsKK2xvZ1Jlc3VsdCgnQ2hlY2sgKEhvbWUgKyBTaGlmdCknLCAyKTsK
KworZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIsIFsiY3RybEtleSJdKTsKK2xvZ1Jlc3VsdCgn
Q2hlY2sgKEhvbWUgKyBDb250cm9sKScsIDIpOworCitkb2N1bWVudC53cml0ZSgiRG9uZS4iKQor
CitmdW5jdGlvbiBsb2dSZXN1bHQodGl0bGUsIGV4cGVjdGVkQ291bnQpIHsKKyAgICBkb2N1bWVu
dC53cml0ZSh0aXRsZSArICc6ICcpOworICAgIGlmIChzZWxlY3RTdGFydENvdW50ICE9IGV4cGVj
dGVkQ291bnQpCisgICAgICAgIGRvY3VtZW50LndyaXRlKCdGQUlMIC0gZXhwZWN0ZWQgJyArIGV4
cGVjdGVkQ291bnQgKyAnIGV2ZW50cyBidXQgZ290ICcgKyBzZWxlY3RTdGFydENvdW50ICsgJyBl
dmVudHMnKTsKKyAgICBlbHNlCisgICAgICAgICBkb2N1bWVudC53cml0ZSgnUEFTUy4nKTsKKyAg
ICBkb2N1bWVudC53cml0ZWxuKCc8YnIgLz4nKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="103367"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106853</attachid>
            <date>2011-09-09 03:14:26 -0700</date>
            <delta_ts>2011-09-12 09:06:03 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>8726</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODQxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMDkgIEFya28gU2Fo
YSAgPGFya29AbW90b3JvbGEuY29tPiBhbmQgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJo
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZWxlY3RzdGFydCBpcyBub3QgZmlyZWQgd2hlbiBz
ZWxlY3Rpb24gd2FzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlyZSBzZWxlY3RzdGFydCB3aGVuIGEgdXNlciBz
dGFydHMgZXh0ZW5kaW5nIHRoZSBzZWxlY3Rpb24gdXNpbmcgYXJyb3cga2V5LgorCisgICAgICAg
IFRlc3RzOiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLXByZXZlbnQtZGVm
YXVsdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJv
dy1rZXlzLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpkaXNwYXRjaFNlbGVjdFN0YXJ0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisKIDIwMTEtMDktMDkgIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBDcmFzaGVzIGluIFdlYkNvcmU6OkFwcGVuZE5v
ZGVDb21tYW5kOjpjcmVhdGUoKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA5NDg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjQsNiArODI0LDkgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uCiAgICAgICAgIGJvb2wgY2hhbmdl
ID0gc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHRyaWFsRnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkp
OwogICAgICAgICBpZiAoIWNoYW5nZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBpZiAodHJpYWxGcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc1JhbmdlKCkgJiYgbV9z
ZWxlY3Rpb24uaXNDYXJldCgpICYmICFkaXNwYXRjaFNlbGVjdFN0YXJ0KCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgd2lsbEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVj
dGlvbik7CkBAIC0xODg0LDYgKzE4ODcsMTUgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxk
Q2hhbmdlU2VsZWN0aQogICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkQ2hhbmdl
U2VsZWN0aW9uKHNlbGVjdGlvbigpLCBuZXdTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbi5hZmZpbml0
eSgpLCBmYWxzZSk7CiB9CiAKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OmRpc3BhdGNoU2VsZWN0U3Rh
cnQoKQoreworICAgIE5vZGUqIHNlbGVjdFN0YXJ0VGFyZ2V0ID0gbV9zZWxlY3Rpb24uZXh0ZW50
KCkuY29udGFpbmVyTm9kZSgpOworICAgIGlmICghc2VsZWN0U3RhcnRUYXJnZXQpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIHNlbGVjdFN0YXJ0VGFyZ2V0LT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQsIHRydWUsIHRy
dWUpKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9ybWF0
Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiA5NDg0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMjc1LDYgKzI3NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENhcmV0VmlzaWJpbGl0
eShDYXJldFZpc2liaWxpdHkpOwogCisgICAgYm9vbCBkaXNwYXRjaFNlbGVjdFN0YXJ0KCk7CisK
ICAgICBGcmFtZSogbV9mcmFtZTsKIAogICAgIExheW91dFVuaXQgbV94UG9zRm9yVmVydGljYWxB
cnJvd05hdmlnYXRpb247CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDg0MSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA5LTA5ICBB
cmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4gYW5kIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxr
YXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgU2VsZWN0c3RhcnQgaXMgbm90IGZpcmVk
IHdoZW4gc2VsZWN0aW9uIHdhcyBjcmVhdGVkIGJ5IGFycm93IGtleXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQzMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0c3Rh
cnQtYnktYXJyb3cta2V5cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVudC1kZWZhdWx0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5
cy1wcmV2ZW50LWRlZmF1bHQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc2Vs
ZWN0c3RhcnQtYnktYXJyb3cta2V5cy5odG1sOiBBZGRlZC4KKwogMjAxMS0wOS0wOSAgU2hpbnlh
IEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAgICAgIENyYXNoZXMgaW4gV2Vi
Q29yZTo6QXBwZW5kTm9kZUNvbW1hbmQ6OmNyZWF0ZSgpLgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxl
Y3RzdGFydC1ieS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNiBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgc2VsZWN0c3RhcnQgaXMgZmlyZWQgd2hlbiBzZWxl
Y3Rpb24gaXMgY3JlYXRlZCBieSBhcnJvdyBrZXlzLgorCitIZWxsbyBXb3JsZAorSW5pdGlhbCBz
dGF0ZTogUEFTUworQ2hlY2sgKFJpZ2h0IGFycm93KTogUEFTUworQ2hlY2sgKFJpZ2h0IGFycm93
ICsgU2hpZnQpOiBQQVNTCitDaGVjayAoUmlnaHQgYXJyb3cgKyBTaGlmdCArIENvbnRyb2wpOiBQ
QVNTCitDaGVjayAoRW5kICsgU2hpZnQpOiBQQVNTCitDaGVjayAoSG9tZSArIFNoaWZ0KTogUEFT
UworQ2hlY2sgKEVuZCArIFNoaWZ0KTogUEFTUworQ2hlY2sgKExlZnQgYXJyb3cpOiBQQVNTCitD
aGVjayAoTGVmdEFycm93ICsgU2hpZnQgKyBDb250cm9sKTogUEFTUworQ2hlY2sgKExlZnQgYXJy
b3cgKyBTaGlmdCk6IFBBU1MKK0NoZWNrIChIb21lICsgU2hpZnQpOiBQQVNTCitDaGVjayAoSG9t
ZSArIENvbnRyb2wpOiBQQVNTCitEb25lLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1wcmV2ZW50LWRlZmF1bHQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93
LWtleXMtcHJldmVudC1kZWZhdWx0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVudC1kZWZh
dWx0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitUaGlzIHRlc3Qg
ZW5zdXJlcyBzZWxlY3RzdGFydCBldmVudCBmaXJlcyB3aGVuIHNlbGVjdGlvbiBpcyBjcmVhdGVk
IGJ5IGFycm93IGtleSBhbmQgc2NyaXB0IGNhbiBwcmV2ZW50IHRoZSBzZWxlY3Rpb24gY2hhbmdl
LgorCitIZWxsbyBXb3JsZAorQ2hlY2sgUmlnaHQgYXJyb3cgKyBTaGlmdDogUEFTUworQ2hlY2sg
UmlnaHQgYXJyb3cgKyBTaGlmdCArIENvbnRyb2w6IFBBU1MKK0NoZWNrIEVuZCArIFNoaWZ0OiBQ
QVNTCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93
LWtleXMtcHJldmVudC1kZWZhdWx0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1wcmV2ZW50LWRlZmF1bHQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFy
cm93LWtleXMtcHJldmVudC1kZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVz
IHNlbGVjdHN0YXJ0IGV2ZW50IGZpcmVzIHdoZW4gc2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJy
b3cga2V5IGFuZCBzY3JpcHQgY2FuIHByZXZlbnQgdGhlIHNlbGVjdGlvbiBjaGFuZ2UuPC9wPgor
PGRpdiBjb250ZW50ZWRpdGFibGU+SGVsbG8gV29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCit2YXIgc2VsZWN0U3RhcnRDb3VudCA9IDA7Cit2YXIgZGl2ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpWzBdOworZGl2LmFkZEV2ZW50TGlzdGVuZXIo
J3NlbGVjdHN0YXJ0JywgZnVuY3Rpb24gKGV2ZW50KSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
IHNlbGVjdFN0YXJ0Q291bnQrKzsgfSk7CitkaXYuZm9jdXMoKTsKK3dpbmRvdy5nZXRTZWxlY3Rp
b24oKS5zZXRQb3NpdGlvbihkaXYuZmlyc3RDaGlsZCwgMSk7CisKK2V2ZW50U2VuZGVyLmtleURv
d24oInJpZ2h0QXJyb3ciLCBbInNoaWZ0S2V5Il0pOworbG9nUmVzdWx0KCJDaGVjayBSaWdodCBh
cnJvdyArIFNoaWZ0IiwgMSk7CisKK2V2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBb
InNoaWZ0S2V5Il0sIFsiY3RybEtleSJdKTsKK2xvZ1Jlc3VsdCgiQ2hlY2sgUmlnaHQgYXJyb3cg
KyBTaGlmdCArIENvbnRyb2wiLCAyKTsKKworZXZlbnRTZW5kZXIua2V5RG93bigiZW5kIiwgWyJz
aGlmdEtleSJdKTsKK2xvZ1Jlc3VsdCgiQ2hlY2sgRW5kICsgU2hpZnQiLCAzKTsKKworZnVuY3Rp
b24gbG9nUmVzdWx0KHRpdGxlLCBleHBlY3RlZENvdW50KSB7CisgICAgdmFyIHJhbmdlID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCk7CisgICAgZG9jdW1lbnQud3JpdGUodGl0
bGUgKyAnOiAnKTsKKyAgICBpZiAoc2VsZWN0U3RhcnRDb3VudCAhPSBleHBlY3RlZENvdW50KQor
ICAgICAgICBkb2N1bWVudC53cml0ZSgnRkFJTCAtICBleHBlY3RlZCAnICsgZXhwZWN0ZWRDb3Vu
dCArICcgZXZlbnRzIGJ1dCBnb3QgJyArIHNlbGVjdFN0YXJ0Q291bnQgKyAnIGV2ZW50cycpOwor
ICAgIGVsc2UgaWYgKHJhbmdlLnN0YXJ0T2Zmc2V0ICE9IDEgfHwgcmFuZ2UuZW5kT2Zmc2V0ICE9
IDEpCisgICAgICAgIGRvY3VtZW50LndyaXRlKCdGQUlMIC0gc2VsZWN0aW9uIGNoYW5nZWQnKTsK
KyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LndyaXRlKCdQQVNTJyk7CisgICAgZG9jdW1lbnQu
d3JpdGUoJzxicj4nKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3ct
a2V5cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0
c3RhcnQtYnktYXJyb3cta2V5cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyBzZWxl
Y3RzdGFydCBpcyBmaXJlZCB3aGVuIHNlbGVjdGlvbiBpcyBjcmVhdGVkIGJ5IGFycm93IGtleXMu
PC9wPgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPkhlbGxvIFdvcmxkPC9kaXY+Cis8
c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIHNlbGVjdFN0YXJ0Q291bnQgPSAwOwor
dmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CitkaXYuYWRkRXZlbnRM
aXN0ZW5lcignc2VsZWN0c3RhcnQnLCBmdW5jdGlvbiAoZXZlbnQpIHsgc2VsZWN0U3RhcnRDb3Vu
dCsrOyB9KTsKK2Rpdi5mb2N1cygpOworCitsb2dSZXN1bHQoJ0luaXRpYWwgc3RhdGUnLCAwKTsK
KworZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworbG9nUmVzdWx0KCdDaGVjayAo
UmlnaHQgYXJyb3cpJywgMCk7CisKK2V2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBb
InNoaWZ0S2V5Il0pOworbG9nUmVzdWx0KCdDaGVjayAoUmlnaHQgYXJyb3cgKyBTaGlmdCknLCAx
KTsKKworZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIsIFsic2hpZnRLZXkiXSwgWyJj
dHJsS2V5Il0pOworbG9nUmVzdWx0KCdDaGVjayAoUmlnaHQgYXJyb3cgKyBTaGlmdCArIENvbnRy
b2wpJywgMSk7CisKK2V2ZW50U2VuZGVyLmtleURvd24oImVuZCIsIFsic2hpZnRLZXkiXSk7Cits
b2dSZXN1bHQoJ0NoZWNrIChFbmQgKyBTaGlmdCknLCAxKTsKKworZXZlbnRTZW5kZXIua2V5RG93
bigiaG9tZSIsIFsic2hpZnRLZXkiXSk7Citsb2dSZXN1bHQoJ0NoZWNrIChIb21lICsgU2hpZnQp
JywgMSk7CisKK2V2ZW50U2VuZGVyLmtleURvd24oImVuZCIsIFsic2hpZnRLZXkiXSk7Citsb2dS
ZXN1bHQoJ0NoZWNrIChFbmQgKyBTaGlmdCknLCAxKTsKKworZXZlbnRTZW5kZXIua2V5RG93bigi
bGVmdEFycm93Iik7Citsb2dSZXN1bHQoJ0NoZWNrIChMZWZ0IGFycm93KScsIDEpOworCitldmVu
dFNlbmRlci5rZXlEb3duKCJsZWZ0QXJyb3ciLCBbInNoaWZ0S2V5Il0sIFsiY3RybEtleSJdKTsK
K2xvZ1Jlc3VsdCgnQ2hlY2sgKExlZnRBcnJvdyArIFNoaWZ0ICsgQ29udHJvbCknLCAyKTsKKwor
ZXZlbnRTZW5kZXIua2V5RG93bigibGVmdEFycm93IiwgWyJzaGlmdEtleSJdKTsKK2xvZ1Jlc3Vs
dCgnQ2hlY2sgKExlZnQgYXJyb3cgKyBTaGlmdCknLCAyKTsKKworZXZlbnRTZW5kZXIua2V5RG93
bigiZW5kIiwgWyJzaGlmdEtleSJdKTsKK2xvZ1Jlc3VsdCgnQ2hlY2sgKEhvbWUgKyBTaGlmdCkn
LCAyKTsKKworZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIsIFsiY3RybEtleSJdKTsKK2xvZ1Jl
c3VsdCgnQ2hlY2sgKEhvbWUgKyBDb250cm9sKScsIDIpOworCitkb2N1bWVudC53cml0ZSgiRG9u
ZS4iKQorCitmdW5jdGlvbiBsb2dSZXN1bHQodGl0bGUsIGV4cGVjdGVkQ291bnQpIHsKKyAgICBk
b2N1bWVudC53cml0ZSh0aXRsZSArICc6ICcpOworICAgIGlmIChzZWxlY3RTdGFydENvdW50ICE9
IGV4cGVjdGVkQ291bnQpCisgICAgICAgIGRvY3VtZW50LndyaXRlKCdGQUlMIC0gZXhwZWN0ZWQg
JyArIGV4cGVjdGVkQ291bnQgKyAnIGV2ZW50cyBidXQgZ290ICcgKyBzZWxlY3RTdGFydENvdW50
ICsgJyBldmVudHMnKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LndyaXRlKCdQQVNTJyk7
CisgICAgZG9jdW1lbnQud3JpdGUoJzxicj4nKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="103380"
          type_id="1"
          status="+"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="103381"
          type_id="3"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107027</attachid>
            <date>2011-09-12 00:48:32 -0700</date>
            <delta_ts>2011-09-12 10:54:54 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>9813</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0OTQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDktMTIgIEFya28gU2Fo
YSAgPGFya29AbW90b3JvbGEuY29tPgorCisgICAgICAgIFNlbGVjdHN0YXJ0IGlzIG5vdCBmaXJl
ZCB3aGVuIHNlbGVjdGlvbiB3YXMgY3JlYXRlZCBieSBhcnJvdyBrZXlzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0MzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXJlIHNlbGVjdHN0YXJ0IHdoZW4g
YSB1c2VyIHN0YXJ0cyBleHRlbmRpbmcgdGhlIHNlbGVjdGlvbiB1c2luZyBhcnJvdyBrZXkuCisg
ICAgICAgIEZpeGVkIGJ5IEFya28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPiBhbmQgS2F1c3R1
YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBUZXN0czog
ZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1wcmV2ZW50LWRlZmF1bHQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy5o
dG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6ZGlzcGF0Y2hTZWxlY3RTdGFydCk6CisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5oOgorCiAyMDExLTA5LTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdv
b2dsZS5jb20+CiAKICAgICAgICAgQ2hhcmFjdGVycyBiZXlvbmQgVSsxMDAwMCBzaG91bGQgYmUg
ZGVsZXRlZCBieSBvbmUgcHJlc3NpbmcgZGVsZXRlIGtleS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA5NDk0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjQs
NiArODI0LDkgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uCiAgICAg
ICAgIGJvb2wgY2hhbmdlID0gc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHRyaWFsRnJhbWVTZWxlY3Rp
b24uc2VsZWN0aW9uKCkpOwogICAgICAgICBpZiAoIWNoYW5nZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAodHJpYWxGcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5p
c1JhbmdlKCkgJiYgbV9zZWxlY3Rpb24uaXNDYXJldCgpICYmICFkaXNwYXRjaFNlbGVjdFN0YXJ0
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgd2lsbEJlTW9kaWZp
ZWQoYWx0ZXIsIGRpcmVjdGlvbik7CkBAIC0xODg0LDYgKzE4ODcsMTUgQEAgYm9vbCBGcmFtZVNl
bGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0aQogICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3Io
KS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbigpLCBuZXdTZWxlY3Rpb24sIG5ld1Nl
bGVjdGlvbi5hZmZpbml0eSgpLCBmYWxzZSk7CiB9CiAKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OmRp
c3BhdGNoU2VsZWN0U3RhcnQoKQoreworICAgIE5vZGUqIHNlbGVjdFN0YXJ0VGFyZ2V0ID0gbV9z
ZWxlY3Rpb24uZXh0ZW50KCkuY29udGFpbmVyTm9kZSgpOworICAgIGlmICghc2VsZWN0U3RhcnRU
YXJnZXQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIHNlbGVjdFN0YXJ0VGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0
RXZlbnQsIHRydWUsIHRydWUpKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIAogdm9pZCBGcmFtZVNl
bGVjdGlvbjo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZp
c2lvbiA5NDk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNl
dENhcmV0VmlzaWJpbGl0eShDYXJldFZpc2liaWxpdHkpOwogCisgICAgYm9vbCBkaXNwYXRjaFNl
bGVjdFN0YXJ0KCk7CisKICAgICBGcmFtZSogbV9mcmFtZTsKIAogICAgIExheW91dFVuaXQgbV94
UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb247CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDk0OCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDExLTA5LTEyICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBT
ZWxlY3RzdGFydCBpcyBub3QgZmlyZWQgd2hlbiBzZWxlY3Rpb24gd2FzIGNyZWF0ZWQgYnkgYXJy
b3cga2V5cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYwNDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1wcmV2
ZW50LWRlZmF1bHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9z
ZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLXByZXZlbnQtZGVmYXVsdC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWw6IEFkZGVk
LgorCiAyMDExLTA5LTEyICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHVwZGF0ZSBjaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucy4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NlbGVjdHN0
YXJ0LWJ5LWFycm93LWtleXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHNlbGVjdHN0YXJ0
IGlzIGZpcmVkIHdoZW4gc2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy4KKworSWYg
cnVubmluZyB0aGlzIHRlc3QgbWFudWFsbHksIGNsaWNrIG9uIGRpdiAoIkhlbGxvIFdvcmxkIikg
ZWxlbWVudCBhbmQgdHJ5IHRvIHNlbGVjdCB0aGUgdGV4dCB1c2luZyBhcnJvdyBrZXlzLgorRXhw
ZWN0ZWQgcmVzdWx0IDogU2VsZWN0U3RhcnQgZXZlbnQgd2lsbCBmaXJlIHdoZW4gdXNlciBzdGFy
dHMgZXh0ZW5kaW5nIHNlbGVjdGlvbi4KK0hlbGxvIFdvcmxkCitJbml0aWFsIHN0YXRlOiBQQVNT
CitDaGVjayAoUmlnaHQgYXJyb3cpOiBQQVNTCitDaGVjayAoUmlnaHQgYXJyb3cgKyBTaGlmdCk6
IFBBU1MKK0NoZWNrIChSaWdodCBhcnJvdyArIFNoaWZ0ICsgQ29udHJvbCk6IFBBU1MKK0NoZWNr
IChFbmQgKyBTaGlmdCk6IFBBU1MKK0NoZWNrIChIb21lICsgU2hpZnQpOiBQQVNTCitDaGVjayAo
RW5kICsgU2hpZnQpOiBQQVNTCitDaGVjayAoTGVmdCBhcnJvdyk6IFBBU1MKK0NoZWNrIChMZWZ0
QXJyb3cgKyBTaGlmdCArIENvbnRyb2wpOiBQQVNTCitDaGVjayAoTGVmdCBhcnJvdyArIFNoaWZ0
KTogUEFTUworQ2hlY2sgKEhvbWUgKyBTaGlmdCk6IFBBU1MKK0NoZWNrIChIb21lICsgQ29udHJv
bCk6IFBBU1MKK0RvbmUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFy
dC1ieS1hcnJvdy1rZXlzLXByZXZlbnQtZGVmYXVsdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1wcmV2
ZW50LWRlZmF1bHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3cta2V5cy1wcmV2ZW50LWRlZmF1bHQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHNl
bGVjdHN0YXJ0IGV2ZW50IGZpcmVzIHdoZW4gc2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJyb3cg
a2V5IGFuZCBzY3JpcHQgY2FuIHByZXZlbnQgdGhlIHNlbGVjdGlvbiBjaGFuZ2UuCisKK0lmIHJ1
bm5pbmcgdGhpcyB0ZXN0IG1hbnVhbGx5LCBjbGljayBvbiB0aGUgZGl2ICgiSGVsbG8gV29ybGQi
KSBhbmQgdHJ5IHRvIHNlbGVjdCB0aGUgdGV4dCB1c2luZyBhcnJvdyBrZXlzLgorRXhwZWN0ZWQg
cmVzdWx0OiBTZWxlY3RTdGFydCBldmVudCB3aWxsIGZpcmUgd2hlbiB1c2VyIHN0YXJ0cyBleHRl
bmRpbmcgdGhlIHNlbGVjdGlvbiwgYnV0IGR1ZSB0byBzY3JpcHQgcHJldmVudERlZmF1bHQgaXQg
cHJldmVudHMgdGhlIHNlbGVjdGlvbiBjaGFuZ2UuCitIZWxsbyBXb3JsZAorQ2hlY2sgUmlnaHQg
YXJyb3cgKyBTaGlmdDogUEFTUworQ2hlY2sgUmlnaHQgYXJyb3cgKyBTaGlmdCArIENvbnRyb2w6
IFBBU1MKK0NoZWNrIEVuZCArIFNoaWZ0OiBQQVNTCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVudC1kZWZhdWx0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktYXJyb3ct
a2V5cy1wcmV2ZW50LWRlZmF1bHQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMtcHJldmVudC1kZWZhdWx0Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHNlbGVjdHN0YXJ0IGV2ZW50IGZpcmVzIHdoZW4g
c2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJyb3cga2V5IGFuZCBzY3JpcHQgY2FuIHByZXZlbnQg
dGhlIHNlbGVjdGlvbiBjaGFuZ2UuPC9wPgorSWYgcnVubmluZyB0aGlzIHRlc3QgbWFudWFsbHks
IGNsaWNrIG9uIHRoZSBkaXYgKCJIZWxsbyBXb3JsZCIpIGFuZCB0cnkgdG8gc2VsZWN0IHRoZSB0
ZXh0IHVzaW5nIGFycm93IGtleXMuPGJyPgorRXhwZWN0ZWQgcmVzdWx0OiBTZWxlY3RTdGFydCBl
dmVudCB3aWxsIGZpcmUgd2hlbiB1c2VyIHN0YXJ0cyBleHRlbmRpbmcgdGhlIHNlbGVjdGlvbiwg
YnV0IGR1ZSB0byBzY3JpcHQgcHJldmVudERlZmF1bHQgaXQgcHJldmVudHMgdGhlIHNlbGVjdGlv
biBjaGFuZ2UuPGJyPgorPGRpdiBjb250ZW50ZWRpdGFibGU+SGVsbG8gV29ybGQ8L2Rpdj4KKzxz
Y3JpcHQ+CisKKwordmFyIHNlbGVjdFN0YXJ0Q291bnQgPSAwOwordmFyIGRpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVswXTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCdz
ZWxlY3RzdGFydCcsIGZ1bmN0aW9uIChldmVudCkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBz
ZWxlY3RTdGFydENvdW50Kys7IH0pOworZGl2LmZvY3VzKCk7Cit3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24oZGl2LmZpcnN0Q2hpbGQsIDEpOworCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBbInNoaWZ0S2V5Il0pOworICAg
IGxvZ1Jlc3VsdCgiQ2hlY2sgUmlnaHQgYXJyb3cgKyBTaGlmdCIsIDEpOworCisgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIsIFsic2hpZnRLZXkiXSwgWyJjdHJsS2V5Il0pOwor
ICAgIGxvZ1Jlc3VsdCgiQ2hlY2sgUmlnaHQgYXJyb3cgKyBTaGlmdCArIENvbnRyb2wiLCAyKTsK
KworICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIsIFsic2hpZnRLZXkiXSk7CisgICAgbG9n
UmVzdWx0KCJDaGVjayBFbmQgKyBTaGlmdCIsIDMpOworfQorCitmdW5jdGlvbiBsb2dSZXN1bHQo
dGl0bGUsIGV4cGVjdGVkQ291bnQpIHsKKyAgICB2YXIgcmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuZ2V0UmFuZ2VBdCgwKTsKKyAgICBkb2N1bWVudC53cml0ZSh0aXRsZSArICc6ICcpOwor
ICAgIGlmIChzZWxlY3RTdGFydENvdW50ICE9IGV4cGVjdGVkQ291bnQpCisgICAgICAgIGRvY3Vt
ZW50LndyaXRlKCdGQUlMIC0gIGV4cGVjdGVkICcgKyBleHBlY3RlZENvdW50ICsgJyBldmVudHMg
YnV0IGdvdCAnICsgc2VsZWN0U3RhcnRDb3VudCArICcgZXZlbnRzJyk7CisgICAgZWxzZSBpZiAo
cmFuZ2Uuc3RhcnRPZmZzZXQgIT0gMSB8fCByYW5nZS5lbmRPZmZzZXQgIT0gMSkKKyAgICAgICAg
ZG9jdW1lbnQud3JpdGUoJ0ZBSUwgLSBzZWxlY3Rpb24gY2hhbmdlZCcpOworICAgIGVsc2UKKyAg
ICAgICAgZG9jdW1lbnQud3JpdGUoJ1BBU1MnKTsKKyAgICBkb2N1bWVudC53cml0ZSgnPGJyPicp
OworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWFycm93LWtleXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJvdy1rZXlzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1hcnJv
dy1rZXlzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHNlbGVjdHN0YXJ0IGlzIGZp
cmVkIHdoZW4gc2VsZWN0aW9uIGlzIGNyZWF0ZWQgYnkgYXJyb3cga2V5cy48L3A+CitJZiBydW5u
aW5nIHRoaXMgdGVzdCBtYW51YWxseSwgY2xpY2sgb24gZGl2ICgiSGVsbG8gV29ybGQiKSBlbGVt
ZW50IGFuZCB0cnkgdG8gc2VsZWN0IHRoZSB0ZXh0IHVzaW5nIGFycm93IGtleXMuPGJyPgorRXhw
ZWN0ZWQgcmVzdWx0IDogU2VsZWN0U3RhcnQgZXZlbnQgd2lsbCBmaXJlIHdoZW4gdXNlciBzdGFy
dHMgZXh0ZW5kaW5nIHNlbGVjdGlvbi48YnI+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFi
bGU+SGVsbG8gV29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBzZWxlY3RTdGFydENvdW50ID0g
MDsKK3ZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworZGl2LmFkZEV2
ZW50TGlzdGVuZXIoJ3NlbGVjdHN0YXJ0JywgZnVuY3Rpb24gKGV2ZW50KSB7IHNlbGVjdFN0YXJ0
Q291bnQrKzsgfSk7CitkaXYuZm9jdXMoKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsb2dS
ZXN1bHQoJ0luaXRpYWwgc3RhdGUnLCAwKTsKKworICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJp
Z2h0QXJyb3ciKTsKKyAgICBsb2dSZXN1bHQoJ0NoZWNrIChSaWdodCBhcnJvdyknLCAwKTsKKwor
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciLCBbInNoaWZ0S2V5Il0pOworICAg
IGxvZ1Jlc3VsdCgnQ2hlY2sgKFJpZ2h0IGFycm93ICsgU2hpZnQpJywgMSk7CisKKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKCJyaWdodEFycm93IiwgWyJzaGlmdEtleSJdLCBbImN0cmxLZXkiXSk7
CisgICAgbG9nUmVzdWx0KCdDaGVjayAoUmlnaHQgYXJyb3cgKyBTaGlmdCArIENvbnRyb2wpJywg
MSk7CisKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCJlbmQiLCBbInNoaWZ0S2V5Il0pOworICAg
IGxvZ1Jlc3VsdCgnQ2hlY2sgKEVuZCArIFNoaWZ0KScsIDEpOworCisgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigiaG9tZSIsIFsic2hpZnRLZXkiXSk7CisgICAgbG9nUmVzdWx0KCdDaGVjayAoSG9t
ZSArIFNoaWZ0KScsIDEpOworCisgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZW5kIiwgWyJzaGlm
dEtleSJdKTsKKyAgICBsb2dSZXN1bHQoJ0NoZWNrIChFbmQgKyBTaGlmdCknLCAxKTsKKworICAg
IGV2ZW50U2VuZGVyLmtleURvd24oImxlZnRBcnJvdyIpOworICAgIGxvZ1Jlc3VsdCgnQ2hlY2sg
KExlZnQgYXJyb3cpJywgMSk7CisKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCJsZWZ0QXJyb3ci
LCBbInNoaWZ0S2V5Il0sIFsiY3RybEtleSJdKTsKKyAgICBsb2dSZXN1bHQoJ0NoZWNrIChMZWZ0
QXJyb3cgKyBTaGlmdCArIENvbnRyb2wpJywgMik7CisKKyAgICBldmVudFNlbmRlci5rZXlEb3du
KCJsZWZ0QXJyb3ciLCBbInNoaWZ0S2V5Il0pOworICAgIGxvZ1Jlc3VsdCgnQ2hlY2sgKExlZnQg
YXJyb3cgKyBTaGlmdCknLCAyKTsKKworICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIsIFsi
c2hpZnRLZXkiXSk7CisgICAgbG9nUmVzdWx0KCdDaGVjayAoSG9tZSArIFNoaWZ0KScsIDIpOwor
CisgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIsIFsiY3RybEtleSJdKTsKKyAgICBsb2dS
ZXN1bHQoJ0NoZWNrIChIb21lICsgQ29udHJvbCknLCAyKTsKK30KKworZG9jdW1lbnQud3JpdGUo
IkRvbmUuIikKKworZnVuY3Rpb24gbG9nUmVzdWx0KHRpdGxlLCBleHBlY3RlZENvdW50KSB7Cisg
ICAgZG9jdW1lbnQud3JpdGUodGl0bGUgKyAnOiAnKTsKKyAgICBpZiAoc2VsZWN0U3RhcnRDb3Vu
dCAhPSBleHBlY3RlZENvdW50KQorICAgICAgICBkb2N1bWVudC53cml0ZSgnRkFJTCAtIGV4cGVj
dGVkICcgKyBleHBlY3RlZENvdW50ICsgJyBldmVudHMgYnV0IGdvdCAnICsgc2VsZWN0U3RhcnRD
b3VudCArICcgZXZlbnRzJyk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC53cml0ZSgnUEFT
UycpOworICAgIGRvY3VtZW50LndyaXRlKCc8YnI+Jyk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>