<?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>29523</bug_id>
          
          <creation_ts>2009-09-19 14:50:47 -0700</creation_ts>
          <short_desc>[XSSAuditor] JavaScript URLs that are URL-encoded twice can by bypass the XSSAuditor</short_desc>
          <delta_ts>2009-09-23 11:22:07 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://eaea.sirdarckcat.net/xss.php?html_xss=&lt;iframe+src=&quot;javascript:&apos;1%25251&apos;;alert(document.domain)&quot;&gt;</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>XSSAuditor</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29278</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>mario.heiderich</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>148532</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-19 14:50:47 -0700</bug_when>
    <thetext>The method FrameLoader::executeIfJavaScriptURL decodes the URL escape sequences in a JavaScript URL before it is eventually passed to the XSSAuditor. Because the XSSAuditor also decodes the URL escape sequences as part of its canonicalization, the double decoding of a JavaScript URL would not match the canonicalization of the input parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148533</commentid>
    <comment_count>1</comment_count>
      <attachid>39824</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-19 14:52:53 -0700</bug_when>
    <thetext>Created attachment 39824
Patch with test cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148537</commentid>
    <comment_count>2</comment_count>
      <attachid>39824</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-19 15:41:45 -0700</bug_when>
    <thetext>Comment on attachment 39824
Patch with test cases

+ m_frame-&gt;script()-&gt;isEnabled() &amp;&amp; !m_frame-&gt;script()-&gt;isPaused()

Why did we add these conditions that weren&apos;t there before?

Can we remove any of the other instances of canEvaluateJavaScriptURL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148538</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-19 16:15:07 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 39824 [details])
&gt; + m_frame-&gt;script()-&gt;isEnabled() &amp;&amp; !m_frame-&gt;script()-&gt;isPaused()
&gt; 
&gt; Why did we add these conditions that weren&apos;t there before?

This is an optimization.

I added these so that we can avoid calling the XSSAuditor when scripts aren&apos;t enabled or paused. Notice, these cases are checked in FrameLoader::executeScript and at present (i.e. without this patch) the XSSAuditor is only called after these cases are checked.

Because we now call the XSSAuditor in FrameLoader::executeIfJavaScriptURL, in particular before calling executeScript, we can save some processing time/function call, by only calling the XSSAuditor when scripts are enabled and not paused.

&gt; Can we remove any of the other instances of canEvaluateJavaScriptURL?

Yes, I can clean up ScriptSourceController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148539</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-19 16:15:50 -0700</bug_when>
    <thetext>I meant, cleanup ScriptController.

(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 39824 [details] [details])
&gt; &gt; + m_frame-&gt;script()-&gt;isEnabled() &amp;&amp; !m_frame-&gt;script()-&gt;isPaused()
&gt; &gt; 
&gt; &gt; Why did we add these conditions that weren&apos;t there before?
&gt; 
&gt; This is an optimization.
&gt; 
&gt; I added these so that we can avoid calling the XSSAuditor when scripts aren&apos;t
&gt; enabled or paused. Notice, these cases are checked in
&gt; FrameLoader::executeScript and at present (i.e. without this patch) the
&gt; XSSAuditor is only called after these cases are checked.
&gt; 
&gt; Because we now call the XSSAuditor in FrameLoader::executeIfJavaScriptURL, in
&gt; particular before calling executeScript, we can save some processing
&gt; time/function call, by only calling the XSSAuditor when scripts are enabled and
&gt; not paused.
&gt; 
&gt; &gt; Can we remove any of the other instances of canEvaluateJavaScriptURL?
&gt; 
&gt; Yes, I can clean up ScriptSourceController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148540</commentid>
    <comment_count>5</comment_count>
      <attachid>39826</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-19 16:17:22 -0700</bug_when>
    <thetext>Created attachment 39826
Patch with test cases

Cleaned up ScriptController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148541</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-19 17:46:17 -0700</bug_when>
    <thetext>&gt; This is an optimization.

I think this optimization might be slightly premature.  Those cases aren&apos;t very common, and the added complexity probably isn&apos;t worth it.

Other than that, the patch looks good.  Can you post a version without these checks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148544</commentid>
    <comment_count>7</comment_count>
      <attachid>39828</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-19 17:55:38 -0700</bug_when>
    <thetext>Created attachment 39828
Patch with test cases

