<?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>58106</bug_id>
          
          <creation_ts>2011-04-07 18:03:27 -0700</creation_ts>
          <short_desc>[chromium] Implement image/png support in DataTransferItems</short_desc>
          <delta_ts>2011-04-11 14:04:30 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dimich</cc>
    
    <cc>hayato</cc>
    
    <cc>jianli</cc>
    
    <cc>levin</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381901</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-07 18:03:27 -0700</bug_when>
    <thetext>Pretty much what it says. For now, we use an implementation that performs more copies than strictly necessary. This is partially to provide proof-of-concept that a similar will implementation for drag-and-drop will work (which will suffer these inefficiencies no matter what).

For Chrome 13, it would make sense to create a new registerClipboardBlobData() IPC to reduce the number of copies needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381912</commentid>
    <comment_count>1</comment_count>
      <attachid>88748</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-07 18:16:42 -0700</bug_when>
    <thetext>Created attachment 88748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381924</commentid>
    <comment_count>2</comment_count>
      <attachid>88748</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-07 18:40:54 -0700</bug_when>
    <thetext>Comment on attachment 88748
Patch

I forgot to update the deps for the chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382512</commentid>
    <comment_count>3</comment_count>
      <attachid>88867</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-08 13:32:28 -0700</bug_when>
    <thetext>Created attachment 88867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382544</commentid>
    <comment_count>4</comment_count>
      <attachid>88867</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-04-08 13:59:27 -0700</bug_when>
    <thetext>Comment on attachment 88867
Patch

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

Looks good, some comments below. r- because of 1 second delay in the test - if it is actually needed for the test to pass, it looks suspicious.

&gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png-expected.html:3
&gt; +&lt;body onpaste=&quot;paste(event)&quot;&gt;

probably does not need onpaste.

&gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png.html:3
&gt; +&lt;body onpaste=&quot;paste(event)&quot;&gt;

To make it more explicit, I&apos;d eiher add an explicit padding to body (so the mouseMove(1,1) lands explicitly on body) or swapped iframe with the explanation text.

&gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png.html:14
&gt; +    console.log(items.length);

Either make it reflected in the result of the test (by assigning into some element.innerText?) or lets remove it.

&gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png.html:25
&gt; +    }, 1000);

Do you really need a full second here? It seems 0 would be enough.

&gt; Source/WebCore/ChangeLog:11
&gt; +        The initial implementation is somewhat inefficient in terms of copies,

This statement should either be removed or fleshed out with explicit data. What is exactly the inefficiency, when and how will it be fixed.
Also, this patch seems to not be a proof-of-concept but rather a working code with a test :-)

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:121
&gt; +        // Yikes.

You can remove &quot;Yikes.&quot; It doesn&apos;t add more info here.
Please make sure there is a bug on improving this and reference it in this bug&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382564</commentid>
    <comment_count>5</comment_count>
      <attachid>88875</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-08 14:26:27 -0700</bug_when>
    <thetext>Created attachment 88875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382565</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-08 14:26:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 88867 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88867&amp;action=review
&gt; 
&gt; Looks good, some comments below. r- because of 1 second delay in the test - if it is actually needed for the test to pass, it looks suspicious.
&gt; 
&gt; &gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png-expected.html:3
&gt; &gt; +&lt;body onpaste=&quot;paste(event)&quot;&gt;
&gt; 
&gt; probably does not need onpaste.
&gt; 

Done.

&gt; &gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png.html:3
&gt; &gt; +&lt;body onpaste=&quot;paste(event)&quot;&gt;
&gt; 
&gt; To make it more explicit, I&apos;d eiher add an explicit padding to body (so the mouseMove(1,1) lands explicitly on body) or swapped iframe with the explanation text.
&gt; 

Done.

&gt; &gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png.html:14
&gt; &gt; +    console.log(items.length);
&gt; 
&gt; Either make it reflected in the result of the test (by assigning into some element.innerText?) or lets remove it.
&gt; 

Done. This was an artifact of some test debugging that got left in.

&gt; &gt; LayoutTests/editing/pasteboard/data-transfer-items-image-png.html:25
&gt; &gt; +    }, 1000);
&gt; 
&gt; Do you really need a full second here? It seems 0 would be enough.
&gt; 

Done.

&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        The initial implementation is somewhat inefficient in terms of copies,
&gt; 
&gt; This statement should either be removed or fleshed out with explicit data. What is exactly the inefficiency, when and how will it be fixed.
&gt; Also, this patch seems to not be a proof-of-concept but rather a working code with a test :-)
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:121
&gt; &gt; +        // Yikes.
&gt; 
&gt; You can remove &quot;Yikes.&quot; It doesn&apos;t add more info here.
&gt; Please make sure there is a bug on improving this and reference it in this bug&apos;s comments.

I&apos;ve removed the comment in the ChangeLog and updated the implementation with more info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382576</commentid>
    <comment_count>7</comment_count>
      <attachid>88875</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-04-08 15:00:59 -0700</bug_when>
    <thetext>Comment on attachment 88875
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382624</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-08 15:59:44 -0700</bug_when>
    <thetext>Committed r83353: &lt;http://trac.webkit.org/changeset/83353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382994</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-10 18:44:38 -0700</bug_when>
    <thetext>The test has never been passed on all of Chromium ports.  I&apos;ll roll it out.

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=editing%2Fpasteboard%2Fdata-transfer-items-image-png.html&amp;showExpectations=true&amp;showLargeExpectations=true&amp;group=%40ToT%20-%20chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382997</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-10 18:50:11 -0700</bug_when>
    <thetext>Reverted r83353 for reason:

The new test doesn&apos;t pass on all Chromium platforms.

Committed r83412: &lt;http://trac.webkit.org/changeset/83412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383020</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-10 21:18:17 -0700</bug_when>
    <thetext>Hm. The test passed when I built it in in a Chromium checkout, but it fails if I only check out WebKit and build using build-webkit --chromium. Is there something obvious I&apos;m missing? The DEPS looks correct to me, and I&apos;m not sure what else is causing this difference in behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383065</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-11 01:28:26 -0700</bug_when>
    <thetext>I&apos;ve done more investigation, and I don&apos;t understand why the layout test only works sometimes:

Works:
run-webkit-tests.sh editing/pasteboard/data-transfer-items-image-png.html

Doesn&apos;t work:
run-webkit-tests.sh editing/pasteboard

Works:
Add a &lt;div id=&quot;console&quot;&gt;&lt;/div&gt; element, and at the end of the paste event handler, add the following snippet:
document.getElementById(&apos;console&apos;).appendChild(document.createTextNode(&apos;a&apos;));

Doesn&apos;t work:
Adding the console div element, but doing this instead at the end of the paste event handler:
document.getElementById(&apos;console&apos;).appendChild(document.createElement(&apos;br&apos;));

In all cases, when the layout test fails, it behaves as if no changes to the DOM had occurred. The pasted image does not appear at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383088</commentid>
    <comment_count>13</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-04-11 03:59:05 -0700</bug_when>
    <thetext>I can reproduce the issue locally:

Works:
  - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard/data-transfer-items-image-png.html
  - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard/copy-display-none.html LayoutTests/editing/pasteboard/data-transfer-items-image-png.html

Doesn&apos;t work (data-transfer-items-image-png.html failed):
  - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard
  - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard/crash-copy.html LayoutTests/editing/pasteboard/data-transfer-items-image-png.html

So I am wondering that something is wrong with the combination of (crash-copy.html and data-transfer-items-image-png.html). I guess the order matters.


