<?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>50636</bug_id>
          
          <creation_ts>2010-12-07 10:22:48 -0800</creation_ts>
          <short_desc>contentEditable attribute fails to take &quot;inherit&quot; or invalid value</short_desc>
          <delta_ts>2011-04-28 17:34:09 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>52058</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>51957</dependson>
    
    <dependson>54290</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>suresh.voruganti</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>318293</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-07 10:22:48 -0800</bug_when>
    <thetext>Based on spec http://www.w3.org/TR/2008/WD-html5-20080610/editing.html, contentEditable attribute should behave as follows,
&quot;The contenteditable attribute is an enumerated attribute whose keywords are the empty string, true, and false. The empty string and the true keyword map to the true state. The false keyword maps to the false state. In addition, there is a third state, the inherit state, which is the missing value default (and the invalid value default).&quot;
The current implementation always returns false when set to &quot;inherit&quot; or an invalid value, such as &quot;abc&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318351</commentid>
    <comment_count>1</comment_count>
      <attachid>75832</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-07 11:31:33 -0800</bug_when>
    <thetext>Created attachment 75832
fix patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318616</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:44:44 -0800</bug_when>
    <thetext>Attachment 75832 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319631</commentid>
    <comment_count>3</comment_count>
      <attachid>75832</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-09 11:53:18 -0800</bug_when>
    <thetext>Comment on attachment 75832
fix patch

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

&gt; WebCore/html/HTMLElement.cpp:701
&gt; +        addCSSProperty(attr, CSSPropertyWebkitUserModify, CSSValueInherit);

Why set to “inherit” instead of just removing the property?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319632</commentid>
    <comment_count>4</comment_count>
      <attachid>75832</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-09 11:54:32 -0800</bug_when>
    <thetext>Comment on attachment 75832
fix patch

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

&gt; LayoutTests/editing/contentEditable/script-tests/attrInvalidString.js:3
&gt; +shouldBe(&apos;document.getElementById(&quot;myDiv&quot;).contentEditable&apos;, &apos;&quot;inherit&quot;&apos;);

This test case doesn’t seem to be covering enough. Is this really the only visible difference from that code change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319647</commentid>
    <comment_count>5</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-09 12:20:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 75832 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75832&amp;action=review
&gt; 
&gt; &gt; WebCore/html/HTMLElement.cpp:701
&gt; &gt; +        addCSSProperty(attr, CSSPropertyWebkitUserModify, CSSValueInherit);
&gt; 
&gt; Why set to “inherit” instead of just removing the property?

Right. :) I realized this, too, while working on other cases. I also noticed there seems to be a problem to use renderer()-&gt;style()-&gt;userModify(). The style is set after the whole script execution is finished instead of taking effect immediately. As a result, if we set contentEditable=&quot;true&quot; from &quot;false&quot; and check if (contentEditable==&quot;true&quot;) in the next statement, it will fail. Please see the code beblow from ScriptControllerBase.cpp (setUserModify happens inside updateStyleForAllDocuments()).

ScriptValue ScriptController::executeScript(const ScriptSourceCode&amp; sourceCode, ShouldAllowXSS shouldAllowXSS)
{
    if (!canExecuteScripts(AboutToExecuteScript) || isPaused())
        return ScriptValue();
    bool wasInExecuteScript = m_inExecuteScript;
    m_inExecuteScript = true;
    ScriptValue result = evaluate(sourceCode, shouldAllowXSS);
    if (!wasInExecuteScript) {
        m_inExecuteScript = false;
        Document::updateStyleForAllDocuments();
    }
    return result;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320127</commentid>
    <comment_count>6</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-10 06:51:03 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 75832 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75832&amp;action=review
&gt; 
&gt; &gt; WebCore/html/HTMLElement.cpp:701
&gt; &gt; +        addCSSProperty(attr, CSSPropertyWebkitUserModify, CSSValueInherit);
&gt; 
&gt; Why set to “inherit” instead of just removing the property?

Hi, Darin, are you suggesting removing the contentEditable attribute or the CSSPropertyWebkitUserModify property? The removeAttribute approach will work. However, I cannot really remove the usermodify property. It causes an assert in debug mode. I guess the property doesn&apos;t exist. But if we do nothing, the default value of renderer()-&gt;style()-&gt;userModify() turns to be READ_ONLY.
I will submit a patch with removeAttribute code. Sounds good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320172</commentid>
    <comment_count>7</comment_count>
      <attachid>76204</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-10 08:23:06 -0800</bug_when>
    <thetext>Created attachment 76204
fix patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320215</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-10 10:09:09 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Hi, Darin, are you suggesting removing the contentEditable attribute or the CSSPropertyWebkitUserModify property? The removeAttribute approach will work. However, I cannot really remove the usermodify property. It causes an assert in debug mode. I guess the property doesn&apos;t exist. But if we do nothing, the default value of renderer()-&gt;style()-&gt;userModify() turns to be READ_ONLY.
&gt; I will submit a patch with removeAttribute code. Sounds good?

It sounds good but I’m not sure. Test cases will tell us if we’re doing it right. We just have to make sure to test all the detectable side effects after setting contentEditable with each technique and in both cases for inheritance. I think there are three things we can detect 1) the value of the attribute, 2) the value of various style properties in computed style, 3) whether the content is actually editable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320312</commentid>
    <comment_count>9</comment_count>
      <attachid>76233</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-10 12:13:18 -0800</bug_when>
    <thetext>Created attachment 76233
fix patch 3

added more test cases based on Darin&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320472</commentid>
    <comment_count>10</comment_count>
      <attachid>76233</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-10 15:59:47 -0800</bug_when>
    <thetext>Comment on attachment 76233
fix patch 3

Thanks for adding more test coverage. I still don’t think we have enough. Specifically, if I call setAttribute(&quot;contenteditable&quot;, &quot;x&quot;) and then getAttribute(&quot;contenteditable&quot;), what do I get? I suspect the current patch handles that case wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321140</commentid>
    <comment_count>11</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-13 08:43:30 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 76233 [details])
&gt; Thanks for adding more test coverage. I still don’t think we have enough. Specifically, if I call setAttribute(&quot;contenteditable&quot;, &quot;x&quot;) and then getAttribute(&quot;contenteditable&quot;), what do I get? I suspect the current patch handles that case wrong.

Thanks for the review, Darin. I think the current implementation has some architectural issue with setAttribute/getAttribute. See my comments #5. We use renderer()-&gt;style()-&gt;userModify() to store the state but it&apos;s not updated in time. Do you have any suggestions? This is a separate issue though (e.g. failing to set false from true).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321211</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-13 10:20:16 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; We use renderer()-&gt;style()-&gt;userModify() to store the state but it&apos;s not updated in time.

Any DOM function that reads a value from style has to call a function to make sure style is updated. If reading the contenteditable style requires querying renderer()-&gt;style() then it needs to do what functions like Element::offsetLeft do:

    document()-&gt;updateLayoutIgnorePendingStylesheets();

CSSComputedStyleDeclaration does the same thing.

On the other hand, this may be an architecture problem in WebKit. Handling of contenteditable in the style system rather than the DOM may be something we want to eliminate longer term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321963</commentid>
    <comment_count>13</comment_count>
      <attachid>76536</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-14 07:50:02 -0800</bug_when>
    <thetext>Created attachment 76536
fix patch 4

1. added document()-&gt;updateLayoutIgnorePendingStylesheets() to force render style update
2. added more test cases that would have failed without this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323912</commentid>
    <comment_count>14</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2010-12-17 12:03:49 -0800</bug_when>
    <thetext>Hi, Darin,
It seems calling removeAttribute() inside setContentEditable() while &quot;Attribute* attr&quot; is still alive will cause memory corruption. But I haven&apos;t figured out a workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323955</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-17 13:09:01 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; It seems calling removeAttribute() inside setContentEditable() while &quot;Attribute* attr&quot; is still alive will cause memory corruption. But I haven&apos;t figured out a workaround.

I don’t think we want to actually remove the attribute. Sorry I don’t have time right now to outline the fix. Generally speaking, the DOM attributes can be directly set by code and what we control is just the interpretation of DOM attribute values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326211</commentid>
    <comment_count>16</comment_count>
      <attachid>76536</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-23 12:23:28 -0800</bug_when>
    <thetext>Comment on attachment 76536
fix patch 4

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

&gt; WebCore/html/HTMLElement.cpp:651
&gt; +    document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; +

We definitely don&apos;t want to add updateLayout here.  We just got rid of this a couple of months ago.

&gt; WebCore/html/HTMLElement.cpp:679
&gt; +
&gt; +    document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; +

Why do we want to call updateLayout here?

&gt; WebCore/html/HTMLElement.cpp:712
&gt; +    } else { // Set default value to &quot;inherit&quot;.
&gt; +        ExceptionCode ec;
&gt; +        removeAttribute(contenteditableAttr, ec);

As Darin suggested, I don&apos;t think we should be removing the attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326213</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-23 12:26:41 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 76536 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76536&amp;action=review
&gt; 
&gt; &gt; WebCore/html/HTMLElement.cpp:651
&gt; &gt; +    document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; &gt; +
&gt; 
&gt; We definitely don&apos;t want to add updateLayout here.  We just got rid of this a couple of months ago.

I&apos;m talking about http://trac.webkit.org/changeset/65681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329043</commentid>
    <comment_count>18</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-01-04 10:26:27 -0800</bug_when>
    <thetext>&gt; I don’t think we want to actually remove the attribute. Sorry I don’t have time right now to outline the fix. Generally speaking, the DOM attributes can be directly set by code and what we control is just the interpretation of DOM attribute values.

Darin, do you suggest to add a new field (2 bits) in NodeRareData?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329105</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 11:38:08 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Darin, do you suggest to add a new field (2 bits) in NodeRareData?

No, I don’t think we need that.

Here is my analysis:

    1) The HTMLElement::setContentEditable(Attribute*) function needs to be renamed. It is not a setContentEditable function. It&apos;s a parseContentEditableAttribute function and that&apos;s what it should be named.

    2) The HTMLElement contentEditable DOM attribute. Unless the HTML5 specification or compatibility problems say otherwise, this should be a reflection of the contenteditable content attribute, what you get with the getAttribute function. It shouldn&apos;t process the string you get or set in any way. To implement this, HTMLElement::contentEditable and HTMLElement::setContentEditable should both be removed and instead we should just use [Reflect] in the IDL file. We should test to see if we can do this without breaking the behavior of the rest of the code. This will require changes to the parseContentEditableAttribute function; today that function will do nothing if the contenteditable attribute has an unrecognized value, but that is incorrect.

    3) HTMLElement::isContentEditable and HTMLElement::isContentRichlyEditable. These functions are renderer queries and should be moved off of HTMLElement and into the render tree classes. Callers should be modified to call the render tree to get these answers and not ask the DOM element. This could be tricky for functions like HTMLElement::supportsFocus that are in the DOM but want to ask a render tree question. Those too might need to be moved to the render tree, and that in turn could cause us some major headaches, but the problem is already there, just hidden.

    4) Removing the ability to control editability with style. Hyatt has proposed that we eliminate the -webkit-user-modify CSS style. If we do that we could move back the editability checks from the render tree to the DOM tree. Item (3) above is hard, so we might need to consider (4), but this removes a feature that some WebKit-specific websites may depend on.

