<?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>37981</bug_id>
          
          <creation_ts>2010-04-22 01:59:30 -0700</creation_ts>
          <short_desc>implement getData(&apos;text/html&apos;) for webkit win</short_desc>
          <delta_ts>2010-07-28 16:21:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jianli</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>215779</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-22 01:59:30 -0700</bug_when>
    <thetext>implement getData(&apos;text/html&apos;) for webkit win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215780</commentid>
    <comment_count>1</comment_count>
      <attachid>54041</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-22 01:59:54 -0700</bug_when>
    <thetext>Created attachment 54041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215781</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-22 02:03:12 -0700</bug_when>
    <thetext>Attachment 54041 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/win/ClipboardUtilitiesWin.cpp:158:  CF_HTMLToMarkup is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/win/ClipboardUtilitiesWin.cpp:158:  cf_html is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/win/ClipboardUtilitiesWin.cpp:410:  getCF_HTML is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/win/ClipboardUtilitiesWin.cpp:419:  cf_html is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/win/ClipboardUtilitiesWin.h:68:  getCF_HTML is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215782</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-22 02:03:50 -0700</bug_when>
    <thetext>This is the same as bug 19893, but only an implementation for Safari Win.

A couple notes:
- Neither mozilla nor IE implement this
- It first provides text/html data, then grabs cf_html data, which is more common on Windows.  Not sure if the order should change or if it should only return text/html data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215997</commentid>
    <comment_count>4</comment_count>
      <attachid>54041</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-22 12:02:26 -0700</bug_when>
    <thetext>Comment on attachment 54041
Patch

WebCore/platform/win/ClipboardUtilitiesWin.cpp:158
 +  static String CF_HTMLToMarkup(const String&amp; cf_html)
The function name violates WebKit coding style. Please remove &quot;_&quot;. Also, the comment says &quot;find&quot; while the function name suggests &quot;convert&quot;. Could you please change either the comment or the function name to make them consistent?

Please also capitalize the comment and end it with period.

LayoutTests/ChangeLog:5
 +          implement getData(&apos;text/html&apos;) for webkit win
Please capitalize the sentence.

LayoutTests/platform/win/Skipped: 
 +  # Need to handle getting text/html in ClipboardWin::getData.
Are you going to add this soon? If not, please file a bug to keep track of it.

WebCore/ChangeLog:5
 +          implement getData(&apos;text/html&apos;) for webkit win
Please capitalize the sentence. You may also need to update the bug title for this.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:158
 +  static String CF_HTMLToMarkup(const String&amp; cf_html)
Please change the parameter name to match the WebKit coding style.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:400
 +          // raw html
This comment is too simple.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:401
 +          UChar* data = (UChar*)GlobalLock(store.hGlobal);
Please change to use C++ style cast.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:404
 +          ReleaseStgMedium(&amp;store);
Per MSDN, we need to check for pUnkForRelease
    if pUnkForRelease is NULL, the receiver of the medium is responsible for releasing it; otherwise, pUnkForRelease points to the IUnknown on the appropriate object so its Release method can be called.


WebCore/platform/win/ClipboardUtilitiesWin.cpp:441
 +  PassRefPtr&lt;DocumentFragment&gt; fragmentFromCF_HTML(Document* doc, const String&amp; cf_html)
Please also update the declaration in the old code to match the WebKit coding style.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:417
 +          char* data = (char*)GlobalLock(store.hGlobal);
Please change to use C++ style cast.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:410
 +  String getCF_HTML(IDataObject* data, bool&amp; success)
This function is very similar to getTextHTML. Is it possible to merge them into one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216237</commentid>
    <comment_count>5</comment_count>
      <attachid>54123</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-22 20:05:29 -0700</bug_when>
    <thetext>Created attachment 54123
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216238</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-22 20:08:45 -0700</bug_when>
    <thetext>Attachment 54123 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 129, in &lt;module&gt;
    main()
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 116, in main
    patch = checkout.create_patch()
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style_references.py&quot;, line 79, in create_patch
    return self._scm.create_patch()
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/common/checkout/scm.py&quot;, line 508, in create_patch
    return run_command([&apos;git&apos;, &apos;diff&apos;, &apos;--binary&apos;, &apos;HEAD&apos;])
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/common/system/executive.py&quot;, line 85, in run_command
    return Executive().run_command(*args, **kwargs)
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/common/system/executive.py&quot;, line 215, in run_command
    output = output.decode(&quot;utf-8&quot;)
  File &quot;/usr/lib/python2.6/encodings/utf_8.py&quot;, line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: &apos;utf8&apos; codec can&apos;t decode byte 0xa0 in position 2496: unexpected code byte


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216242</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-22 20:12:36 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 54041 [details])
&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:158
&gt;  +  static String CF_HTMLToMarkup(const String&amp; cf_html)
&gt; The function name violates WebKit coding style. Please remove &quot;_&quot;. Also, the
&gt; comment says &quot;find&quot; while the function name suggests &quot;convert&quot;. Could you
&gt; please change either the comment or the function name to make them consistent?

Renamed the function to extractMarkupFromCFHTML.

&gt; LayoutTests/ChangeLog:5
&gt;  +          implement getData(&apos;text/html&apos;) for webkit win
&gt; Please capitalize the sentence.
&gt; 
&gt; LayoutTests/platform/win/Skipped: 
&gt;  +  # Need to handle getting text/html in ClipboardWin::getData.
&gt; Are you going to add this soon? If not, please file a bug to keep track of it.

That&apos;s what this patch fixes and what this bug is about. :)


&gt; WebCore/ChangeLog:5
&gt;  +          implement getData(&apos;text/html&apos;) for webkit win
&gt; Please capitalize the sentence. You may also need to update the bug title for
&gt; this.

Done.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:158
&gt;  +  static String CF_HTMLToMarkup(const String&amp; cf_html)
&gt; Please change the parameter name to match the WebKit coding style.

Done.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:400
&gt;  +          // raw html
&gt; This comment is too simple.

Removed.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:401
&gt;  +          UChar* data = (UChar*)GlobalLock(store.hGlobal);
&gt; Please change to use C++ style cast.

Done.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:404
&gt;  +          ReleaseStgMedium(&amp;store);
&gt; Per MSDN, we need to check for pUnkForRelease
&gt;     if pUnkForRelease is NULL, the receiver of the medium is responsible for
&gt; releasing it; otherwise, pUnkForRelease points to the IUnknown on the
&gt; appropriate object so its Release method can be called.

Do you have a link to the documentation where we need to do this?  I was just moving the existing code, so it wasn&apos;t doing this before.  I also don&apos;t see us doing this anywhere in Chromium&apos;s clipboard code.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:441
&gt;  +  PassRefPtr&lt;DocumentFragment&gt; fragmentFromCF_HTML(Document* doc, const
&gt; String&amp; cf_html)
&gt; Please also update the declaration in the old code to match the WebKit coding
&gt; style.

Done.  This caused the extra churn in PasteboardWin and ClipboardWin.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:417
&gt;  +          char* data = (char*)GlobalLock(store.hGlobal);
&gt; Please change to use C++ style cast.

Done.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:410
&gt;  +  String getCF_HTML(IDataObject* data, bool&amp; success)
&gt; This function is very similar to getTextHTML. Is it possible to merge them into
&gt; one?

It&apos;s tricky because one uses UChar* and the other uses char*.  Maybe you could use a template, but then there&apos;s the UTF8 conversion in the char* one.  I&apos;m not sure they&apos;re that similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216549</commentid>
    <comment_count>8</comment_count>
      <attachid>54123</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-23 13:57:54 -0700</bug_when>
    <thetext>Comment on attachment 54123
v2

LayoutTests/platform/win/editing/pasteboard/onpaste-text-html-expected.txt:1
 +  CONSOLE MESSAGE: line 21: text/plain: This test verifies that we can get text/html from the clipboard during an onpaste event. 
Why do we have a different expected result on Win? It seems that the 2nd and the 3d line are a little bit different. Can you investigate why causes the difference?

LayoutTests/platform/win/editing/pasteboard/onpaste-text-html-expected.txt:4
 +  Paste content in this div.This test verifies that we can get text/html from the clipboard during an onpaste event.Â 
Why do we have a garbage character &apos;Â&apos; at this line?

LayoutTests/platform/win/fast/events/ondrop-text-html-expected.txt:1
 +  CONSOLE MESSAGE: line 21: text/plain: This test verifies that we can get text/html from the drag object during an ondrop event. 
Why do we have a different expected result on Win?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216583</commentid>
    <comment_count>9</comment_count>
      <attachid>54123</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-23 15:14:14 -0700</bug_when>
    <thetext>Comment on attachment 54123
v2

platform/win/editing/pasteboard/onpaste-text-html-expected.txt appears to contain a latin1 space instead of a utf-8 space.  According to my research (see webkit-dev) expected.txt files should always be utf-8.  How did you generate this output?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216867</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-25 18:24:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 54123 [details])
&gt; platform/win/editing/pasteboard/onpaste-text-html-expected.txt appears to
&gt; contain a latin1 space instead of a utf-8 space.  According to my research (see
&gt; webkit-dev) expected.txt files should always be utf-8.  How did you generate
&gt; this output?

I ran run-webkit-tests.  There are a few existing layout tests that have this, which means most platforms seem to generate this in some cases (see attached list, although some are probably valid utf8).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216868</commentid>
    <comment_count>11</comment_count>
      <attachid>54250</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-25 18:25:31 -0700</bug_when>
    <thetext>Created attachment 54250
list of tests with \xa0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217400</commentid>
    <comment_count>12</comment_count>
      <attachid>54123</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-26 18:01:39 -0700</bug_when>
    <thetext>Comment on attachment 54123
v2

Resetting for review since plenty of existing results have \xa0 and this is needed for tests to pass.

To answer Jian&apos;s question, it&apos;s just how windows handles nbsp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219127</commentid>
    <comment_count>13</comment_count>
      <attachid>54123</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-29 11:51:42 -0700</bug_when>
    <thetext>Comment on attachment 54123
v2

LayoutTests/ChangeLog:6
 +          https://bugs.webkit.org/show_bug.cgi?id=37981
Please also mention that 2 layout tests are rebaselined due to the reason you spoke of.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:394
 +  String getTextHTML(IDataObject* data, bool&amp; success)
It might be better to define the function as:
  bool getTextHTML(IDataObject* data, String&amp; result)

WebCore/platform/win/ClipboardUtilitiesWin.cpp:409
 +  String getCFHTML(IDataObject* data, bool&amp; success)