(In reply to comment #12)
&gt; I&apos;ve done more investigation, and I don&apos;t understand why the layout test only works sometimes:
&gt; 
&gt; Works:
&gt; run-webkit-tests.sh editing/pasteboard/data-transfer-items-image-png.html
&gt; 
&gt; Doesn&apos;t work:
&gt; run-webkit-tests.sh editing/pasteboard
&gt; 
&gt; Works:
&gt; Add a &lt;div id=&quot;console&quot;&gt;&lt;/div&gt; element, and at the end of the paste event handler, add the following snippet:
&gt; document.getElementById(&apos;console&apos;).appendChild(document.createTextNode(&apos;a&apos;));
&gt; 
&gt; Doesn&apos;t work:
&gt; Adding the console div element, but doing this instead at the end of the paste event handler:
&gt; document.getElementById(&apos;console&apos;).appendChild(document.createElement(&apos;br&apos;));
&gt; 
&gt; In all cases, when the layout test fails, it behaves as if no changes to the DOM had occurred. The pasted image does not appear at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383095</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-04-11 04:16:32 -0700</bug_when>
    <thetext>I&apos;ve found that it works if we add &apos;--run-singly&apos; option:

Works:
  &gt; new-run-webkit-tests --run-singly --debug --verbose  LayoutTests/editing/pasteboard/copy-crash.html LayoutTests/editing/pasteboard/data-transfer-items-image-png.html

Doesn&apos;t work:
  &gt; new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard/copy-crash.html LayoutTests/editing/pasteboard/data-transfer-items-image-png.html


(In reply to comment #13)
&gt; I can reproduce the issue locally:
&gt; 
&gt; Works:
&gt;   - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard/data-transfer-items-image-png.html
&gt;   - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard/copy-display-none.html LayoutTests/editing/pasteboard/data-transfer-items-image-png.html
&gt; 
&gt; Doesn&apos;t work (data-transfer-items-image-png.html failed):
&gt;   - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard
&gt;   - new-run-webkit-tests --debug --verbose  LayoutTests/editing/pasteboard/crash-copy.html LayoutTests/editing/pasteboard/data-transfer-items-image-png.html
&gt; 
&gt; So I am wondering that something is wrong with the combination of (crash-copy.html and data-transfer-items-image-png.html). I guess the order matters.
&gt; 
&gt; 
&gt; (In reply to comment #12)
&gt; &gt; I&apos;ve done more investigation, and I don&apos;t understand why the layout test only works sometimes:
&gt; &gt; 
&gt; &gt; Works:
&gt; &gt; run-webkit-tests.sh editing/pasteboard/data-transfer-items-image-png.html
&gt; &gt; 
&gt; &gt; Doesn&apos;t work:
&gt; &gt; run-webkit-tests.sh editing/pasteboard
&gt; &gt; 
&gt; &gt; Works:
&gt; &gt; Add a &lt;div id=&quot;console&quot;&gt;&lt;/div&gt; element, and at the end of the paste event handler, add the following snippet:
&gt; &gt; document.getElementById(&apos;console&apos;).appendChild(document.createTextNode(&apos;a&apos;));
&gt; &gt; 
&gt; &gt; Doesn&apos;t work:
&gt; &gt; Adding the console div element, but doing this instead at the end of the paste event handler:
&gt; &gt; document.getElementById(&apos;console&apos;).appendChild(document.createElement(&apos;br&apos;));
&gt; &gt; 
&gt; &gt; In all cases, when the layout test fails, it behaves as if no changes to the DOM had occurred. The pasted image does not appear at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383127</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-04-11 06:08:04 -0700</bug_when>
    <thetext>I can reproduce this also. I confirmed that &apos;-expected.html&apos; strangely affects &apos;-actual.png&apos;.

That is related with the fact that new-run-webkit-tests will re-run a test if the test failed.
Let me explain:

At first run:
  1. The driver runs data-transfer-items-image-png.html. The result is an unexpected one because &apos;no changes to the DOM had occurred&apos;. I have no ideas why this strange behavior happens.
  2.  The driver runs data-transfer-items-image-png-expected.html. In this run, changes to the DOM occurred.

new-run-webkit-tests will try to re-run this test.

At re-run:
  3. The driver re-runs data-transfer-items-image-png.html. The result is an expected one because changes to the DOM already occurred at stage &apos;2&apos;.
  4. The driver runs data-transfer-items-image-png-expected.html.


So the final result of &apos;-actual-png&apos;, which is the result of &apos;3&apos;, might differ depending on whether the run of &apos;-expected.html&apos; changes DOM or not at stage &apos;2&apos;.

The same driver (DumpRenderTree instance) is used at all stages.


(In reply to comment #12)
&gt; I&apos;ve done more investigation, and I don&apos;t understand why the layout test only works sometimes:
&gt; 
&gt; Works:
&gt; run-webkit-tests.sh editing/pasteboard/data-transfer-items-image-png.html
&gt; 
&gt; Doesn&apos;t work:
&gt; run-webkit-tests.sh editing/pasteboard
&gt; 
&gt; Works:
&gt; Add a &lt;div id=&quot;console&quot;&gt;&lt;/div&gt; element, and at the end of the paste event handler, add the following snippet:
&gt; document.getElementById(&apos;console&apos;).appendChild(document.createTextNode(&apos;a&apos;));
&gt; 
&gt; Doesn&apos;t work:
&gt; Adding the console div element, but doing this instead at the end of the paste event handler:
&gt; document.getElementById(&apos;console&apos;).appendChild(document.createElement(&apos;br&apos;));
&gt; 
&gt; In all cases, when the layout test fails, it behaves as if no changes to the DOM had occurred. The pasted image does not appear at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383141</commentid>
    <comment_count>16</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-04-11 06:28:45 -0700</bug_when>
    <thetext>Let me add the additional info:

If the first run fails and the ru-run passes,  the &apos;actual-png&apos; in the result directory is the result of stage 1, not stage 3.


(In reply to comment #15)
&gt; I can reproduce this also. I confirmed that &apos;-expected.html&apos; strangely affects &apos;-actual.png&apos;.
&gt; 
&gt; That is related with the fact that new-run-webkit-tests will re-run a test if the test failed.
&gt; Let me explain:
&gt; 
&gt; At first run:
&gt;   1. The driver runs data-transfer-items-image-png.html. The result is an unexpected one because &apos;no changes to the DOM had occurred&apos;. I have no ideas why this strange behavior happens.
&gt;   2.  The driver runs data-transfer-items-image-png-expected.html. In this run, changes to the DOM occurred.
&gt; 
&gt; new-run-webkit-tests will try to re-run this test.
&gt; 
&gt; At re-run:
&gt;   3. The driver re-runs data-transfer-items-image-png.html. The result is an expected one because changes to the DOM already occurred at stage &apos;2&apos;.
&gt;   4. The driver runs data-transfer-items-image-png-expected.html.
&gt; 
&gt; 
&gt; So the final result of &apos;-actual-png&apos;, which is the result of &apos;3&apos;, might differ depending on whether the run of &apos;-expected.html&apos; changes DOM or not at stage &apos;2&apos;.
&gt; 
&gt; The same driver (DumpRenderTree instance) is used at all stages.
&gt; 
&gt; 
&gt; (In reply to comment #12)
&gt; &gt; I&apos;ve done more investigation, and I don&apos;t understand why the layout test only works sometimes:
&gt; &gt; 
&gt; &gt; Works:
&gt; &gt; run-webkit-tests.sh editing/pasteboard/data-transfer-items-image-png.html
&gt; &gt; 
&gt; &gt; Doesn&apos;t work:
&gt; &gt; run-webkit-tests.sh editing/pasteboard
&gt; &gt; 
&gt; &gt; Works:
&gt; &gt; Add a &lt;div id=&quot;console&quot;&gt;&lt;/div&gt; element, and at the end of the paste event handler, add the following snippet:
&gt; &gt; document.getElementById(&apos;console&apos;).appendChild(document.createTextNode(&apos;a&apos;));
&gt; &gt; 
&gt; &gt; Doesn&apos;t work:
&gt; &gt; Adding the console div element, but doing this instead at the end of the paste event handler:
&gt; &gt; document.getElementById(&apos;console&apos;).appendChild(document.createElement(&apos;br&apos;));
&gt; &gt; 
&gt; &gt; In all cases, when the layout test fails, it behaves as if no changes to the DOM had occurred. The pasted image does not appear at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383440</commentid>
    <comment_count>17</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-11 13:33:51 -0700</bug_when>
    <thetext>The root cause seems to be the iframe is not loading properly when the test is run after copy-crash.html.

(gdb) break WebCore::Editor::copy
Breakpoint 1 at 0x120fe68: file /Users/dcheng/src/WebKit/Source/WebCore/WebCore.gyp/../editing/Editor.cpp, line 1187.
(gdb) run --test-shell ~/src/WebKit/LayoutTests/editing/pasteboard/copy-crash.html ~/src/WebKit/LayoutTests/editing/pasteboard/data-transfer-items-image-png.html
#URL:file:///Users/dcheng/src/WebKit/LayoutTests/editing/pasteboard/copy-crash.html

Breakpoint 1, WebCore::Editor::copy (this=0x2a807ac8) at /Users/dcheng/src/WebKit/Source/WebCore/WebCore.gyp/../editing/Editor.cpp:1187
1187        if (tryDHTMLCopy())
(gdb) print m_frame-&gt;document()-&gt;m_url.utf8String().data()
$1 = 0x9422e30 &quot;file:///Users/dcheng/src/WebKit/LayoutTests/editing/pasteboard/copy-crash.html&quot;
(gdb) continue
#URL:file:///Users/dcheng/src/WebKit/LayoutTests/editing/pasteboard/data-transfer-items-image-png.html

Breakpoint 1, WebCore::Editor::copy (this=0x784a0c8) at /Users/dcheng/src/WebKit/Source/WebCore/WebCore.gyp/../editing/Editor.cpp:1187
1187        if (tryDHTMLCopy())
(gdb) print m_frame-&gt;document()-&gt;m_url.utf8String().data()
$2 = 0x941aeb0 &quot;about:blank&quot;

If data-transfer-items-image-png runs before copy-crash, then the iframe loads as expected. Very bizarre.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383482</commentid>
    <comment_count>18</comment_count>
      <attachid>89080</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-11 13:56:39 -0700</bug_when>
    <thetext>Created attachment 89080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383485</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-11 13:57:06 -0700</bug_when>
    <thetext>The race on load should be fixed now; we wait for onload to fire before running the layout test. This should fix the associated flakiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383489</commentid>
    <comment_count>20</comment_count>
      <attachid>89080</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-11 13:58:31 -0700</bug_when>
    <thetext>Comment on attachment 89080
Patch

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

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:117
&gt; +        // TODO: This is pretty inefficient. We copy the data from the browser

FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383498</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-04-11 14:04:30 -0700</bug_when>
    <thetext>Committed r83494: &lt;http://trac.webkit.org/changeset/83494&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88748</attachid>
            <date>2011-04-07 18:16:42 -0700</date>
            <delta_ts>2011-04-08 13:32:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58106-20110407181641.patch</filename>
            <type>text/plain</type>
            <size>12224</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyMTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZmYyZTQ3M2MwN2Y5ODk5YjM1MDNh
ZDMzYTZlYjc3Yjg2MmNiZWJmLi4yOWQ5MWI4Yzk5N2FkMWEyNjUyZjFlYmNlY2YxNjRmMjZhZDc3
YmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQtMDcgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0
YVRyYW5zZmVySXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MTA2CisKKyAgICAgICAgQWRkIGEgcmVmdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUg
dmFyaW91cyBiaXRzIGluIHRoZSBwaXBlbGluZSB3b3JrIGFzIGV4cGVjdGVkLgorCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5nLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW1zLWltYWdlLXBuZy5odG1sOiBBZGRlZC4KKwogMjAxMS0wNC0wNyAgU3RldmUgTGFj
ZXkgIDxzamxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNv
bi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW1zLWltYWdlLXBuZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5nLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTQ5ZGUyYzFlMjk4YTBiNDI1NWE0NGUxYTMwM2NiOGQ4NTYwMmU5YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW1zLWltYWdlLXBuZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keSBvbnBhc3RlPSJwYXN0ZShldmVudCkiPgorPGlmcmFtZSBp
ZD0ic3JjIiBzcmM9InJlc291cmNlcy9tb3ppbGxhLmdpZiI+PC9pZnJhbWU+PGJyPgorPGltZyBp
ZD0iZGVzdCIgc3JjPSJyZXNvdXJjZXMvbW96aWxsYS5naWYiPgorPGRpdj5UaGlzIGZpbGUgdGVz
dHMgdGhlIGltYWdlIHBhc3RpbmcgZnVuY3Rpb25hbGl0eSBvZiBEYXRhVHJhbnNmZXJJdGVtcy4K
K1RvIHRyeSB0aGUgdGVzdCBtYW51YWxseSwgcmlnaHQtY2xpY2sgb24gdGhlIGltYWdlICZndDsg
Q29weSBJbWFnZSwgY2xpY2sKK2FueXdoZXJlIGluIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBtYWlu
IHBhZ2UgYW5kIHBhc3RlLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVt
cy1pbWFnZS1wbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTJkZjY3NTgwZWYzY2E0YzFhOGZmZTJmZTNm
OTNhYTBhZjk5OGRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5nLmh0bWwKQEAgLTAsMCArMSw0NCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IG9ucGFzdGU9InBhc3RlKGV2ZW50KSI+
Cis8aWZyYW1lIGlkPSJzcmMiIHNyYz0icmVzb3VyY2VzL21vemlsbGEuZ2lmIj48L2lmcmFtZT48
YnI+Cis8aW1nIGlkPSJkZXN0Ij4KKzxkaXY+VGhpcyBmaWxlIHRlc3RzIHRoZSBpbWFnZSBwYXN0
aW5nIGZ1bmN0aW9uYWxpdHkgb2YgRGF0YVRyYW5zZmVySXRlbXMuCitUbyB0cnkgdGhlIHRlc3Qg
bWFudWFsbHksIHJpZ2h0LWNsaWNrIG9uIHRoZSBpbWFnZSAmZ3Q7IENvcHkgSW1hZ2UsIGNsaWNr
Cithbnl3aGVyZSBpbiB0aGUgYmFja2dyb3VuZCBvZiB0aGUgbWFpbiBwYWdlIGFuZCBwYXN0ZS48
L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBwYXN0ZShldmVudCkKK3sKKyAgICB2YXIgaXRlbXMgPSBldmVudC5jbGlwYm9hcmRE
YXRhLml0ZW1zOworICAgIGNvbnNvbGUubG9nKGl0ZW1zLmxlbmd0aCk7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoaXRlbXNbaV0ua2lu
ZCA9PSAnZmlsZScgJiYgaXRlbXNbaV0udHlwZSA9PSAnaW1hZ2UvcG5nJykgeworICAgICAgICAg
ICAgdmFyIGJsb2IgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTsKKyAgICAgICAgICAgIHZhciB1cmwg
PSB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXN0Jykuc3JjID0gdXJsOworICAgICAgICB9CisgICAg
fQorICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9LCAxMDAwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdmFyIHNyY0Vs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3JjJyk7CisgICAgc3JjRWxlbWVudC5j
b250ZW50V2luZG93LmRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oMSwgMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdwYXN0ZScp
OworfQorCitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlM2ViZTg1NWIxMzRjZGIwZGMxYjkyMTBhNjI0NDUwMmRkY2VmNDBjLi41YzI5ZWE2YjE1
MmY5YmUzNDI1OGU2ODQ3YjEwYmNkNjlkZGI5OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDQtMDcgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBJ
bXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0YVRyYW5zZmVySXRlbXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MTA2CisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmlsZSgpIHVzaW5n
IEJsb2JzLiBJbgorICAgICAgICBhZGRpdGlvbiwgcGx1bWJpbmcgZm9yIGltYWdlL3BuZyBoYXMg
YmVlbiBhZGRlZCBzbyBpbWFnZSBwYXN0ZSB3aWxsIGJlCisgICAgICAgIHN1cHBvcnRlZCBhcyBs
b25nIGFzIHRoZSByZW5kZXJlciBtYWtlcyB0aGF0IGRhdGEgYXZhaWxhYmxlLgorICAgICAgICBU
aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBpcyBzb21ld2hhdCBpbmVmZmljaWVudCBpbiB0ZXJt
cyBvZiBjb3BpZXMsCisgICAgICAgIGJ1dCBpdCBwcm92aWRlcyBwcm9vZi1vZi1jb25jZXB0IHRo
YXQgYSBzaW1pbGFyIGltcGxlbWVudGF0aW9uIHdpbGwgd29yaworICAgICAgICBmb3IgZHJvcHMu
CisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1z
LWltYWdlLXBuZy5odG1sCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5oOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRNaW1lVHlwZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZE1pbWVUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RhdGFU
cmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJ
dGVtQ2hyb21pdW06OmdldEFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
ckl0ZW1DaHJvbWl1bTo6Z2V0QXNGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9E
YXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybUJyaWRnZS5oOgorCiAyMDExLTA0LTA3ICBTZXJnZXkgR2xhenVub3YgIDxzZXJnLmds
YXp1bm92QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAppbmRleCA3YjU4ODZhZjU3OGUzOWU3
NjZhNjM5NjViNTY1NTUwOTQ4YTBhNmNlLi5kNjQ4YzU2ODE1MmUwZTc2YzM0OGU0NTNjMzNhNmRh
NzgzYWZkZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRl
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAgLTM4LDYg
KzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCbG9iOwogY2xhc3MgU3Ry
aW5nQ2FsbGJhY2s7CiAKIGNsYXNzIERhdGFUcmFuc2Zlckl0ZW0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxEYXRhVHJhbnNmZXJJdGVtPiB7CkBAIC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyB0eXBlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFzU3Ry
aW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+KSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEJsb2I+IGdldEFzRmlsZSgpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbAppbmRleCBhMmM5OTQyNjQ2NmI0
MjY2YTRiZWE2MzIwNDE1MmYyNWZjZjg4ZGU2Li5hY2NhZjUwMDY0ZmM1OGFlOWI3MDg3OTBiYjc1
ODBiYzY5NGRhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsCkBA
IC0zNyw2ICszNyw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyB0eXBlOwogCiAgICAgICAgIHZvaWQgZ2V0QXNTdHJpbmcoaW4gW0NhbGxiYWNr
XSBTdHJpbmdDYWxsYmFjayBjYWxsYmFjayk7CisgICAgICAgIEJsb2IgZ2V0QXNGaWxlKCk7CiAg
ICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
Q2xpcGJvYXJkTWltZVR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZE1pbWVUeXBlcy5jcHAKaW5kZXggMjdlNjhmZjcyODM3ZmVmNjRkMzc4ODA4Y2My
MDgzMDAwODkwYTIwZC4uOTRjZTI3ZDM2OTIxYmMzMWNhYTA3ZWFmZGFiNTZmMDFkOWNmZDRkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWlt
ZVR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRNaW1lVHlwZXMuY3BwCkBAIC00MSw1ICs0MSw2IEBAIGNvbnN0IGNoYXIgbWltZVR5cGVVUkxb
XSA9ICJ1cmwiOwogY29uc3QgY2hhciBtaW1lVHlwZVRleHRVUklMaXN0W10gPSAidGV4dC91cmkt
bGlzdCI7CiBjb25zdCBjaGFyIG1pbWVUeXBlRG93bmxvYWRVUkxbXSA9ICJkb3dubG9hZHVybCI7
CiBjb25zdCBjaGFyIG1pbWVUeXBlRmlsZXNbXSA9ICJGaWxlcyI7Citjb25zdCBjaGFyIG1pbWVU
eXBlSW1hZ2VQbmdbXSA9ICJpbWFnZS9wbmciOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRNaW1l
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVU
eXBlcy5oCmluZGV4IDMxZTJkM2U4OWVjZDlkNDU2YmFhZTkwYWM2MThmMWMwYmQ4MGU3MmYuLjNl
NGFiNTA3ZDI2MDA5YWI3NjYwNDQ2MjU1NWJmZjE5NTJhMTE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBlcy5oCkBAIC00
MSw2ICs0MSw3IEBAIGV4dGVybiBjb25zdCBjaGFyIG1pbWVUeXBlVVJMW107CiBleHRlcm4gY29u
c3QgY2hhciBtaW1lVHlwZVRleHRVUklMaXN0W107CiBleHRlcm4gY29uc3QgY2hhciBtaW1lVHlw
ZURvd25sb2FkVVJMW107CiBleHRlcm4gY29uc3QgY2hhciBtaW1lVHlwZUZpbGVzW107CitleHRl
cm4gY29uc3QgY2hhciBtaW1lVHlwZUltYWdlUG5nW107CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRy
YW5zZmVySXRlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHAKaW5kZXggNzg1NzMzNjY1YjZjZjAwMTFmZTZj
OGM3YTBjMmEwZTQ3MjljZjI1ZS4uZDgxZTQxOTk2M2ZhYWZiNGUyZjI1YjNmNTNjN2M1ZDYxYWNh
ZmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRy
YW5zZmVySXRlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uY3BwCkBAIC0zMyw5ICszMywxMSBAQAogCiAj
aWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCiAKKyNpbmNsdWRlICJCbG9iLmgiCiAjaW5j
bHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkTWltZVR5cGVzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJTdHJpbmdDYWxsYmFjay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04OCw2ICs5
MCw4IEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpnZXRBc1N0cmluZyhQYXNzUmVm
UHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjaykKICAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxl
Q2FsbGJhY2sobV9jb250ZXh0LCBtX2RhdGEpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisg
ICAgQVNTRVJUKG1fc291cmNlID09IFBhc3RlYm9hcmRTb3VyY2UpOwogICAgIC8vIFRoaXMgaXMg
dWdseSBidXQgdGhlcmUncyBubyByZWFsIGFsdGVybmF0aXZlLgogICAgIGlmIChtX3R5cGUgPT0g
bWltZVR5cGVUZXh0UGxhaW4pIHsKICAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2so
bV9jb250ZXh0LCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZFBsYWluVGV4dChQYXN0ZWJv
YXJkUHJpdmF0ZTo6U3RhbmRhcmRCdWZmZXIpKTsKQEAgLTEwMyw2ICsxMDcsMjkgQEAgdm9pZCBE
YXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2Fs
bGJhY2s+IGNhbGxiYWNrKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitQYXNzUmVm
UHRyPEJsb2I+IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Z2V0QXNGaWxlKCkKK3sKKyAgICBp
ZiAobV9zb3VyY2UgPT0gSW50ZXJuYWxTb3VyY2UpCisgICAgICAgIHJldHVybiAwOworCisgICAg
QVNTRVJUKG1fc291cmNlID09IFBhc3RlYm9hcmRTb3VyY2UpOworICAgIGlmIChtX3R5cGUgPT0g
bWltZVR5cGVJbWFnZVBuZykgeworICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIHByZXR0eSBpbmVm
ZmljaWVudC4gV2UgY29weSB0aGUgZGF0YSBmcm9tIHRoZSBicm93c2VyCisgICAgICAgIC8vIHRv
IHRoZSByZW5kZXJlci4gV2UgdGhlbiBwbGFjZSBpdCBpbiBhIGJsb2IgaW4gV2ViS2l0LCB3aGlj
aAorICAgICAgICAvLyByZWdpc3RlcnMgaXQgYW5kIGNvcGllcyBpdCAqYmFjayogdG8gdGhlIGJy
b3dzZXIuIFdoZW4gYSBjb25zdW1lcgorICAgICAgICAvLyB3YW50cyB0byByZWFkIHRoZSBkYXRh
LCB3ZSB0aGVuIGNvcHkgdGhlIGRhdGEgYmFjayBpbnRvIHRoZSByZW5kZXJlci4KKyAgICAgICAg
Ly8gWWlrZXMuCisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBQbGF0Zm9ybUJy
aWRnZTo6Y2xpcGJvYXJkUmVhZEltYWdlKFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZl
cik7CisgICAgICAgIFJlZlB0cjxSYXdEYXRhPiByYXdEYXRhID0gUmF3RGF0YTo6Y3JlYXRlKCk7
CisgICAgICAgIHJhd0RhdGEtPm11dGFibGVEYXRhKCktPmFwcGVuZChkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0
YTo6Y3JlYXRlKCk7CisgICAgICAgIGJsb2JEYXRhLT5hcHBlbmREYXRhKHJhd0RhdGEsIDAsIC0x
KTsKKyAgICAgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKG1pbWVUeXBlSW1hZ2VQbmcpOwor
ICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGJsb2JEYXRhLnJlbGVhc2UoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21p
dW0uaAppbmRleCA3N2Y3NGYyZWNmMTM2MzRjYzY2ZTMxY2NlYTZkZDE2MDE5MDE2NjcwLi42NmJl
OTZlZWRiNjJlMDczYWFlNWZkYzVmOWJkMjQzM2IwYTRjNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21p
dW0uaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgp
IGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5n
Q2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmxvYj4gZ2V0QXNGaWxlKCk7CiAK
IHByaXZhdGU6CiAgICAgZW51bSBEYXRhU291cmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oCmluZGV4IDFjM2NjYmQwYjgwNWYyY2Ji
ZmIwODFjODVhNWE3NTJkZmU5MWM3ZTkuLjNhMDQ2MTdmMGNkNDk1NzY2ODAyOGNkMzlkZDE0ZmFl
Mzg2MzZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1CcmlkZ2UuaApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3Ry
aW5nIGNsaXBib2FyZFJlYWRQbGFpblRleHQoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1
ZmZlcik7CiAgICAgc3RhdGljIHZvaWQgY2xpcGJvYXJkUmVhZEhUTUwoUGFzdGVib2FyZFByaXZh
dGU6OkNsaXBib2FyZEJ1ZmZlciwgU3RyaW5nKiwgS1VSTCopOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY2xpcGJvYXJkUmVhZEltYWdlKFBhc3RlYm9hcmRQcml2YXRlOjpD
bGlwYm9hcmRCdWZmZXIpOwogCiAgICAgLy8gT25seSB0aGUgY2xpcGJvYXJkUmVhZCBmdW5jdGlv
bnMgdGFrZSBhIGJ1ZmZlciBhcmd1bWVudCBiZWNhdXNlCiAgICAgLy8gQ2hyb21pdW0gY3VycmVu
dGx5IHVzZXMgYSBkaWZmZXJlbnQgdGVjaG5pcXVlIHRvIHdyaXRlIHRvIGFsdGVybmF0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlZGM4Y2Y0ZjFiZTk4MjM4NWFjNWM2YTFiYTVlYTU4
NmNlYTIyYjQ0Li44NzdkYWYyZGY0ZjM4YzFiZGJjN2FiMDJiMjdkMzM3ZWJjOWQ3OWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTA0LTA3ICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGltYWdlL3BuZyBz
dXBwb3J0IGluIERhdGFUcmFuc2Zlckl0ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODEwNgorCisgICAgICAgIEFkZCBnbHVlIGZvciByZWFkaW5n
IGltYWdlIGRhdGEgZnJvbSBjbGlwYm9hcmQuCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1Ccmlk
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRJ
bWFnZSk6CisKIDIwMTEtMDQtMDcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29t
PgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogcm9sbGluZyBjaHJvbWl1bSBERVBTIDgwNDIxOjgw
NzY3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1Ccmlk
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCmlu
ZGV4IGQ4MjVkMjRhZWY2YzkwODllMzBjNjE2NWVkOGFkM2I2Njg5MzJiYmUuLjM5MDRiMGM3ZmE3
NjY2Yzc3Yzc3MTM3NDcxZjg0ZDAyNGNjYjIyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAKQEAgLTE3OCw2ICsxNzgsMTIgQEAgdm9pZCBQbGF0
Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEhUTUwoCiAgICAgKnNvdXJjZVVSTCA9IHVybDsKIH0K
IAorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFk
SW1hZ2UoCisgICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIpCit7
CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZEltYWdlKHN0YXRp
Y19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIpKTsKK30KKwogdm9pZCBQbGF0Zm9y
bUJyaWRnZTo6Y2xpcGJvYXJkV3JpdGVTZWxlY3Rpb24oY29uc3QgU3RyaW5nJiBodG1sVGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEtVUkwm
IHNvdXJjZVVSTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88867</attachid>
            <date>2011-04-08 13:32:28 -0700</date>
            <delta_ts>2011-04-08 14:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58106-20110408133227.patch</filename>
            <type>text/plain</type>
            <size>12658</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyODMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYzMyOTY1YjM0NzQ4MDJjMGUzMTNi
MzQ5NDA5YWQ4NzZjOTU2NTEyLi45YjgzNmJkYjU2NGZlNjI3ZGMwY2VjNTAyYTNlMWUyZDRlZDZi
YTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQtMDcgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0
YVRyYW5zZmVySXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MTA2CisKKyAgICAgICAgQWRkIGEgcmVmdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUg
dmFyaW91cyBiaXRzIGluIHRoZSBwaXBlbGluZSB3b3JrIGFzIGV4cGVjdGVkLgorCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5nLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW1zLWltYWdlLXBuZy5odG1sOiBBZGRlZC4KKwogMjAxMS0wNC0wOCAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBOb3RlIHNvbWUg
Zmxha3kgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YS10cmFuc2Zlci1pdGVtcy1pbWFnZS1wbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWltYWdlLXBuZy1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk0OWRlMmMxZTI5OGEwYjQyNTVhNDRlMWEzMDNjYjhkODU2MDJl
OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtcy1pbWFnZS1wbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHkgb25wYXN0ZT0icGFzdGUoZXZlbnQpIj4K
KzxpZnJhbWUgaWQ9InNyYyIgc3JjPSJyZXNvdXJjZXMvbW96aWxsYS5naWYiPjwvaWZyYW1lPjxi
cj4KKzxpbWcgaWQ9ImRlc3QiIHNyYz0icmVzb3VyY2VzL21vemlsbGEuZ2lmIj4KKzxkaXY+VGhp
cyBmaWxlIHRlc3RzIHRoZSBpbWFnZSBwYXN0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgRGF0YVRyYW5z
ZmVySXRlbXMuCitUbyB0cnkgdGhlIHRlc3QgbWFudWFsbHksIHJpZ2h0LWNsaWNrIG9uIHRoZSBp
bWFnZSAmZ3Q7IENvcHkgSW1hZ2UsIGNsaWNrCithbnl3aGVyZSBpbiB0aGUgYmFja2dyb3VuZCBv
ZiB0aGUgbWFpbiBwYWdlIGFuZCBwYXN0ZS48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1z
LWltYWdlLXBuZy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbXMtaW1hZ2UtcG5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWEyZGY2NzU4MGVmM2NhNGMx
YThmZmUyZmUzZjkzYWEwYWY5OThkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWltYWdlLXBuZy5odG1sCkBAIC0w
LDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keSBvbnBhc3RlPSJwYXN0
ZShldmVudCkiPgorPGlmcmFtZSBpZD0ic3JjIiBzcmM9InJlc291cmNlcy9tb3ppbGxhLmdpZiI+
PC9pZnJhbWU+PGJyPgorPGltZyBpZD0iZGVzdCI+Cis8ZGl2PlRoaXMgZmlsZSB0ZXN0cyB0aGUg
aW1hZ2UgcGFzdGluZyBmdW5jdGlvbmFsaXR5IG9mIERhdGFUcmFuc2Zlckl0ZW1zLgorVG8gdHJ5
IHRoZSB0ZXN0IG1hbnVhbGx5LCByaWdodC1jbGljayBvbiB0aGUgaW1hZ2UgJmd0OyBDb3B5IElt
YWdlLCBjbGljaworYW55d2hlcmUgaW4gdGhlIGJhY2tncm91bmQgb2YgdGhlIG1haW4gcGFnZSBh
bmQgcGFzdGUuPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gcGFzdGUoZXZlbnQpCit7CisgICAgdmFyIGl0ZW1zID0gZXZlbnQu
Y2xpcGJvYXJkRGF0YS5pdGVtczsKKyAgICBjb25zb2xlLmxvZyhpdGVtcy5sZW5ndGgpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGl0
ZW1zW2ldLmtpbmQgPT0gJ2ZpbGUnICYmIGl0ZW1zW2ldLnR5cGUgPT0gJ2ltYWdlL3BuZycpIHsK
KyAgICAgICAgICAgIHZhciBibG9iID0gaXRlbXNbaV0uZ2V0QXNGaWxlKCk7CisgICAgICAgICAg
ICB2YXIgdXJsID0gd2luZG93LndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVzdCcpLnNyYyA9IHVybDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSwgMTAwMCk7Cit9CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHZhciBzcmNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NyYycpOworICAgIHNy
Y0VsZW1lbnQuY29udGVudFdpbmRvdy5kb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEsIDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgncGFzdGUnKTsKK30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMGU5YmM2NDc1OGE1MWRjYTA1NjU5NTQwMDY0ZjkwYWYxYmM4YjEyYS4u
NWJhZGU2ZDYyZjZhYjU0ZjJiY2RiZmE4NGJmNzY5NGIwMDk4MmU5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDExLTA0LTA3ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtj
aHJvbWl1bV0gSW1wbGVtZW50IGltYWdlL3BuZyBzdXBwb3J0IGluIERhdGFUcmFuc2Zlckl0ZW1z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODEwNgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBEYXRhVHJhbnNmZXJJdGVtOjpnZXRBc0Zp
bGUoKSB1c2luZyBCbG9icy4gSW4KKyAgICAgICAgYWRkaXRpb24sIHBsdW1iaW5nIGZvciBpbWFn
ZS9wbmcgaGFzIGJlZW4gYWRkZWQgc28gaW1hZ2UgcGFzdGUgd2lsbCBiZQorICAgICAgICBzdXBw
b3J0ZWQgYXMgbG9uZyBhcyB0aGUgcmVuZGVyZXIgbWFrZXMgdGhhdCBkYXRhIGF2YWlsYWJsZS4K
KyAgICAgICAgVGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gaXMgc29tZXdoYXQgaW5lZmZpY2ll
bnQgaW4gdGVybXMgb2YgY29waWVzLAorICAgICAgICBidXQgaXQgcHJvdmlkZXMgcHJvb2Ytb2Yt
Y29uY2VwdCB0aGF0IGEgc2ltaWxhciBpbXBsZW1lbnRhdGlvbiB3aWxsIHdvcmsKKyAgICAgICAg
Zm9yIGRyb3BzLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFu
c2Zlci1pdGVtcy1pbWFnZS1wbmcuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5pZGw6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRNaW1lVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YVRyYW5zZmVySXRlbUNocm9taXVtOjpnZXRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmdldEFzRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaDoKKwogMjAxMS0wNC0wOCAgQW5kcmV5IEFkYWlraW4g
IDxhYW5kcmV5QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4IDdiNTg4NmFmNTc4ZTM5
ZTc2NmE2Mzk2NWI1NjU1NTA5NDhhMGE2Y2UuLmQ2NDhjNTY4MTUyZTBlNzZjMzQ4ZTQ1M2MzM2E2
ZGE3ODNhZmRmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaApAQCAtMzgs
NiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJsb2I7CiBjbGFzcyBT
dHJpbmdDYWxsYmFjazsKIAogY2xhc3MgRGF0YVRyYW5zZmVySXRlbSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPERhdGFUcmFuc2Zlckl0ZW0+IHsKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNT
dHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4pID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8QmxvYj4gZ2V0QXNGaWxlKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsCmluZGV4IGEyYzk5NDI2NDY2
YjQyNjZhNGJlYTYzMjA0MTUyZjI1ZmNmODhkZTYuLmFjY2FmNTAwNjRmYzU4YWU5YjcwODc5MGJi
NzU4MGJjNjk0ZGEzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXJJdGVtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5pZGwK
QEAgLTM3LDYgKzM3LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHR5cGU7CiAKICAgICAgICAgdm9pZCBnZXRBc1N0cmluZyhpbiBbQ2FsbGJh
Y2tdIFN0cmluZ0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICAgICAgQmxvYiBnZXRBc0ZpbGUoKTsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DbGlwYm9hcmRNaW1lVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkTWltZVR5cGVzLmNwcAppbmRleCAyN2U2OGZmNzI4MzdmZWY2NGQzNzg4MDhj
YzIwODMwMDA4OTBhMjBkLi45NGNlMjdkMzY5MjFiYzMxY2FhMDdlYWZkYWI1NmYwMWQ5Y2ZkNGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRN
aW1lVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZE1pbWVUeXBlcy5jcHAKQEAgLTQxLDUgKzQxLDYgQEAgY29uc3QgY2hhciBtaW1lVHlwZVVS
TFtdID0gInVybCI7CiBjb25zdCBjaGFyIG1pbWVUeXBlVGV4dFVSSUxpc3RbXSA9ICJ0ZXh0L3Vy
aS1saXN0IjsKIGNvbnN0IGNoYXIgbWltZVR5cGVEb3dubG9hZFVSTFtdID0gImRvd25sb2FkdXJs
IjsKIGNvbnN0IGNoYXIgbWltZVR5cGVGaWxlc1tdID0gIkZpbGVzIjsKK2NvbnN0IGNoYXIgbWlt
ZVR5cGVJbWFnZVBuZ1tdID0gImltYWdlL3BuZyI7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1p
bWVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWlt
ZVR5cGVzLmgKaW5kZXggMzFlMmQzZTg5ZWNkOWQ0NTZiYWFlOTBhYzYxOGYxYzBiZDgwZTcyZi4u
M2U0YWI1MDdkMjYwMDlhYjc2NjA0NDYyNTU1YmZmMTk1MmExMTZjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmgKQEAg
LTQxLDYgKzQxLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgbWltZVR5cGVVUkxbXTsKIGV4dGVybiBj
b25zdCBjaGFyIG1pbWVUeXBlVGV4dFVSSUxpc3RbXTsKIGV4dGVybiBjb25zdCBjaGFyIG1pbWVU
eXBlRG93bmxvYWRVUkxbXTsKIGV4dGVybiBjb25zdCBjaGFyIG1pbWVUeXBlRmlsZXNbXTsKK2V4
dGVybiBjb25zdCBjaGFyIG1pbWVUeXBlSW1hZ2VQbmdbXTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRh
VHJhbnNmZXJJdGVtQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmNwcAppbmRleCA3ODU3MzM2NjViNmNmMDAxMWZl
NmM4YzdhMGMyYTBlNDcyOWNmMjVlLi5kODFlNDE5OTYzZmFhZmI0ZTJmMjViM2Y1M2M3YzVkNjFh
Y2FmZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRh
VHJhbnNmZXJJdGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHAKQEAgLTMzLDkgKzMzLDExIEBACiAK
ICNpZiBFTkFCTEUoREFUQV9UUkFOU0ZFUl9JVEVNUykKIAorI2luY2x1ZGUgIkJsb2IuaCIKICNp
bmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRNaW1lVHlwZXMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlN0cmluZ0NhbGxiYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4LDYg
KzkwLDggQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmdldEFzU3RyaW5nKFBhc3NS
ZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjay0+c2NoZWR1
bGVDYWxsYmFjayhtX2NvbnRleHQsIG1fZGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisK
KyAgICBBU1NFUlQobV9zb3VyY2UgPT0gUGFzdGVib2FyZFNvdXJjZSk7CiAgICAgLy8gVGhpcyBp
cyB1Z2x5IGJ1dCB0aGVyZSdzIG5vIHJlYWwgYWx0ZXJuYXRpdmUuCiAgICAgaWYgKG1fdHlwZSA9
PSBtaW1lVHlwZVRleHRQbGFpbikgewogICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFj
ayhtX2NvbnRleHQsIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KFBhc3Rl
Ym9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlcikpOwpAQCAtMTAzLDYgKzEwNywyOSBAQCB2b2lk
IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Z2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdD
YWxsYmFjaz4gY2FsbGJhY2spCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1Bhc3NS
ZWZQdHI8QmxvYj4gRGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpnZXRBc0ZpbGUoKQoreworICAg
IGlmIChtX3NvdXJjZSA9PSBJbnRlcm5hbFNvdXJjZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBBU1NFUlQobV9zb3VyY2UgPT0gUGFzdGVib2FyZFNvdXJjZSk7CisgICAgaWYgKG1fdHlwZSA9
PSBtaW1lVHlwZUltYWdlUG5nKSB7CisgICAgICAgIC8vIFRPRE86IFRoaXMgaXMgcHJldHR5IGlu
ZWZmaWNpZW50LiBXZSBjb3B5IHRoZSBkYXRhIGZyb20gdGhlIGJyb3dzZXIKKyAgICAgICAgLy8g
dG8gdGhlIHJlbmRlcmVyLiBXZSB0aGVuIHBsYWNlIGl0IGluIGEgYmxvYiBpbiBXZWJLaXQsIHdo
aWNoCisgICAgICAgIC8vIHJlZ2lzdGVycyBpdCBhbmQgY29waWVzIGl0ICpiYWNrKiB0byB0aGUg
YnJvd3Nlci4gV2hlbiBhIGNvbnN1bWVyCisgICAgICAgIC8vIHdhbnRzIHRvIHJlYWQgdGhlIGRh
dGEsIHdlIHRoZW4gY29weSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIHJlbmRlcmVyLgorICAgICAg
ICAvLyBZaWtlcy4KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFBsYXRmb3Jt
QnJpZGdlOjpjbGlwYm9hcmRSZWFkSW1hZ2UoUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJkQnVm
ZmVyKTsKKyAgICAgICAgUmVmUHRyPFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdEYXRhOjpjcmVhdGUo
KTsKKyAgICAgICAgcmF3RGF0YS0+bXV0YWJsZURhdGEoKS0+YXBwZW5kKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JE
YXRhOjpjcmVhdGUoKTsKKyAgICAgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEocmF3RGF0YSwgMCwg
LTEpOworICAgICAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUobWltZVR5cGVJbWFnZVBuZyk7
CisgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoYmxvYkRhdGEucmVsZWFzZSgpLCBkYXRhLT5z
aXplKCkpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJv
bWl1bS5oCmluZGV4IDc3Zjc0ZjJlY2YxMzYzNGNjNjZlMzFjY2VhNmRkMTYwMTkwMTY2NzAuLjY2
YmU5NmVlZGI2MmUwNzNhYWU1ZmRjNWY5YmQyNDMzYjBhNGM1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJv
bWl1bS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBl
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJp
bmdDYWxsYmFjaz4pOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCbG9iPiBnZXRBc0ZpbGUoKTsK
IAogcHJpdmF0ZToKICAgICBlbnVtIERhdGFTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmgKaW5kZXggMWMzY2NiZDBiODA1ZjJj
YmJmYjA4MWM4NWE1YTc1MmRmZTkxYzdlOS4uM2EwNDYxN2YwY2Q0OTU3NjY4MDI4Y2QzOWRkMTRm
YWUzODYzNmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1CcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybUJyaWRnZS5oCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBT
dHJpbmcgY2xpcGJvYXJkUmVhZFBsYWluVGV4dChQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJk
QnVmZmVyKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwYm9hcmRSZWFkSFRNTChQYXN0ZWJvYXJkUHJp
dmF0ZTo6Q2xpcGJvYXJkQnVmZmVyLCBTdHJpbmcqLCBLVVJMKik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjbGlwYm9hcmRSZWFkSW1hZ2UoUGFzdGVib2FyZFByaXZhdGU6
OkNsaXBib2FyZEJ1ZmZlcik7CiAKICAgICAvLyBPbmx5IHRoZSBjbGlwYm9hcmRSZWFkIGZ1bmN0
aW9ucyB0YWtlIGEgYnVmZmVyIGFyZ3VtZW50IGJlY2F1c2UKICAgICAvLyBDaHJvbWl1bSBjdXJy
ZW50bHkgdXNlcyBhIGRpZmZlcmVudCB0ZWNobmlxdWUgdG8gd3JpdGUgdG8gYWx0ZXJuYXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGIwZGEzODQxZjM4NjViMzUwMzcxOTc0YjhiZGQy
ZWRjNzUwMTc5ZmUuLjE3OGEyZTNiOTAxYWY3YjllYTg5NDIwYWVhODdjYzhjOGM4NDM5MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMDcgIERh
bmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5n
IHN1cHBvcnQgaW4gRGF0YVRyYW5zZmVySXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MTA2CisKKyAgICAgICAgQWRkIGdsdWUgZm9yIHJlYWRp
bmcgaW1hZ2UgZGF0YSBmcm9tIGNsaXBib2FyZC4KKworICAgICAgICAqIERFUFM6CisgICAgICAg
ICogc3JjL1BsYXRmb3JtQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQnJp
ZGdlOjpjbGlwYm9hcmRSZWFkSW1hZ2UpOgorCiAyMDExLTA0LTA4ICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFRoZSBzZWNvbmQgYXR0ZW1w
dCBvZiBmaXhpbmcgZm9yIFdpbmRvd3MgKGRiZykoc2hhcmVkKSBidWlsZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQ
UwppbmRleCA2ZDkwZGM3ZjNlYzcwNjU4MDFiZGRkNzI4MGFmZjZmMzZlMDRmM2I0Li42NDc3NzYw
Y2FjZTU3M2U1NWJjZmVmNGNiMTQxZTAzYThhNjRhYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0RFUFMKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCkBAIC0z
Miw3ICszMiw3IEBACiAKIHZhcnMgPSB7CiAgICdjaHJvbWl1bV9zdm4nOiAnaHR0cDovL3NyYy5j
aHJvbWl1bS5vcmcvc3ZuL3RydW5rL3NyYycsCi0gICdjaHJvbWl1bV9yZXYnOiAnODA3NjcnCisg
ICdjaHJvbWl1bV9yZXYnOiAnODA4OTAnCiB9CiAKIGRlcHMgPSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAKaW5kZXggZDgyNWQyNGFlZjZjOTA4OWUz
MGM2MTY1ZWQ4YWQzYjY2ODkzMmJiZS4uMzkwNGIwYzdmYTc2NjZjNzdjNzcxMzc0NzFmODRkMDI0
Y2NiMjIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1C
cmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdl
LmNwcApAQCAtMTc4LDYgKzE3OCwxMiBAQCB2b2lkIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRS
ZWFkSFRNTCgKICAgICAqc291cmNlVVJMID0gdXJsOwogfQogCitQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRJbWFnZSgKKyAgICBQYXN0ZWJvYXJk
UHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gd2ViS2l0Q2xp
ZW50KCktPmNsaXBib2FyZCgpLT5yZWFkSW1hZ2Uoc3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpC
dWZmZXI+KGJ1ZmZlcikpOworfQorCiB2b2lkIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRXcml0
ZVNlbGVjdGlvbihjb25zdCBTdHJpbmcmIGh0bWxUZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgc291cmNlVVJMLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwbGFpblRl
eHQsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88875</attachid>
            <date>2011-04-08 14:26:27 -0700</date>
            <delta_ts>2011-04-11 13:56:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58106-20110408142625.patch</filename>
            <type>text/plain</type>
            <size>12754</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyODMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYzMyOTY1YjM0NzQ4MDJjMGUzMTNi
MzQ5NDA5YWQ4NzZjOTU2NTEyLi45YjgzNmJkYjU2NGZlNjI3ZGMwY2VjNTAyYTNlMWUyZDRlZDZi
YTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQtMDcgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0
YVRyYW5zZmVySXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MTA2CisKKyAgICAgICAgQWRkIGEgcmVmdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUg
dmFyaW91cyBiaXRzIGluIHRoZSBwaXBlbGluZSB3b3JrIGFzIGV4cGVjdGVkLgorCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5nLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW1zLWltYWdlLXBuZy5odG1sOiBBZGRlZC4KKwogMjAxMS0wNC0wOCAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBOb3RlIHNvbWUg
Zmxha3kgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YS10cmFuc2Zlci1pdGVtcy1pbWFnZS1wbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWltYWdlLXBuZy1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQwZjJkMDVjMzExNzNjYjg1MTRjOWJlZDZlZjhjYWQ1YmQwN2Q4
OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtcy1pbWFnZS1wbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2PlRoaXMgZmlsZSB0ZXN0cyB0
aGUgaW1hZ2UgcGFzdGluZyBmdW5jdGlvbmFsaXR5IG9mIERhdGFUcmFuc2Zlckl0ZW1zLgorVG8g
dHJ5IHRoZSB0ZXN0IG1hbnVhbGx5LCByaWdodC1jbGljayBvbiB0aGUgaW1hZ2UgJmd0OyBDb3B5
IEltYWdlLCBjbGljaworYW55d2hlcmUgaW4gdGhlIGJhY2tncm91bmQgb2YgdGhlIG1haW4gcGFn
ZSBhbmQgcGFzdGUuPC9kaXY+Cis8aWZyYW1lIGlkPSJzcmMiIHNyYz0icmVzb3VyY2VzL21vemls
bGEuZ2lmIj48L2lmcmFtZT48YnI+Cis8aW1nIGlkPSJkZXN0IiBzcmM9InJlc291cmNlcy9tb3pp
bGxhLmdpZiI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1pbWFnZS1wbmcuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWltYWdlLXBuZy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE3NmI2YWExNWJlODkzNjUzZjgxYjkzY2EyYmFlYWY2YWI4NmU4ZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10
cmFuc2Zlci1pdGVtcy1pbWFnZS1wbmcuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHkgb25wYXN0ZT0icGFzdGUoZXZlbnQpIj4KKzxkaXY+VGhpcyBm
aWxlIHRlc3RzIHRoZSBpbWFnZSBwYXN0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgRGF0YVRyYW5zZmVy
SXRlbXMuCitUbyB0cnkgdGhlIHRlc3QgbWFudWFsbHksIHJpZ2h0LWNsaWNrIG9uIHRoZSBpbWFn
ZSAmZ3Q7IENvcHkgSW1hZ2UsIGNsaWNrCithbnl3aGVyZSBpbiB0aGUgYmFja2dyb3VuZCBvZiB0
aGUgbWFpbiBwYWdlIGFuZCBwYXN0ZS48L2Rpdj4KKzxpZnJhbWUgaWQ9InNyYyIgc3JjPSJyZXNv
dXJjZXMvbW96aWxsYS5naWYiPjwvaWZyYW1lPjxicj4KKzxpbWcgaWQ9ImRlc3QiPgorPHNjcmlw
dCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHBhc3Rl
KGV2ZW50KQoreworICAgIHZhciBpdGVtcyA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRlbXM7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAo
aXRlbXNbaV0ua2luZCA9PSAnZmlsZScgJiYgaXRlbXNbaV0udHlwZSA9PSAnaW1hZ2UvcG5nJykg
eworICAgICAgICAgICAgdmFyIGJsb2IgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTsKKyAgICAgICAg
ICAgIHZhciB1cmwgPSB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXN0Jykuc3JjID0gdXJsOworICAg
ICAgICB9CisgICAgfQorICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
dmFyIHNyY0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3JjJyk7CisgICAgc3Jj
RWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMSwgMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCdwYXN0ZScpOworfQorCitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZTliYzY0NzU4YTUxZGNhMDU2NTk1NDAwNjRmOTBhZjFiYzhiMTJhLi41
ZDJjYTU2ZTkzY2RkMGYzNWM1YjFjYjQxM2VjNTNkOGY3MDYzMGJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTEtMDQtMDcgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2No
cm9taXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0YVRyYW5zZmVySXRlbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MTA2CisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmls
ZSgpIHVzaW5nIEJsb2JzLiBJbgorICAgICAgICBhZGRpdGlvbiwgcGx1bWJpbmcgZm9yIGltYWdl
L3BuZyBoYXMgYmVlbiBhZGRlZCBzbyBpbWFnZSBwYXN0ZSB3aWxsIGJlCisgICAgICAgIHN1cHBv
cnRlZCBhcyBsb25nIGFzIHRoZSByZW5kZXJlciBtYWtlcyB0aGF0IGRhdGEgYXZhaWxhYmxlLgor
CisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1p
bWFnZS1wbmcuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaDoKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVySXRlbS5pZGw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkTWltZVR5cGVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRNaW1lVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJh
bnNmZXJJdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRl
bUNocm9taXVtOjpnZXRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJ
dGVtQ2hyb21pdW06OmdldEFzRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRGF0
YVRyYW5zZmVySXRlbUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1CcmlkZ2UuaDoKKwogMjAxMS0wNC0wOCAgQW5kcmV5IEFkYWlraW4gIDxhYW5kcmV5QGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCmluZGV4IDdiNTg4NmFmNTc4ZTM5ZTc2NmE2Mzk2NWI1
NjU1NTA5NDhhMGE2Y2UuLmQ2NDhjNTY4MTUyZTBlNzZjMzQ4ZTQ1M2MzM2E2ZGE3ODNhZmRmZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaApAQCAtMzgsNiArMzgsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJsb2I7CiBjbGFzcyBTdHJpbmdDYWxsYmFj
azsKIAogY2xhc3MgRGF0YVRyYW5zZmVySXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFUcmFu
c2Zlckl0ZW0+IHsKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHR5cGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QXNTdHJpbmcoUGFzc1Jl
ZlB0cjxTdHJpbmdDYWxsYmFjaz4pID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmxvYj4g
Z2V0QXNGaWxlKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsCmluZGV4IGEyYzk5NDI2NDY2YjQyNjZhNGJlYTYz
MjA0MTUyZjI1ZmNmODhkZTYuLmFjY2FmNTAwNjRmYzU4YWU5YjcwODc5MGJiNzU4MGJjNjk0ZGEz
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5pZGwKQEAgLTM3LDYgKzM3
LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHR5cGU7CiAKICAgICAgICAgdm9pZCBnZXRBc1N0cmluZyhpbiBbQ2FsbGJhY2tdIFN0cmluZ0Nh
bGxiYWNrIGNhbGxiYWNrKTsKKyAgICAgICAgQmxvYiBnZXRBc0ZpbGUoKTsKICAgICB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRN
aW1lVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
TWltZVR5cGVzLmNwcAppbmRleCAyN2U2OGZmNzI4MzdmZWY2NGQzNzg4MDhjYzIwODMwMDA4OTBh
MjBkLi45NGNlMjdkMzY5MjFiYzMxY2FhMDdlYWZkYWI1NmYwMWQ5Y2ZkNGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRNaW1lVHlwZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBl
cy5jcHAKQEAgLTQxLDUgKzQxLDYgQEAgY29uc3QgY2hhciBtaW1lVHlwZVVSTFtdID0gInVybCI7
CiBjb25zdCBjaGFyIG1pbWVUeXBlVGV4dFVSSUxpc3RbXSA9ICJ0ZXh0L3VyaS1saXN0IjsKIGNv
bnN0IGNoYXIgbWltZVR5cGVEb3dubG9hZFVSTFtdID0gImRvd25sb2FkdXJsIjsKIGNvbnN0IGNo
YXIgbWltZVR5cGVGaWxlc1tdID0gIkZpbGVzIjsKK2NvbnN0IGNoYXIgbWltZVR5cGVJbWFnZVBu
Z1tdID0gImltYWdlL3BuZyI7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBlcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmgKaW5k
ZXggMzFlMmQzZTg5ZWNkOWQ0NTZiYWFlOTBhYzYxOGYxYzBiZDgwZTcyZi4uM2U0YWI1MDdkMjYw
MDlhYjc2NjA0NDYyNTU1YmZmMTk1MmExMTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmgKQEAgLTQxLDYgKzQxLDcg
QEAgZXh0ZXJuIGNvbnN0IGNoYXIgbWltZVR5cGVVUkxbXTsKIGV4dGVybiBjb25zdCBjaGFyIG1p
bWVUeXBlVGV4dFVSSUxpc3RbXTsKIGV4dGVybiBjb25zdCBjaGFyIG1pbWVUeXBlRG93bmxvYWRV
UkxbXTsKIGV4dGVybiBjb25zdCBjaGFyIG1pbWVUeXBlRmlsZXNbXTsKK2V4dGVybiBjb25zdCBj
aGFyIG1pbWVUeXBlSW1hZ2VQbmdbXTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5z
ZmVySXRlbUNocm9taXVtLmNwcAppbmRleCA3ODU3MzM2NjViNmNmMDAxMWZlNmM4YzdhMGMyYTBl
NDcyOWNmMjVlLi5kZTE4NzA5OGY3ZjQxZDIwY2U5MmI5YmRkZDc2NjI4MDFmMzE3MDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFU
cmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHAKQEAgLTMzLDkgKzMzLDExIEBACiAKICNpZiBFTkFCTEUo
REFUQV9UUkFOU0ZFUl9JVEVNUykKIAorI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJDbGlw
Ym9hcmQuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRNaW1lVHlwZXMuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUJyaWRnZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmlu
Z0NhbGxiYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4LDYgKzkwLDggQEAgdm9p
ZCBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5n
Q2FsbGJhY2s+IGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayht
X2NvbnRleHQsIG1fZGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBBU1NFUlQo
bV9zb3VyY2UgPT0gUGFzdGVib2FyZFNvdXJjZSk7CiAgICAgLy8gVGhpcyBpcyB1Z2x5IGJ1dCB0
aGVyZSdzIG5vIHJlYWwgYWx0ZXJuYXRpdmUuCiAgICAgaWYgKG1fdHlwZSA9PSBtaW1lVHlwZVRl
eHRQbGFpbikgewogICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhtX2NvbnRleHQs
IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KFBhc3RlYm9hcmRQcml2YXRl
OjpTdGFuZGFyZEJ1ZmZlcikpOwpAQCAtMTAzLDYgKzEwNywzMyBAQCB2b2lkIERhdGFUcmFuc2Zl
ckl0ZW1DaHJvbWl1bTo6Z2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gY2Fs
bGJhY2spCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4g
RGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpnZXRBc0ZpbGUoKQoreworICAgIGlmIChtX3NvdXJj
ZSA9PSBJbnRlcm5hbFNvdXJjZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQobV9z
b3VyY2UgPT0gUGFzdGVib2FyZFNvdXJjZSk7CisgICAgaWYgKG1fdHlwZSA9PSBtaW1lVHlwZUlt
YWdlUG5nKSB7CisgICAgICAgIC8vIFRPRE86IFRoaXMgaXMgcHJldHR5IGluZWZmaWNpZW50LiBX
ZSBjb3B5IHRoZSBkYXRhIGZyb20gdGhlIGJyb3dzZXIKKyAgICAgICAgLy8gdG8gdGhlIHJlbmRl
cmVyLiBXZSB0aGVuIHBsYWNlIGl0IGluIGEgYmxvYiBpbiBXZWJLaXQsIHdoaWNoCisgICAgICAg
IC8vIHJlZ2lzdGVycyBpdCBhbmQgY29waWVzIGl0ICpiYWNrKiB0byB0aGUgYnJvd3Nlci4gV2hl
biBhIGNvbnN1bWVyCisgICAgICAgIC8vIHdhbnRzIHRvIHJlYWQgdGhlIGRhdGEsIHdlIHRoZW4g
Y29weSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIHJlbmRlcmVyLgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMDcgaGFzIGJlZW4gZmlsZWQgdG8g
dHJhY2sKKyAgICAgICAgLy8gaW1wcm92ZW1lbnRzIHRvIHRoaXMgY29kZSAoaW4gcGFydGljdWxh
ciwgYWRkIGEgcmVnaXN0ZXJDbGlwYm9hcmRCbG9iCisgICAgICAgIC8vIG1ldGhvZCB0byB0aGUg
YmxvYiByZWdpc3RyeTsgdGhhdCB3YXkgdGhlIGRhdGEgaXMgb25seSBjb3BpZWQgb3ZlcgorICAg
ICAgICAvLyBpbnRvIHRoZSByZW5kZXJlciB3aGVuIGl0J3MgYWN0dWFsbHkgcmVhZCwgbm90IHdo
ZW4gdGhlIGJsb2IgaXMKKyAgICAgICAgLy8gaW5pdGlhbGx5IGNvbnN0cnVjdGVkKS4KKyAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRS
ZWFkSW1hZ2UoUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJkQnVmZmVyKTsKKyAgICAgICAgUmVm
UHRyPFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgcmF3RGF0
YS0+bXV0YWJsZURhdGEoKS0+YXBwZW5kKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKKyAg
ICAgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEocmF3RGF0YSwgMCwgLTEpOworICAgICAgICBibG9i
RGF0YS0+c2V0Q29udGVudFR5cGUobWltZVR5cGVJbWFnZVBuZyk7CisgICAgICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoYmxvYkRhdGEucmVsZWFzZSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5oCmluZGV4IDc3Zjc0
ZjJlY2YxMzYzNGNjNjZlMzFjY2VhNmRkMTYwMTkwMTY2NzAuLjY2YmU5NmVlZGI2MmUwNzNhYWU1
ZmRjNWY5YmQyNDMzYjBhNGM1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5oCkBAIC01MSw2ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4pOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxCbG9iPiBnZXRBc0ZpbGUoKTsKIAogcHJpdmF0ZToKICAgICBl
bnVtIERhdGFTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1CcmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtQnJpZGdlLmgKaW5kZXggMWMzY2NiZDBiODA1ZjJjYmJmYjA4MWM4NWE1YTc1MmRm
ZTkxYzdlOS4uM2EwNDYxN2YwY2Q0OTU3NjY4MDI4Y2QzOWRkMTRmYWUzODYzNmM3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oCkBA
IC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJpbmcgY2xpcGJvYXJkUmVh
ZFBsYWluVGV4dChQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyKTsKICAgICBzdGF0
aWMgdm9pZCBjbGlwYm9hcmRSZWFkSFRNTChQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVm
ZmVyLCBTdHJpbmcqLCBLVVJMKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjbGlwYm9hcmRSZWFkSW1hZ2UoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlcik7
CiAKICAgICAvLyBPbmx5IHRoZSBjbGlwYm9hcmRSZWFkIGZ1bmN0aW9ucyB0YWtlIGEgYnVmZmVy
IGFyZ3VtZW50IGJlY2F1c2UKICAgICAvLyBDaHJvbWl1bSBjdXJyZW50bHkgdXNlcyBhIGRpZmZl
cmVudCB0ZWNobmlxdWUgdG8gd3JpdGUgdG8gYWx0ZXJuYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGIwZGEzODQxZjM4NjViMzUwMzcxOTc0YjhiZGQyZWRjNzUwMTc5ZmUuLjE3OGEy
ZTNiOTAxYWY3YjllYTg5NDIwYWVhODdjYzhjOGM4NDM5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMDcgIERhbmllbCBDaGVuZyAgPGRjaGVu
Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0YVRy
YW5zZmVySXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4MTA2CisKKyAgICAgICAgQWRkIGdsdWUgZm9yIHJlYWRpbmcgaW1hZ2UgZGF0YSBmcm9t
IGNsaXBib2FyZC4KKworICAgICAgICAqIERFUFM6CisgICAgICAgICogc3JjL1BsYXRmb3JtQnJp
ZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFk
SW1hZ2UpOgorCiAyMDExLTA0LTA4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIFRoZSBzZWNvbmQgYXR0ZW1wdCBvZiBmaXhpbmcgZm9yIFdp
bmRvd3MgKGRiZykoc2hhcmVkKSBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vREVQUyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUwppbmRleCA2ZDkwZGM3ZjNl
YzcwNjU4MDFiZGRkNzI4MGFmZjZmMzZlMDRmM2I0Li42NDc3NzYwY2FjZTU3M2U1NWJjZmVmNGNi
MTQxZTAzYThhNjRhYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCkBAIC0zMiw3ICszMiw3IEBACiAKIHZh
cnMgPSB7CiAgICdjaHJvbWl1bV9zdm4nOiAnaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvc3ZuL3Ry
dW5rL3NyYycsCi0gICdjaHJvbWl1bV9yZXYnOiAnODA3NjcnCisgICdjaHJvbWl1bV9yZXYnOiAn
ODA4OTAnCiB9CiAKIGRlcHMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybUJyaWRnZS5jcHAKaW5kZXggZDgyNWQyNGFlZjZjOTA4OWUzMGM2MTY1ZWQ4YWQzYjY2ODkz
MmJiZS4uMzkwNGIwYzdmYTc2NjZjNzdjNzcxMzc0NzFmODRkMDI0Y2NiMjIwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcApAQCAtMTc4LDYgKzE3
OCwxMiBAQCB2b2lkIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkSFRNTCgKICAgICAqc291
cmNlVVJMID0gdXJsOwogfQogCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Ccmlk
Z2U6OmNsaXBib2FyZFJlYWRJbWFnZSgKKyAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJk
QnVmZmVyIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmNsaXBib2FyZCgp
LT5yZWFkSW1hZ2Uoc3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1ZmZlcikpOwor
fQorCiB2b2lkIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRXcml0ZVNlbGVjdGlvbihjb25zdCBT
dHJpbmcmIGh0bWxUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgS1VSTCYgc291cmNlVVJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89080</attachid>
            <date>2011-04-11 13:56:39 -0700</date>
            <delta_ts>2011-04-11 13:58:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58106-20110411135638.patch</filename>
            <type>text/plain</type>
            <size>12695</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM0ODYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MGY5YTM0OTM5ZjEyYmFkN2IzZDQ2
ODBkYWZlYjhlYTNmZDM4ZDQ5Li4xY2E0NjhkMmE2NzZhYzFhODVkZDA0ZmUxMWZlYTg3OTE0Y2U0
NzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQtMTEgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92Lgor
CisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGltYWdlL3BuZyBzdXBwb3J0IGluIERhdGFU
cmFuc2Zlckl0ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01ODEwNgorCisgICAgICAgIEFkZCBhIHJlZnRlc3QgdG8gdmVyaWZ5IHRoYXQgdGhlIHZh
cmlvdXMgYml0cyBpbiB0aGUgcGlwZWxpbmUgd29yayBhcyBleHBlY3RlZC4KKworICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWltYWdlLXBuZy1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zl
ci1pdGVtcy1pbWFnZS1wbmcuaHRtbDogQWRkZWQuCisKIDIwMTEtMDQtMDYgIFhpYW9tZWkgSmkg
IDx4amlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW1zLWltYWdlLXBuZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5nLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGZjNTdlYWZiNDNjM2NlZWY4NThiM2VhMzEzZGQ0NTczNmU5ZGJjMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0
ZW1zLWltYWdlLXBuZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXY+VGhpcyBmaWxlIHRlc3RzIHRoZSBpbWFnZSBwYXN0
aW5nIGZ1bmN0aW9uYWxpdHkgb2YgRGF0YVRyYW5zZmVySXRlbXMuCitUbyB0cnkgdGhlIHRlc3Qg
bWFudWFsbHksIHJpZ2h0LWNsaWNrIG9uIHRoZSBpbWFnZSAmZ3Q7IENvcHkgSW1hZ2UsIGNsaWNr
Cithbnl3aGVyZSBpbiB0aGUgYmFja2dyb3VuZCBvZiB0aGUgbWFpbiBwYWdlIGFuZCBwYXN0ZS48
L2Rpdj4KKzxpZnJhbWUgaWQ9InNyYyIgc3JjPSJyZXNvdXJjZXMvbW96aWxsYS5naWYiPjwvaWZy
YW1lPjxicj4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvbW96aWxsYS5naWYiPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbXMtaW1hZ2UtcG5nLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YS10cmFuc2Zlci1pdGVtcy1pbWFnZS1wbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODI1ZTFh
NjU1MDFiN2FkMzU2YmMwMDIwN2M0ODNmYjIyYTcxMWUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtaW1hZ2UtcG5n
Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IHBhc3RlKGV2ZW50KQoreworICAgIHZhciBpdGVtcyA9IGV2ZW50LmNsaXBib2FyZERhdGEuaXRl
bXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICBpZiAoaXRlbXNbaV0ua2luZCA9PSAnZmlsZScgJiYgaXRlbXNbaV0udHlwZSA9PSAnaW1hZ2Uv
cG5nJykgeworICAgICAgICAgICAgdmFyIGJsb2IgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTsKKyAg
ICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cud2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChibG9i
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXN0Jykuc3JjID0gdXJs
OworICAgICAgICB9CisgICAgfQorICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgdmFyIHNyY0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3JjJyk7Cisg
ICAgc3JjRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMSwgMSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCdwYXN0ZScpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSIgb25wYXN0ZT0icGFzdGUoZXZlbnQpIj4KKzxkaXY+VGhpcyBmaWxlIHRlc3RzIHRo
ZSBpbWFnZSBwYXN0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgRGF0YVRyYW5zZmVySXRlbXMuCitUbyB0
cnkgdGhlIHRlc3QgbWFudWFsbHksIHJpZ2h0LWNsaWNrIG9uIHRoZSBpbWFnZSAmZ3Q7IENvcHkg
SW1hZ2UsIGNsaWNrCithbnl3aGVyZSBpbiB0aGUgYmFja2dyb3VuZCBvZiB0aGUgbWFpbiBwYWdl
IGFuZCBwYXN0ZS48L2Rpdj4KKzxpZnJhbWUgaWQ9InNyYyIgc3JjPSJyZXNvdXJjZXMvbW96aWxs
YS5naWYiPjwvaWZyYW1lPjxicj4KKzxpbWcgaWQ9ImRlc3QiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDkzMDlhYjc4YTRmMmEyZjA5OGQ1MWE1ZWNkY2I0MGI4MDVhNGUwZTIuLmJl
OTBkNzA3MzYwMGQ2OGQwZTljMDEzMDJmMjNmZjJmYmJmZDg0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxMS0wNC0xMSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCisKKyAgICAgICAgW2Nocm9t
aXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0YVRyYW5zZmVySXRlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MTA2CisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmlsZSgp
IHVzaW5nIEJsb2JzLiBJbgorICAgICAgICBhZGRpdGlvbiwgcGx1bWJpbmcgZm9yIGltYWdlL3Bu
ZyBoYXMgYmVlbiBhZGRlZCBzbyBpbWFnZSBwYXN0ZSB3aWxsIGJlCisgICAgICAgIHN1cHBvcnRl
ZCBhcyBsb25nIGFzIHRoZSByZW5kZXJlciBtYWtlcyB0aGF0IGRhdGEgYXZhaWxhYmxlLgorCisg
ICAgICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1pbWFn
ZS1wbmcuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaDoKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVySXRlbS5pZGw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
Q2xpcGJvYXJkTWltZVR5cGVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRNaW1lVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNm
ZXJJdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUNo
cm9taXVtOjpnZXRBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW06OmdldEFzRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRy
YW5zZmVySXRlbUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1CcmlkZ2UuaDoKKwogMjAxMS0wNC0wNiAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXJJdGVtLmgKaW5kZXggN2I1ODg2YWY1NzhlMzllNzY2YTYzOTY1YjU2NTU1MDk0OGEw
YTZjZS4uZDY0OGM1NjgxNTJlMGU3NmMzNDhlNDUzYzMzYTZkYTc4M2FmZGZlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQmxvYjsKIGNsYXNzIFN0cmluZ0NhbGxiYWNrOwogCiBjbGFz
cyBEYXRhVHJhbnNmZXJJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVySXRlbT4g
ewpAQCAtNTEsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmlu
Z0NhbGxiYWNrPikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCbG9iPiBnZXRBc0ZpbGUo
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVySXRlbS5pZGwKaW5kZXggYTJjOTk0MjY0NjZiNDI2NmE0YmVhNjMyMDQxNTJmMjVm
Y2Y4OGRlNi4uYWNjYWY1MDA2NGZjNThhZTliNzA4NzkwYmI3NTgwYmM2OTRkYTM0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbApAQCAtMzcsNiArMzcsNyBAQCBtb2R1
bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKIAog
ICAgICAgICB2b2lkIGdldEFzU3RyaW5nKGluIFtDYWxsYmFja10gU3RyaW5nQ2FsbGJhY2sgY2Fs
bGJhY2spOworICAgICAgICBCbG9iIGdldEFzRmlsZSgpOwogICAgIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRNaW1lVHlwZXMu
Y3BwCmluZGV4IDI3ZTY4ZmY3MjgzN2ZlZjY0ZDM3ODgwOGNjMjA4MzAwMDg5MGEyMGQuLjk0Y2Uy
N2QzNjkyMWJjMzFjYWEwN2VhZmRhYjU2ZjAxZDljZmQ0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZE1pbWVUeXBlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmNwcApAQCAt
NDEsNSArNDEsNiBAQCBjb25zdCBjaGFyIG1pbWVUeXBlVVJMW10gPSAidXJsIjsKIGNvbnN0IGNo
YXIgbWltZVR5cGVUZXh0VVJJTGlzdFtdID0gInRleHQvdXJpLWxpc3QiOwogY29uc3QgY2hhciBt
aW1lVHlwZURvd25sb2FkVVJMW10gPSAiZG93bmxvYWR1cmwiOwogY29uc3QgY2hhciBtaW1lVHlw
ZUZpbGVzW10gPSAiRmlsZXMiOworY29uc3QgY2hhciBtaW1lVHlwZUltYWdlUG5nW10gPSAiaW1h
Z2UvcG5nIjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkTWltZVR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRNaW1lVHlwZXMuaAppbmRleCAzMWUyZDNl
ODllY2Q5ZDQ1NmJhYWU5MGFjNjE4ZjFjMGJkODBlNzJmLi4zZTRhYjUwN2QyNjAwOWFiNzY2MDQ0
NjI1NTViZmYxOTUyYTExNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRNaW1lVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRNaW1lVHlwZXMuaApAQCAtNDEsNiArNDEsNyBAQCBleHRlcm4g
Y29uc3QgY2hhciBtaW1lVHlwZVVSTFtdOwogZXh0ZXJuIGNvbnN0IGNoYXIgbWltZVR5cGVUZXh0
VVJJTGlzdFtdOwogZXh0ZXJuIGNvbnN0IGNoYXIgbWltZVR5cGVEb3dubG9hZFVSTFtdOwogZXh0
ZXJuIGNvbnN0IGNoYXIgbWltZVR5cGVGaWxlc1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgbWltZVR5
cGVJbWFnZVBuZ1tdOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hy
b21pdW0uY3BwCmluZGV4IDc4NTczMzY2NWI2Y2YwMDExZmU2YzhjN2EwYzJhMGU0NzI5Y2YyNWUu
LmRlMTg3MDk4ZjdmNDFkMjBjZTkyYjliZGRkNzY2MjgwMWYzMTcwMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRl
bUNocm9taXVtLmNwcApAQCAtMzMsOSArMzMsMTEgQEAKIAogI2lmIEVOQUJMRShEQVRBX1RSQU5T
RkVSX0lURU1TKQogCisjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgog
I2luY2x1ZGUgIkNsaXBib2FyZE1pbWVUeXBlcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdl
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2su
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsNiArOTAsOCBAQCB2b2lkIERhdGFUcmFu
c2Zlckl0ZW1DaHJvbWl1bTo6Z2V0QXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4g
Y2FsbGJhY2spCiAgICAgICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dCwg
bV9kYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIEFTU0VSVChtX3NvdXJjZSA9
PSBQYXN0ZWJvYXJkU291cmNlKTsKICAgICAvLyBUaGlzIGlzIHVnbHkgYnV0IHRoZXJlJ3Mgbm8g
cmVhbCBhbHRlcm5hdGl2ZS4KICAgICBpZiAobV90eXBlID09IG1pbWVUeXBlVGV4dFBsYWluKSB7
CiAgICAgICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKG1fY29udGV4dCwgUGxhdGZvcm1C
cmlkZ2U6OmNsaXBib2FyZFJlYWRQbGFpblRleHQoUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJk
QnVmZmVyKSk7CkBAIC0xMDMsNiArMTA3LDMzIEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUNocm9t
aXVtOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjaykKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBEYXRhVHJhbnNm
ZXJJdGVtQ2hyb21pdW06OmdldEFzRmlsZSgpCit7CisgICAgaWYgKG1fc291cmNlID09IEludGVy
bmFsU291cmNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChtX3NvdXJjZSA9PSBQ
YXN0ZWJvYXJkU291cmNlKTsKKyAgICBpZiAobV90eXBlID09IG1pbWVUeXBlSW1hZ2VQbmcpIHsK
KyAgICAgICAgLy8gVE9ETzogVGhpcyBpcyBwcmV0dHkgaW5lZmZpY2llbnQuIFdlIGNvcHkgdGhl
IGRhdGEgZnJvbSB0aGUgYnJvd3NlcgorICAgICAgICAvLyB0byB0aGUgcmVuZGVyZXIuIFdlIHRo
ZW4gcGxhY2UgaXQgaW4gYSBibG9iIGluIFdlYktpdCwgd2hpY2gKKyAgICAgICAgLy8gcmVnaXN0
ZXJzIGl0IGFuZCBjb3BpZXMgaXQgKmJhY2sqIHRvIHRoZSBicm93c2VyLiBXaGVuIGEgY29uc3Vt
ZXIKKyAgICAgICAgLy8gd2FudHMgdG8gcmVhZCB0aGUgZGF0YSwgd2UgdGhlbiBjb3B5IHRoZSBk
YXRhIGJhY2sgaW50byB0aGUgcmVuZGVyZXIuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODEwNyBoYXMgYmVlbiBmaWxlZCB0byB0cmFjaworICAg
ICAgICAvLyBpbXByb3ZlbWVudHMgdG8gdGhpcyBjb2RlIChpbiBwYXJ0aWN1bGFyLCBhZGQgYSBy
ZWdpc3RlckNsaXBib2FyZEJsb2IKKyAgICAgICAgLy8gbWV0aG9kIHRvIHRoZSBibG9iIHJlZ2lz
dHJ5OyB0aGF0IHdheSB0aGUgZGF0YSBpcyBvbmx5IGNvcGllZCBvdmVyCisgICAgICAgIC8vIGlu
dG8gdGhlIHJlbmRlcmVyIHdoZW4gaXQncyBhY3R1YWxseSByZWFkLCBub3Qgd2hlbiB0aGUgYmxv
YiBpcworICAgICAgICAvLyBpbml0aWFsbHkgY29uc3RydWN0ZWQpLgorICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhID0gUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRJbWFnZShQ
YXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRCdWZmZXIpOworICAgICAgICBSZWZQdHI8UmF3RGF0
YT4gcmF3RGF0YSA9IFJhd0RhdGE6OmNyZWF0ZSgpOworICAgICAgICByYXdEYXRhLT5tdXRhYmxl
RGF0YSgpLT5hcHBlbmQoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOworICAgICAgICBibG9i
RGF0YS0+YXBwZW5kRGF0YShyYXdEYXRhLCAwLCAtMSk7CisgICAgICAgIGJsb2JEYXRhLT5zZXRD
b250ZW50VHlwZShtaW1lVHlwZUltYWdlUG5nKTsKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0
ZShibG9iRGF0YS5yZWxlYXNlKCksIGRhdGEtPnNpemUoKSk7CisgICAgfQorICAgIHJldHVybiAw
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQV9U
UkFOU0ZFUl9JVEVNUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmgKaW5kZXggNzdmNzRmMmVjZjEzNjM0
Y2M2NmUzMWNjZWE2ZGQxNjAxOTAxNjY3MC4uNjZiZTk2ZWVkYjYyZTA3M2FhZTVmZGM1ZjliZDI0
MzNiMGE0YzUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPik7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEJsb2I+IGdldEFzRmlsZSgpOwogCiBwcml2YXRlOgogICAgIGVudW0gRGF0YVNv
dXJjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybUJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1C
cmlkZ2UuaAppbmRleCAxYzNjY2JkMGI4MDVmMmNiYmZiMDgxYzg1YTVhNzUyZGZlOTFjN2U5Li4z
YTA0NjE3ZjBjZDQ5NTc2NjgwMjhjZDM5ZGQxNGZhZTM4NjM2Yzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmgKQEAgLTk4LDYgKzk4
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyBjbGlwYm9hcmRSZWFkUGxhaW5UZXh0
KFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIpOwogICAgIHN0YXRpYyB2b2lkIGNs
aXBib2FyZFJlYWRIVE1MKFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIsIFN0cmlu
ZyosIEtVUkwqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGNsaXBib2Fy
ZFJlYWRJbWFnZShQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyKTsKIAogICAgIC8v
IE9ubHkgdGhlIGNsaXBib2FyZFJlYWQgZnVuY3Rpb25zIHRha2UgYSBidWZmZXIgYXJndW1lbnQg
YmVjYXVzZQogICAgIC8vIENocm9taXVtIGN1cnJlbnRseSB1c2VzIGEgZGlmZmVyZW50IHRlY2hu
aXF1ZSB0byB3cml0ZSB0byBhbHRlcm5hdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MzhlY2Y3NDAyNzZjZmY0YzhhN2RiNDI5Y2YyMTQzYzBhMjQxZDllOC4uNTQ0NDRjZDk4OTNhNjgx
ODdiZTdhN2U5M2IzNDM2OGM2YjdhNDZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0wNC0xMSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCisKKyAgICAgICAgW2No
cm9taXVtXSBJbXBsZW1lbnQgaW1hZ2UvcG5nIHN1cHBvcnQgaW4gRGF0YVRyYW5zZmVySXRlbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MTA2CisK
KyAgICAgICAgQWRkIGdsdWUgZm9yIHJlYWRpbmcgaW1hZ2UgZGF0YSBmcm9tIGNsaXBib2FyZC4K
KworICAgICAgICAqIERFUFM6CisgICAgICAgICogc3JjL1BsYXRmb3JtQnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkSW1hZ2UpOgorCiAy
MDExLTA0LTA1ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU3RldmUgQmxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0RFUFMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMKaW5kZXggNmQ5MGRjN2YzZWM3
MDY1ODAxYmRkZDcyODBhZmY2ZjM2ZTA0ZjNiNC4uNjQ3Nzc2MGNhY2U1NzNlNTViY2ZlZjRjYjE0
MWUwM2E4YTY0YWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJz
ID0gewogICAnY2hyb21pdW1fc3ZuJzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVu
ay9zcmMnLAotICAnY2hyb21pdW1fcmV2JzogJzgwNzY3JworICAnY2hyb21pdW1fcmV2JzogJzgw
ODkwJwogfQogCiBkZXBzID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1CcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1CcmlkZ2UuY3BwCmluZGV4IGQ4MjVkMjRhZWY2YzkwODllMzBjNjE2NWVkOGFkM2I2Njg5MzJi
YmUuLjM5MDRiMGM3ZmE3NjY2Yzc3Yzc3MTM3NDcxZjg0ZDAyNGNjYjIyMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAKQEAgLTE3OCw2ICsxNzgs
MTIgQEAgdm9pZCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEhUTUwoCiAgICAgKnNvdXJj
ZVVSTCA9IHVybDsKIH0KIAorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtQnJpZGdl
OjpjbGlwYm9hcmRSZWFkSW1hZ2UoCisgICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1
ZmZlciBidWZmZXIpCit7CisgICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5jbGlwYm9hcmQoKS0+
cmVhZEltYWdlKHN0YXRpY19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIpKTsKK30K
Kwogdm9pZCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkV3JpdGVTZWxlY3Rpb24oY29uc3QgU3Ry
aW5nJiBodG1sVGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEtVUkwmIHNvdXJjZVVSTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LAo=
</data>
<flag name="review"
          id="81711"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>