I don’t know which of the items above are needed to resolve this bug. And maybe more than the above is needed.

I think a good starting point would be to create and land the test cases with expected failures before we start doing the work above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329135</commentid>
    <comment_count>20</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-01-04 12:37:00 -0800</bug_when>
    <thetext>&gt; Here is my analysis:
&gt; 
&gt;     1) The HTMLElement::setContentEditable(Attribute*) function needs to be renamed. It is not a setContentEditable function. It&apos;s a parseContentEditableAttribute function and that&apos;s what it should be named.
&gt; 
&gt;     2) The HTMLElement contentEditable DOM attribute. Unless the HTML5 specification or compatibility problems say otherwise, this should be a reflection of the contenteditable content attribute, what you get with the getAttribute function. It shouldn&apos;t process the string you get or set in any way. To implement this, HTMLElement::contentEditable and HTMLElement::setContentEditable should both be removed and instead we should just use [Reflect] in the IDL file. We should test to see if we can do this without breaking the behavior of the rest of the code. This will require changes to the parseContentEditableAttribute function; today that function will do nothing if the contenteditable attribute has an unrecognized value, but that is incorrect.
&gt; 
&gt;     3) HTMLElement::isContentEditable and HTMLElement::isContentRichlyEditable. These functions are renderer queries and should be moved off of HTMLElement and into the render tree classes. Callers should be modified to call the render tree to get these answers and not ask the DOM element. This could be tricky for functions like HTMLElement::supportsFocus that are in the DOM but want to ask a render tree question. Those too might need to be moved to the render tree, and that in turn could cause us some major headaches, but the problem is already there, just hidden.
&gt; 
&gt;     4) Removing the ability to control editability with style. Hyatt has proposed that we eliminate the -webkit-user-modify CSS style. If we do that we could move back the editability checks from the render tree to the DOM tree. Item (3) above is hard, so we might need to consider (4), but this removes a feature that some WebKit-specific websites may depend on.
&gt; 
&gt; I don’t know which of the items above are needed to resolve this bug. And maybe more than the above is needed.
&gt; 
&gt; I think a good starting point would be to create and land the test cases with expected failures before we start doing the work above.

Thanks for the details, Darin. To work on the test cases first, can you take a look at my latest patch above? I put quite some test cases there but
likely something is still missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329212</commentid>
    <comment_count>21</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-01-04 14:19:27 -0800</bug_when>
    <thetext>&gt; &gt;     2) The HTMLElement contentEditable DOM attribute. Unless the HTML5 specification or compatibility problems say otherwise, this should be a reflection of the contenteditable content attribute, what you get with the getAttribute function. It shouldn&apos;t process the string you get or set in any way. To implement this, HTMLElement::contentEditable and HTMLElement::setContentEditable should both be removed and instead we should just use [Reflect] in the IDL file. We should test to see if we can do this without breaking the behavior of the rest of the code. This will require changes to the parseContentEditableAttribute function; today that function will do nothing if the contenteditable attribute has an unrecognized value, but that is incorrect.

I tried the [Reflect] and it&apos;s basically working. However, the call to elem.contentEditable should return &quot;inherit&quot; even if elem has no contentEditble attribute. Would [Reflect] break this? Is there a way I can set default value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329227</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 14:39:37 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; However, the call to elem.contentEditable should return &quot;inherit&quot; even if elem has no contentEditble attribute.

Why? Is this something covered by the HTML5 specification? Is this just to match the other browsers?

It&apos;s easy enough to implement that rule; we will have to hand-write the function instead of just using [Reflect].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329228</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 14:40:46 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; However, the call to elem.contentEditable should return &quot;inherit&quot; even if elem has no contentEditble attribute.
&gt; 
&gt; Why? Is this something covered by the HTML5 specification? Is this just to match the other browsers?
&gt; 
&gt; It&apos;s easy enough to implement that rule; we will have to hand-write the function instead of just using [Reflect].

I see now in HTML5. I was wrong, it’s not really a reflection!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329230</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 14:41:54 -0800</bug_when>
    <thetext>The HTML5 standard makes it clear. Setting to &quot;inherit&quot; means removing the attribute. Setting to &quot;true&quot; or &quot;false&quot; sets the attribute. That&apos;s what seContentEditable needs to do.

The getter needs the exact same logic as the setter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329233</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 14:43:02 -0800</bug_when>
    <thetext>The HTMLElement::contentEditable getter needs to read and parse the contenteditable attribute value. It should not look at the renderer.

The HTMLElement::setContentEditable needs to follow the specification rather than what it currently does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329625</commentid>
    <comment_count>26</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-01-05 10:09:23 -0800</bug_when>
    <thetext>To sync up renderer property(userModify) with DOM attribute (contentEditable), it seems I have to bring back the INHERIT enum in userModify. Does it sound ok?
I am working on a patch that will be similar to the 1st patch but function contentEditable and setContentEditable will follow the spec and only deal with DOM attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330024</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-05 21:50:25 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; To sync up renderer property(userModify) with DOM attribute (contentEditable), it seems I have to bring back the INHERIT enum in userModify. Does it sound ok?

No. I don’t think so. Resolving style also resolves the inheritance. The userModify value would have a value of inherit, it would have the actual inherited value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330025</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-05 21:50:53 -0800</bug_when>
    <thetext>I meant to say &quot;userModify would not have a value of inherit, it would have the actual inherited value&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330137</commentid>
    <comment_count>29</comment_count>
    <who name="Suresh Voruganti">suresh.voruganti</who>
    <bug_when>2011-01-06 07:35:07 -0800</bug_when>
    <thetext>Fix required for Qtwebkit 2.2 release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330144</commentid>
    <comment_count>30</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-01-06 07:55:07 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; To sync up renderer property(userModify) with DOM attribute (contentEditable), it seems I have to bring back the INHERIT enum in userModify. Does it sound ok?
&gt; 
&gt; No. I don’t think so. Resolving style also resolves the inheritance. The userModify value would have a value of inherit, it would have the actual inherited value.

Sure. In isContentEditable(), if I check userModify, there&apos;s an update issue as we discussed before; and if I check DOM attribute, maybe there&apos;s performance concern. Any inputs? Btw, how do my test cases look like in bug 51957? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330155</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 08:19:28 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; In isContentEditable(), if I check userModify, there&apos;s an update issue as we discussed before

The isContentEditable function has to check userModify. Otherwise the CSS style -webkit-usermodify property won&apos;t work any more.

We can only change it to not check userModify if we first remove that feature.

&gt; if I check DOM attribute, maybe there&apos;s performance concern

No, I don’t think there’s a performance concern. We should be able to check a DOM attribute value with acceptable performance.

&gt; Btw, how do my test cases look like in bug 51957?

Sorry, I have not had a chance yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330209</commentid>
    <comment_count>32</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-01-06 10:33:27 -0800</bug_when>
    <thetext>
&gt; &gt; WebCore/html/HTMLElement.cpp:651
&gt; &gt; +    document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; &gt; +
&gt; 
&gt; We definitely don&apos;t want to add updateLayout here.  We just got rid of this a couple of months ago.
&gt; 
&gt; &gt; WebCore/html/HTMLElement.cpp:679
&gt; &gt; +
&gt; &gt; +    document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; &gt; +
&gt; 
&gt; Why do we want to call updateLayout here?
&gt; 
The problem is the value of userModify is not updated as a blocking call inside setContentEditable. It is updated in the next rederstyleupdate. This makes the isContentEditable js call fail if it is the next statement in js. My next patch is almost ready except a solution for this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330330</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 12:51:22 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; &gt; WebCore/html/HTMLElement.cpp:651
&gt; &gt; &gt; +    document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt;
&gt; &gt; We definitely don&apos;t want to add updateLayout here.  We just got rid of this a couple of months ago.

If the subsequent code accesses renderers, we can&apos;t just remove updateLayout and then access renderers. No matter when it was done and why, that’s going to result in bugs and crashes. So we may have a problem to solve. If we can’t add the updateLayout then we have remove the access to the renderers (including RenderStyle).

&gt; &gt; &gt; WebCore/html/HTMLElement.cpp:679
&gt; &gt; &gt; +    document()-&gt;updateLayoutIgnorePendingStylesheets();
&gt; &gt; 
&gt; &gt; Why do we want to call updateLayout here?
&gt;
&gt; The problem is the value of userModify is not updated as a blocking call inside setContentEditable. It is updated in the next rederstyleupdate. This makes the isContentEditable js call fail if it is the next statement in js. My next patch is almost ready except a solution for this issue.

I’ll say it stronger than that. We can’t safely access renderers from an incoming DOM call without first calling updateLayout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330448</commentid>
    <comment_count>34</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-06 14:52:50 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; If the subsequent code accesses renderers, we can&apos;t just remove updateLayout and then access renderers. No matter when it was done and why, that’s going to result in bugs and crashes. So we may have a problem to solve. If we can’t add the updateLayout then we have remove the access to the renderers (including RenderStyle).

We talked about this on IRC and it turned out that we can call updateLayout in setContentEditable.  I think updating layout in setter is safer than doing it in accessor. We may slightly regress the performance but I don&apos;t think many websites modify the value of contenteditable property frequently and repeatedly in a performance critical path.