ditto.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:466
 +      if (SUCCEEDED(data-&gt;GetData(htmlFormat(), &amp;store))) {
This and the following line seem to be identical to getCFHTML. Can you change to call the helper function?

WebCore/platform/win/PasteboardWin.cpp:295
 +              PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromCFHTML(frame-&gt;document(), cf_html);
Please also update the name &quot;cf_html&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253933</commentid>
    <comment_count>14</comment_count>
      <attachid>62115</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-20 14:47:53 -0700</bug_when>
    <thetext>Created attachment 62115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253993</commentid>
    <comment_count>15</comment_count>
      <attachid>62124</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-20 15:29:38 -0700</bug_when>
    <thetext>Created attachment 62124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254028</commentid>
    <comment_count>16</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-20 15:33:45 -0700</bug_when>
    <thetext>Ok, finally circling back to this patch.  I fixed the style in a separate change so this patch only has the changes necessary for enabling getData(&quot;text/html&quot;) on windows (Safari win).



(In reply to comment #13)
&gt; (From update of attachment 54123 [details])
&gt; LayoutTests/ChangeLog:6
&gt;  +          https://bugs.webkit.org/show_bug.cgi?id=37981
&gt; Please also mention that 2 layout tests are rebaselined due to the reason you spoke of.

This magically seems to work now, so no rebaselines.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:394
&gt;  +  String getTextHTML(IDataObject* data, bool&amp; success)
&gt; It might be better to define the function as:
&gt;   bool getTextHTML(IDataObject* data, String&amp; result)

I kept it this way to match the existing methods (getURL and getPlainText).

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:466
&gt;  +      if (SUCCEEDED(data-&gt;GetData(htmlFormat(), &amp;store))) {
&gt; This and the following line seem to be identical to getCFHTML. Can you change to call the helper function?

They&apos;re the same up until the call to extactMarkupFromCFHTML.  I could refactor the 5 lines before that into a function, but I&apos;m not sure there&apos;s much benefit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255055</commentid>
    <comment_count>17</comment_count>
      <attachid>62124</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-22 16:36:12 -0700</bug_when>
    <thetext>Comment on attachment 62124
Patch

&gt; +String urlToMarkup(const KURL&amp; url, const String&amp; title);

Was this accidental? I don&apos;t see it used anywhere.

&gt; &gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:466
&gt; &gt;  +      if (SUCCEEDED(data-&gt;GetData(htmlFormat(), &amp;store))) {
&gt; &gt; This and the following line seem to be identical to getCFHTML. Can you change to call the helper function?
&gt; 
&gt; They&apos;re the same up until the call to extactMarkupFromCFHTML.  I could refactor the 5 lines before that into a function, but I&apos;m not sure there&apos;s much benefit.

I almost always think it&apos;s worth pulling these sorts of things into a static helper function. But your call. If there&apos;s a bug in this in the future, it only needs to be fixed in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257235</commentid>
    <comment_count>18</comment_count>
      <attachid>62844</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-28 10:30:24 -0700</bug_when>
    <thetext>Created attachment 62844
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257424</commentid>
    <comment_count>19</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-28 16:21:35 -0700</bug_when>
    <thetext>Committed r64242: &lt;http://trac.webkit.org/changeset/64242&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54041</attachid>
            <date>2010-04-22 01:59:54 -0700</date>
            <delta_ts>2010-04-22 20:05:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37981-20100422175952.patch</filename>
            <type>text/plain</type>
            <size>8898</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NTE3YjgzLi45MDE4MmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDQt
MjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbXBsZW1lbnQgZ2V0RGF0YSgndGV4dC9odG1s
JykgZm9yIHdlYmtpdCB3aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM3OTgxCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAx
MC0wNC0yMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI1ODA2OS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXgg
ZmQ2NGY2Ni4uMTg4MGNiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTgzNiwxMCAr
ODM2LDYgQEAgZmFzdC9yZXBhaW50L292ZXJmbG93LXNjcm9sbC1ib2R5LWFwcGVhci5odG1sCiAj
IE5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gRHVtcFJlbmRlclRyZWUgdG8gaGFuZGxlIHNj
cm9sbGJhciBwb2xpY2UgY2hhbmdlcwogZmFzdC9vdmVyZmxvdy9zY3JvbGxiYXItcmVzdG9yZWQt
YW5kLXRoZW4tbG9ja2VkLmh0bWwKIAotIyBOZWVkIHRvIGhhbmRsZSBnZXR0aW5nIHRleHQvaHRt
bCBpbiBDbGlwYm9hcmRXaW46OmdldERhdGEuCi1lZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10
ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRtbC5odG1sCi0KICMgPGh0
dHA6Ly93ZWJraXQub3JnL2IvMzcwOTY+IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1p
ZnJhbWUtc3JjLWFsaWFzLmh0bWwgc29tZXRpbWVzIHRpbWVzIG91dCBvbiBXaW5kb3dzCiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtaWZyYW1lLXNyYy1hbGlhcy5odG1sCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJhNjEy
Ni4uNGY0MGYzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0yMiAgVG9ueSBDaGFuZyAgPHRvbnlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGltcGxlbWVudCBnZXREYXRhKCd0ZXh0L2h0bWwnKSBmb3Igd2Via2l0IHdpbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5ODEKKworICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0ZfSFRNTFRvTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRleHRIVE1M
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldENGX0hUTUwpOgorICAgICAgICAoV2ViQ29yZTo6ZnJh
Z21lbnRGcm9tQ0ZfSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpmcmFnbWVudEZyb21IVE1MKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmg6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRXaW46OmdldERhdGEpOgorCiAyMDEwLTA0LTIyICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjU4MDY5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5j
cHAKaW5kZXggNmY5NDc2YS4uYjg2ZDhhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0xNTQsNiArMTU0LDE3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZChWZWN0b3I8Y2hhcj4mIHZlY3RvciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAg
IHZlY3Rvci5hcHBlbmQoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAorLy8g
ZmluZCB0aGUgbWFya3VwIGJldHdlZW4gIjwhLS1TdGFydEZyYWdtZW50IC0tPiIgYW5kICI8IS0t
RW5kRnJhZ21lbnQgLS0+IiwgYWNjb3VudGluZyBmb3IgYnJvd3NlciBxdWlya3MKK3N0YXRpYyBT
dHJpbmcgQ0ZfSFRNTFRvTWFya3VwKGNvbnN0IFN0cmluZyYgY2ZfaHRtbCkKK3sKKyAgICB1bnNp
Z25lZCBtYXJrdXBTdGFydCA9IGNmX2h0bWwuZmluZCgiPGh0bWwiLCAwLCBmYWxzZSk7CisgICAg
dW5zaWduZWQgdGFnU3RhcnQgPSBjZl9odG1sLmZpbmQoInN0YXJ0ZnJhZ21lbnQiLCBtYXJrdXBT
dGFydCwgZmFsc2UpOworICAgIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQgPSBjZl9odG1sLmZpbmQo
Jz4nLCB0YWdTdGFydCkgKyAxOworICAgIHVuc2lnbmVkIHRhZ0VuZCA9IGNmX2h0bWwuZmluZCgi
ZW5kZnJhZ21lbnQiLCBmcmFnbWVudFN0YXJ0LCBmYWxzZSk7CisgICAgdW5zaWduZWQgZnJhZ21l
bnRFbmQgPSBjZl9odG1sLnJldmVyc2VGaW5kKCc8JywgdGFnRW5kKTsKKyAgICByZXR1cm4gY2Zf
aHRtbC5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCwgZnJhZ21lbnRFbmQgLSBmcmFnbWVudFN0YXJ0
KS5zdHJpcFdoaXRlU3BhY2UoKTsKK30KKwogLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlIENGX0hU
TUwgZm9ybWF0IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtz
aG9wL25ldHdvcmtpbmcvY2xpcGJvYXJkL2h0bWxjbGlwYm9hcmQuYXNwCiB2b2lkIG1hcmt1cFRv
Q0ZfSFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3Rv
cjxjaGFyPiYgcmVzdWx0KQogewpAQCAtMzgwLDYgKzM5MSw0MCBAQCBTdHJpbmcgZ2V0UGxhaW5U
ZXh0KElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzKQogICAgIHJldHVybiB0
ZXh0OwogfQogCitTdHJpbmcgZ2V0VGV4dEhUTUwoSURhdGFPYmplY3QqIGRhdGEsIGJvb2wmIHN1
Y2Nlc3MpCit7CisgICAgU1RHTUVESVVNIHN0b3JlOworICAgIFN0cmluZyBodG1sOworICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPkdldERhdGEodGV4dGh0bWxG
b3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAgICAgLy8gcmF3IGh0bWwKKyAgICAgICAgVUNoYXIq
IGRhdGEgPSAoVUNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIGh0bWwg
PSBTdHJpbmcoZGF0YSk7CisgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAg
ICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGh0bWw7Cit9CisKK1N0cmluZyBnZXRDRl9IVE1MKElEYXRhT2Jq
ZWN0KiBkYXRhLCBib29sJiBzdWNjZXNzKQoreworICAgIFNUR01FRElVTSBzdG9yZTsKKyAgICBT
dHJpbmcgaHRtbDsKKyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5HZXREYXRhKGh0bWxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAgICAgLy8gTVMgSFRNTCBG
b3JtYXQgcGFyc2luZworICAgICAgICBjaGFyKiBkYXRhID0gKGNoYXIqKUdsb2JhbExvY2soc3Rv
cmUuaEdsb2JhbCk7CisgICAgICAgIFNJWkVfVCBkYXRhU2l6ZSA9IDo6R2xvYmFsU2l6ZShzdG9y
ZS5oR2xvYmFsKTsKKyAgICAgICAgU3RyaW5nIGNmX2h0bWwoVVRGOEVuY29kaW5nKCkuZGVjb2Rl
KGRhdGEsIGRhdGFTaXplKSk7CisgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsK
KyAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOworICAgICAgICBodG1sID0gQ0ZfSFRN
TFRvTWFya3VwKGNmX2h0bWwpOworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGh0bWw7Cit9CisKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRG
cm9tRmlsZW5hbWVzKERvY3VtZW50KiwgY29uc3QgSURhdGFPYmplY3QqKQogewogICAgIC8vRklY
TUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBmcmFnbWVudHMgZnJvbSBmaWxlcwpAQCAt
Mzk0LDcgKzQzOSw3IEBAIGJvb2wgY29udGFpbnNGaWxlbmFtZXMoY29uc3QgSURhdGFPYmplY3Qq
KQogCiAvL0NvbnZlcnQgYSBTdHJpbmcgY29udGFpbmluZyBDRl9IVE1MIGZvcm1hdHRlZCB0ZXh0
IHRvIGEgRG9jdW1lbnRGcmFnbWVudAogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudEZyb21DRl9IVE1MKERvY3VtZW50KiBkb2MsIGNvbnN0IFN0cmluZyYgY2ZfaHRtbCkKLXsg
ICAgICAgIAorewogICAgIC8vIG9idGFpbiBiYXNlVVJMIGlmIHByZXNlbnQKICAgICBTdHJpbmcg
c3JjVVJMU3RyKCJzb3VyY2VVUkw6Iik7CiAgICAgU3RyaW5nIHNyY1VSTDsKQEAgLTQwNywxOCAr
NDUyLDEwIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tQ0ZfSFRN
TChEb2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGNmCiAgICAgICAgIHNyY1VSTCA9IHJhd1Ny
Y1VSTC5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICB9CiAKLSAgICAvLyBmaW5kIHRoZSBtYXJrdXAg
YmV0d2VlbiAiPCEtLVN0YXJ0RnJhZ21lbnQgLS0+IiBhbmQgIjwhLS1FbmRGcmFnbWVudCAtLT4i
LCBhY2NvdW50aW5nIGZvciBicm93c2VyIHF1aXJrcwotICAgIHVuc2lnbmVkIG1hcmt1cFN0YXJ0
ID0gY2ZfaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZhbHNlKTsKLSAgICB1bnNpZ25lZCB0YWdTdGFy
dCA9IGNmX2h0bWwuZmluZCgic3RhcnRmcmFnbWVudCIsIG1hcmt1cFN0YXJ0LCBmYWxzZSk7Ci0g
ICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9IGNmX2h0bWwuZmluZCgnPicsIHRhZ1N0YXJ0KSAr
IDE7Ci0gICAgdW5zaWduZWQgdGFnRW5kID0gY2ZfaHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZy
YWdtZW50U3RhcnQsIGZhbHNlKTsKLSAgICB1bnNpZ25lZCBmcmFnbWVudEVuZCA9IGNmX2h0bWwu
cmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwotICAgIFN0cmluZyBtYXJrdXAgPSBjZl9odG1sLnN1
YnN0cmluZyhmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCAtIGZyYWdtZW50U3RhcnQpLnN0cmlw
V2hpdGVTcGFjZSgpOwotCisgICAgU3RyaW5nIG1hcmt1cCA9IENGX0hUTUxUb01hcmt1cChjZl9o
dG1sKTsKICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvYywgbWFya3VwLCBz
cmNVUkwsIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCk7CiB9CiAKLQogUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21IVE1MKERvY3VtZW50KiBkb2MsIElEYXRhT2Jq
ZWN0KiBkYXRhKSAKIHsKICAgICBpZiAoIWRvYyB8fCAhZGF0YSkKQEAgLTQzNywxNSArNDc0LDEx
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVu
dCogZG9jLCBJRGF0YU9iamVjdCogZGF0YSkKICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21DRl9IVE1MKGRvYywgY2ZfaHRtbCkp
CiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfSAKLSAgICBpZiAoU1VDQ0VFREVE
KGRhdGEtPkdldERhdGEodGV4dGh0bWxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9y
YXcgaHRtbAotICAgICAgICBVQ2hhciogZGF0YSA9IChVQ2hhciopR2xvYmFsTG9jayhzdG9yZS5o
R2xvYmFsKTsKLSAgICAgICAgaHRtbCA9IFN0cmluZyhkYXRhKTsKLSAgICAgICAgR2xvYmFsVW5s
b2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAotICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9y
ZSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jLCBodG1sLCBz
cmNVUkwsIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCk7Ci0gICAgfSAKIAorICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOworICAgIGh0bWwgPSBnZXRUZXh0SFRNTChkYXRhLCBzdWNjZXNzKTsK
KyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cChkb2MsIGh0bWwsIHNyY1VSTCwgRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2VkKTsKICAgICBy
ZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
VXRpbGl0aWVzV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uaAppbmRleCBhOTJhNGJmLi44MmQ2MDhiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtNjQsNyArNjQsOSBAQCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGX0hUTUwoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcm
IGNmX2h0bQogCiBTdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2VzcywgU3Ry
aW5nKiB0aXRsZSA9IDApOwogU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCosIGJvb2wm
IHN1Y2Nlc3MpOworU3RyaW5nIGdldFRleHRIVE1MKElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vz
cyk7CitTdHJpbmcgZ2V0Q0ZfSFRNTChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBDbGlwYm9hcmRVdGlsaXRpZXNXaW5f
aApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyNlbmRpZiAvLyBDbGlwYm9hcmRVdGlsaXRp
ZXNXaW5faApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMzJiNjU2MS4u
NTNlNjQ0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC03MCw3ICs3
MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHN6U2hlbGxEb3RVcmxUZW1wbGF0ZVtdID0gIltJbnRl
cm5ldFNob3J0Y3V0XVxyXG5VUkw9JXNcclxuIjsKIC8vIFdlIHByb3ZpZGUgdGhlIElFIGNsaXBi
b2FyZCB0eXBlcyAoVVJMIGFuZCBUZXh0KSwgYW5kIHRoZSBjbGlwYm9hcmQgdHlwZXMgc3BlY2lm
aWVkIGluIHRoZSBXSEFUV0cgV2ViIEFwcGxpY2F0aW9ucyAxLjAgZHJhZnQKIC8vIHNlZSBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyBTZWN0aW9uIDYu
My41LjMKIAotZW51bSBDbGlwYm9hcmREYXRhVHlwZSB7IENsaXBib2FyZERhdGFUeXBlTm9uZSwg
Q2xpcGJvYXJkRGF0YVR5cGVVUkwsIENsaXBib2FyZERhdGFUeXBlVGV4dCB9OworZW51bSBDbGlw
Ym9hcmREYXRhVHlwZSB7IENsaXBib2FyZERhdGFUeXBlTm9uZSwgQ2xpcGJvYXJkRGF0YVR5cGVV
UkwsIENsaXBib2FyZERhdGFUeXBlVGV4dCwgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0SFRNTCB9Owog
CiBzdGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CkBAIC04MSw2ICs4MSw4IEBAIHN0YXRpYyBDbGlwYm9hcmREYXRh
VHlwZSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAg
ICAgcmV0dXJuIENsaXBib2FyZERhdGFUeXBlVGV4dDsKICAgICBpZiAocVR5cGUgPT0gInVybCIg
fHwgcVR5cGUgPT0gInRleHQvdXJpLWxpc3QiKQogICAgICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0
YVR5cGVVUkw7CisgICAgaWYgKHFUeXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICByZXR1cm4g
Q2xpcGJvYXJkRGF0YVR5cGVUZXh0SFRNTDsKIAogICAgIHJldHVybiBDbGlwYm9hcmREYXRhVHlw
ZU5vbmU7CiB9CkBAIC01MDAsNiArNTAyLDEyIEBAIFN0cmluZyBDbGlwYm9hcmRXaW46OmdldERh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogICAgICAgICByZXR1
cm4gZ2V0UGxhaW5UZXh0KG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2Vzcyk7CiAgICAgZWxzZSBp
ZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpIAogICAgICAgICByZXR1cm4gZ2V0
VVJMKG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2Vzcyk7CisgICAgZWxzZSBpZiAoZGF0YVR5cGUg
PT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0SFRNTCkgeworICAgICAgICBTdHJpbmcgZGF0YSA9IGdl
dFRleHRIVE1MKG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2Vzcyk7CisgICAgICAgIGlmIChzdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgIHJldHVybiBnZXRDRl9IVE1M
KG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2Vzcyk7CisgICAgfQogICAgIAogICAgIHJldHVybiAi
IjsKIH0K
</data>
<flag name="review"
          id="37902"
          type_id="1"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54123</attachid>
            <date>2010-04-22 20:05:29 -0700</date>
            <delta_ts>2010-07-20 14:47:49 -0700</delta_ts>
            <desc>v2</desc>
            <filename>d.diff</filename>
            <type>text/plain</type>
            <size>22086</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YWZmNTU5Li4yNjRiNDIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgZ2V0RGF0YSgndGV4dC9odG1s
JykgZm9yIHdlYmtpdCB3aW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzk4MQorCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9v
bmRyb3AtdGV4dC1odG1sLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMDQtMjAgIFNoaW5p
Y2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IHRlc3QgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBiYjczNmEyLi43ZjM5MzY5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtODMzLDkgKzgzMyw1IEBAIGZhc3QvcmVw
YWludC9vdmVyZmxvdy1zY3JvbGwtYm9keS1hcHBlYXIuaHRtbAogIyBOZWVkIHRvIGFkZCBmdW5j
dGlvbmFsaXR5IHRvIER1bXBSZW5kZXJUcmVlIHRvIGhhbmRsZSBzY3JvbGxiYXIgcG9saWNlIGNo
YW5nZXMKIGZhc3Qvb3ZlcmZsb3cvc2Nyb2xsYmFyLXJlc3RvcmVkLWFuZC10aGVuLWxvY2tlZC5o
dG1sCiAKLSMgTmVlZCB0byBoYW5kbGUgZ2V0dGluZyB0ZXh0L2h0bWwgaW4gQ2xpcGJvYXJkV2lu
OjpnZXREYXRhLgotZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLmh0bWwKLWZh
c3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAotCiAjIDxodHRwOi8vd2Via2l0Lm9yZy9i
LzM3MDk2PiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtaWZyYW1lLXNyYy1hbGlhcy5o
dG1sIHNvbWV0aW1lcyB0aW1lcyBvdXQgb24gV2luZG93cwogaHR0cC90ZXN0cy9zZWN1cml0eS94
c3MtREVOSUVELWlmcmFtZS1zcmMtYWxpYXMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFz
dGUtdGV4dC1odG1sLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xZTA1MThmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IHRleHQvcGxhaW46IFRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBk
dXJpbmcgYW4gb25wYXN0ZSBldmVudC4gCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IHRleHQv
aHRtbDogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJib3JkZXItY29sbGFw
c2U6IHNlcGFyYXRlOyBjb2xvcjogcmdiKDAsIDAsIDApOyAgZm9udC1zdHlsZTogbm9ybWFsOyBm
b250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6
IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogYXV0
bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBu
b3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtYm9yZGVyLWhvcml6
b250YWwtc3BhY2luZzogMHB4OyAtd2Via2l0LWJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nOiAwcHg7
IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1z
aXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNp
emU6IG1lZGl1bTsgIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRt
bCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuPHNwYW4gY2xhc3M9
IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+oDwvc3Bhbj48L3NwYW4+CitUaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFu
IG9ucGFzdGUgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCitQYXN0ZSBjb250ZW50IGlu
IHRoaXMgZGl2LlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZy
b20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC7CoAorUEFTUworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMvb25kcm9wLXRleHQt
aHRtbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9ldmVudHMv
b25kcm9wLXRleHQtaHRtbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjZmN2JhMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMTogdGV4dC9wbGFpbjogVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgZHJhZyBvYmplY3QgZHVy
aW5nIGFuIG9uZHJvcCBldmVudC4gCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IHRleHQvaHRt
bDogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJib3JkZXItY29sbGFwc2U6
IHNlcGFyYXRlOyBjb2xvcjogcmdiKDAsIDAsIDApOyAgZm9udC1zdHlsZTogbm9ybWFsOyBmb250
LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5v
cm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogYXV0bzsg
dGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3Jt
YWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtYm9yZGVyLWhvcml6b250
YWwtc3BhY2luZzogMHB4OyAtd2Via2l0LWJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nOiAwcHg7IC13
ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXpl
LWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6
IG1lZGl1bTsgIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBm
cm9tIHRoZSBkcmFnIG9iamVjdCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50LjxzcGFuIGNsYXNzPSJB
cHBsZS1jb252ZXJ0ZWQtc3BhY2UiPqA8L3NwYW4+PC9zcGFuPgorVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgZHJhZyBvYmplY3QgZHVyaW5nIGFu
IG9uZHJvcCBldmVudC4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4KK1BBU1MKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYyZGI3MC4uMzQ1
MjhkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wNC0yMiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBnZXREYXRhKCd0ZXh0L2h0bWwnKSBmb3Igd2Via2l0IHdpbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3OTgxCisKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNYXJrdXBGcm9tQ0ZIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRv
Q0ZIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VGV4dEhUTUwpOiBIZWxwZXIgbWV0
aG9kIHRvIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkCisgICAgICAgIChXZWJDb3Jl
OjpnZXRDRkhUTUwpOiBIZWxwZXIgbWV0aG9kIHRvIGdldCBDRl9IVE1MIGZyb20gdGhlIGNsaXBi
b2FyZCAobWFya3VwIG9ubHkpCisgICAgICAgIChXZWJDb3JlOjpmcmFnbWVudEZyb21GaWxlbmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNGaWxlbmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZnJhZ21lbnRGcm9tQ0ZIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmZyYWdtZW50RnJv
bUhUTUwpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdp
bjo6Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Y2xlYXJBbGxE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Z2V0RGF0YSk6IFVwZGF0ZWQg
dG8gcmV0dXJuIHRleHQvaHRtbCBvciBDRl9IVE1MIHdoZW4gdGhlIHVzZXIgd2FudHMgJ3RleHQv
aHRtbCcuCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorCiAyMDEwLTA0LTIwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggNmY5NDc2YS4uNWFkNThm
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgZXh0cmFjdFVSTChjb25zdCBTdHJpbmcg
JmluVVJMLCBTdHJpbmcqIHRpdGxlKQogICAgIHJldHVybiB1cmw7CiB9CiAKLS8vRmlyZWZveCB0
ZXh0L2h0bWwKKy8vIEZpcmVmb3ggdGV4dC9odG1sCiBzdGF0aWMgRk9STUFURVRDKiB0ZXh0aHRt
bEZvcm1hdCgpIAogewogICAgIHN0YXRpYyBVSU5UIGNmID0gUmVnaXN0ZXJDbGlwYm9hcmRGb3Jt
YXQoTCJ0ZXh0L2h0bWwiKTsKQEAgLTE1NCw4ICsxNTQsMTkgQEAgc3RhdGljIHZvaWQgYXBwZW5k
KFZlY3RvcjxjaGFyPiYgdmVjdG9yLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgdmVjdG9y
LmFwcGVuZChzdHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCisvLyBGaW5kIHRo
ZSBtYXJrdXAgYmV0d2VlbiAiPCEtLVN0YXJ0RnJhZ21lbnQgLS0+IiBhbmQgIjwhLS1FbmRGcmFn
bWVudCAtLT4iLCBhY2NvdW50aW5nIGZvciBicm93c2VyIHF1aXJrcy4KK3N0YXRpYyBTdHJpbmcg
ZXh0cmFjdE1hcmt1cEZyb21DRkhUTUwoY29uc3QgU3RyaW5nJiBjZmh0bWwpCit7CisgICAgdW5z
aWduZWQgbWFya3VwU3RhcnQgPSBjZmh0bWwuZmluZCgiPGh0bWwiLCAwLCBmYWxzZSk7CisgICAg
dW5zaWduZWQgdGFnU3RhcnQgPSBjZmh0bWwuZmluZCgic3RhcnRmcmFnbWVudCIsIG1hcmt1cFN0
YXJ0LCBmYWxzZSk7CisgICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9IGNmaHRtbC5maW5kKCc+
JywgdGFnU3RhcnQpICsgMTsKKyAgICB1bnNpZ25lZCB0YWdFbmQgPSBjZmh0bWwuZmluZCgiZW5k
ZnJhZ21lbnQiLCBmcmFnbWVudFN0YXJ0LCBmYWxzZSk7CisgICAgdW5zaWduZWQgZnJhZ21lbnRF
bmQgPSBjZmh0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOworICAgIHJldHVybiBjZmh0bWwu
c3Vic3RyaW5nKGZyYWdtZW50U3RhcnQsIGZyYWdtZW50RW5kIC0gZnJhZ21lbnRTdGFydCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Cit9CisKIC8vIERvY3VtZW50YXRpb24gZm9yIHRoZSBDRl9IVE1MIGZv
cm1hdCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9u
ZXR3b3JraW5nL2NsaXBib2FyZC9odG1sY2xpcGJvYXJkLmFzcAotdm9pZCBtYXJrdXBUb0NGX0hU
TUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgc3JjVVJMLCBWZWN0b3I8Y2hh
cj4mIHJlc3VsdCkKK3ZvaWQgbWFya3VwVG9DRkhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNv
bnN0IFN0cmluZyYgc3JjVVJMLCBWZWN0b3I8Y2hhcj4mIHJlc3VsdCkKIHsKICAgICBpZiAobWFy
a3VwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY3LDcgKzI3OCw3IEBAIEZPUk1B
VEVUQyogZmlsZW5hbWVGb3JtYXQoKQogICAgIHJldHVybiAmdXJsRm9ybWF0OwogfQogCi0vL01T
SUUgSFRNTCBGb3JtYXQKKy8vIE1TSUUgSFRNTCBGb3JtYXQKIEZPUk1BVEVUQyogaHRtbEZvcm1h
dCgpIAogewogICAgIHN0YXRpYyBVSU5UIGNmID0gUmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXQoTCJI
VE1MIEZvcm1hdCIpOwpAQCAtMzA5LDIxICszMjAsMjEgQEAgU3RyaW5nIGdldFVSTChJRGF0YU9i
amVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSkKICAgICAgICAg
c3VjY2VzcyA9IHRydWU7CiAgICAgICAgIHJldHVybiB1cmw7CiAgICAgfSBlbHNlIGlmIChTVUND
RUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YSh1cmxXRm9ybWF0KCksICZzdG9yZSkpKSB7Ci0gICAg
ICAgIC8vVVJMIHVzaW5nIHVuaWNvZGUKKyAgICAgICAgLy8gVVJMIHVzaW5nIHVuaWNvZGUKICAg
ICAgICAgVUNoYXIqIGRhdGEgPSAoVUNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAg
ICAgICAgIHVybCA9IGV4dHJhY3RVUkwoU3RyaW5nKGRhdGEpLCB0aXRsZSk7CiAgICAgICAgIEds
b2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1
bSgmc3RvcmUpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKFNVQ0NF
RURFRChkYXRhT2JqZWN0LT5HZXREYXRhKHVybEZvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAg
ICAvL1VSTCB1c2luZyBhc2NpaQorICAgICAgICAvLyBVUkwgdXNpbmcgYXNjaWkKICAgICAgICAg
Y2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB1
cmwgPSBleHRyYWN0VVJMKFN0cmluZyhkYXRhKSwgdGl0bGUpOwogICAgICAgICBHbG9iYWxVbmxv
Y2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3Jl
KTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0
YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAg
Ly9maWxlIHVzaW5nIHVuaWNvZGUKKyAgICAgICAgLy8gZmlsZSB1c2luZyB1bmljb2RlCiAgICAg
ICAgIHdjaGFyX3QqIGRhdGEgPSAod2NoYXJfdCopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsK
ICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHMoZGF0YSkgfHwg
UGF0aElzVU5DKGRhdGEpKSkgewogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBw
YXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFs
bG9jYXRvckRlZmF1bHQsIChjb25zdCBVbmlDaGFyKilkYXRhLCB3Y3NsZW4oZGF0YSkpKTsKQEAg
LTMzNiw3ICszNDcsNyBAQCBTdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBi
b29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUu
aEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICB9
IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lRm9ybWF0KCks
ICZzdG9yZSkpKSB7Ci0gICAgICAgIC8vZmlsZW5hbWUgdXNpbmcgYXNjaWkKKyAgICAgICAgLy8g
ZmlsZW5hbWUgdXNpbmcgYXNjaWkKICAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxM
b2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgICAKICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVswXSAm
JiAoUGF0aEZpbGVFeGlzdHNBKGRhdGEpIHx8IFBhdGhJc1VOQ0EoZGF0YSkpKSB7CiAgICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3Ry
aW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwga0NGU3RyaW5n
RW5jb2RpbmdBU0NJSSkpOwpAQCAtMzU4LDY3ICszNjksOTIgQEAgU3RyaW5nIGdldFBsYWluVGV4
dChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcykKICAgICBTdHJpbmcgdGV4
dDsKICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5H
ZXREYXRhKHBsYWluVGV4dFdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy91bmljb2Rl
IHRleHQKKyAgICAgICAgLy8gdW5pY29kZSB0ZXh0CiAgICAgICAgIFVDaGFyKiBkYXRhID0gKFVD
aGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRh
dGEpOwogICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAg
IFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAg
fSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShwbGFpblRleHRGb3JtYXQo
KSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9hc2NpaSB0ZXh0CisgICAgICAgIC8vIGFzY2lpIHRl
eHQKICAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwp
OwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRhdGEpOwogICAgICAgICBHbG9iYWxVbmxvY2soc3Rv
cmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAg
ICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy9JZiBhIGZpbGUg
aXMgZHJvcHBlZCBvbiB0aGUgd2luZG93LCBpdCBkb2VzIG5vdCBwcm92aWRlIGVpdGhlciBvZiB0
aGUgCi0gICAgICAgIC8vcGxhaW4gdGV4dCBmb3JtYXRzLCBzbyBoZXJlIHdlIHRyeSB0byBmb3Jj
aWJseSBnZXQgYSB1cmwuCisgICAgICAgIC8vIElmIGEgZmlsZSBpcyBkcm9wcGVkIG9uIHRoZSB3
aW5kb3csIGl0IGRvZXMgbm90IHByb3ZpZGUgZWl0aGVyIG9mIHRoZQorICAgICAgICAvLyBwbGFp
biB0ZXh0IGZvcm1hdHMsIHNvIGhlcmUgd2UgdHJ5IHRvIGZvcmNpYmx5IGdldCBhIHVybC4KICAg
ICAgICAgdGV4dCA9IGdldFVSTChkYXRhT2JqZWN0LCBzdWNjZXNzKTsKICAgICAgICAgc3VjY2Vz
cyA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiB0ZXh0OwogfQogCitTdHJpbmcgZ2V0VGV4dEhU
TUwoSURhdGFPYmplY3QqIGRhdGEsIGJvb2wmIHN1Y2Nlc3MpCit7CisgICAgU1RHTUVESVVNIHN0
b3JlOworICAgIFN0cmluZyBodG1sOworICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoU1VD
Q0VFREVEKGRhdGEtPkdldERhdGEodGV4dGh0bWxGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAg
ICAgVUNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KEdsb2JhbExvY2soc3RvcmUuaEds
b2JhbCkpOworICAgICAgICBodG1sID0gU3RyaW5nKGRhdGEpOworICAgICAgICBHbG9iYWxVbmxv
Y2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKKyAg
ICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBodG1sOworfQorCitTdHJp
bmcgZ2V0Q0ZIVE1MKElEYXRhT2JqZWN0KiBkYXRhLCBib29sJiBzdWNjZXNzKQoreworICAgIFNU
R01FRElVTSBzdG9yZTsKKyAgICBTdHJpbmcgaHRtbDsKKyAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5HZXREYXRhKGh0bWxGb3JtYXQoKSwgJnN0b3JlKSkpIHsK
KyAgICAgICAgLy8gTVMgSFRNTCBGb3JtYXQgcGFyc2luZworICAgICAgICBjaGFyKiBkYXRhID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkpOworICAgICAgICBT
SVpFX1QgZGF0YVNpemUgPSA6Okdsb2JhbFNpemUoc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIFN0
cmluZyBjZmh0bWwoVVRGOEVuY29kaW5nKCkuZGVjb2RlKGRhdGEsIGRhdGFTaXplKSk7CisgICAg
ICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICAgICAgUmVsZWFzZVN0Z01lZGl1
bSgmc3RvcmUpOworICAgICAgICBodG1sID0gZXh0cmFjdE1hcmt1cEZyb21DRkhUTUwoY2ZodG1s
KTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBodG1sOworfQor
CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhEb2N1
bWVudCosIGNvbnN0IElEYXRhT2JqZWN0KikKIHsKLSAgICAvL0ZJWE1FOiBXZSBzaG91bGQgYmUg
YWJsZSB0byBjcmVhdGUgZnJhZ21lbnRzIGZyb20gZmlsZXMKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGJlIGFibGUgdG8gY3JlYXRlIGZyYWdtZW50cyBmcm9tIGZpbGVzCiAgICAgcmV0dXJuIDA7
CiB9CiAKIGJvb2wgY29udGFpbnNGaWxlbmFtZXMoY29uc3QgSURhdGFPYmplY3QqKQogewotICAg
IC8vRklYTUU6IFdlJ2xsIHdhbnQgdG8gdXBkYXRlIHRoaXMgb25jZSB3ZSBjYW4gcHJvZHVjZSBm
cmFnbWVudHMgZnJvbSBmaWxlcworICAgIC8vIEZJWE1FOiBXZSdsbCB3YW50IHRvIHVwZGF0ZSB0
aGlzIG9uY2Ugd2UgY2FuIHByb2R1Y2UgZnJhZ21lbnRzIGZyb20gZmlsZXMKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLS8vQ29udmVydCBhIFN0cmluZyBjb250YWluaW5nIENGX0hUTUwgZm9ybWF0
dGVkIHRleHQgdG8gYSBEb2N1bWVudEZyYWdtZW50Ci1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50RnJvbUNGX0hUTUwoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5nJiBjZl9o
dG1sKQoteyAgICAgICAgCisvLyBDb252ZXJ0IGEgU3RyaW5nIGNvbnRhaW5pbmcgQ0ZfSFRNTCBm
b3JtYXR0ZWQgdGV4dCB0byBhIERvY3VtZW50RnJhZ21lbnQKK1Bhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnRGcm9tQ0ZIVE1MKERvY3VtZW50KiBkb2MsIGNvbnN0IFN0cmluZyYg
Y2ZodG1sKQorewogICAgIC8vIG9idGFpbiBiYXNlVVJMIGlmIHByZXNlbnQKICAgICBTdHJpbmcg
c3JjVVJMU3RyKCJzb3VyY2VVUkw6Iik7CiAgICAgU3RyaW5nIHNyY1VSTDsKLSAgICB1bnNpZ25l
ZCBsaW5lU3RhcnQgPSBjZl9odG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CisgICAgdW5z
aWduZWQgbGluZVN0YXJ0ID0gY2ZodG1sLmZpbmQoc3JjVVJMU3RyLCAwLCBmYWxzZSk7CiAgICAg
aWYgKGxpbmVTdGFydCAhPSAtMSkgewotICAgICAgICB1bnNpZ25lZCBzcmNFbmQgPSBjZl9odG1s
LmZpbmQoIlxuIiwgbGluZVN0YXJ0LCBmYWxzZSk7CisgICAgICAgIHVuc2lnbmVkIHNyY0VuZCA9
IGNmaHRtbC5maW5kKCJcbiIsIGxpbmVTdGFydCwgZmFsc2UpOwogICAgICAgICB1bnNpZ25lZCBz
cmNTdGFydCA9IGxpbmVTdGFydCtzcmNVUkxTdHIubGVuZ3RoKCk7Ci0gICAgICAgIFN0cmluZyBy
YXdTcmNVUkwgPSBjZl9odG1sLnN1YnN0cmluZyhzcmNTdGFydCwgc3JjRW5kLXNyY1N0YXJ0KTsK
KyAgICAgICAgU3RyaW5nIHJhd1NyY1VSTCA9IGNmaHRtbC5zdWJzdHJpbmcoc3JjU3RhcnQsIHNy
Y0VuZC1zcmNTdGFydCk7CiAgICAgICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHJhd1NyY1VSTCk7
CiAgICAgICAgIHNyY1VSTCA9IHJhd1NyY1VSTC5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICB9CiAK
LSAgICAvLyBmaW5kIHRoZSBtYXJrdXAgYmV0d2VlbiAiPCEtLVN0YXJ0RnJhZ21lbnQgLS0+IiBh
bmQgIjwhLS1FbmRGcmFnbWVudCAtLT4iLCBhY2NvdW50aW5nIGZvciBicm93c2VyIHF1aXJrcwot
ICAgIHVuc2lnbmVkIG1hcmt1cFN0YXJ0ID0gY2ZfaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZhbHNl
KTsKLSAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmX2h0bWwuZmluZCgic3RhcnRmcmFnbWVudCIs
IG1hcmt1cFN0YXJ0LCBmYWxzZSk7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9IGNmX2h0
bWwuZmluZCgnPicsIHRhZ1N0YXJ0KSArIDE7Ci0gICAgdW5zaWduZWQgdGFnRW5kID0gY2ZfaHRt
bC5maW5kKCJlbmRmcmFnbWVudCIsIGZyYWdtZW50U3RhcnQsIGZhbHNlKTsKLSAgICB1bnNpZ25l
ZCBmcmFnbWVudEVuZCA9IGNmX2h0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwotICAgIFN0
cmluZyBtYXJrdXAgPSBjZl9odG1sLnN1YnN0cmluZyhmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVu
ZCAtIGZyYWdtZW50U3RhcnQpLnN0cmlwV2hpdGVTcGFjZSgpOwotCisgICAgU3RyaW5nIG1hcmt1
cCA9IGV4dHJhY3RNYXJrdXBGcm9tQ0ZIVE1MKGNmaHRtbCk7CiAgICAgcmV0dXJuIGNyZWF0ZUZy
YWdtZW50RnJvbU1hcmt1cChkb2MsIG1hcmt1cCwgc3JjVVJMLCBGcmFnbWVudFNjcmlwdGluZ05v
dEFsbG93ZWQpOwogfQogCi0KIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRG
cm9tSFRNTChEb2N1bWVudCogZG9jLCBJRGF0YU9iamVjdCogZGF0YSkgCiB7CiAgICAgaWYgKCFk
b2MgfHwgIWRhdGEpCkBAIC00MjgsMjQgKzQ2NCwyMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqIGRvYywgSURhdGFPYmplY3QqIGRhdGEp
CiAgICAgU3RyaW5nIGh0bWw7CiAgICAgU3RyaW5nIHNyY1VSTDsKICAgICBpZiAoU1VDQ0VFREVE
KGRhdGEtPkdldERhdGEoaHRtbEZvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvL01TIEhU
TUwgRm9ybWF0IHBhcnNpbmcKKyAgICAgICAgLy8gTVMgSFRNTCBGb3JtYXQgcGFyc2luZwogICAg
ICAgICBjaGFyKiBkYXRhID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAg
ICAgIFNJWkVfVCBkYXRhU2l6ZSA9IDo6R2xvYmFsU2l6ZShzdG9yZS5oR2xvYmFsKTsKLSAgICAg
ICAgU3RyaW5nIGNmX2h0bWwoVVRGOEVuY29kaW5nKCkuZGVjb2RlKGRhdGEsIGRhdGFTaXplKSk7
ICAgICAgICAgCisgICAgICAgIFN0cmluZyBjZmh0bWwoVVRGOEVuY29kaW5nKCkuZGVjb2RlKGRh
dGEsIGRhdGFTaXplKSk7CiAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAg
ICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOyAKLSAgICAgICAgaWYgKFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21DRl9IVE1MKGRvYywgY2Zf
aHRtbCkpCisgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gZnJhZ21lbnRGcm9tQ0ZIVE1MKGRvYywgY2ZodG1sKSkKICAgICAgICAgICAgIHJldHVybiBm
cmFnbWVudDsKICAgICB9IAotICAgIGlmIChTVUNDRUVERUQoZGF0YS0+R2V0RGF0YSh0ZXh0aHRt
bEZvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvL3JhdyBodG1sCi0gICAgICAgIFVDaGFy
KiBkYXRhID0gKFVDaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBodG1s
ID0gU3RyaW5nKGRhdGEpOwotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAg
ICAgCi0gICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2MsIGh0bWwsIHNyY1VSTCwgRnJhZ21lbnRTY3JpcHRp
bmdOb3RBbGxvd2VkKTsKLSAgICB9IAogCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAg
aHRtbCA9IGdldFRleHRIVE1MKGRhdGEsIHN1Y2Nlc3MpOworICAgIGlmIChzdWNjZXNzKQorICAg
ICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvYywgaHRtbCwgc3JjVVJMLCBG
cmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IGE5MmE0YmYuLmYz
ZDBjZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5o
CkBAIC00OSw3ICs0OSw3IEBAIEZPUk1BVEVUQyogaHRtbEZvcm1hdCgpOwogRk9STUFURVRDKiBj
ZkhEcm9wRm9ybWF0KCk7CiBGT1JNQVRFVEMqIHNtYXJ0UGFzdGVGb3JtYXQoKTsKIAotdm9pZCBt
YXJrdXBUb0NGX0hUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgc3JjVVJM
LCBWZWN0b3I8Y2hhcj4mIHJlc3VsdCk7Cit2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmlu
ZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpOwog
U3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CiAKIHZvaWQgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKFN0cmluZyYp
OwpAQCAtNjAsMTEgKzYwLDEzIEBAIGJvb2wgY29udGFpbnNIVE1MKElEYXRhT2JqZWN0Kik7CiAK
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKERvY3Vt
ZW50KiwgY29uc3QgSURhdGFPYmplY3QqKTsKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVudCosIElEYXRhT2JqZWN0Kik7Ci1QYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGX0hUTUwoRG9jdW1lbnQqLCBjb25zdCBTdHJp
bmcmIGNmX2h0bWwpOworUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21D
RkhUTUwoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGNmaHRtbCk7CiAKIFN0cmluZyBnZXRVUkwo
SURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlID0gMCk7CiBTdHJpbmcg
Z2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CitTdHJpbmcgZ2V0VGV4
dEhUTUwoSURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNzKTsKK1N0cmluZyBnZXRDRkhUTUwoSURh
dGFPYmplY3QqLCBib29sJiBzdWNjZXNzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gQ2xpcGJvYXJkVXRpbGl0aWVzV2luX2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCisjZW5kaWYgLy8gQ2xpcGJvYXJkVXRpbGl0aWVzV2luX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRXaW4uY3BwCmluZGV4IDMyYjY1NjEuLmMxYzA2MWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBz
elNoZWxsRG90VXJsVGVtcGxhdGVbXSA9ICJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSVzXHJc
biI7CiAvLyBXZSBwcm92aWRlIHRoZSBJRSBjbGlwYm9hcmQgdHlwZXMgKFVSTCBhbmQgVGV4dCks
IGFuZCB0aGUgY2xpcGJvYXJkIHR5cGVzIHNwZWNpZmllZCBpbiB0aGUgV0hBVFdHIFdlYiBBcHBs
aWNhdGlvbnMgMS4wIGRyYWZ0CiAvLyBzZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay8gU2VjdGlvbiA2LjMuNS4zCiAKLWVudW0gQ2xpcGJvYXJkRGF0
YVR5cGUgeyBDbGlwYm9hcmREYXRhVHlwZU5vbmUsIENsaXBib2FyZERhdGFUeXBlVVJMLCBDbGlw
Ym9hcmREYXRhVHlwZVRleHQgfTsKK2VudW0gQ2xpcGJvYXJkRGF0YVR5cGUgeyBDbGlwYm9hcmRE
YXRhVHlwZU5vbmUsIENsaXBib2FyZERhdGFUeXBlVVJMLCBDbGlwYm9hcmREYXRhVHlwZVRleHQs
IENsaXBib2FyZERhdGFUeXBlVGV4dEhUTUwgfTsKIAogc3RhdGljIENsaXBib2FyZERhdGFUeXBl
IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewpAQCAtODEs
NiArODEsOCBAQCBzdGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIHJldHVybiBDbGlwYm9hcmREYXRhVHlw
ZVRleHQ7CiAgICAgaWYgKHFUeXBlID09ICJ1cmwiIHx8IHFUeXBlID09ICJ0ZXh0L3VyaS1saXN0
IikKICAgICAgICAgcmV0dXJuIENsaXBib2FyZERhdGFUeXBlVVJMOworICAgIGlmIChxVHlwZSA9
PSAidGV4dC9odG1sIikKKyAgICAgICAgcmV0dXJuIENsaXBib2FyZERhdGFUeXBlVGV4dEhUTUw7
CiAKICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0YVR5cGVOb25lOwogfQpAQCAtNDM3LDcgKzQzOSw3
IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgS1VSTCYg
dXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0CiAKICAgICBpZiAod2l0aEhUTUwpIHsKICAgICAg
ICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZfSFRNTCh1cmxU
b01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOwogICAgICAgICBt
ZWRpdW0uaEdsb2JhbCA9IGNyZWF0ZUdsb2JhbERhdGEoY2ZodG1sRGF0YSk7CiAgICAgICAgIGlm
IChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQoZGF0YS0+U2V0RGF0YShodG1sRm9ybWF0KCksICZt
ZWRpdW0sIFRSVUUpKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7
CkBAIC00NTgsNyArNDYwLDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpk
YXRhLCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXQKIAogdm9pZCBDbGlw
Ym9hcmRXaW46OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgLy9GSVhNRTog
TmVlZCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvIHRoZSBzeXN0ZW0gY2xpcGJvYXJkIDxyZGFyOi8v
cHJvYmxlbS81MDE1OTQxPgorICAgIC8vIEZJWE1FOiBOZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUg
dG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5NDE+CiAgICAgQVNT
RVJUKGlzRm9yRHJhZ2dpbmcoKSk7CiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRh
YmxlIHx8ICFtX3dyaXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc4LDcg
KzQ4MCw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiB2b2lkIENsaXBib2FyZFdpbjo6Y2xlYXJBbGxEYXRhKCkKIHsKLSAgICAvL0ZJWE1FOiBO
ZWVkIHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHN5c3RlbSBjbGlwYm9hcmQgPHJkYXI6Ly9w
cm9ibGVtLzUwMTU5NDE+CisgICAgLy8gRklYTUU6IE5lZWQgdG8gYmUgYWJsZSB0byB3cml0ZSB0
byB0aGUgc3lzdGVtIGNsaXBib2FyZCA8cmRhcjovL3Byb2JsZW0vNTAxNTk0MT4KICAgICBBU1NF
UlQoaXNGb3JEcmFnZ2luZygpKTsKICAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFi
bGUpCiAgICAgICAgIHJldHVybjsKQEAgLTUwMCw2ICs1MDIsMTIgQEAgU3RyaW5nIENsaXBib2Fy
ZFdpbjo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBnZXRQbGFpblRleHQobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsK
ICAgICBlbHNlIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkgCiAgICAgICAg
IHJldHVybiBnZXRVUkwobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKKyAgICBlbHNlIGlm
IChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHRIVE1MKSB7CisgICAgICAgIFN0cmlu
ZyBkYXRhID0gZ2V0VGV4dEhUTUwobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKKyAgICAg
ICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgcmV0dXJu
IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpOworICAgIH0KICAgICAKICAg
ICByZXR1cm4gIiI7CiB9CkBAIC03MjAsNyArNzI4LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGMKIAogICAgIC8vIFB1dCBpbWcgdGFnIG9uIHRoZSBjbGlwYm9hcmQgcmVmZXJlbmNpbmcgdGhl
IGltYWdlCiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRl9IVE1MKGltYWdl
VG9NYXJrdXAoZnVsbFVSTCksICIiLCBkYXRhKTsKKyAgICBtYXJrdXBUb0NGSFRNTChpbWFnZVRv
TWFya3VwKGZ1bGxVUkwpLCAiIiwgZGF0YSk7CiAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVH
bG9iYWxEYXRhKGRhdGEpOwogICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0
YWJsZURhdGFPYmplY3QtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAg
ICAgICAgIDo6R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CkBAIC03NTcsNyArNzY1LDcgQEAg
dm9pZCBDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIEZyYW1l
KiBmcmFtZSkKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAgIFZlY3RvcjxjaGFyPiBk
YXRhOwotICAgIG1hcmt1cFRvQ0ZfSFRNTChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwg
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSksCisgICAgbWFya3VwVG9DRkhUTUwoY3JlYXRlTWFya3Vw
KHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpLAogICAgICAgICBzZWxl
Y3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
LCBkYXRhKTsKICAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CiAg
ICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChtX3dyaXRhYmxlRGF0YU9iamVjdC0+U2V0
RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggNTEyZjZjZi4uNThlMjg2MyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9y
RGVsZXRlLAogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgICAgICBt
YXJrdXBUb0NGX0hUTUwoY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9y
SW50ZXJjaGFuZ2UpLAorICAgICAgICBtYXJrdXBUb0NGSFRNTChjcmVhdGVNYXJrdXAoc2VsZWN0
ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSksCiAgICAgICAgICAgICBzZWxlY3Rl
ZFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBk
YXRhKTsKICAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwog
ICAgICAgICBpZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRh
dGEpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyLCBGcmFtZSogZnJhbWUpCiAgICAgLy8g
d3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1MIHRvIGJlIGFibGUgdG8gcGFzdGUg
aW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5rCiAgICAgaWYgKDo6T3BlbkNsaXBi
b2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFy
a3VwVG9DRl9IVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgZGF0YSk7CisgICAgICAg
IG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQCiAgICAgICAgICAgICA6Okdsb2JhbFVubG9jayhjYkRhdGEpOwogICAg
ICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogCi0gICAgICAgICAgICBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tQ0ZfSFRNTChmcmFtZS0+ZG9j
dW1lbnQoKSwgY2ZfaHRtbCk7CisgICAgICAgICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tQ0ZIVE1MKGZyYW1lLT5kb2N1bWVudCgpLCBjZl9o
dG1sKTsKICAgICAgICAgICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZnJhZ21lbnQ7CiAgICAgICAgIH0gZWxzZSAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>54250</attachid>
            <date>2010-04-25 18:25:31 -0700</date>
            <delta_ts>2010-04-25 18:25:31 -0700</delta_ts>
            <desc>list of tests with \xa0</desc>
            <filename>list.txt</filename>
            <type>text/plain</type>
            <size>1590</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">Li9jaHJvbWl1bS1saW51eC9mYXN0L3VybC9ob3N0LWV4cGVjdGVkLnR4dAouL2Nocm9taXVtLWxp
bnV4L2Zhc3QvdXJsL21haWx0by1leHBlY3RlZC50eHQKLi9jaHJvbWl1bS1saW51eC9mYXN0L3Vy
bC9wYXRoLWV4cGVjdGVkLnR4dAouL2Nocm9taXVtLWxpbnV4L3dlYnNvY2tldC90ZXN0cy9iYWQt
c3ViLXByb3RvY29sLWFjdHVhbC50eHQKLi9jaHJvbWl1bS1tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLW5vc2NyaXB0LWV4cGVjdGVkLnR4dAouL2Nocm9taXVtLW1hYy9mYXN0L3VybC9ob3N0
LWV4cGVjdGVkLnR4dAouL2Nocm9taXVtLW1hYy9mYXN0L3VybC9tYWlsdG8tZXhwZWN0ZWQudHh0
Ci4vY2hyb21pdW0tbWFjL2Zhc3QvdXJsL3BhdGgtZXhwZWN0ZWQudHh0Ci4vY2hyb21pdW0tbWFj
L2Zhc3QveHNsL21vemlsbGEtdGVzdHMtZXhwZWN0ZWQudHh0Ci4vY2hyb21pdW0tbWFjL3dlYnNv
Y2tldC90ZXN0cy9iYWQtc3ViLXByb3RvY29sLWV4cGVjdGVkLnR4dAouL2Nocm9taXVtLW1hYy93
ZWJzb2NrZXQvdGVzdHMvYmFkLXN1Yi1wcm90b2NvbC1ub24tYXNjaWktZXhwZWN0ZWQudHh0Ci4v
Y2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3NjcmlwdC1leHBlY3RlZC50
eHQKLi9jaHJvbWl1bS13aW4vZmFzdC9yZWdleC90ZXN0MS1leHBlY3RlZC50eHQKLi9jaHJvbWl1
bS13aW4vZmFzdC91cmwvaG9zdC1leHBlY3RlZC50eHQKLi9jaHJvbWl1bS13aW4vZmFzdC91cmwv
bWFpbHRvLWV4cGVjdGVkLnR4dAouL2Nocm9taXVtLXdpbi9mYXN0L3VybC9wYXRoLWV4cGVjdGVk
LnR4dAouL2Nocm9taXVtLXdpbi9mYXN0L3hzbC9tb3ppbGxhLXRlc3RzLWV4cGVjdGVkLnR4dAou
L2Nocm9taXVtLXdpbi93ZWJzb2NrZXQvdGVzdHMvYmFkLXN1Yi1wcm90b2NvbC1leHBlY3RlZC50
eHQKLi9jaHJvbWl1bS13aW4vd2Vic29ja2V0L3Rlc3RzL2JhZC1zdWItcHJvdG9jb2wtbm9uLWFz
Y2lpLWV4cGVjdGVkLnR4dAouL2d0ay9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFnZS16b29tLWV4cGVj
dGVkLnR4dAouL21hYy9hY2Nlc3NpYmlsaXR5L2JvdW5kcy1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0
Ci4vbWFjL2FjY2Vzc2liaWxpdHkvZG91YmxlLXRpdGxlLWV4cGVjdGVkLnR4dAouL21hYy9hY2Nl
c3NpYmlsaXR5L3RhYmxlLW11bHRpLWJvZGllcy1leHBlY3RlZC50eHQKLi9tYWMvZmFzdC90ZXh0
L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UtZXhwZWN0ZWQudHh0Ci4vbWFjLWxlb3Bh
cmQvZmFzdC94c2wvbW96aWxsYS10ZXN0cy1leHBlY3RlZC50eHQKLi9xdC9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0Ci4vcXQvZWRpdGluZy9wYXN0ZWJv
YXJkL3BhZ2Utem9vbS1leHBlY3RlZC50eHQKLi9xdC9lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1l
ZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50eHQKLi93aW4vZWRpdGluZy9zZWxlY3Rpb24vZG91Ymxl
Y2xpY2stc2hvdWxkLW5vdC1leHBhbmQtYWNyb3NzLWxpbmVzLWV4cGVjdGVkLnR4dAouL3dpbi9l
ZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50eHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62115</attachid>
            <date>2010-07-20 14:47:53 -0700</date>
            <delta_ts>2010-07-20 15:29:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37981-20100720144751.patch</filename>
            <type>text/plain</type>
            <size>11962</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMWU1MDNhZDJiYWY1NjgzZDU2NzIyYTMxYzI4NWViZTE1NTIzNWQyLi41N2ZhMGYw
MjExMjNmMjExMDU0ODYyMzFmOTRmYjE2YmYzMGViMTZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDctMjAgIHRvbnkgY2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbXBsZW1lbnQgZ2V0RGF0YSgn
dGV4dC9odG1sJykgZm9yIHdlYmtpdCB3aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM3OTgxCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4
dC1odG1sLWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRtbC1leHBlY3RlZC50eHQ6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0
LgorCiAyMDEwLTA3LTIwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
aW5kZXggMjI2MTJiM2M3MGI0ZTA1OWM4YWNmZWZmZjAxNTYwZjBmOWZkMDUzOC4uZjVkMWQ3ZGRi
YjIzM2YxMjU4YTNjOTQyOWJmMTZiZWRkNzI0MWNmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKQEAgLTg0NiwxMCArODQ2LDYgQEAgZmFzdC9yZXBhaW50L292ZXJmbG93LXNjcm9sbC1ib2R5
LWFwcGVhci5odG1sCiAjIE5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gRHVtcFJlbmRlclRy
ZWUgdG8gaGFuZGxlIHNjcm9sbGJhciBwb2xpY2UgY2hhbmdlcwogZmFzdC9vdmVyZmxvdy9zY3Jv
bGxiYXItcmVzdG9yZWQtYW5kLXRoZW4tbG9ja2VkLmh0bWwKIAotIyBOZWVkIHRvIGhhbmRsZSBn
ZXR0aW5nIHRleHQvaHRtbCBpbiBDbGlwYm9hcmRXaW46OmdldERhdGEuCi1lZGl0aW5nL3Bhc3Rl
Ym9hcmQvb25wYXN0ZS10ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRt
bC5odG1sCi0KICMgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzcwOTY+IGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzLURFTklFRC1pZnJhbWUtc3JjLWFsaWFzLmh0bWwgc29tZXRpbWVzIHRpbWVzIG91dCBv
biBXaW5kb3dzCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtaWZyYW1lLXNyYy1hbGlh
cy5odG1sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9lZGl0aW5nL3Bh
c3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTY3NzZjOWMzOTNiNjUzNjY4ODIzZjdiMzQ2NGYxODMwOTVhYzdlYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDIxOiB0ZXh0L3BsYWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFz
dGUgZXZlbnQuIAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFuIGNs
YXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsg
Y29sb3I6IHJnYigwLCAwLCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBu
b3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUt
aGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGF1dG87IHRleHQtaW5kZW50
OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6
IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LWJvcmRlci1ob3Jpem9udGFsLXNwYWNpbmc6
IDBweDsgLXdlYmtpdC1ib3JkZXItdmVydGljYWwtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQt
ZGVjb3JhdGlvbnMtaW4tZWZmZWN0OiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1
dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07ICI+
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xp
cGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0
ZWQtc3BhY2UiPsKgPC9zcGFuPjwvc3Bhbj4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNh
biBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVu
dC4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4KK1Bhc3RlIGNvbnRlbnQgaW4gdGhpcyBkaXYuVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJv
YXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LsKgCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1o
dG1sLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTU5Njc3OGY4NTgwMTBjNDYyZGYzNDJhMTNk
YTI2OGJjNTQxNzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L2Zhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiB0ZXh0L3BsYWluOiBUaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBkcmFnIG9iamVjdCBkdXJpbmcg
YW4gb25kcm9wIGV2ZW50LiAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMzogdGV4dC9odG1sOiA8
c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogc2Vw
YXJhdGU7IGNvbG9yOiByZ2IoMCwgMCwgMCk7ICBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFy
aWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs
OyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBhdXRvOyB0ZXh0
LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg
d2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1z
cGFjaW5nOiAwcHg7IC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmc6IDBweDsgLXdlYmtp
dC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdDogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRq
dXN0OiBhdXRvOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVk
aXVtOyAiPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20g
dGhlIGRyYWcgb2JqZWN0IGR1cmluZyBhbiBvbmRyb3AgZXZlbnQuPHNwYW4gY2xhc3M9IkFwcGxl
LWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+PC9zcGFuPgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgZHJhZyBvYmplY3QgZHVyaW5nIGFuIG9u
ZHJvcCBldmVudC4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4KK1BBU1MKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ1NmRlMDBkYzIzMDlk
NWM0NTJiNzgyZmMxZjFjNzcyZWEyNmFmNi4uYmM0ODI1ZDBkNGNiOWYwMGQxMmQzNDQyNTQ1OWUx
MTI1MGE1ZGFhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNy0yMCAgdG9ueSBjaGFuZyAgPHRvbnlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGltcGxlbWVudCBnZXREYXRhKCd0ZXh0L2h0bWwnKSBmb3Igd2Via2l0IHdpbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5ODEKKworICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEZyb21DRkhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
Q0ZIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmZyYWdtZW50RnJvbUNGSFRNTCk6CisgICAgICAg
IChXZWJDb3JlOjpmcmFnbWVudEZyb21IVE1MKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkVXRpbGl0aWVzV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcGJvYXJk
VHlwZUZyb21NSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmdldERh
dGEpOgorCiAyMDEwLTA3LTIwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IGU2YWY3ZWZiMWM2MmY4ZGNjOGIx
ZDk5OTZkYWQ5NGYyMzk1MGI4MGUuLmE0NzA4M2U5ODZlNzQ4NGVjYmE0MDRkODNmNTZkYTM5YmE4
YTk3MGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmNwcApAQCAtMTU0LDYgKzE1NCwxNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmQoVmVjdG9yPGNoYXI+
JiB2ZWN0b3IsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKICAgICB2ZWN0b3IuYXBwZW5kKHN0cmlu
Zy5kYXRhKCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKKy8vIEZpbmQgdGhlIG1hcmt1cCBiZXR3
ZWVuICI8IS0tU3RhcnRGcmFnbWVudCAtLT4iIGFuZCAiPCEtLUVuZEZyYWdtZW50IC0tPiIsIGFj
Y291bnRpbmcgZm9yIGJyb3dzZXIgcXVpcmtzLgorc3RhdGljIFN0cmluZyBleHRyYWN0TWFya3Vw
RnJvbUNGSFRNTChjb25zdCBTdHJpbmcmIGNmaHRtbCkKK3sKKyAgICB1bnNpZ25lZCBtYXJrdXBT
dGFydCA9IGNmaHRtbC5maW5kKCI8aHRtbCIsIDAsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCB0YWdT
dGFydCA9IGNmaHRtbC5maW5kKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQsIGZhbHNlKTsK
KyAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0ID0gY2ZodG1sLmZpbmQoJz4nLCB0YWdTdGFydCkg
KyAxOworICAgIHVuc2lnbmVkIHRhZ0VuZCA9IGNmaHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZy
YWdtZW50U3RhcnQsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCBmcmFnbWVudEVuZCA9IGNmaHRtbC5y
ZXZlcnNlRmluZCgnPCcsIHRhZ0VuZCk7CisgICAgcmV0dXJuIGNmaHRtbC5zdWJzdHJpbmcoZnJh
Z21lbnRTdGFydCwgZnJhZ21lbnRFbmQgLSBmcmFnbWVudFN0YXJ0KS5zdHJpcFdoaXRlU3BhY2Uo
KTsKK30KKwogLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlIENGX0hUTUwgZm9ybWF0IGlzIGF2YWls
YWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL25ldHdvcmtpbmcvY2xp
cGJvYXJkL2h0bWxjbGlwYm9hcmQuYXNwCiB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmlu
ZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCiB7
CkBAIC0zODYsNiArMzk3LDI0IEBAIFN0cmluZyBnZXRUZXh0SFRNTChJRGF0YU9iamVjdCogZGF0
YSwgYm9vbCYgc3VjY2VzcykKICAgICByZXR1cm4gaHRtbDsKIH0KIAorU3RyaW5nIGdldENGSFRN
TChJRGF0YU9iamVjdCogZGF0YSwgYm9vbCYgc3VjY2VzcykKK3sKKyAgICBTVEdNRURJVU0gc3Rv
cmU7CisgICAgU3RyaW5nIGh0bWw7CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIGlmIChTVUND
RUVERUQoZGF0YS0+R2V0RGF0YShodG1sRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAgIC8v
IE1TIEhUTUwgRm9ybWF0IHBhcnNpbmcKKyAgICAgICAgY2hhciogZGF0YSA9IHN0YXRpY19jYXN0
PGNoYXIqPihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKKyAgICAgICAgU0laRV9UIGRhdGFT
aXplID0gOjpHbG9iYWxTaXplKHN0b3JlLmhHbG9iYWwpOworICAgICAgICBTdHJpbmcgY2ZodG1s
KFVURjhFbmNvZGluZygpLmRlY29kZShkYXRhLCBkYXRhU2l6ZSkpOworICAgICAgICBHbG9iYWxV
bmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsK
KyAgICAgICAgaHRtbCA9IGV4dHJhY3RNYXJrdXBGcm9tQ0ZIVE1MKGNmaHRtbCk7CisgICAgICAg
IHN1Y2Nlc3MgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gaHRtbDsKK30KKwogUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21GaWxlbmFtZXMoRG9jdW1lbnQqLCBjb25z
dCBJRGF0YU9iamVjdCopCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGNy
ZWF0ZSBmcmFnbWVudHMgZnJvbSBmaWxlcwpAQCAtNDAwLDcgKzQyOSw3IEBAIGJvb2wgY29udGFp
bnNGaWxlbmFtZXMoY29uc3QgSURhdGFPYmplY3QqKQogCiAvLyBDb252ZXJ0IGEgU3RyaW5nIGNv
bnRhaW5pbmcgQ0ZfSFRNTCBmb3JtYXR0ZWQgdGV4dCB0byBhIERvY3VtZW50RnJhZ21lbnQKIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tQ0ZIVE1MKERvY3VtZW50KiBk
b2MsIGNvbnN0IFN0cmluZyYgY2ZodG1sKQoteyAgICAgICAgCit7CiAgICAgLy8gb2J0YWluIGJh
c2VVUkwgaWYgcHJlc2VudAogICAgIFN0cmluZyBzcmNVUkxTdHIoInNvdXJjZVVSTDoiKTsKICAg
ICBTdHJpbmcgc3JjVVJMOwpAQCAtNDEzLDE4ICs0NDIsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBmcmFnbWVudEZyb21DRkhUTUwoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5n
JiBjZmgKICAgICAgICAgc3JjVVJMID0gcmF3U3JjVVJMLnN0cmlwV2hpdGVTcGFjZSgpOwogICAg
IH0KIAotICAgIC8vIGZpbmQgdGhlIG1hcmt1cCBiZXR3ZWVuICI8IS0tU3RhcnRGcmFnbWVudCAt
LT4iIGFuZCAiPCEtLUVuZEZyYWdtZW50IC0tPiIsIGFjY291bnRpbmcgZm9yIGJyb3dzZXIgcXVp
cmtzCi0gICAgdW5zaWduZWQgbWFya3VwU3RhcnQgPSBjZmh0bWwuZmluZCgiPGh0bWwiLCAwLCBm
YWxzZSk7Ci0gICAgdW5zaWduZWQgdGFnU3RhcnQgPSBjZmh0bWwuZmluZCgic3RhcnRmcmFnbWVu
dCIsIG1hcmt1cFN0YXJ0LCBmYWxzZSk7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9IGNm
aHRtbC5maW5kKCc+JywgdGFnU3RhcnQpICsgMTsKLSAgICB1bnNpZ25lZCB0YWdFbmQgPSBjZmh0
bWwuZmluZCgiZW5kZnJhZ21lbnQiLCBmcmFnbWVudFN0YXJ0LCBmYWxzZSk7Ci0gICAgdW5zaWdu
ZWQgZnJhZ21lbnRFbmQgPSBjZmh0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwotICAgIFN0
cmluZyBtYXJrdXAgPSBjZmh0bWwuc3Vic3RyaW5nKGZyYWdtZW50U3RhcnQsIGZyYWdtZW50RW5k
IC0gZnJhZ21lbnRTdGFydCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KKyAgICBTdHJpbmcgbWFya3Vw
ID0gZXh0cmFjdE1hcmt1cEZyb21DRkhUTUwoY2ZodG1sKTsKICAgICByZXR1cm4gY3JlYXRlRnJh
Z21lbnRGcm9tTWFya3VwKGRvYywgbWFya3VwLCBzcmNVUkwsIEZyYWdtZW50U2NyaXB0aW5nTm90
QWxsb3dlZCk7CiB9CiAKLQogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZy
b21IVE1MKERvY3VtZW50KiBkb2MsIElEYXRhT2JqZWN0KiBkYXRhKSAKIHsKICAgICBpZiAoIWRv
YyB8fCAhZGF0YSkKQEAgLTQzNyw3ICs0NTgsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqIGRvYywgSURhdGFPYmplY3QqIGRhdGEpCiAg
ICAgICAgIC8vIE1TIEhUTUwgRm9ybWF0IHBhcnNpbmcKICAgICAgICAgY2hhciogZGF0YSA9IChj
aGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBTSVpFX1QgZGF0YVNpemUg
PSA6Okdsb2JhbFNpemUoc3RvcmUuaEdsb2JhbCk7Ci0gICAgICAgIFN0cmluZyBjZmh0bWwoVVRG
OEVuY29kaW5nKCkuZGVjb2RlKGRhdGEsIGRhdGFTaXplKSk7ICAgICAgICAgCisgICAgICAgIFN0
cmluZyBjZmh0bWwoVVRGOEVuY29kaW5nKCkuZGVjb2RlKGRhdGEsIGRhdGFTaXplKSk7CiAgICAg
ICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1
bSgmc3RvcmUpOyAKICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBmcmFnbWVudEZyb21DRkhUTUwoZG9jLCBjZmh0bWwpKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCA0Y2E0NmY5ZGYyNWMyZmIxMjc4
ZjVjZDJmZjZlNmM2MWZlZDgzMzA1Li45ZDEzZTRmMzcwYzVkZDVmNGMzODRjNzcwZTI5ZjZkMGM1
NTYwZmY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4u
aApAQCAtNTAsNiArNTAsNyBAQCBGT1JNQVRFVEMqIGNmSERyb3BGb3JtYXQoKTsKIEZPUk1BVEVU
Qyogc21hcnRQYXN0ZUZvcm1hdCgpOwogCiB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmlu
ZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpOwor
U3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CiAKIHZvaWQgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKFN0cmluZyYp
Owogdm9pZCByZXBsYWNlTkJTUFdpdGhTcGFjZShTdHJpbmcmKTsKQEAgLTY0LDYgKzY1LDcgQEAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21DRkhUTUwoRG9jdW1lbnQq
LCBjb25zdCBTdHJpbmcmIGNmaHRtbCkKIFN0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqLCBEcmFn
RGF0YTo6RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRp
dGxlID0gMCk7CiBTdHJpbmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vz
cyk7CiBTdHJpbmcgZ2V0VGV4dEhUTUwoSURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNzKTsKK1N0
cmluZyBnZXRDRkhUTUwoSURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNzKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCAy
Y2Q2ZmViZTNkYTlmMGJmNDgwMGY4OTQxM2E3OGI2OThhOWFhNzlmLi42YmIxNzE0OGNhMjYzNzBj
NzFmYjUxMTcxNDQ4MTM1MzZlM2YwNjIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdp
bi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgc3pTaGVsbERvdFVybFRl
bXBsYXRlW10gPSAiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0lc1xyXG4iOwogLy8gV2UgcHJv
dmlkZSB0aGUgSUUgY2xpcGJvYXJkIHR5cGVzIChVUkwgYW5kIFRleHQpLCBhbmQgdGhlIGNsaXBi
b2FyZCB0eXBlcyBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBXZWIgQXBwbGljYXRpb25zIDEuMCBk
cmFmdAogLy8gc2VlIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvIFNlY3Rpb24gNi4zLjUuMwogCi1lbnVtIENsaXBib2FyZERhdGFUeXBlIHsgQ2xpcGJv
YXJkRGF0YVR5cGVOb25lLCBDbGlwYm9hcmREYXRhVHlwZVVSTCwgQ2xpcGJvYXJkRGF0YVR5cGVU
ZXh0IH07CitlbnVtIENsaXBib2FyZERhdGFUeXBlIHsgQ2xpcGJvYXJkRGF0YVR5cGVOb25lLCBD
bGlwYm9hcmREYXRhVHlwZVVSTCwgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0LCBDbGlwYm9hcmREYXRh
VHlwZVRleHRIVE1MIH07CiAKIHN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBjbGlwYm9hcmRUeXBl
RnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKQEAgLTgxLDYgKzgxLDggQEAgc3Rh
dGljIENsaXBib2FyZERhdGFUeXBlIGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OwogICAgIGlm
IChxVHlwZSA9PSAidXJsIiB8fCBxVHlwZSA9PSAidGV4dC91cmktbGlzdCIpCiAgICAgICAgIHJl
dHVybiBDbGlwYm9hcmREYXRhVHlwZVVSTDsKKyAgICBpZiAocVR5cGUgPT0gInRleHQvaHRtbCIp
CisgICAgICAgIHJldHVybiBDbGlwYm9hcmREYXRhVHlwZVRleHRIVE1MOwogCiAgICAgcmV0dXJu
IENsaXBib2FyZERhdGFUeXBlTm9uZTsKIH0KQEAgLTQ5OCw2ICs1MDAsMTIgQEAgU3RyaW5nIENs
aXBib2FyZFdpbjo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0CiAgICAgICAgIHJldHVybiBnZXRQbGFpblRleHQobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNj
ZXNzKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpCiAgICAgICAg
IHJldHVybiBnZXRVUkwobV9kYXRhT2JqZWN0LmdldCgpLCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0
RmlsZW5hbWVzLCBzdWNjZXNzKTsKKyAgICBlbHNlIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmRE
YXRhVHlwZVRleHRIVE1MKSB7CisgICAgICAgIFN0cmluZyBkYXRhID0gZ2V0VGV4dEhUTUwobV9k
YXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAg
ICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgcmV0dXJuIGdldENGSFRNTChtX2RhdGFPYmplY3Qu
Z2V0KCksIHN1Y2Nlc3MpOworICAgIH0KICAgICAKICAgICByZXR1cm4gIiI7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62124</attachid>
            <date>2010-07-20 15:29:38 -0700</date>
            <delta_ts>2010-07-28 10:29:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37981-20100720152936.patch</filename>
            <type>text/plain</type>
            <size>8926</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMWU1MDNhZDJiYWY1NjgzZDU2NzIyYTMxYzI4NWViZTE1NTIzNWQyLi42ZTQwMjg1
NzA5MTYwODc3ZjM1NWM3NDc0MDQ2MWJmZGRlN2RmYjFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDctMjAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbXBsZW1lbnQgZ2V0RGF0YSgn
dGV4dC9odG1sJykgZm9yIHdlYmtpdCB3aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM3OTgxCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBl
ZDogMiB0ZXN0cyBub3cgcGFzcworCiAyMDEwLTA3LTIwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVp
emFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQKaW5kZXggMjI2MTJiM2M3MGI0ZTA1OWM4YWNmZWZmZjAxNTYwZjBm
OWZkMDUzOC4uZjVkMWQ3ZGRiYjIzM2YxMjU4YTNjOTQyOWJmMTZiZWRkNzI0MWNmNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTg0NiwxMCArODQ2LDYgQEAgZmFzdC9yZXBhaW50L292
ZXJmbG93LXNjcm9sbC1ib2R5LWFwcGVhci5odG1sCiAjIE5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxp
dHkgdG8gRHVtcFJlbmRlclRyZWUgdG8gaGFuZGxlIHNjcm9sbGJhciBwb2xpY2UgY2hhbmdlcwog
ZmFzdC9vdmVyZmxvdy9zY3JvbGxiYXItcmVzdG9yZWQtYW5kLXRoZW4tbG9ja2VkLmh0bWwKIAot
IyBOZWVkIHRvIGhhbmRsZSBnZXR0aW5nIHRleHQvaHRtbCBpbiBDbGlwYm9hcmRXaW46OmdldERh
dGEuCi1lZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwuaHRtbAotZmFzdC9ldmVu
dHMvb25kcm9wLXRleHQtaHRtbC5odG1sCi0KICMgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzcwOTY+
IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1pZnJhbWUtc3JjLWFsaWFzLmh0bWwgc29t
ZXRpbWVzIHRpbWVzIG91dCBvbiBXaW5kb3dzCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5J
RUQtaWZyYW1lLXNyYy1hbGlhcy5odG1sCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ1NmRlMDBkYzIzMDlkNWM0NTJiNzgyZmMxZjFj
NzcyZWEyNmFmNi4uM2M4YTg4N2EyZGFlYWM1YWI0YzQ3NDIyNTIxMWU0MjNkNzRjZTVhNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMC0wNy0yMCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGltcGxlbWVu
dCBnZXREYXRhKCd0ZXh0L2h0bWwnKSBmb3Igd2Via2l0IHdpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5ODEKKworICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dE1hcmt1cEZyb21DRkhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q0ZIVE1MKToKKyAgICAg
ICAgKFdlYkNvcmU6OmZyYWdtZW50RnJvbUNGSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpmcmFn
bWVudEZyb21IVE1MKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcGJvYXJkVHlwZUZyb21NSU1FVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmdldERhdGEpOgorCiAyMDEwLTA3
LTIwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCmluZGV4IGU2YWY3ZWZiMWM2MmY4ZGNjOGIxZDk5OTZkYWQ5NGYyMzk1
MGI4MGUuLmE0NzA4M2U5ODZlNzQ4NGVjYmE0MDRkODNmNTZkYTM5YmE4YTk3MGMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMTU0LDYg
KzE1NCwxNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmQoVmVjdG9yPGNoYXI+JiB2ZWN0b3IsIGNvbnN0
IENTdHJpbmcmIHN0cmluZykKICAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZy5kYXRhKCksIHN0cmlu
Zy5sZW5ndGgoKSk7CiB9CiAKKy8vIEZpbmQgdGhlIG1hcmt1cCBiZXR3ZWVuICI8IS0tU3RhcnRG
cmFnbWVudCAtLT4iIGFuZCAiPCEtLUVuZEZyYWdtZW50IC0tPiIsIGFjY291bnRpbmcgZm9yIGJy
b3dzZXIgcXVpcmtzLgorc3RhdGljIFN0cmluZyBleHRyYWN0TWFya3VwRnJvbUNGSFRNTChjb25z
dCBTdHJpbmcmIGNmaHRtbCkKK3sKKyAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRtbC5m
aW5kKCI8aHRtbCIsIDAsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmaHRtbC5m
aW5kKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCBm
cmFnbWVudFN0YXJ0ID0gY2ZodG1sLmZpbmQoJz4nLCB0YWdTdGFydCkgKyAxOworICAgIHVuc2ln
bmVkIHRhZ0VuZCA9IGNmaHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZyYWdtZW50U3RhcnQsIGZh
bHNlKTsKKyAgICB1bnNpZ25lZCBmcmFnbWVudEVuZCA9IGNmaHRtbC5yZXZlcnNlRmluZCgnPCcs
IHRhZ0VuZCk7CisgICAgcmV0dXJuIGNmaHRtbC5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCwgZnJh
Z21lbnRFbmQgLSBmcmFnbWVudFN0YXJ0KS5zdHJpcFdoaXRlU3BhY2UoKTsKK30KKwogLy8gRG9j
dW1lbnRhdGlvbiBmb3IgdGhlIENGX0hUTUwgZm9ybWF0IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8v
bXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL25ldHdvcmtpbmcvY2xpcGJvYXJkL2h0bWxjbGlw
Ym9hcmQuYXNwCiB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25z
dCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCiB7CkBAIC0zODYsNiArMzk3
LDI0IEBAIFN0cmluZyBnZXRUZXh0SFRNTChJRGF0YU9iamVjdCogZGF0YSwgYm9vbCYgc3VjY2Vz
cykKICAgICByZXR1cm4gaHRtbDsKIH0KIAorU3RyaW5nIGdldENGSFRNTChJRGF0YU9iamVjdCog
ZGF0YSwgYm9vbCYgc3VjY2VzcykKK3sKKyAgICBTVEdNRURJVU0gc3RvcmU7CisgICAgU3RyaW5n
IGh0bWw7CisgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIGlmIChTVUNDRUVERUQoZGF0YS0+R2V0
RGF0YShodG1sRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAgIC8vIE1TIEhUTUwgRm9ybWF0
IHBhcnNpbmcKKyAgICAgICAgY2hhciogZGF0YSA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxM
b2NrKHN0b3JlLmhHbG9iYWwpKTsKKyAgICAgICAgU0laRV9UIGRhdGFTaXplID0gOjpHbG9iYWxT
aXplKHN0b3JlLmhHbG9iYWwpOworICAgICAgICBTdHJpbmcgY2ZodG1sKFVURjhFbmNvZGluZygp
LmRlY29kZShkYXRhLCBkYXRhU2l6ZSkpOworICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEds
b2JhbCk7CisgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKKyAgICAgICAgaHRtbCA9
IGV4dHJhY3RNYXJrdXBGcm9tQ0ZIVE1MKGNmaHRtbCk7CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gaHRtbDsKK30KKwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudEZyb21GaWxlbmFtZXMoRG9jdW1lbnQqLCBjb25zdCBJRGF0YU9iamVjdCop
CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBmcmFnbWVudHMg
ZnJvbSBmaWxlcwpAQCAtNDAwLDcgKzQyOSw3IEBAIGJvb2wgY29udGFpbnNGaWxlbmFtZXMoY29u
c3QgSURhdGFPYmplY3QqKQogCiAvLyBDb252ZXJ0IGEgU3RyaW5nIGNvbnRhaW5pbmcgQ0ZfSFRN
TCBmb3JtYXR0ZWQgdGV4dCB0byBhIERvY3VtZW50RnJhZ21lbnQKIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tQ0ZIVE1MKERvY3VtZW50KiBkb2MsIGNvbnN0IFN0cmlu
ZyYgY2ZodG1sKQoteyAgICAgICAgCit7CiAgICAgLy8gb2J0YWluIGJhc2VVUkwgaWYgcHJlc2Vu
dAogICAgIFN0cmluZyBzcmNVUkxTdHIoInNvdXJjZVVSTDoiKTsKICAgICBTdHJpbmcgc3JjVVJM
OwpAQCAtNDEzLDE4ICs0NDIsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudEZyb21DRkhUTUwoRG9jdW1lbnQqIGRvYywgY29uc3QgU3RyaW5nJiBjZmgKICAgICAgICAg
c3JjVVJMID0gcmF3U3JjVVJMLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIH0KIAotICAgIC8vIGZp
bmQgdGhlIG1hcmt1cCBiZXR3ZWVuICI8IS0tU3RhcnRGcmFnbWVudCAtLT4iIGFuZCAiPCEtLUVu
ZEZyYWdtZW50IC0tPiIsIGFjY291bnRpbmcgZm9yIGJyb3dzZXIgcXVpcmtzCi0gICAgdW5zaWdu
ZWQgbWFya3VwU3RhcnQgPSBjZmh0bWwuZmluZCgiPGh0bWwiLCAwLCBmYWxzZSk7Ci0gICAgdW5z
aWduZWQgdGFnU3RhcnQgPSBjZmh0bWwuZmluZCgic3RhcnRmcmFnbWVudCIsIG1hcmt1cFN0YXJ0
LCBmYWxzZSk7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRTdGFydCA9IGNmaHRtbC5maW5kKCc+Jywg
dGFnU3RhcnQpICsgMTsKLSAgICB1bnNpZ25lZCB0YWdFbmQgPSBjZmh0bWwuZmluZCgiZW5kZnJh
Z21lbnQiLCBmcmFnbWVudFN0YXJ0LCBmYWxzZSk7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRFbmQg
PSBjZmh0bWwucmV2ZXJzZUZpbmQoJzwnLCB0YWdFbmQpOwotICAgIFN0cmluZyBtYXJrdXAgPSBj
Zmh0bWwuc3Vic3RyaW5nKGZyYWdtZW50U3RhcnQsIGZyYWdtZW50RW5kIC0gZnJhZ21lbnRTdGFy
dCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KKyAgICBTdHJpbmcgbWFya3VwID0gZXh0cmFjdE1hcmt1
cEZyb21DRkhUTUwoY2ZodG1sKTsKICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3Vw
KGRvYywgbWFya3VwLCBzcmNVUkwsIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCk7CiB9CiAK
LQogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21IVE1MKERvY3VtZW50
KiBkb2MsIElEYXRhT2JqZWN0KiBkYXRhKSAKIHsKICAgICBpZiAoIWRvYyB8fCAhZGF0YSkKQEAg
LTQzNyw3ICs0NTgsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJv
bUhUTUwoRG9jdW1lbnQqIGRvYywgSURhdGFPYmplY3QqIGRhdGEpCiAgICAgICAgIC8vIE1TIEhU
TUwgRm9ybWF0IHBhcnNpbmcKICAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2Nr
KHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBTSVpFX1QgZGF0YVNpemUgPSA6Okdsb2JhbFNpemUo
c3RvcmUuaEdsb2JhbCk7Ci0gICAgICAgIFN0cmluZyBjZmh0bWwoVVRGOEVuY29kaW5nKCkuZGVj
b2RlKGRhdGEsIGRhdGFTaXplKSk7ICAgICAgICAgCisgICAgICAgIFN0cmluZyBjZmh0bWwoVVRG
OEVuY29kaW5nKCkuZGVjb2RlKGRhdGEsIGRhdGFTaXplKSk7CiAgICAgICAgIEdsb2JhbFVubG9j
ayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOyAKICAg
ICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVu
dEZyb21DRkhUTUwoZG9jLCBjZmh0bWwpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uaAppbmRleCA0Y2E0NmY5ZGYyNWMyZmIxMjc4ZjVjZDJmZjZlNmM2MWZl
ZDgzMzA1Li45ZDEzZTRmMzcwYzVkZDVmNGMzODRjNzcwZTI5ZjZkMGM1NTYwZmY2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtNTAsNiArNTAs
NyBAQCBGT1JNQVRFVEMqIGNmSERyb3BGb3JtYXQoKTsKIEZPUk1BVEVUQyogc21hcnRQYXN0ZUZv
cm1hdCgpOwogCiB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25z
dCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpOworU3RyaW5nIHVybFRvTWFy
a3VwKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKIHZvaWQgcmVwbGFj
ZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKFN0cmluZyYpOwogdm9pZCByZXBsYWNl
TkJTUFdpdGhTcGFjZShTdHJpbmcmKTsKQEAgLTY0LDYgKzY1LDcgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21DRkhUTUwoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcm
IGNmaHRtbCkKIFN0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqLCBEcmFnRGF0YTo6RmlsZW5hbWVD
b252ZXJzaW9uUG9saWN5LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlID0gMCk7CiBTdHJp
bmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CiBTdHJpbmcgZ2V0
VGV4dEhUTUwoSURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNzKTsKK1N0cmluZyBnZXRDRkhUTUwo
SURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAppbmRleCAyY2Q2ZmViZTNkYTlmMGJm
NDgwMGY4OTQxM2E3OGI2OThhOWFhNzlmLi42YmIxNzE0OGNhMjYzNzBjNzFmYjUxMTcxNDQ4MTM1
MzZlM2YwNjIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgc3pTaGVsbERvdFVybFRlbXBsYXRlW10gPSAiW0lu
dGVybmV0U2hvcnRjdXRdXHJcblVSTD0lc1xyXG4iOwogLy8gV2UgcHJvdmlkZSB0aGUgSUUgY2xp
cGJvYXJkIHR5cGVzIChVUkwgYW5kIFRleHQpLCBhbmQgdGhlIGNsaXBib2FyZCB0eXBlcyBzcGVj
aWZpZWQgaW4gdGhlIFdIQVRXRyBXZWIgQXBwbGljYXRpb25zIDEuMCBkcmFmdAogLy8gc2VlIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvIFNlY3Rpb24g
Ni4zLjUuMwogCi1lbnVtIENsaXBib2FyZERhdGFUeXBlIHsgQ2xpcGJvYXJkRGF0YVR5cGVOb25l
LCBDbGlwYm9hcmREYXRhVHlwZVVSTCwgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0IH07CitlbnVtIENs
aXBib2FyZERhdGFUeXBlIHsgQ2xpcGJvYXJkRGF0YVR5cGVOb25lLCBDbGlwYm9hcmREYXRhVHlw
ZVVSTCwgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0LCBDbGlwYm9hcmREYXRhVHlwZVRleHRIVE1MIH07
CiAKIHN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSkKIHsKQEAgLTgxLDYgKzgxLDggQEAgc3RhdGljIENsaXBib2FyZERh
dGFUeXBlIGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAg
ICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OwogICAgIGlmIChxVHlwZSA9PSAidXJs
IiB8fCBxVHlwZSA9PSAidGV4dC91cmktbGlzdCIpCiAgICAgICAgIHJldHVybiBDbGlwYm9hcmRE
YXRhVHlwZVVSTDsKKyAgICBpZiAocVR5cGUgPT0gInRleHQvaHRtbCIpCisgICAgICAgIHJldHVy
biBDbGlwYm9hcmREYXRhVHlwZVRleHRIVE1MOwogCiAgICAgcmV0dXJuIENsaXBib2FyZERhdGFU
eXBlTm9uZTsKIH0KQEAgLTQ5OCw2ICs1MDAsMTIgQEAgU3RyaW5nIENsaXBib2FyZFdpbjo6Z2V0
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBnZXRQbGFpblRleHQobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKICAgICBpZiAo
ZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpCiAgICAgICAgIHJldHVybiBnZXRVUkwo
bV9kYXRhT2JqZWN0LmdldCgpLCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBzdWNj
ZXNzKTsKKyAgICBlbHNlIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHRIVE1M
KSB7CisgICAgICAgIFN0cmluZyBkYXRhID0gZ2V0VGV4dEhUTUwobV9kYXRhT2JqZWN0LmdldCgp
LCBzdWNjZXNzKTsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZGF0
YTsKKyAgICAgICAgcmV0dXJuIGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3Mp
OworICAgIH0KICAgICAKICAgICByZXR1cm4gIiI7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62844</attachid>
            <date>2010-07-28 10:30:24 -0700</date>
            <delta_ts>2010-07-28 16:21:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-37981-20100728103022.patch</filename>
            <type>text/plain</type>
            <size>9335</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMWU1MDNhZDJiYWY1NjgzZDU2NzIyYTMxYzI4NWViZTE1NTIzNWQyLi42NGM5YTZh
NzU0YjIyNWRjY2EyZGY3MDRlM2UxNDM3YmIzM2ZhZDIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDctMjAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIGltcGxlbWVudCBnZXREYXRhKCd0ZXh0
L2h0bWwnKSBmb3Igd2Via2l0IHdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzc5ODEKKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiAy
IHRlc3RzIG5vdyBwYXNzCisKIDIwMTAtMDctMjAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZAppbmRleCAyMjYxMmIzYzcwYjRlMDU5YzhhY2ZlZmZmMDE1NjBmMGY5ZmQw
NTM4Li5mNWQxZDdkZGJiMjMzZjEyNThhM2M5NDI5YmYxNmJlZGQ3MjQxY2Y1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZApAQCAtODQ2LDEwICs4NDYsNiBAQCBmYXN0L3JlcGFpbnQvb3ZlcmZs
b3ctc2Nyb2xsLWJvZHktYXBwZWFyLmh0bWwKICMgTmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0
byBEdW1wUmVuZGVyVHJlZSB0byBoYW5kbGUgc2Nyb2xsYmFyIHBvbGljZSBjaGFuZ2VzCiBmYXN0
L292ZXJmbG93L3Njcm9sbGJhci1yZXN0b3JlZC1hbmQtdGhlbi1sb2NrZWQuaHRtbAogCi0jIE5l
ZWQgdG8gaGFuZGxlIGdldHRpbmcgdGV4dC9odG1sIGluIENsaXBib2FyZFdpbjo6Z2V0RGF0YS4K
LWVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC5odG1sCi1mYXN0L2V2ZW50cy9v
bmRyb3AtdGV4dC1odG1sLmh0bWwKLQogIyA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNzA5Nj4gaHR0
cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWlmcmFtZS1zcmMtYWxpYXMuaHRtbCBzb21ldGlt
ZXMgdGltZXMgb3V0IG9uIFdpbmRvd3MKIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1p
ZnJhbWUtc3JjLWFsaWFzLmh0bWwKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZDU2ZGUwMGRjMjMwOWQ1YzQ1MmI3ODJmYzFmMWM3NzJl
YTI2YWY2Li5lMTZhOWY2Y2UyMmJmMjlkZTQ3NjY0YmZiY2Y3YzBmMGM1NjU1Yjg1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDEwLTA3LTIwICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBpbXBsZW1lbnQgZ2V0RGF0
YSgndGV4dC9odG1sJykgZm9yIHdlYmtpdCB3aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3OTgxCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBG
cm9tQ0ZIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENGSFRNTCk6CisgICAgICAgIChXZWJD
b3JlOjpmcmFnbWVudEZyb21DRkhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6ZnJhZ21lbnRGcm9t
SFRNTCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToKKwogMjAxMC0wNy0yMCAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEJldGggRGFraW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmNwcAppbmRleCBlNmFmN2VmYjFjNjJmOGRjYzhiMWQ5OTk2ZGFkOTRmMjM5NTBiODBlLi4z
ODMxMDkwNjVmNjU4Y2FkOTZjOGU1MjJiMzYzY2JkMjZhODYzYWEwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTE0NCw2ICsxNDQsMjMg
QEAgSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQog
ICAgIHJldHVybiBnbG9iYWxEYXRhOwogfQogCitzdGF0aWMgU3RyaW5nIGdldEZ1bGxDRkhUTUwo
SURhdGFPYmplY3QqIGRhdGEsIGJvb2wmIHN1Y2Nlc3MpCit7CisgICAgU1RHTUVESVVNIHN0b3Jl
OworICAgIGlmIChTVUNDRUVERUQoZGF0YS0+R2V0RGF0YShodG1sRm9ybWF0KCksICZzdG9yZSkp
KSB7CisgICAgICAgIC8vIE1TIEhUTUwgRm9ybWF0IHBhcnNpbmcKKyAgICAgICAgY2hhciogZGF0
YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICBTSVpFX1QgZGF0
YVNpemUgPSA6Okdsb2JhbFNpemUoc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIFN0cmluZyBjZmh0
bWwgPSBVVEY4RW5jb2RpbmcoKS5kZWNvZGUoZGF0YSwgZGF0YVNpemUpOworICAgICAgICBHbG9i
YWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3Jl
KTsgCisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICByZXR1cm4gY2ZodG1sOworICAg
IH0KKyAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdGF0
aWMgdm9pZCBhcHBlbmQoVmVjdG9yPGNoYXI+JiB2ZWN0b3IsIGNvbnN0IGNoYXIqIHN0cmluZykK
IHsKICAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZywgc3RybGVuKHN0cmluZykpOwpAQCAtMTU0LDYg
KzE3MSwxNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmQoVmVjdG9yPGNoYXI+JiB2ZWN0b3IsIGNvbnN0
IENTdHJpbmcmIHN0cmluZykKICAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZy5kYXRhKCksIHN0cmlu
Zy5sZW5ndGgoKSk7CiB9CiAKKy8vIEZpbmQgdGhlIG1hcmt1cCBiZXR3ZWVuICI8IS0tU3RhcnRG
cmFnbWVudCAtLT4iIGFuZCAiPCEtLUVuZEZyYWdtZW50IC0tPiIsIGFjY291bnRpbmcgZm9yIGJy
b3dzZXIgcXVpcmtzLgorc3RhdGljIFN0cmluZyBleHRyYWN0TWFya3VwRnJvbUNGSFRNTChjb25z
dCBTdHJpbmcmIGNmaHRtbCkKK3sKKyAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRtbC5m
aW5kKCI8aHRtbCIsIDAsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmaHRtbC5m
aW5kKCJzdGFydGZyYWdtZW50IiwgbWFya3VwU3RhcnQsIGZhbHNlKTsKKyAgICB1bnNpZ25lZCBm
cmFnbWVudFN0YXJ0ID0gY2ZodG1sLmZpbmQoJz4nLCB0YWdTdGFydCkgKyAxOworICAgIHVuc2ln
bmVkIHRhZ0VuZCA9IGNmaHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZyYWdtZW50U3RhcnQsIGZh
bHNlKTsKKyAgICB1bnNpZ25lZCBmcmFnbWVudEVuZCA9IGNmaHRtbC5yZXZlcnNlRmluZCgnPCcs
IHRhZ0VuZCk7CisgICAgcmV0dXJuIGNmaHRtbC5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCwgZnJh
Z21lbnRFbmQgLSBmcmFnbWVudFN0YXJ0KS5zdHJpcFdoaXRlU3BhY2UoKTsKK30KKwogLy8gRG9j
dW1lbnRhdGlvbiBmb3IgdGhlIENGX0hUTUwgZm9ybWF0IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8v
bXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL25ldHdvcmtpbmcvY2xpcGJvYXJkL2h0bWxjbGlw
Ym9hcmQuYXNwCiB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25z
dCBTdHJpbmcmIHNyY1VSTCwgVmVjdG9yPGNoYXI+JiByZXN1bHQpCiB7CkBAIC0zODYsNiArNDE0
LDE0IEBAIFN0cmluZyBnZXRUZXh0SFRNTChJRGF0YU9iamVjdCogZGF0YSwgYm9vbCYgc3VjY2Vz
cykKICAgICByZXR1cm4gaHRtbDsKIH0KIAorU3RyaW5nIGdldENGSFRNTChJRGF0YU9iamVjdCog
ZGF0YSwgYm9vbCYgc3VjY2VzcykKK3sKKyAgICBTdHJpbmcgY2ZodG1sID0gZ2V0RnVsbENGSFRN
TChkYXRhLCBzdWNjZXNzKTsKKyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIGV4dHJh
Y3RNYXJrdXBGcm9tQ0ZIVE1MKGNmaHRtbCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhEb2N1bWVu
dCosIGNvbnN0IElEYXRhT2JqZWN0KikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gY3JlYXRlIGZyYWdtZW50cyBmcm9tIGZpbGVzCkBAIC00MDAsNyArNDM2LDcgQEAgYm9v
bCBjb250YWluc0ZpbGVuYW1lcyhjb25zdCBJRGF0YU9iamVjdCopCiAKIC8vIENvbnZlcnQgYSBT
dHJpbmcgY29udGFpbmluZyBDRl9IVE1MIGZvcm1hdHRlZCB0ZXh0IHRvIGEgRG9jdW1lbnRGcmFn
bWVudAogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21DRkhUTUwoRG9j
dW1lbnQqIGRvYywgY29uc3QgU3RyaW5nJiBjZmh0bWwpCi17ICAgICAgICAKK3sKICAgICAvLyBv
YnRhaW4gYmFzZVVSTCBpZiBwcmVzZW50CiAgICAgU3RyaW5nIHNyY1VSTFN0cigic291cmNlVVJM
OiIpOwogICAgIFN0cmluZyBzcmNVUkw7CkBAIC00MTMsMzggKzQ0OSwyNCBAQCBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGSFRNTChEb2N1bWVudCogZG9jLCBjb25z
dCBTdHJpbmcmIGNmaAogICAgICAgICBzcmNVUkwgPSByYXdTcmNVUkwuc3RyaXBXaGl0ZVNwYWNl
KCk7CiAgICAgfQogCi0gICAgLy8gZmluZCB0aGUgbWFya3VwIGJldHdlZW4gIjwhLS1TdGFydEZy
YWdtZW50IC0tPiIgYW5kICI8IS0tRW5kRnJhZ21lbnQgLS0+IiwgYWNjb3VudGluZyBmb3IgYnJv
d3NlciBxdWlya3MKLSAgICB1bnNpZ25lZCBtYXJrdXBTdGFydCA9IGNmaHRtbC5maW5kKCI8aHRt
bCIsIDAsIGZhbHNlKTsKLSAgICB1bnNpZ25lZCB0YWdTdGFydCA9IGNmaHRtbC5maW5kKCJzdGFy
dGZyYWdtZW50IiwgbWFya3VwU3RhcnQsIGZhbHNlKTsKLSAgICB1bnNpZ25lZCBmcmFnbWVudFN0
YXJ0ID0gY2ZodG1sLmZpbmQoJz4nLCB0YWdTdGFydCkgKyAxOwotICAgIHVuc2lnbmVkIHRhZ0Vu
ZCA9IGNmaHRtbC5maW5kKCJlbmRmcmFnbWVudCIsIGZyYWdtZW50U3RhcnQsIGZhbHNlKTsKLSAg
ICB1bnNpZ25lZCBmcmFnbWVudEVuZCA9IGNmaHRtbC5yZXZlcnNlRmluZCgnPCcsIHRhZ0VuZCk7
Ci0gICAgU3RyaW5nIG1hcmt1cCA9IGNmaHRtbC5zdWJzdHJpbmcoZnJhZ21lbnRTdGFydCwgZnJh
Z21lbnRFbmQgLSBmcmFnbWVudFN0YXJ0KS5zdHJpcFdoaXRlU3BhY2UoKTsKLQorICAgIFN0cmlu
ZyBtYXJrdXAgPSBleHRyYWN0TWFya3VwRnJvbUNGSFRNTChjZmh0bWwpOwogICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jLCBtYXJrdXAsIHNyY1VSTCwgRnJhZ21lbnRTY3Jp
cHRpbmdOb3RBbGxvd2VkKTsKIH0KIAotCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqIGRvYywgSURhdGFPYmplY3QqIGRhdGEpIAogewogICAg
IGlmICghZG9jIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFNUR01FRElVTSBz
dG9yZTsKLSAgICBTdHJpbmcgaHRtbDsKLSAgICBTdHJpbmcgc3JjVVJMOwotICAgIGlmIChTVUND
RUVERUQoZGF0YS0+R2V0RGF0YShodG1sRm9ybWF0KCksICZzdG9yZSkpKSB7Ci0gICAgICAgIC8v
IE1TIEhUTUwgRm9ybWF0IHBhcnNpbmcKLSAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9i
YWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBTSVpFX1QgZGF0YVNpemUgPSA6Okdsb2Jh
bFNpemUoc3RvcmUuaEdsb2JhbCk7Ci0gICAgICAgIFN0cmluZyBjZmh0bWwoVVRGOEVuY29kaW5n
KCkuZGVjb2RlKGRhdGEsIGRhdGFTaXplKSk7ICAgICAgICAgCi0gICAgICAgIEdsb2JhbFVubG9j
ayhzdG9yZS5oR2xvYmFsKTsKLSAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOyAKKyAg
ICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBTdHJpbmcgY2ZodG1sID0gZ2V0RnVsbENGSFRN
TChkYXRhLCBzdWNjZXNzKTsKKyAgICBpZiAoc3VjY2VzcykgewogICAgICAgICBpZiAoUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUNGSFRNTChkb2Ms
IGNmaHRtbCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7Ci0gICAgfSAKLSAgICBib29s
IHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBodG1sID0gZ2V0VGV4dEhUTUwoZGF0YSwgc3VjY2Vzcyk7
CisgICAgfQorCisgICAgU3RyaW5nIGh0bWwgPSBnZXRUZXh0SFRNTChkYXRhLCBzdWNjZXNzKTsK
KyAgICBTdHJpbmcgc3JjVVJMOwogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXR1cm4gY3Jl
YXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvYywgaHRtbCwgc3JjVVJMLCBGcmFnbWVudFNjcmlwdGlu
Z05vdEFsbG93ZWQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uaCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5oCmluZGV4IDRjYTQ2ZjlkZjI1YzJmYjEyNzhmNWNkMmZmNmU2YzYxZmVkODMzMDUuLmZl
MDE0OTk2MWUzZjdmYmNkZWQ0YTIxMTk1NjM1ZjlhMjM3ZWFmNjcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC02NCw2ICs2NCw3IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tQ0ZIVE1MKERvY3VtZW50KiwgY29u
c3QgU3RyaW5nJiBjZmh0bWwpCiBTdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiwgRHJhZ0RhdGE6
OkZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9
IDApOwogU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MpOwog
U3RyaW5nIGdldFRleHRIVE1MKElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CitTdHJpbmcg
Z2V0Q0ZIVE1MKElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2lu
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMmNkNmZl
YmUzZGE5ZjBiZjQ4MDBmODk0MTNhNzhiNjk4YTlhYTc5Zi4uNmJiMTcxNDhjYTI2MzcwYzcxZmI1
MTE3MTQ0ODEzNTM2ZTNmMDYyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHN6U2hlbGxEb3RVcmxUZW1wbGF0
ZVtdID0gIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9JXNcclxuIjsKIC8vIFdlIHByb3ZpZGUg
dGhlIElFIGNsaXBib2FyZCB0eXBlcyAoVVJMIGFuZCBUZXh0KSwgYW5kIHRoZSBjbGlwYm9hcmQg
dHlwZXMgc3BlY2lmaWVkIGluIHRoZSBXSEFUV0cgV2ViIEFwcGxpY2F0aW9ucyAxLjAgZHJhZnQK
IC8vIHNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyBTZWN0aW9uIDYuMy41LjMKIAotZW51bSBDbGlwYm9hcmREYXRhVHlwZSB7IENsaXBib2FyZERh
dGFUeXBlTm9uZSwgQ2xpcGJvYXJkRGF0YVR5cGVVUkwsIENsaXBib2FyZERhdGFUeXBlVGV4dCB9
OworZW51bSBDbGlwYm9hcmREYXRhVHlwZSB7IENsaXBib2FyZERhdGFUeXBlTm9uZSwgQ2xpcGJv
YXJkRGF0YVR5cGVVUkwsIENsaXBib2FyZERhdGFUeXBlVGV4dCwgQ2xpcGJvYXJkRGF0YVR5cGVU
ZXh0SFRNTCB9OwogCiBzdGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgY2xpcGJvYXJkVHlwZUZyb21N
SU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CkBAIC04MSw2ICs4MSw4IEBAIHN0YXRpYyBD
bGlwYm9hcmREYXRhVHlwZSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKICAgICAgICAgcmV0dXJuIENsaXBib2FyZERhdGFUeXBlVGV4dDsKICAgICBpZiAocVR5
cGUgPT0gInVybCIgfHwgcVR5cGUgPT0gInRleHQvdXJpLWxpc3QiKQogICAgICAgICByZXR1cm4g
Q2xpcGJvYXJkRGF0YVR5cGVVUkw7CisgICAgaWYgKHFUeXBlID09ICJ0ZXh0L2h0bWwiKQorICAg
ICAgICByZXR1cm4gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0SFRNTDsKIAogICAgIHJldHVybiBDbGlw
Ym9hcmREYXRhVHlwZU5vbmU7CiB9CkBAIC00OTgsNiArNTAwLDEyIEBAIFN0cmluZyBDbGlwYm9h
cmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAog
ICAgICAgICByZXR1cm4gZ2V0UGxhaW5UZXh0KG1fZGF0YU9iamVjdC5nZXQoKSwgc3VjY2Vzcyk7
CiAgICAgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKQogICAgICAgICByZXR1
cm4gZ2V0VVJMKG1fZGF0YU9iamVjdC5nZXQoKSwgRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVu
YW1lcywgc3VjY2Vzcyk7CisgICAgZWxzZSBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5
cGVUZXh0SFRNTCkgeworICAgICAgICBTdHJpbmcgZGF0YSA9IGdldFRleHRIVE1MKG1fZGF0YU9i
amVjdC5nZXQoKSwgc3VjY2Vzcyk7CisgICAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICAgICAg
cmV0dXJuIGRhdGE7CisgICAgICAgIHJldHVybiBnZXRDRkhUTUwobV9kYXRhT2JqZWN0LmdldCgp
LCBzdWNjZXNzKTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuICIiOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>