On Adam&apos;s remarks, removed checks m_frame-&gt;script()-&gt;isEnabled(),  m_frame-&gt;script()-&gt;isPaused() from patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148546</commentid>
    <comment_count>8</comment_count>
      <attachid>39828</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-19 17:57:40 -0700</bug_when>
    <thetext>Comment on attachment 39828
Patch with test cases

Awesome.  Thanks Dan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149309</commentid>
    <comment_count>9</comment_count>
      <attachid>39828</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-22 20:14:30 -0700</bug_when>
    <thetext>Comment on attachment 39828
Patch with test cases

Rejecting patch 39828 from commit-queue.

This patch will require manual commit. Failed to run &quot;[&apos;svn&apos;, &apos;commit&apos;, &apos;-m&apos;, &apos;2009-09-22  Daniel Bates  &lt;dbates@webkit.org&gt;\n\n        Reviewed by Adam Barth.\n\n        https://bugs.webkit.org/show_bug.cgi?id=29523\n        \n        Fixes an issue where a JavaScript URL that was URL-encoded twice can bypass the\n        XSSAuditor.\n        \n        The method FrameLoader::executeIfJavaScriptURL decodes the URL escape \n        sequences in a JavaScript URL before it is eventually passed to the XSSAuditor.\n        Because the XSSAuditor also decodes the URL escape sequences as part of its\n        canonicalization, the double decoding of a JavaScript URL would\n        not match the canonicalization of the input parameters.\n\n        Tests: http/tests/security/xssAuditor/iframe-javascript-url-url-encoded.html\n               http/tests/security/xssAuditor/javascript-link-url-encoded.html\n\n        * bindings/js/ScriptController.cpp:\n        (WebCore::ScriptController::evaluate): Moved call to \n        XSSAuditor::canEvaluateJavaScriptURL into FrameLoader::executeIfJavaScriptURL.\n        * bindings/v8/ScriptController.cpp:\n        (WebCore::ScriptController::evaluate): Ditto.\n        * loader/FrameLoader.cpp:\n        (WebCore::FrameLoader::executeIfJavaScriptURL): Modified to call \n        XSSAuditor::canEvaluateJavaScriptURL on the JavaScript URL before it is\n        decoded.\n2009-09-22  Daniel Bates  &lt;dbates@webkit.org&gt;\n\n        Reviewed by Adam Barth.\n\n        https://bugs.webkit.org/show_bug.cgi?id=29523\n        \n        Tests that JavaScript URLs that were URL-encoded twice do not bypass the XSSAuditor.\n\n        * http/tests/security/xssAuditor/iframe-javascript-url-url-encoded-expected.txt: Added.\n        * http/tests/security/xssAuditor/iframe-javascript-url-url-encoded.html: Added.\n        * http/tests/security/xssAuditor/javascript-link-url-encoded-expected.txt: Added.\n        * http/tests/security/xssAuditor/javascript-link-url-encoded.html: Added.\n&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149458</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-23 11:21:17 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/http/tests/security/xssAuditor/iframe-javascript-url-url-encoded-expected.txt
Adding         LayoutTests/http/tests/security/xssAuditor/iframe-javascript-url-url-encoded.html
Adding         LayoutTests/http/tests/security/xssAuditor/javascript-link-url-encoded-expected.txt
Adding         LayoutTests/http/tests/security/xssAuditor/javascript-link-url-encoded.html
Sending        WebCore/ChangeLog
Sending        WebCore/bindings/js/ScriptController.cpp
Sending        WebCore/bindings/v8/ScriptController.cpp
Sending        WebCore/loader/FrameLoader.cpp
Transmitting file data .........
Committed revision 48680.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149460</commentid>
    <comment_count>11</comment_count>
      <attachid>39828</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-09-23 11:22:07 -0700</bug_when>
    <thetext>Comment on attachment 39828
Patch with test cases

Clearing review and commit flags</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39824</attachid>
            <date>2009-09-19 14:52:53 -0700</date>
            <delta_ts>2009-09-19 16:17:22 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug29523.patch</filename>
            <type>text/plain</type>
            <size>5705</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODU2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDktMDktMTkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUyMworICAgICAgICAKKyAg
ICAgICAgRml4ZXMgYW4gaXNzdWUgd2hlcmUgYSBKYXZhU2NyaXB0IFVSTCB0aGF0IHdhcyBVUkwt
ZW5jb2RlZCB0d2ljZSBjYW4gYnlwYXNzIHRoZQorICAgICAgICBYU1NBdWRpdG9yLgorICAgICAg
ICAKKyAgICAgICAgVGhlIG1ldGhvZCBGcmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVS
TCBkZWNvZGVzIHRoZSBVUkwgZXNjYXBlIAorICAgICAgICBzZXF1ZW5jZXMgaW4gYSBKYXZhU2Ny
aXB0IFVSTCBiZWZvcmUgaXQgaXMgZXZlbnR1YWxseSBwYXNzZWQgdG8gdGhlIFhTU0F1ZGl0b3Iu
CisgICAgICAgIEJlY2F1c2UgdGhlIFhTU0F1ZGl0b3IgYWxzbyBkZWNvZGVzIHRoZSBVUkwgZXNj
YXBlIHNlcXVlbmNlcyBhcyBwYXJ0IG9mIGl0cworICAgICAgICBjYW5vbmljYWxpemF0aW9uLCB0
aGUgZG91YmxlIGRlY29kaW5nIG9mIGEgSmF2YVNjcmlwdCBVUkwgd291bGQKKyAgICAgICAgbm90
IG1hdGNoIHRoZSBjYW5vbmljYWxpemF0aW9uIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFz
Y3JpcHQtdXJsLXVybC1lbmNvZGVkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstdXJsLWVuY29kZWQuaHRtbAorCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKTogTW9kaWZpZWQgdG8gY2FsbCAKKyAgICAgICAg
WFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGVKYXZhU2NyaXB0VVJMIG9uIHRoZSBKYXZhU2NyaXB0IFVS
TCBiZWZvcmUgaXQgaXMKKyAgICAgICAgZGVjb2RlZC4KKwogMjAwOS0wOS0xOSAgRGFuaWVsIEJh
dGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ4NTY0KQorKysgV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDMsOCArNzQzLDEw
IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwKIAogICAgIGNvbnN0
IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsK
IAotICAgIFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0cmlu
ZygpLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Ci0gICAgU2NyaXB0VmFsdWUg
cmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHVzZXJHZXN0dXJlKTsKKyAgICBTdHJpbmcg
c2NyaXB0ID0gdXJsLnN0cmluZygpLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKTsK
KyAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7CisgICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgpLT5pc0Vu
YWJsZWQoKSAmJiAhbV9mcmFtZS0+c2NyaXB0KCktPmlzUGF1c2VkKCkgJiYgbV9mcmFtZS0+c2Ny
aXB0KCktPnhzc0F1ZGl0b3IoKS0+Y2FuRXZhbHVhdGVKYXZhU2NyaXB0VVJMKHNjcmlwdCkpCisg
ICAgICAgIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHNj
cmlwdCksIHVzZXJHZXN0dXJlKTsKIAogICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7CiAgICAgaWYg
KCFyZXN1bHQuZ2V0U3RyaW5nKHNjcmlwdFJlc3VsdCkpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODU2
NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDA5LTA5LTE5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk1MjMKKyAgICAgICAgCisgICAgICAgIFRlc3Rz
IHRoYXQgSmF2YVNjcmlwdCBVUkxzIHRoYXQgd2VyZSBVUkwtZW5jb2RlZCB0d2ljZSBkbyBub3Qg
YnlwYXNzIHRoZSBYU1NBdWRpdG9yLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUt
amF2YXNjcmlwdC11cmwtdXJsLWVuY29kZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9qYXZhc2NyaXB0LWxpbmstdXJsLWVuY29kZWQuaHRtbDogQWRkZWQuCisKIDIwMDktMDktMTkg
IERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXVybC1lbmNvZGVkLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZy
YW1lLWphdmFzY3JpcHQtdXJsLXVybC1lbmNvZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2
YXNjcmlwdC11cmwtdXJsLWVuY29kZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBK
YXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1
ZXN0LgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9pZnJhbWUtamF2YXNjcmlwdC11cmwtdXJsLWVuY29kZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3Jp
cHQtdXJsLXVybC1lbmNvZGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXVybC1lbmNv
ZGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9xPSUzQ2lmcmFtZSUyMHNy
Yz1qYXZhc2NyaXB0JTNBJTI3MSUyNTI1MjUxJTI3JTNCYWxlcnQlMjhkb2N1bWVudC5kb21haW4l
MjklM0UiPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLXVybC1lbmNvZGVk
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLXVybC1lbmNvZGVkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9qYXZhc2NyaXB0LWxpbmstdXJsLWVuY29kZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1
dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhp
biByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9qYXZhc2NyaXB0LWxpbmstdXJsLWVuY29kZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5r
LXVybC1lbmNvZGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLXVybC1lbmNvZGVkLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9y
RW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNy
Yz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2Vj
aG8taW50ZXJ0YWctY2xpY2stYW5kLW5vdGlmeS5wbD9lbG1pZD1hbmNob3JMaW5rJnE9JTNDYStp
ZCUzRGFuY2hvckxpbmsraHJlZiUzRGphdmFzY3JpcHQlM0ElMjcxJTI1MjUyNTElMjclM0JhbGVy
dCUyOC8lMjZYU1MvJTI5JTNFdGVzdCUzQy9hJTNFJz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="20960"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39826</attachid>
            <date>2009-09-19 16:17:22 -0700</date>
            <delta_ts>2009-09-19 17:55:38 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug29523_1.patch</filename>
            <type>text/plain</type>
            <size>7629</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODU2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDktMTkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUyMworICAgICAgICAKKyAg
ICAgICAgRml4ZXMgYW4gaXNzdWUgd2hlcmUgYSBKYXZhU2NyaXB0IFVSTCB0aGF0IHdhcyBVUkwt
ZW5jb2RlZCB0d2ljZSBjYW4gYnlwYXNzIHRoZQorICAgICAgICBYU1NBdWRpdG9yLgorICAgICAg
ICAKKyAgICAgICAgVGhlIG1ldGhvZCBGcmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVS
TCBkZWNvZGVzIHRoZSBVUkwgZXNjYXBlIAorICAgICAgICBzZXF1ZW5jZXMgaW4gYSBKYXZhU2Ny
aXB0IFVSTCBiZWZvcmUgaXQgaXMgZXZlbnR1YWxseSBwYXNzZWQgdG8gdGhlIFhTU0F1ZGl0b3Iu
CisgICAgICAgIEJlY2F1c2UgdGhlIFhTU0F1ZGl0b3IgYWxzbyBkZWNvZGVzIHRoZSBVUkwgZXNj
YXBlIHNlcXVlbmNlcyBhcyBwYXJ0IG9mIGl0cworICAgICAgICBjYW5vbmljYWxpemF0aW9uLCB0
aGUgZG91YmxlIGRlY29kaW5nIG9mIGEgSmF2YVNjcmlwdCBVUkwgd291bGQKKyAgICAgICAgbm90
IG1hdGNoIHRoZSBjYW5vbmljYWxpemF0aW9uIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFz
Y3JpcHQtdXJsLXVybC1lbmNvZGVkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstdXJsLWVuY29kZWQuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6IE1vdmVkIGNhbGwgdG8gCisgICAgICAgIFhT
U0F1ZGl0b3I6OmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTCBpbnRvIEZyYW1lTG9hZGVyOjpleGVj
dXRlSWZKYXZhU2NyaXB0VVJMLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOiBE
aXR0by4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOiBNb2RpZmllZCB0byBjYWxs
IAorICAgICAgICBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwgb24gdGhlIEph
dmFTY3JpcHQgVVJMIGJlZm9yZSBpdCBpcworICAgICAgICBkZWNvZGVkLgorCiAyMDA5LTA5LTE5
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xp
dmVyIEh1bnQuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDQ4NTY0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTIgKzg1LDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0
Q29udHJvbGxlcjo6ZXZhbHVhdGUoYwogICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpzU291cmNlQ29k
ZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCk7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGpz
U291cmNlQ29kZS5wcm92aWRlcigpLT51cmwoKTsKICAgICAKLSAgICBpZiAoc291cmNlVVJMLmlz
TnVsbCgpICYmICFtX1hTU0F1ZGl0b3ItPmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTChzb3VyY2VD
b2RlLnNvdXJjZSgpKSkgewotICAgICAgICAvLyBUaGlzIEphdmFTY3JpcHQgVVJMIGlzIG5vdCBz
YWZlIHRvIGJlIGV2YWx1YXRlZC4KLSAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkgJiYgIW1fWFNTQXVkaXRvci0+Y2FuRXZh
bHVhdGUoc291cmNlQ29kZS5zb3VyY2UoKSkpIHsKKyAgICBpZiAoIW1fWFNTQXVkaXRvci0+Y2Fu
RXZhbHVhdGUoc291cmNlQ29kZS5zb3VyY2UoKSkpIHsKICAgICAgICAgLy8gVGhpcyBzY3JpcHQg
aXMgbm90IHNhZmUgdG8gYmUgZXZhbHVhdGVkLgogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNDg1NjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTIgKzIwMCw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV2YWx1YXRlKGMKIHsKICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNlQ29k
ZS51cmwoKTsKICAgICAKLSAgICBpZiAoc291cmNlVVJMLmlzTnVsbCgpICYmICFtX1hTU0F1ZGl0
b3ItPmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTChzb3VyY2VDb2RlLnNvdXJjZSgpKSkgewotICAg
ICAgICAvLyBUaGlzIEphdmFTY3JpcHQgVVJMIGlzIG5vdCBzYWZlIHRvIGJlIGV2YWx1YXRlZC4K
LSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Ci0gICAgfQotICAgIAotICAgIGlmICghc291
cmNlVVJMLmlzTnVsbCgpICYmICFtX1hTU0F1ZGl0b3ItPmNhbkV2YWx1YXRlKHNvdXJjZUNvZGUu
c291cmNlKCkpKSB7CisgICAgaWYgKCFtX1hTU0F1ZGl0b3ItPmNhbkV2YWx1YXRlKHNvdXJjZUNv
ZGUuc291cmNlKCkpKSB7CiAgICAgICAgIC8vIFRoaXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGJl
IGV2YWx1YXRlZC4KICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiAgICAgfQpJbmRleDog
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNDg1NjQpCisrKyBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0Myw4ICs3NDMsMTAgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTAogCiAgICAgY29uc3QgaW50IGphdmFz
Y3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCi0gICAgU3Ry
aW5nIHNjcmlwdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkuc3Vic3Ry
aW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpKTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBl
eGVjdXRlU2NyaXB0KHNjcmlwdCwgdXNlckdlc3R1cmUpOworICAgIFN0cmluZyBzY3JpcHQgPSB1
cmwuc3RyaW5nKCkuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpOworICAgIFNjcmlw
dFZhbHVlIHJlc3VsdDsKKyAgICBpZiAobV9mcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpICYm
ICFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNQYXVzZWQoKSAmJiBtX2ZyYW1lLT5zY3JpcHQoKS0+eHNz
QXVkaXRvcigpLT5jYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc2NyaXB0KSkKKyAgICAgICAgcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc2NyaXB0KSwgdXNl
ckdlc3R1cmUpOwogCiAgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKICAgICBpZiAoIXJlc3VsdC5n
ZXRTdHJpbmcoc2NyaXB0UmVzdWx0KSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4NTY2KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDkt
MDktMTkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yOTUyMworICAgICAgICAKKyAgICAgICAgVGVzdHMgdGhhdCBKYXZh
U2NyaXB0IFVSTHMgdGhhdCB3ZXJlIFVSTC1lbmNvZGVkIHR3aWNlIGRvIG5vdCBieXBhc3MgdGhl
IFhTU0F1ZGl0b3IuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
aWZyYW1lLWphdmFzY3JpcHQtdXJsLXVybC1lbmNvZGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0
LXVybC11cmwtZW5jb2RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLXVybC1lbmNvZGVkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3Jp
cHQtbGluay11cmwtZW5jb2RlZC5odG1sOiBBZGRlZC4KKwogMjAwOS0wOS0xOSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1q
YXZhc2NyaXB0LXVybC11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0
LXVybC11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXVy
bC1lbmNvZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3Jp
cHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFz
Y3JpcHQtdXJsLXVybC1lbmNvZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC11cmwtZW5j
b2RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC11cmwtZW5jb2RlZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
cmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT0lM0NpZnJhbWUlMjBzcmM9amF2YXNjcmlwdCUz
QSUyNzElMjUyNTI1MSUyNyUzQmFsZXJ0JTI4ZG9jdW1lbnQuZG9tYWluJTI5JTNFIj4KKzwvaWZy
YW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1s
aW5rLXVybC1lbmNvZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlw
dCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKwor
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNj
cmlwdC1saW5rLXVybC1lbmNvZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWNs
aWNrLWFuZC1ub3RpZnkucGw/ZWxtaWQ9YW5jaG9yTGluayZxPSUzQ2EraWQlM0RhbmNob3JMaW5r
K2hyZWYlM0RqYXZhc2NyaXB0JTNBJTI3MSUyNTI1MjUxJTI3JTNCYWxlcnQlMjgvJTI2WFNTLyUy
OSUzRXRlc3QlM0MvYSUzRSc+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39828</attachid>
            <date>2009-09-19 17:55:38 -0700</date>
            <delta_ts>2009-09-23 11:22:07 -0700</delta_ts>
            <desc>Patch with test cases</desc>
            <filename>Bug29523_2.patch</filename>
            <type>text/plain</type>
            <size>7569</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODU2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDktMTkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUyMworICAgICAgICAKKyAg
ICAgICAgRml4ZXMgYW4gaXNzdWUgd2hlcmUgYSBKYXZhU2NyaXB0IFVSTCB0aGF0IHdhcyBVUkwt
ZW5jb2RlZCB0d2ljZSBjYW4gYnlwYXNzIHRoZQorICAgICAgICBYU1NBdWRpdG9yLgorICAgICAg
ICAKKyAgICAgICAgVGhlIG1ldGhvZCBGcmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVS
TCBkZWNvZGVzIHRoZSBVUkwgZXNjYXBlIAorICAgICAgICBzZXF1ZW5jZXMgaW4gYSBKYXZhU2Ny
aXB0IFVSTCBiZWZvcmUgaXQgaXMgZXZlbnR1YWxseSBwYXNzZWQgdG8gdGhlIFhTU0F1ZGl0b3Iu
CisgICAgICAgIEJlY2F1c2UgdGhlIFhTU0F1ZGl0b3IgYWxzbyBkZWNvZGVzIHRoZSBVUkwgZXNj
YXBlIHNlcXVlbmNlcyBhcyBwYXJ0IG9mIGl0cworICAgICAgICBjYW5vbmljYWxpemF0aW9uLCB0
aGUgZG91YmxlIGRlY29kaW5nIG9mIGEgSmF2YVNjcmlwdCBVUkwgd291bGQKKyAgICAgICAgbm90
IG1hdGNoIHRoZSBjYW5vbmljYWxpemF0aW9uIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFz
Y3JpcHQtdXJsLXVybC1lbmNvZGVkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstdXJsLWVuY29kZWQuaHRtbAorCisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6IE1vdmVkIGNhbGwgdG8gCisgICAgICAgIFhT
U0F1ZGl0b3I6OmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTCBpbnRvIEZyYW1lTG9hZGVyOjpleGVj
dXRlSWZKYXZhU2NyaXB0VVJMLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOiBE
aXR0by4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOiBNb2RpZmllZCB0byBjYWxs
IAorICAgICAgICBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwgb24gdGhlIEph
dmFTY3JpcHQgVVJMIGJlZm9yZSBpdCBpcworICAgICAgICBkZWNvZGVkLgorCiAyMDA5LTA5LTE5
ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA0ODU2MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDEyICs4NSw3IEBAIFNjcmlwdFZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGMKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJj
ZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VVUkwg
PSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7CiAgICAgCi0gICAgaWYgKHNvdXJjZVVS
TC5pc051bGwoKSAmJiAhbV9YU1NBdWRpdG9yLT5jYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc291
cmNlQ29kZS5zb3VyY2UoKSkpIHsKLSAgICAgICAgLy8gVGhpcyBKYXZhU2NyaXB0IFVSTCBpcyBu
b3Qgc2FmZSB0byBiZSBldmFsdWF0ZWQuCi0gICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAg
fQotICAgIAotICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpICYmICFtX1hTU0F1ZGl0b3ItPmNh
bkV2YWx1YXRlKHNvdXJjZUNvZGUuc291cmNlKCkpKSB7CisgICAgaWYgKCFtX1hTU0F1ZGl0b3It
PmNhbkV2YWx1YXRlKHNvdXJjZUNvZGUuc291cmNlKCkpKSB7CiAgICAgICAgIC8vIFRoaXMgc2Ny
aXB0IGlzIG5vdCBzYWZlIHRvIGJlIGV2YWx1YXRlZC4KICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDQ4NTYzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDEyICsyMDAsNyBAQCBTY3JpcHRWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZShjCiB7CiAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJj
ZUNvZGUudXJsKCk7CiAgICAgCi0gICAgaWYgKHNvdXJjZVVSTC5pc051bGwoKSAmJiAhbV9YU1NB
dWRpdG9yLT5jYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc291cmNlQ29kZS5zb3VyY2UoKSkpIHsK
LSAgICAgICAgLy8gVGhpcyBKYXZhU2NyaXB0IFVSTCBpcyBub3Qgc2FmZSB0byBiZSBldmFsdWF0
ZWQuCi0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwotICAgIH0KLSAgICAKLSAgICBpZiAo
IXNvdXJjZVVSTC5pc051bGwoKSAmJiAhbV9YU1NBdWRpdG9yLT5jYW5FdmFsdWF0ZShzb3VyY2VD
b2RlLnNvdXJjZSgpKSkgeworICAgIGlmICghbV9YU1NBdWRpdG9yLT5jYW5FdmFsdWF0ZShzb3Vy
Y2VDb2RlLnNvdXJjZSgpKSkgewogICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0
byBiZSBldmFsdWF0ZWQuCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogICAgIH0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ4NTYzKQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDMsOCArNzQzLDEwIEBAIGJv
b2wgRnJhbWVMb2FkZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwKIAogICAgIGNvbnN0IGludCBq
YXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKIAotICAg
IFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0cmluZygpLnN1
YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0
ID0gZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHVzZXJHZXN0dXJlKTsKKyAgICBTdHJpbmcgc2NyaXB0
ID0gdXJsLnN0cmluZygpLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKTsKKyAgICBT
Y3JpcHRWYWx1ZSByZXN1bHQ7CisgICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9y
KCktPmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTChzY3JpcHQpKQorICAgICAgICByZXN1bHQgPSBl
eGVjdXRlU2NyaXB0KGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhzY3JpcHQpLCB1c2VyR2VzdHVy
ZSk7CiAKICAgICBTdHJpbmcgc2NyaXB0UmVzdWx0OwogICAgIGlmICghcmVzdWx0LmdldFN0cmlu
ZyhzY3JpcHRSZXN1bHQpKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDg1NjQpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wOS0xOSAg
RGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI5NTIzCisgICAgICAgIAorICAgICAgICBUZXN0cyB0aGF0IEphdmFTY3JpcHQg
VVJMcyB0aGF0IHdlcmUgVVJMLWVuY29kZWQgdHdpY2UgZG8gbm90IGJ5cGFzcyB0aGUgWFNTQXVk
aXRvci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUt
amF2YXNjcmlwdC11cmwtdXJsLWVuY29kZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXVy
bC1lbmNvZGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9qYXZhc2NyaXB0LWxpbmstdXJsLWVuY29kZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5r
LXVybC1lbmNvZGVkLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA5LTE5ICBEYW5pZWwgQmF0ZXMgIDxk
YmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZh
c2NyaXB0LXVybC11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVy
bC11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLXVybC1l
bmNvZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQu
IFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3Jp
cHQtdXJsLXVybC1lbmNvZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC11cmwtZW5jb2Rl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC11cmwtZW5jb2RlZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRY
U1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVz
b3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT0lM0NpZnJhbWUlMjBzcmM9amF2YXNjcmlwdCUzQSUy
NzElMjUyNTI1MSUyNyUzQmFsZXJ0JTI4ZG9jdW1lbnQuZG9tYWluJTI5JTNFIj4KKzwvaWZyYW1l
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2ph
dmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5r
LXVybC1lbmNvZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlw
dC1saW5rLXVybC1lbmNvZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2phdmFzY3JpcHQtbGluay11cmwtZW5jb2RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWNsaWNr
LWFuZC1ub3RpZnkucGw/ZWxtaWQ9YW5jaG9yTGluayZxPSUzQ2EraWQlM0RhbmNob3JMaW5rK2hy
ZWYlM0RqYXZhc2NyaXB0JTNBJTI3MSUyNTI1MjUxJTI3JTNCYWxlcnQlMjgvJTI2WFNTLyUyOSUz
RXRlc3QlM0MvYSUzRSc+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>