&gt; &gt; The problem is the value of userModify is not updated as a blocking call inside setContentEditable. It is updated in the next rederstyleupdate. This makes the isContentEditable js call fail if it is the next statement in js. My next patch is almost ready except a solution for this issue.
&gt; 
&gt; I’ll say it stronger than that. We can’t safely access renderers from an incoming DOM call without first calling updateLayout.

Having said that, it&apos;s true that we call updateLayout in other accessors.  The problem seems to be that we&apos;re calling Element::contentEditable when we shouldn&apos;t.  smfr might know why need to make such calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330452</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 14:56:06 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; If the subsequent code accesses renderers, we can&apos;t just remove updateLayout and then access renderers. No matter when it was done and why, that’s going to result in bugs and crashes. So we may have a problem to solve. If we can’t add the updateLayout then we have remove the access to the renderers (including RenderStyle).
&gt; 
&gt; We talked about this on IRC and it turned out that we can call updateLayout in setContentEditable.

You may have talked about it, but you are wrong!

The JavaScript could have called o.setAttribute(&quot;contenteditable&quot;, x) rather than calling o.contentEditable = x. Adding a call to updateLayout in setContentEditable does no good.

&gt; I think updating layout in setter is safer than doing it in accessor.

Perhaps true, but irrelevant.

&gt; Having said that, it&apos;s true that we call updateLayout in other accessors.

That&apos;s right. Because we have to.

&gt; The problem seems to be that we&apos;re calling Element::contentEditable when we shouldn&apos;t. smfr might know why need to make such calls.

You mean Element::isContentEditable.

Maybe.

One problem is that a basic functional question like whether we can edit in a particular area of the DOM is not something that should depend on a style calculation. Another is that internal calls might have reason to know layout is already up to date, and so perhaps shouldn&apos;t share a code that can be called by arbitrary JavaScript through the DOM.

Hyatt’s suggestion, as I mentioned before, was to make it so that CSS style could not make something editable. If we do that it might make this easier to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330456</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 14:58:06 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #33)
&gt; &gt; &gt; If the subsequent code accesses renderers, we can&apos;t just remove updateLayout and then access renderers. No matter when it was done and why, that’s going to result in bugs and crashes. So we may have a problem to solve. If we can’t add the updateLayout then we have remove the access to the renderers (including RenderStyle).
&gt; &gt; 
&gt; &gt; We talked about this on IRC and it turned out that we can call updateLayout in setContentEditable.
&gt; 
&gt; You may have talked about it, but you are wrong!
&gt; 
&gt; The JavaScript could have called o.setAttribute(&quot;contenteditable&quot;, x) rather than calling o.contentEditable = x. Adding a call to updateLayout in setContentEditable does no good.

In addition, there are other types of changes that could make it a problem. The DOM code could change a property that causes renderer to be destroyed and then one that should cause it to be recreated. Such as an element that had contentEditable set to true while it has display property of &quot;none&quot; and then had that property removed. If we then call isContentEditable we will get false, which is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330462</commentid>
    <comment_count>37</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-06 15:03:36 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; One problem is that a basic functional question like whether we can edit in a particular area of the DOM is not something that should depend on a style calculation. Another is that internal calls might have reason to know layout is already up to date, and so perhaps shouldn&apos;t share a code that can be called by arbitrary JavaScript through the DOM.
&gt; 
&gt; Hyatt’s suggestion, as I mentioned before, was to make it so that CSS style could not make something editable. If we do that it might make this easier to fix.

i.e. getting rid of -webkit-user-modify?  I&apos;m happy with that approach but I&apos;m afraid that there are some tests and websites that depend on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330467</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 15:07:15 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #35)
&gt; &gt; Hyatt’s suggestion, as I mentioned before, was to make it so that CSS style could not make something editable. If we do that it might make this easier to fix.
&gt; 
&gt; i.e. getting rid of -webkit-user-modify?  I&apos;m happy with that approach but I&apos;m afraid that there are some tests and websites that depend on it.

Yes, it’s more of a long term solution than a short term one. You could talk to Hyatt about that.

Until or unless we make that change, we’re going to have to wean the editing code off calls to isContentEditable when renderers and style is not up to date. I don’t think there’s a shortcut here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349305</commentid>
    <comment_count>39</comment_count>
    <who name="Suresh Voruganti">suresh.voruganti</who>
    <bug_when>2011-02-10 13:04:23 -0800</bug_when>
    <thetext>Removing from Qtwebkit 2.1.x nice to have master bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394974</commentid>
    <comment_count>40</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-28 17:31:42 -0700</bug_when>
    <thetext>52025 no longer blocks this bug anymore. An alternative approach is found and landed in several patches, mainly in bug 52058. This bug can be closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394976</commentid>
    <comment_count>41</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-28 17:34:09 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 52058 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75832</attachid>
            <date>2010-12-07 11:31:33 -0800</date>
            <delta_ts>2010-12-10 08:23:06 -0800</delta_ts>
            <desc>fix patch</desc>
            <filename>50636_1.patch</filename>
            <type>text/plain</type>
            <size>6465</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQ1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTItMDcgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0
IGluaGVyaXQgc3RhdGUgd2hlbiBjb250ZW50RWRpdGFibGUgaXMgc2V0IHRvICJpbmhlcml0IiBv
ciBhbGwgb3RoZXIKKyAgICAgICAgaW52YWxpZCB2YWx1ZXMuIEFsc28gZml4IHRoZSBjb2RlIHRo
YXQgY29udmVydHMgQ1NTVmFsdWVJbmhlcml0IHRvIEVVc2VyTW9kaWZ5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA2MzYKKworICAgICAgICBUZXN0
OiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW52YWxpZFN0cmluZy5odG1sCisKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVXNlck1vZGlmeSk6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0Q29u
dGVudEVkaXRhYmxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaDoKKwogMjAxMC0xMi0wNyAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDczNDQ3KQorKysgV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODA3
LDExICsxODA3LDE2IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MK
ICAgICAgICAgY2FzZSBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZOgogICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIElOSEVSSVQ6CisgICAgICAgICAgICBtX3ZhbHVlLmlkZW50
ID0gQ1NTVmFsdWVJbmhlcml0OworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVVzZXJNb2RpZnkoKSBj
b25zdAogeworICAgIGlmIChtX3ZhbHVlLmlkZW50ID09IENTU1ZhbHVlSW5oZXJpdCkKKyAgICAg
ICAgcmV0dXJuIElOSEVSSVQ7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVVc2VyTW9kaWZ5Piht
X3ZhbHVlLmlkZW50IC0gQ1NTVmFsdWVSZWFkT25seSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAkocmV2aXNpb24gNzM0NDcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OTIsMTYgKzY5MiwxNiBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRD
b250ZW50RWRpdGFibGUoQXR0CiAgICAgICAgIGF0dHItPmRlY2woKS0+cmVtb3ZlUHJvcGVydHko
Q1NTUHJvcGVydHlXb3JkV3JhcCwgZmFsc2UpOwogICAgICAgICBhdHRyLT5kZWNsKCktPnJlbW92
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIGZhbHNlKTsKICAgICAgICAgYXR0
ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgZmFs
c2UpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgImluaGVyaXQi
KSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJN
b2RpZnksIENTU1ZhbHVlSW5oZXJpdCk7Ci0gICAgICAgIGF0dHItPmRlY2woKS0+cmVtb3ZlUHJv
cGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgZmFsc2UpOwotICAgICAgICBhdHRyLT5kZWNsKCkt
PnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIGZhbHNlKTsKLSAgICAg
ICAgYXR0ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVh
aywgZmFsc2UpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInBs
YWludGV4dC1vbmx5IikpIHsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpOwogICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJy
ZWFrV29yZCk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0
TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOworICAg
IH0gZWxzZSB7IC8vIFNldCBkZWZhdWx0IHZhbHVlIHRvICJpbmhlcml0Ii4KKyAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZUlu
aGVyaXQpOworICAgICAgICBhdHRyLT5kZWNsKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
V29yZFdyYXAsIGZhbHNlKTsKKyAgICAgICAgYXR0ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBmYWxzZSk7CisgICAgICAgIGF0dHItPmRlY2woKS0+
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIGZhbHNlKTsKICAgICB9
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaAkocmV2aXNpb24gNzM0NDcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgZW51
bSBFVGV4dFNlY3VyaXR5IHsKIC8vIENTUzMgVXNlciBNb2RpZnkgUHJvcGVydGllcwogCiBlbnVt
IEVVc2VyTW9kaWZ5IHsKLSAgICBSRUFEX09OTFksIFJFQURfV1JJVEUsIFJFQURfV1JJVEVfUExB
SU5URVhUX09OTFkKKyAgICBSRUFEX09OTFksIFJFQURfV1JJVEUsIFJFQURfV1JJVEVfUExBSU5U
RVhUX09OTFksIElOSEVSSVQKIH07CiAKIC8vIENTUzMgVXNlciBEcmFnIFZhbHVlcwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzM0NTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMi0wNyAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0ZXN0IGNhc2UgZm9yIHRoZSBidWcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDYzNgorCisgICAgICAgICogZWRpdGluZy9jb250ZW50
RWRpdGFibGU6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJ
bnZhbGlkU3RyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250
ZW50RWRpdGFibGUvYXR0ckludmFsaWRTdHJpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0ckludmFsaWRTdHJpbmcuanM6IEFk
ZGVkLgorCiAyMDEwLTEyLTA3ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ckludmFsaWRTdHJpbmctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbnZh
bGlkU3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvY29udGVudEVkaXRhYmxlL2F0dHJJbnZhbGlkU3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNyBAQAorV2hlbiBjb250ZW50RWRpdGFibGUga2V5d29yZCBpcyBp
bnZhbGlkIHN0cmluZywgaXQgbWFwcyB0byBpbmhlcml0IHN0YXRlCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisKKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteURp
diIpLmNvbnRlbnRFZGl0YWJsZSBpcyAiaW5oZXJpdCIKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbnZhbGlkU3RyaW5nLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ckludmFsaWRTdHJpbmcu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxl
L2F0dHJJbnZhbGlkU3RyaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9Im15RGl2IiBjb250ZW50RWRpdGFibGU9ImFiYyIgc3R5
bGU9ImNvbG9yOiNGRjU1MzM7Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXR0
ckludmFsaWRTdHJpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0
ckludmFsaWRTdHJpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250
ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJJbnZhbGlkU3RyaW5nLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0
dHJJbnZhbGlkU3RyaW5nLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK2Rlc2NyaXB0
aW9uKCdXaGVuIGNvbnRlbnRFZGl0YWJsZSBrZXl3b3JkIGlzIGludmFsaWQgc3RyaW5nLCBpdCBt
YXBzIHRvIGluaGVyaXQgc3RhdGUnKQorCitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm15RGl2IikuY29udGVudEVkaXRhYmxlJywgJyJpbmhlcml0IicpOworCit3aW5kb3cuc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76204</attachid>
            <date>2010-12-10 08:23:06 -0800</date>
            <delta_ts>2010-12-10 12:13:18 -0800</delta_ts>
            <desc>fix patch 2</desc>
            <filename>50636_2.patch</filename>
            <type>text/plain</type>
            <size>7838</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzcyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMTItMTAgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0
IGluaGVyaXQgc3RhdGUgd2hlbiBjb250ZW50RWRpdGFibGUgaXMgc2V0IHRvICJpbmhlcml0IiBv
ciBhbGwgb3RoZXIKKyAgICAgICAgaW52YWxpZCB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDYzNgorCisgICAgICAgIFRlc3RzOiBlZGl0
aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5odG1sCisgICAg
ICAgICAgICAgICBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudC5odG1s
CisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisKIDIwMTAtMTItMTAgIFJlbmF0YSBIb2RvdmFuICA8
cmVuaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDczNzI4KQorKysgV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY3LDYgKzY2Nyw5IEBAIGJvb2wgSFRN
TEVsZW1lbnQ6OmlzQ29udGVudFJpY2hseUVkaXRhYmwKIAogU3RyaW5nIEhUTUxFbGVtZW50Ojpj
b250ZW50RWRpdGFibGUoKSBjb25zdCAKIHsKKwlpZiAoIWhhc0F0dHJpYnV0ZShjb250ZW50ZWRp
dGFibGVBdHRyKSkKKwkJcmV0dXJuICJpbmhlcml0IjsKKwogICAgIGlmICghcmVuZGVyZXIoKSkK
ICAgICAgICAgcmV0dXJuICJmYWxzZSI7CiAgICAgCkBAIC02OTUsMTYgKzY5OCwxNCBAQCB2b2lk
IEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoQXR0CiAgICAgICAgIGF0dHItPmRlY2wo
KS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgZmFsc2UpOwogICAgICAgICBh
dHRyLT5kZWNsKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIGZh
bHNlKTsKICAgICAgICAgYXR0ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdExpbmVCcmVhaywgZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZW5hYmxlZCwgImluaGVyaXQiKSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlSW5oZXJpdCk7Ci0gICAgICAgIGF0dHIt
PmRlY2woKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgZmFsc2UpOwotICAg
ICAgICBhdHRyLT5kZWNsKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJzcE1v
ZGUsIGZhbHNlKTsKLSAgICAgICAgYXR0ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVCcmVhaywgZmFsc2UpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZW5hYmxlZCwgInBsYWludGV4dC1vbmx5IikpIHsKICAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZVBs
YWludGV4dE9ubHkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdv
cmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIs
IENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwogICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRl
cldoaXRlU3BhY2UpOworICAgIH0gZWxzZSB7IC8vIFNldCBkZWZhdWx0IHZhbHVlIHRvICJpbmhl
cml0Ii4KKwkJRXhjZXB0aW9uQ29kZSBlYzsKKwkJcmVtb3ZlQXR0cmlidXRlKGNvbnRlbnRlZGl0
YWJsZUF0dHIsIGVjKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNzI4KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTAtMTItMTAgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBjYXNlcyBmb3Ig
dGhlIGJ1Zy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwNjM2CisKKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZTogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ckluaGVyaXRPckludmFsaWRTdHJpbmct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9h
dHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJNaXNzaW5nUGFyZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29udGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0czog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0
dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2Nv
bnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0ck1pc3NpbmdQYXJlbnQuanM6IEFkZGVkLgor
CiAyMDEwLTEyLTEwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gUmVtb3ZlIHBsYXRmb3JtIHNwZWNpZmljIGV4cGVjdGVkIGZpbGVz
IGFmdGVyIHI3MzcyMC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxl
L2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0
cmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2Nv
bnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1doZW4gY29udGVudEVkaXRhYmxlIGtleXdvcmQg
aXMgImluaGVyaXQiIG9yIGludmFsaWQgc3RyaW5nLCBpdCBtYXBzIHRvIGluaGVyaXQgc3RhdGUK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworCisKKworUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiRGl2MSIpLmNvbnRlbnRFZGl0YWJsZSBpcyAiaW5oZXJpdCIKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkRpdjIiKS5jb250ZW50RWRpdGFibGUgaXMgImluaGVy
aXQiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5o
ZXJpdE9ySW52YWxpZFN0cmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvY29udGVudEVkaXRhYmxlL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJp
dE9ySW52YWxpZFN0cmluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJl
c3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJEaXYxIiBjb250ZW50RWRpdGFibGU9ImluaGVyaXQiIHN0
eWxlPSJjb2xvcjojRkY1NTMzOyI+PC9kaXY+Cis8ZGl2IGlkPSJEaXYyIiBjb250ZW50RWRpdGFi
bGU9ImFiYyIgc3R5bGU9ImNvbG9yOiNGRjU1MzM7Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvYXR0ckluaGVyaXRPckludmFsaWRTdHJpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0
YWJsZS9hdHRyTWlzc2luZ1BhcmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1pc3NpbmdQYXJlbnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUv
YXR0ck1pc3NpbmdQYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5
IEBACitjb250ZW50RWRpdGFibGUgYXR0ciBOb3Qgc2V0LCBidXQgUGFyZW50IGlzIHNldCB0byAi
dHJ1ZSIgb3IgImZhbHNlIgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKwor
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMSIpLmNvbnRlbnRFZGl0YWJsZSBpcyAi
aW5oZXJpdCIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAyIikuY29udGVudEVkaXRh
YmxlIGlzICJpbmhlcml0IgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRp
dGFibGUvYXR0ck1pc3NpbmdQYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1pc3NpbmdQYXJl
bnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2Pgor
PGRpdiBpZD0iRGl2MSIgY29udGVudEVkaXRhYmxlPSJ0cnVlIiBzdHlsZT0iY29sb3I6I0ZGNTUz
MzsiPjxwIGlkPSJwMSI+PC9wPjwvZGl2PgorPGRpdiBpZD0iRGl2MiIgY29udGVudEVkaXRhYmxl
PSJmYWxzZSIgc3R5bGU9ImNvbG9yOiNGRjU1MzM7Ij48cCBpZD0icDIiPjwvcD48L2Rpdj4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXR0ck1pc3NpbmdQYXJlbnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRl
bnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0ckluaGVyaXRPckludmFsaWRTdHJpbmcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRl
c3RzL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJJbmhlcml0T3JJ
bnZhbGlkU3RyaW5nLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK2Rlc2NyaXB0aW9u
KCdXaGVuIGNvbnRlbnRFZGl0YWJsZSBrZXl3b3JkIGlzICJpbmhlcml0IiBvciBpbnZhbGlkIHN0
cmluZywgaXQgbWFwcyB0byBpbmhlcml0IHN0YXRlJykKKworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJEaXYxIikuY29udGVudEVkaXRhYmxlJywgJyJpbmhlcml0IicpOworc2hv
dWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJEaXYyIikuY29udGVudEVkaXRhYmxlJywg
JyJpbmhlcml0IicpOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0cy9hdHRyTWlz
c2luZ1BhcmVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRF
ZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0ck1pc3NpbmdQYXJlbnQuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0ck1p
c3NpbmdQYXJlbnQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorZGVzY3JpcHRpb24o
J2NvbnRlbnRFZGl0YWJsZSBhdHRyIE5vdCBzZXQsIGJ1dCBQYXJlbnQgaXMgc2V0IHRvICJ0cnVl
IiBvciAiZmFsc2UiJykKKworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMSIp
LmNvbnRlbnRFZGl0YWJsZScsICciaW5oZXJpdCInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicDIiKS5jb250ZW50RWRpdGFibGUnLCAnImluaGVyaXQiJyk7CisKK3dpbmRv
dy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76233</attachid>
            <date>2010-12-10 12:13:18 -0800</date>
            <delta_ts>2010-12-14 07:50:02 -0800</delta_ts>
            <desc>fix patch 3</desc>
            <filename>50636_3.patch</filename>
            <type>text/plain</type>
            <size>9301</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzcyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMTItMTAgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0
IGluaGVyaXQgc3RhdGUgd2hlbiBjb250ZW50RWRpdGFibGUgaXMgc2V0IHRvICJpbmhlcml0IiBv
ciBhbGwgb3RoZXIKKyAgICAgICAgaW52YWxpZCB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDYzNgorCisgICAgICAgIFRlc3RzOiBlZGl0
aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5odG1sCisgICAg
ICAgICAgICAgICBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudC5odG1s
CisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50Ojpjb250ZW50RWRpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OnNldENvbnRlbnRFZGl0YWJsZSk6CisKIDIwMTAtMTItMTAgIFJlbmF0YSBIb2RvdmFuICA8
cmVuaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDczNzI4KQorKysgV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY3LDYgKzY2Nyw5IEBAIGJvb2wgSFRN
TEVsZW1lbnQ6OmlzQ29udGVudFJpY2hseUVkaXRhYmwKIAogU3RyaW5nIEhUTUxFbGVtZW50Ojpj
b250ZW50RWRpdGFibGUoKSBjb25zdCAKIHsKKyAgICBpZiAoIWhhc0F0dHJpYnV0ZShjb250ZW50
ZWRpdGFibGVBdHRyKSkKKyAgICAgICAgcmV0dXJuICJpbmhlcml0IjsKKwogICAgIGlmICghcmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuICJmYWxzZSI7CiAgICAgCkBAIC02OTUsMTYgKzY5OCwx
NCBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoQXR0CiAgICAgICAgIGF0
dHItPmRlY2woKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgZmFsc2UpOwog
ICAgICAgICBhdHRyLT5kZWNsKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJz
cE1vZGUsIGZhbHNlKTsKICAgICAgICAgYXR0ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZW5hYmxlZCwgImluaGVyaXQiKSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShh
dHRyLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlSW5oZXJpdCk7Ci0gICAg
ICAgIGF0dHItPmRlY2woKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgZmFs
c2UpOwotICAgICAgICBhdHRyLT5kZWNsKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0TmJzcE1vZGUsIGZhbHNlKTsKLSAgICAgICAgYXR0ci0+ZGVjbCgpLT5yZW1vdmVQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgZmFsc2UpOwogICAgIH0gZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInBsYWludGV4dC1vbmx5IikpIHsKICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJl
YWRXcml0ZVBsYWludGV4dE9ubHkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQ
cm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CiAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwogICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NT
VmFsdWVBZnRlcldoaXRlU3BhY2UpOworICAgIH0gZWxzZSB7IC8vIFNldCBkZWZhdWx0IHZhbHVl
IHRvICJpbmhlcml0Ii4KKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgcmVtb3Zl
QXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIsIGVjKTsKICAgICB9CiB9CiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDczNzI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTItMTAgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgdGVzdCBjYXNlcyBmb3IgdGhlIGJ1Zy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNjM2CisKKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRF
ZGl0YWJsZTogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0cklu
aGVyaXRPckludmFsaWRTdHJpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0
dHJNaXNzaW5nUGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29udGVudEVk
aXRhYmxlL3NjcmlwdC10ZXN0czogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250ZW50RWRp
dGFibGUvc2NyaXB0LXRlc3RzL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0ck1pc3Np
bmdQYXJlbnQuanM6IEFkZGVkLgorCiAyMDEwLTEyLTEwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmVtb3ZlIHBsYXRmb3JtIHNw
ZWNpZmljIGV4cGVjdGVkIGZpbGVzIGFmdGVyIHI3MzcyMC4KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9h
dHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0
cmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1doZW4gY29u
dGVudEVkaXRhYmxlIGtleXdvcmQgaXMgImluaGVyaXQiIG9yIGludmFsaWQgc3RyaW5nLCBpdCBt
YXBzIHRvIGluaGVyaXQgc3RhdGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKwor
CisKKworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRGl2MSIpLmNvbnRlbnRFZGl0YWJs
ZSBpcyAiaW5oZXJpdCIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkRpdjEiKS5pc0Nv
bnRlbnRFZGl0YWJsZSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKERpdjEsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXVzZXItbW9kaWZ5
IikgaXMgInJlYWQtb25seSIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkRpdjIiKS5j
b250ZW50RWRpdGFibGUgaXMgImluaGVyaXQiCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJEaXYyIikuaXNDb250ZW50RWRpdGFibGUgaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShEaXYyLCAiIikuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtp
dC11c2VyLW1vZGlmeSIpIGlzICJyZWFkLW9ubHkiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbmhlcml0
T3JJbnZhbGlkU3RyaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJEaXYxIiBj
b250ZW50RWRpdGFibGU9ImluaGVyaXQiIHN0eWxlPSJjb2xvcjojRkY1NTMzOyI+PC9kaXY+Cis8
ZGl2IGlkPSJEaXYyIiBjb250ZW50RWRpdGFibGU9ImFiYyIgc3R5bGU9ImNvbG9yOiNGRjU1MzM7
Ij48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXR0ckluaGVyaXRPckludmFsaWRT
dHJpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUv
YXR0ck1pc3NpbmdQYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1pc3NpbmdQYXJlbnQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitjb250ZW50RWRpdGFibGUgYXR0ciBOb3Qg
c2V0LCBidXQgUGFyZW50IGlzIHNldCB0byAidHJ1ZSIgb3IgImZhbHNlIgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworCisKKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwMSIpLmNvbnRlbnRFZGl0YWJsZSBpcyAiaW5oZXJpdCIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInAxIikuaXNDb250ZW50RWRpdGFibGUgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHAxLCAiIikuZ2V0UHJvcGVydHlWYWx1ZSgiLXdl
YmtpdC11c2VyLW1vZGlmeSIpIGlzICJyZWFkLXdyaXRlIgorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicDIiKS5jb250ZW50RWRpdGFibGUgaXMgImluaGVyaXQiCitQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwMiIpLmlzQ29udGVudEVkaXRhYmxlIGlzIGZhbHNlCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocDIsICIiKS5nZXRQcm9wZXJ0eVZh
bHVlKCItd2Via2l0LXVzZXItbW9kaWZ5IikgaXMgInJlYWQtb25seSIKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJNaXNzaW5nUGFyZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1pc3Np
bmdQYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVu
dEVkaXRhYmxlL2F0dHJNaXNzaW5nUGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgor
PGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9IkRpdjEiIGNvbnRlbnRFZGl0YWJsZT0i
dHJ1ZSIgc3R5bGU9ImNvbG9yOiNGRjU1MzM7Ij48cCBpZD0icDEiPjwvcD48L2Rpdj4KKzxkaXYg
aWQ9IkRpdjIiIGNvbnRlbnRFZGl0YWJsZT0iZmFsc2UiIHN0eWxlPSJjb2xvcjojRkY1NTMzOyI+
PHAgaWQ9InAyIj48L3A+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2F0dHJNaXNz
aW5nUGFyZW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJJbmhl
cml0T3JJbnZhbGlkU3RyaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
Y29udGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0cy9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL3Nj
cmlwdC10ZXN0cy9hdHRySW5oZXJpdE9ySW52YWxpZFN0cmluZy5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMCBAQAorZGVzY3JpcHRpb24oJ1doZW4gY29udGVudEVkaXRhYmxlIGtleXdvcmQg
aXMgImluaGVyaXQiIG9yIGludmFsaWQgc3RyaW5nLCBpdCBtYXBzIHRvIGluaGVyaXQgc3RhdGUn
KQorCitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkRpdjEiKS5jb250ZW50RWRp
dGFibGUnLCAnImluaGVyaXQiJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IkRpdjEiKS5pc0NvbnRlbnRFZGl0YWJsZScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoRGl2MSwgIiIpLmdldFByb3BlcnR5VmFsdWUo
Ii13ZWJraXQtdXNlci1tb2RpZnkiKScsICcicmVhZC1vbmx5IicpOworc2hvdWxkQmUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJEaXYyIikuY29udGVudEVkaXRhYmxlJywgJyJpbmhlcml0Iicp
Oworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJEaXYyIikuaXNDb250ZW50RWRp
dGFibGUnLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKERpdjIsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXVzZXItbW9kaWZ5
IiknLCAnInJlYWQtb25seSInKTsKKword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMv
YXR0ck1pc3NpbmdQYXJlbnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9j
b250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJNaXNzaW5nUGFyZW50LmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3Rz
L2F0dHJNaXNzaW5nUGFyZW50LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitkZXNj
cmlwdGlvbignY29udGVudEVkaXRhYmxlIGF0dHIgTm90IHNldCwgYnV0IFBhcmVudCBpcyBzZXQg
dG8gInRydWUiIG9yICJmYWxzZSInKQorCitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInAxIikuY29udGVudEVkaXRhYmxlJywgJyJpbmhlcml0IicpOworc2hvdWxkQmUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwMSIpLmlzQ29udGVudEVkaXRhYmxlJywgJ3RydWUnKTsKK3No
b3VsZEJlKCdkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHAxLCAiIikuZ2V0
UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpJywgJyJyZWFkLXdyaXRlIicpOwor
c2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMiIpLmNvbnRlbnRFZGl0YWJsZScs
ICciaW5oZXJpdCInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDIiKS5p
c0NvbnRlbnRFZGl0YWJsZScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUocDIsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXVz
ZXItbW9kaWZ5IiknLCAnInJlYWQtb25seSInKTsKKword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="67142"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76536</attachid>
            <date>2010-12-14 07:50:02 -0800</date>
            <delta_ts>2011-04-28 17:33:15 -0700</delta_ts>
            <desc>fix patch 4</desc>
            <filename>50636_4.patch</filename>
            <type>text/plain</type>
            <size>24979</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDAyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTItMTQgIENoYW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgY29u
dGVudEVkaXRhYmxlIGF0dHJpYnV0ZSBmYWlscyB0byB0YWtlICJpbmhlcml0IiBvciBpbnZhbGlk
IHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDYzNgorCisgICAgICAgIDEuIFNldCBpbmhlcml0IHN0YXRlIHdoZW4gY29udGVudEVkaXRhYmxl
IGlzIHNldCB0byAiaW5oZXJpdCIgb3IgYWxsIG90aGVyCisgICAgICAgICAgIGludmFsaWQgdmFs
dWVzLgorICAgICAgICAyLiBGb3JjZSB1cGRhdGluZyByZW5kZXIgc3R5bGUgYmVmb3JlIHJlYWRp
bmcuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbmhlcml0
T3JJbnZhbGlkU3RyaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvY29udGVudEVkaXRh
YmxlL2F0dHJNaXNzaW5nQW5jZXN0b3JUcnVlT3JGYWxzZS5odG1sCisgICAgICAgICAgICAgICBl
ZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudFRydWVPckZhbHNlLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvY29udGVudEVkaXRhYmxlL3NldEluaGVyaXRBbmNlc3Rv
clRydWVPckZhbHNlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvY29udGVudEVkaXRhYmxl
L3NldEluaGVyaXRQYXJlbnRUcnVlT3JGYWxzZS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5n
L2NvbnRlbnRFZGl0YWJsZS9zZXRUcnVlT3JGYWxzZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojppc0NvbnRlbnRF
ZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUpOgor
CiAyMDEwLTEyLTE0ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc0MDI1KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQ3LDYgKzY0Nyw4IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmlzQ29udGVudEVk
aXRhYmxlKCkgY28KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisgICAg
ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKICAg
ICByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+dXNlck1vZGlmeSgpID09IFJFQURfV1JJVEUg
fHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+dXNlck1vZGlmeSgpID09IFJFQURfV1JJVEVfUExBSU5U
RVhUX09OTFk7CiB9CiAKQEAgLTY2Nyw5ICs2NjksMTQgQEAgYm9vbCBIVE1MRWxlbWVudDo6aXND
b250ZW50UmljaGx5RWRpdGFibAogCiBTdHJpbmcgSFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJs
ZSgpIGNvbnN0IAogeworICAgIGlmICghaGFzQXR0cmlidXRlKGNvbnRlbnRlZGl0YWJsZUF0dHIp
KQorICAgICAgICByZXR1cm4gImluaGVyaXQiOworCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm4gImZhbHNlIjsKLSAgICAKKworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworCiAgICAgc3dpdGNoIChyZW5kZXJlcigpLT5z
dHlsZSgpLT51c2VyTW9kaWZ5KCkpIHsKICAgICAgICAgY2FzZSBSRUFEX1dSSVRFOgogICAgICAg
ICAgICAgcmV0dXJuICJ0cnVlIjsKQEAgLTY5NSwxNiArNzAyLDE0IEBAIHZvaWQgSFRNTEVsZW1l
bnQ6OnNldENvbnRlbnRFZGl0YWJsZShBdHQKICAgICAgICAgYXR0ci0+ZGVjbCgpLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdvcmRXcmFwLCBmYWxzZSk7CiAgICAgICAgIGF0dHItPmRlY2wo
KS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgZmFsc2UpOwogICAg
ICAgICBhdHRyLT5kZWNsKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrLCBmYWxzZSk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAi
aW5oZXJpdCIpKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2Vi
a2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVJbmhlcml0KTsKLSAgICAgICAgYXR0ci0+ZGVjbCgpLT5y
ZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdvcmRXcmFwLCBmYWxzZSk7Ci0gICAgICAgIGF0dHIt
PmRlY2woKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgZmFsc2Up
OwotICAgICAgICBhdHRyLT5kZWNsKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TGluZUJyZWFrLCBmYWxzZSk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFi
bGVkLCAicGxhaW50ZXh0LW9ubHkiKSkgewogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25s
eSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V29yZFdyYXAsIENT
U1ZhbHVlQnJlYWtXb3JkKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVy
dHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5
KGF0dHIsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFj
ZSk7CisgICAgfSBlbHNlIHsgLy8gU2V0IGRlZmF1bHQgdmFsdWUgdG8gImluaGVyaXQiLgorICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29udGVudGVk
aXRhYmxlQXR0ciwgZWMpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzQwMjUpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAor
MjAxMC0xMi0xNCAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjb250ZW50RWRpdGFibGUgYXR0
cmlidXRlIGZhaWxzIHRvIHRha2UgImluaGVyaXQiIG9yIGludmFsaWQgdmFsdWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNjM2CisKKyAgICAgICAg
KiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZTogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250
ZW50RWRpdGFibGUvYXR0ckluaGVyaXRPckludmFsaWRTdHJpbmctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRySW5oZXJpdE9ySW52YWxp
ZFN0cmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9h
dHRyTWlzc2luZ0FuY2VzdG9yVHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ0FuY2VzdG9yVHJ1ZU9yRmFs
c2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1p
c3NpbmdQYXJlbnRUcnVlT3JGYWxzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJNaXNzaW5nUGFyZW50VHJ1ZU9yRmFsc2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvYXR0
ckluaGVyaXRPckludmFsaWRTdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29u
dGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0cy9hdHRyTWlzc2luZ0FuY2VzdG9yVHJ1ZU9yRmFsc2Uu
anM6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29udGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0
cy9hdHRyTWlzc2luZ1BhcmVudFRydWVPckZhbHNlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvc2V0SW5oZXJpdEFuY2VzdG9yVHJ1ZU9y
RmFsc2UuanM6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29udGVudEVkaXRhYmxlL3Njcmlw
dC10ZXN0cy9zZXRJbmhlcml0UGFyZW50VHJ1ZU9yRmFsc2UuanM6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvY29udGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0cy9zZXRUcnVlT3JGYWxzZS5qczog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2V0SW5oZXJpdEFuY2Vz
dG9yVHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2Nv
bnRlbnRFZGl0YWJsZS9zZXRJbmhlcml0QW5jZXN0b3JUcnVlT3JGYWxzZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zZXRJbmhlcml0UGFyZW50VHJ1ZU9y
RmFsc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0
YWJsZS9zZXRJbmhlcml0UGFyZW50VHJ1ZU9yRmFsc2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2V0VHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zZXRUcnVlT3JGYWxzZS5odG1s
OiBBZGRlZC4KKwogMjAxMC0xMi0xNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ckluaGVyaXRPckludmFsaWRTdHJpbmct
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVk
aXRhYmxlL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbmhlcml0T3JJ
bnZhbGlkU3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAor
V2hlbiBjb250ZW50RWRpdGFibGUga2V5d29yZCBpcyAiaW5oZXJpdCIgb3IgaW52YWxpZCBzdHJp
bmcsIGl0IG1hcHMgdG8gaW5oZXJpdCBzdGF0ZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworCisKKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJEaXYxIikuY29udGVu
dEVkaXRhYmxlIGlzICJpbmhlcml0IgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRGl2
MSIpLmlzQ29udGVudEVkaXRhYmxlIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoRGl2MSwgIiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdXNl
ci1tb2RpZnkiKSBpcyAicmVhZC1vbmx5IgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
RGl2MiIpLmNvbnRlbnRFZGl0YWJsZSBpcyAiaW5oZXJpdCIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIkRpdjIiKS5pc0NvbnRlbnRFZGl0YWJsZSBpcyBmYWxzZQorUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKERpdjIsICIiKS5nZXRQcm9wZXJ0eVZhbHVl
KCItd2Via2l0LXVzZXItbW9kaWZ5IikgaXMgInJlYWQtb25seSIKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0
ckluaGVyaXRPckludmFsaWRTdHJpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzxkaXYgaWQ9
IkRpdjEiIGNvbnRlbnRFZGl0YWJsZT0iaW5oZXJpdCIgc3R5bGU9ImNvbG9yOiNGRjU1MzM7Ij48
L2Rpdj4KKzxkaXYgaWQ9IkRpdjIiIGNvbnRlbnRFZGl0YWJsZT0iYWJjIiBzdHlsZT0iY29sb3I6
I0ZGNTUzMzsiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hdHRySW5oZXJpdE9y
SW52YWxpZFN0cmluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJNaXNzaW5nQW5jZXN0
b3JUcnVlT3JGYWxzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1pc3NpbmdBbmNlc3RvclRydWVPckZhbHNlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRh
YmxlL2F0dHJNaXNzaW5nQW5jZXN0b3JUcnVlT3JGYWxzZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDkgQEAKK2NvbnRlbnRFZGl0YWJsZSBhdHRyIE5vdCBzZXQsIGFuY2Vz
dG9yIGlzIHNldCB0byAidHJ1ZSIgb3IgImZhbHNlIiBvciBtaXNzaW5nLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworCisKKworICAKKworICAgIAorCisgICAgICAKKworICAgIAor
CisgIAorCisKKworICAKKworICAgIAorCisgICAgICAKKworICAgIAorCisgIAorCisKKworUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDEiKS5jb250ZW50RWRpdGFibGUgaXMgImluaGVy
aXQiCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMSIpLmlzQ29udGVudEVkaXRhYmxl
IGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwMSwg
IiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdXNlci1tb2RpZnkiKSBpcyAicmVhZC13cml0
ZSIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAyIikuY29udGVudEVkaXRhYmxlIGlz
ICJpbmhlcml0IgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDIiKS5pc0NvbnRlbnRF
ZGl0YWJsZSBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKHAyLCAiIikuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpIGlzICJy
ZWFkLW9ubHkiCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMyIpLmNvbnRlbnRFZGl0
YWJsZSBpcyAiaW5oZXJpdCIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAzIikuaXND
b250ZW50RWRpdGFibGUgaXMgZmFsc2UKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShwMywgIiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdXNlci1tb2RpZnki
KSBpcyAicmVhZC1vbmx5IgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRp
dGFibGUvYXR0ck1pc3NpbmdBbmNlc3RvclRydWVPckZhbHNlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1pc3NpbmdBbmNlc3RvclRy
dWVPckZhbHNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRl
bnRFZGl0YWJsZS9hdHRyTWlzc2luZ0FuY2VzdG9yVHJ1ZU9yRmFsc2UuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPGRpdiBjb250ZW50ZWRpdGFi
bGU9InRydWUiPgorICA8ZGl2PgorICAgIDxkaXY+CisgICAgICA8cCBpZD0icDEiPjwvcD4KKyAg
ICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJmYWxzZSI+
CisgIDxkaXY+CisgICAgPGRpdj4KKyAgICAgIDxwIGlkPSJwMiI+PC9wPgorICAgIDwvZGl2Pgor
ICA8L2Rpdj4KKzwvZGl2PgorPHAgaWQ9InAzIj48L3A+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2F0dHJNaXNzaW5nQW5jZXN0b3JUcnVlT3JGYWxzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRh
YmxlL2F0dHJNaXNzaW5nUGFyZW50VHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJNaXNzaW5nUGFyZW50
VHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9jb250ZW50RWRpdGFibGUvYXR0ck1pc3NpbmdQYXJlbnRUcnVlT3JGYWxzZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK2NvbnRlbnRFZGl0YWJsZSBhdHRy
IE5vdCBzZXQsIGJ1dCBQYXJlbnQgaXMgc2V0IHRvICJ0cnVlIiBvciAiZmFsc2UiLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCisKKworCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwMSIpLmNvbnRlbnRFZGl0YWJsZSBpcyAiaW5oZXJpdCIKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInAxIikuaXNDb250ZW50RWRpdGFibGUgaXMgdHJ1ZQorUEFTUyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHAxLCAiIikuZ2V0UHJvcGVydHlWYWx1
ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpIGlzICJyZWFkLXdyaXRlIgorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicDIiKS5jb250ZW50RWRpdGFibGUgaXMgImluaGVyaXQiCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMiIpLmlzQ29udGVudEVkaXRhYmxlIGlzIGZhbHNlCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocDIsICIiKS5nZXRQcm9w
ZXJ0eVZhbHVlKCItd2Via2l0LXVzZXItbW9kaWZ5IikgaXMgInJlYWQtb25seSIKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCisKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL2F0dHJNaXNzaW5nUGFyZW50VHJ1
ZU9yRmFsc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRF
ZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudFRydWVPckZhbHNlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9hdHRyTWlzc2luZ1BhcmVudFRy
dWVPckZhbHNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9wPgorPGRpdiBpZD0icmVzdWx0Ij48
L2Rpdj4KKzxkaXYgaWQ9IkRpdjEiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIgc3R5bGU9ImNvbG9y
OiNGRjU1MzM7Ij48cCBpZD0icDEiPjwvcD48L2Rpdj4KKzxkaXYgaWQ9IkRpdjIiIGNvbnRlbnRF
ZGl0YWJsZT0iZmFsc2UiIHN0eWxlPSJjb2xvcjojRkY1NTMzOyI+PHAgaWQ9InAyIj48L3A+PC9k
aXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2F0dHJNaXNzaW5nUGFyZW50VHJ1ZU9yRmFs
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zZXRJbmhlcml0QW5jZXN0b3JUcnVlT3JGYWxz
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50
RWRpdGFibGUvc2V0SW5oZXJpdEFuY2VzdG9yVHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2V0SW5oZXJp
dEFuY2VzdG9yVHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ1IEBACitTZXQgY29udGVudEVkaXRhYmxlIHRvICJpbmhlcml0IiwgYW5jZXN0b3IgaXMgc2V0
IHRvICJ0cnVlIiBvciAiZmFsc2UiLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
CisKKworICAKKworICAgIAorCisgICAgICAKKworICAgIAorCisgIAorCisKKworICAKKworICAg
IAorCisgICAgICAKKworICAgIAorCisgIAorCisKK1BBU1MgcDEuY29udGVudEVkaXRhYmxlIGlz
ICJpbmhlcml0IgorUEFTUyBwMS5pc0NvbnRlbnRFZGl0YWJsZSBpcyB0cnVlCitQQVNTIGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoUDEsICIiKS5nZXRQcm9wZXJ0eVZhbHVl
KCItd2Via2l0LXVzZXItbW9kaWZ5IikgaXMgInJlYWQtd3JpdGUiCitQQVNTIHAyLmNvbnRlbnRF
ZGl0YWJsZSBpcyAiaW5oZXJpdCIKK1BBU1MgcDIuaXNDb250ZW50RWRpdGFibGUgaXMgZmFsc2UK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShQMiwgIiIpLmdldFBy
b3BlcnR5VmFsdWUoIi13ZWJraXQtdXNlci1tb2RpZnkiKSBpcyAicmVhZC1vbmx5IgorCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2V0SW5oZXJpdEFuY2VzdG9y
VHJ1ZU9yRmFsc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRl
bnRFZGl0YWJsZS9zZXRJbmhlcml0QW5jZXN0b3JUcnVlT3JGYWxzZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2V0SW5oZXJpdEFuY2Vz
dG9yVHJ1ZU9yRmFsc2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgorPGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiPgorICA8ZGl2PgorICAgIDxk
aXY+CisgICAgICA8cCBpZD0iUDEiIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPjwvcD4KKyAgICA8
L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJmYWxzZSI+Cisg
IDxkaXY+CisgICAgPGRpdj4KKyAgICAgIDxwIGlkPSJQMiIgY29udGVudGVkaXRhYmxlPSJ0cnVl
Ij48L3A+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3NldEluaGVyaXRBbmNlc3RvclRydWVPckZhbHNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRp
dGFibGUvc2V0SW5oZXJpdFBhcmVudFRydWVPckZhbHNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zZXRJbmhlcml0UGFyZW50
VHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9jb250ZW50RWRpdGFibGUvc2V0SW5oZXJpdFBhcmVudFRydWVPckZhbHNlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorU2V0IGNvbnRlbnRFZGl0YWJsZSB0
byAiaW5oZXJpdCIsIHBhcmVudCBpcyBzZXQgdG8gInRydWUiIG9yICJmYWxzZSIuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCisKK1BBU1MgcDEuY29udGVudEVkaXRhYmxl
IGlzICJpbmhlcml0IgorUEFTUyBwMS5pc0NvbnRlbnRFZGl0YWJsZSBpcyB0cnVlCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoUDEsICIiKS5nZXRQcm9wZXJ0eVZh
bHVlKCItd2Via2l0LXVzZXItbW9kaWZ5IikgaXMgInJlYWQtd3JpdGUiCitQQVNTIHAyLmNvbnRl
bnRFZGl0YWJsZSBpcyAiaW5oZXJpdCIKK1BBU1MgcDIuaXNDb250ZW50RWRpdGFibGUgaXMgZmFs
c2UKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShQMiwgIiIpLmdl
dFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdXNlci1tb2RpZnkiKSBpcyAicmVhZC1vbmx5IgorCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2V0SW5oZXJpdFBhcmVu
dFRydWVPckZhbHNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250
ZW50RWRpdGFibGUvc2V0SW5oZXJpdFBhcmVudFRydWVPckZhbHNlLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zZXRJbmhlcml0UGFyZW50
VHJ1ZU9yRmFsc2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L3A+Cis8ZGl2IGlkPSJyZXN1bHQi
PjwvZGl2PgorPGRpdiBpZD0iRGl2MSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBzdHlsZT0iY29s
b3I6I0ZGNTUzMzsiPjxwIGlkPSJQMSIgY29udGVudGVkaXRhYmxlPSJmYWxzZSI+PC9wPjwvZGl2
PgorPGRpdiBpZD0iRGl2MiIgY29udGVudGVkaXRhYmxlPSJmYWxzZSIgc3R5bGU9ImNvbG9yOiNG
RjU1MzM7Ij48cCBpZD0iUDIiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PC9wPjwvZGl2PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXRJbmhlcml0UGFyZW50VHJ1ZU9yRmFsc2UuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL2NvbnRlbnRFZGl0YWJsZS9zZXRUcnVlT3JGYWxzZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2V0VHJ1ZU9yRmFsc2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50
RWRpdGFibGUvc2V0VHJ1ZU9yRmFsc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMxIEBACitTZXQgY29udGVudEVkaXRhYmxlIHRvICJ0cnVlIiBmcm9tICJmYWxzZSIgb3Ig
ImluaGVyaXQiCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKKworCisKKworCitQ
QVNTIGRpdjEuY29udGVudEVkaXRhYmxlIGlzICJ0cnVlIgorUEFTUyBkaXYxLmlzQ29udGVudEVk
aXRhYmxlIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShEaXYxLCAiIikuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpIGlzICJy
ZWFkLXdyaXRlIgorUEFTUyBwMi5jb250ZW50RWRpdGFibGUgaXMgInRydWUiCitQQVNTIHAyLmlz
Q29udGVudEVkaXRhYmxlIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShQMiwgIiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdXNlci1tb2RpZnki
KSBpcyAicmVhZC13cml0ZSIKK1BBU1MgZGl2My5jb250ZW50RWRpdGFibGUgaXMgImZhbHNlIgor
UEFTUyBkaXYzLmlzQ29udGVudEVkaXRhYmxlIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoRGl2MywgIiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJr
aXQtdXNlci1tb2RpZnkiKSBpcyAicmVhZC1vbmx5IgorUEFTUyBwNC5jb250ZW50RWRpdGFibGUg
aXMgImZhbHNlIgorUEFTUyBwNC5pc0NvbnRlbnRFZGl0YWJsZSBpcyBmYWxzZQorUEFTUyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKFA0LCAiIikuZ2V0UHJvcGVydHlWYWx1
ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpIGlzICJyZWFkLW9ubHkiCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKworCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zZXRUcnVlT3JGYWxzZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL3NldFRydWVPckZhbHNl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJs
ZS9zZXRUcnVlT3JGYWxzZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvcD4KKzxkaXYgaWQ9InJl
c3VsdCI+PC9kaXY+Cis8ZGl2IGlkPSJEaXYxIiBjb250ZW50ZWRpdGFibGU9ImZhbHNlIiBzdHls
ZT0iY29sb3I6I0ZGNTUzMzsiPjwvZGl2PgorPGRpdiBpZD0iRGl2MiIgY29udGVudGVkaXRhYmxl
PSJmYWxzZSIgc3R5bGU9ImNvbG9yOiNGRjU1MzM7Ij48cCBpZD0iUDIiPjwvcD48L2Rpdj4KKzxk
aXYgaWQ9IkRpdjMiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3R5bGU9ImNvbG9yOiNGRjU1MzM7
Ij48L2Rpdj4KKzxkaXYgaWQ9IkRpdjQiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3R5bGU9ImNv
bG9yOiNGRjU1MzM7Ij48cCBpZD0iUDQiPjwvcD48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvc2V0VHJ1ZU9yRmFsc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVz
dHMvYXR0ckluaGVyaXRPckludmFsaWRTdHJpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJJbmhlcml0T3JJbnZh
bGlkU3RyaW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50
RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJJbmhlcml0T3JJbnZhbGlkU3RyaW5nLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitkZXNjcmlwdGlvbignV2hlbiBjb250ZW50RWRpdGFi
bGUga2V5d29yZCBpcyAiaW5oZXJpdCIgb3IgaW52YWxpZCBzdHJpbmcsIGl0IG1hcHMgdG8gaW5o
ZXJpdCBzdGF0ZScpCisKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRGl2MSIp
LmNvbnRlbnRFZGl0YWJsZScsICciaW5oZXJpdCInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiRGl2MSIpLmlzQ29udGVudEVkaXRhYmxlJywgJ2ZhbHNlJyk7CitzaG91bGRC
ZSgnZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShEaXYxLCAiIikuZ2V0UHJv
cGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpJywgJyJyZWFkLW9ubHkiJyk7CitzaG91
bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkRpdjIiKS5jb250ZW50RWRpdGFibGUnLCAn
ImluaGVyaXQiJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkRpdjIiKS5p
c0NvbnRlbnRFZGl0YWJsZScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoRGl2MiwgIiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQt
dXNlci1tb2RpZnkiKScsICcicmVhZC1vbmx5IicpOworCit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvY29udGVudEVkaXRhYmxlL3Nj
cmlwdC10ZXN0cy9hdHRyTWlzc2luZ0FuY2VzdG9yVHJ1ZU9yRmFsc2UuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJN
aXNzaW5nQW5jZXN0b3JUcnVlT3JGYWxzZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvY29udGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0cy9hdHRyTWlzc2luZ0FuY2VzdG9y
VHJ1ZU9yRmFsc2UuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK2Rlc2NyaXB0aW9u
KCdjb250ZW50RWRpdGFibGUgYXR0ciBOb3Qgc2V0LCBhbmNlc3RvciBpcyBzZXQgdG8gInRydWUi
IG9yICJmYWxzZSIgb3IgbWlzc2luZy4nKQorCitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInAxIikuY29udGVudEVkaXRhYmxlJywgJyJpbmhlcml0IicpOworc2hvdWxkQmUoJ2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMSIpLmlzQ29udGVudEVkaXRhYmxlJywgJ3RydWUnKTsK
K3Nob3VsZEJlKCdkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHAxLCAiIiku
Z2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpJywgJyJyZWFkLXdyaXRlIicp
Oworc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMiIpLmNvbnRlbnRFZGl0YWJs
ZScsICciaW5oZXJpdCInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDIi
KS5pc0NvbnRlbnRFZGl0YWJsZScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocDIsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0
LXVzZXItbW9kaWZ5IiknLCAnInJlYWQtb25seSInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicDMiKS5jb250ZW50RWRpdGFibGUnLCAnImluaGVyaXQiJyk7CitzaG91bGRC
ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAzIikuaXNDb250ZW50RWRpdGFibGUnLCAnZmFs
c2UnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHAz
LCAiIikuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpJywgJyJyZWFkLW9u
bHkiJyk7CisKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJNaXNzaW5nUGFy
ZW50VHJ1ZU9yRmFsc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250
ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL2F0dHJNaXNzaW5nUGFyZW50VHJ1ZU9yRmFsc2UuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3Jp
cHQtdGVzdHMvYXR0ck1pc3NpbmdQYXJlbnRUcnVlT3JGYWxzZS5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMCBAQAorZGVzY3JpcHRpb24oJ2NvbnRlbnRFZGl0YWJsZSBhdHRyIE5vdCBzZXQs
IGJ1dCBQYXJlbnQgaXMgc2V0IHRvICJ0cnVlIiBvciAiZmFsc2UiLicpCisKK3Nob3VsZEJlKCdk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDEiKS5jb250ZW50RWRpdGFibGUnLCAnImluaGVyaXQi
Jyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAxIikuaXNDb250ZW50RWRp
dGFibGUnLCAndHJ1ZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUocDEsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXVzZXItbW9kaWZ5Iikn
LCAnInJlYWQtd3JpdGUiJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInAy
IikuY29udGVudEVkaXRhYmxlJywgJyJpbmhlcml0IicpOworc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJwMiIpLmlzQ29udGVudEVkaXRhYmxlJywgJ2ZhbHNlJyk7CitzaG91bGRC
ZSgnZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShwMiwgIiIpLmdldFByb3Bl
cnR5VmFsdWUoIi13ZWJraXQtdXNlci1tb2RpZnkiKScsICcicmVhZC1vbmx5IicpOworCit3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
Y29udGVudEVkaXRhYmxlL3NjcmlwdC10ZXN0cy9zZXRJbmhlcml0QW5jZXN0b3JUcnVlT3JGYWxz
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9z
Y3JpcHQtdGVzdHMvc2V0SW5oZXJpdEFuY2VzdG9yVHJ1ZU9yRmFsc2UuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvc2V0
SW5oZXJpdEFuY2VzdG9yVHJ1ZU9yRmFsc2UuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYg
QEAKK2Rlc2NyaXB0aW9uKCdTZXQgY29udGVudEVkaXRhYmxlIHRvICJpbmhlcml0IiwgYW5jZXN0
b3IgaXMgc2V0IHRvICJ0cnVlIiBvciAiZmFsc2UiLicpCisKK3ZhciBwMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJQMSIpOwordmFyIHAyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlAy
Iik7CisKK3AxLnNldEF0dHJpYnV0ZSgiY29udGVudEVkaXRhYmxlIiwgImluaGVyaXQiKTsKK3No
b3VsZEJlKCdwMS5jb250ZW50RWRpdGFibGUnLCAnImluaGVyaXQiJyk7CitzaG91bGRCZSgncDEu
aXNDb250ZW50RWRpdGFibGUnLCAndHJ1ZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoUDEsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXVz
ZXItbW9kaWZ5IiknLCAnInJlYWQtd3JpdGUiJyk7CisKK3AyLnNldEF0dHJpYnV0ZSgiY29udGVu
dEVkaXRhYmxlIiwgImluaGVyaXQiKTsKK3Nob3VsZEJlKCdwMi5jb250ZW50RWRpdGFibGUnLCAn
ImluaGVyaXQiJyk7CitzaG91bGRCZSgncDIuaXNDb250ZW50RWRpdGFibGUnLCAnZmFsc2UnKTsK
K3Nob3VsZEJlKCdkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKFAyLCAiIiku
Z2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpJywgJyJyZWFkLW9ubHkiJyk7
CisKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL3NldEluaGVyaXRQYXJlbnRUcnVl
T3JGYWxzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2NvbnRlbnRFZGl0
YWJsZS9zY3JpcHQtdGVzdHMvc2V0SW5oZXJpdFBhcmVudFRydWVPckZhbHNlLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3Rz
L3NldEluaGVyaXRQYXJlbnRUcnVlT3JGYWxzZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NyBAQAorZGVzY3JpcHRpb24oJ1NldCBjb250ZW50RWRpdGFibGUgdG8gImluaGVyaXQiLCBwYXJl
bnQgaXMgc2V0IHRvICJ0cnVlIiBvciAiZmFsc2UiLicpCisKK3ZhciBwMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJQMSIpOwordmFyIHAyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlAy
Iik7CisKK3AxLnNldEF0dHJpYnV0ZSgiY29udGVudEVkaXRhYmxlIiwgImluaGVyaXQiKTsKK3No
b3VsZEJlKCdwMS5jb250ZW50RWRpdGFibGUnLCAnImluaGVyaXQiJyk7CitzaG91bGRCZSgncDEu
aXNDb250ZW50RWRpdGFibGUnLCAndHJ1ZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoUDEsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXVz
ZXItbW9kaWZ5IiknLCAnInJlYWQtd3JpdGUiJyk7CisKK3AyLnNldEF0dHJpYnV0ZSgiY29udGVu
dEVkaXRhYmxlIiwgImluaGVyaXQiKTsKK3Nob3VsZEJlKCdwMi5jb250ZW50RWRpdGFibGUnLCAn
ImluaGVyaXQiJyk7CitzaG91bGRCZSgncDIuaXNDb250ZW50RWRpdGFibGUnLCAnZmFsc2UnKTsK
K3Nob3VsZEJlKCdkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKFAyLCAiIiku
Z2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpJywgJyJyZWFkLW9ubHkiJyk7
CisKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL2NvbnRlbnRFZGl0YWJsZS9zY3JpcHQtdGVzdHMvc2V0VHJ1ZU9yRmFsc2UuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0
LXRlc3RzL3NldFRydWVPckZhbHNlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9jb250ZW50RWRpdGFibGUvc2NyaXB0LXRlc3RzL3NldFRydWVPckZhbHNlLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACitkZXNjcmlwdGlvbignU2V0IGNvbnRlbnRFZGl0YWJs
ZSB0byAidHJ1ZSIgZnJvbSAiZmFsc2UiIG9yICJpbmhlcml0IicpCisKK3ZhciBkaXYxID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkRpdjEiKTsKK3ZhciBwMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJQMiIpOwordmFyIGRpdjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRGl2MyIp
OwordmFyIHA0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlA0Iik7CisKK2RpdjEuc2V0QXR0
cmlidXRlKCJjb250ZW50RWRpdGFibGUiLCAidHJ1ZSIpOworc2hvdWxkQmUoJ2RpdjEuY29udGVu
dEVkaXRhYmxlJywgJyJ0cnVlIicpOworc2hvdWxkQmUoJ2RpdjEuaXNDb250ZW50RWRpdGFibGUn
LCAndHJ1ZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoRGl2MSwgIiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdXNlci1tb2RpZnkiKScsICci
cmVhZC13cml0ZSInKTsKKworcDIuc2V0QXR0cmlidXRlKCJjb250ZW50RWRpdGFibGUiLCAidHJ1
ZSIpOworc2hvdWxkQmUoJ3AyLmNvbnRlbnRFZGl0YWJsZScsICcidHJ1ZSInKTsKK3Nob3VsZEJl
KCdwMi5pc0NvbnRlbnRFZGl0YWJsZScsICd0cnVlJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShQMiwgIiIpLmdldFByb3BlcnR5VmFsdWUoIi13ZWJr
aXQtdXNlci1tb2RpZnkiKScsICcicmVhZC13cml0ZSInKTsKKworZGl2My5zZXRBdHRyaWJ1dGUo
ImNvbnRlbnRFZGl0YWJsZSIsICJmYWxzZSIpOworc2hvdWxkQmUoJ2RpdjMuY29udGVudEVkaXRh
YmxlJywgJyJmYWxzZSInKTsKK3Nob3VsZEJlKCdkaXYzLmlzQ29udGVudEVkaXRhYmxlJywgJ2Zh
bHNlJyk7CitzaG91bGRCZSgnZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShE
aXYzLCAiIikuZ2V0UHJvcGVydHlWYWx1ZSgiLXdlYmtpdC11c2VyLW1vZGlmeSIpJywgJyJyZWFk
LW9ubHkiJyk7CisKK3A0LnNldEF0dHJpYnV0ZSgiY29udGVudEVkaXRhYmxlIiwgImZhbHNlIik7
CitzaG91bGRCZSgncDQuY29udGVudEVkaXRhYmxlJywgJyJmYWxzZSInKTsKK3Nob3VsZEJlKCdw
NC5pc0NvbnRlbnRFZGl0YWJsZScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoUDQsICIiKS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0
LXVzZXItbW9kaWZ5IiknLCAnInJlYWQtb25seSInKTsKKword2luZG93LnN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>