<?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>77903</bug_id>
          
          <creation_ts>2012-02-06 14:31:03 -0800</creation_ts>
          <short_desc>Repaint issues on changing &apos;viewBox&apos; of inner SVG</short_desc>
          <delta_ts>2012-02-15 23:16:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://srufaculty.sru.edu/david.dailey/svg/recent/sliderzoom.svg</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69459</dependson>
          <blocked>77535</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Bear Travis">betravis</assigned_to>
          <cc>betravis</cc>
    
    <cc>dglazkov</cc>
    
    <cc>WebkitBugTracker</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550289</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-02-06 14:31:03 -0800</bug_when>
    <thetext>There are repaint issues on inner SVG elements when the &apos;viewBox&apos; attribute is changed. This just occurs when there is other content behind the SVG element and it&apos;s content. I have not figured out what happens, but it seems that previous content gets repainted correctly. It seems to be an issue with painting the SVG content itself. Maybe problems with transformations? This needs more investigation.

To see this issue, bug 69459 needs to get fixed first. But it seems to be unrelated to bug 69459.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555900</commentid>
    <comment_count>1</comment_count>
      <attachid>126897</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-13 20:12:20 -0800</bug_when>
    <thetext>Created attachment 126897
Proposed Patch

A patch proposal. The problem occurred because repainting used the new viewbox transform for both the old and new bounding rectangles. The patch updates the transform after the old bounds have been marked as part of layout.

Running the bots, then will mark for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556071</commentid>
    <comment_count>2</comment_count>
      <attachid>126897</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-14 00:56:33 -0800</bug_when>
    <thetext>Comment on attachment 126897
Proposed Patch

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

r- for the test, and the code changes, which are not a perfect solution yet.

&gt; LayoutTests/svg/repaint/inner-svg-change-viewBox-contract.svg:2
&gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;
&gt; + width=&quot;300&quot; height=&quot;300&quot; onload=&quot;window.setTimeout(resizeViewBox, 0)&quot;&gt;

I think it&apos;s not a good idea to use reftests here - we really want to check the repainting of inner &lt;svgs&gt;, and thus the repaint.js harness is really helpful, to spot in the pngs that repainting worked correctly. I propose to use:
&lt;svg onload=&quot;runRepaintTest()&quot;&gt;
&lt;script xlink:href=&quot;../../fast/repaint/resources/repaint.js&quot;&gt;
..

&gt; LayoutTests/svg/repaint/inner-svg-change-viewBox-contract.svg:5
&gt; +if (window.layoutTestController)
&gt; +    layoutTestController.waitUntilDone();

This can be removed.

&gt; LayoutTests/svg/repaint/inner-svg-change-viewBox-contract.svg:7
&gt; +function resizeViewBox() { 

Rename this to repaintTest(), as it gets called by runRepaintTest for you, after the initial painting finished.

&gt; LayoutTests/svg/repaint/inner-svg-change-viewBox-contract.svg:10
&gt; +    if (window.layoutTestController)
&gt; +        layoutTestController.notifyDone();

This can be removed as well.

&gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:68
&gt; +    m_viewbox = svg-&gt;currentViewBoxRect();

Slightly worried that we have to store m_viewbox and m_viewport now.
I think viewBox changes should be handled from the SVG DOM side, if viewBox attr changes. I&apos;ll investigate a bit and come back to your patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556568</commentid>
    <comment_count>3</comment_count>
      <attachid>127037</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-14 13:51:56 -0800</bug_when>
    <thetext>Created attachment 127037
Updated Patch

Updated the test to use the repaint harness.
Updated the code transform invalidation to use the svg dom rather than the renderer, which avoids storing the viewbox rectangle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556632</commentid>
    <comment_count>4</comment_count>
      <attachid>127037</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-02-14 14:49:12 -0800</bug_when>
    <thetext>Comment on attachment 127037
Updated Patch

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

I think this is the right approach. In general a viewBox is nothing else than a transform. r- because of some snippets.

&gt; LayoutTests/svg/repaint/inner-svg-change-viewBox-contract.svg:10
&gt; +&lt;!-- blue rect&apos;s lower right edges should be visible after viewbox resizing --&gt;

It is not. Is that because of the repaint logic?

&gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:82
&gt; +    bool needsUpdate = m_needsTransformUpdate;
&gt; +    if (needsUpdate) {
&gt; +        m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
&gt; +        // If this class were ever given a localTransform(), then the above would read:
&gt; +        // return viewportTranslation * localTransform() * viewportTransform()
&gt; +        m_needsTransformUpdate = false;
&gt; +    }
&gt; +    return needsUpdate;

why not just
if (m_needsTransformUpdate) {
 ...
 return true;
}
return false;

Also, should it be If this class _was_ ever given? :P I am not sure about that atm :)

&gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:-85
&gt; -    m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
&gt;      return m_localToParentTransform;
&gt; -    // If this class were ever given a localTransform(), then the above would read:
&gt; -    // return viewportTranslation * localTransform() * viewportTransform()

Did you run all tests to verify that we don&apos;t get a regression?

&gt; Source/WebCore/svg/SVGSVGElement.cpp:297
&gt; +        if (renderer())

Why not:
if (RenderObject* object = renderer())
    object-&gt;setNeedsTransformUpdate();

saves a renderer() call.

Also, don&apos;t we just need to call it for view box updates?

What about:

if (attrName == SVGNames::viewBoxAttr) {
    if (RenderObject* object = renderer())
        object-&gt;setNeedsTransformUpdate();
    updateRelativeLengths = true;
}

After the current if clause?

Of course it would violate the name updateRelativeLengths. What about renaming it to updateRelativeLengthsOrViewBox?

Of course you have to remove the attName check for viewBox in the later if clause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556791</commentid>
    <comment_count>5</comment_count>
      <attachid>127085</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-14 17:13:32 -0800</bug_when>
    <thetext>Created attachment 127085
Updated Patch

Updated expected .png so background is blue. You should see a blue edge on the lower right when running the test case.

Simplified boolean logic in RenderSVGViewPortContainer::calculateLocalTransform
(As an aside, _were_ should work, as a present subjunctive, but _was_ sounds like it might fit too. Thank goodness I&apos;m not an English teacher)

All the tests have been run. I&apos;m going to run the EWS again before marking this for review.

Adding the (RenderObject * object = renderer()) to the conditional at SVGSVGElement.cpp:297.

Broke up the logic in SVGSVGElement::svgAttributeChanged.
- SVGFitToViewBox::isKnownAttribute (viewBox or aspectRatio) only needs to update the transform and be marked for layout. It doesn&apos;t need to update the relative lengths information, so I&apos;m moving it to its own conditional.
- Removing the viewBox check for layout marking, as this will be covered by the updateRelativeLengthsOrViewBox == true case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556848</commentid>
    <comment_count>6</comment_count>
      <attachid>127085</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 18:24:03 -0800</bug_when>
    <thetext>Comment on attachment 127085
Updated Patch

Attachment 127085 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11518527</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556982</commentid>
    <comment_count>7</comment_count>
      <attachid>127085</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 00:38:39 -0800</bug_when>
    <thetext>Comment on attachment 127085
Updated Patch

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

Adding my 50 cent as well. Approach is much nicer this way.

&gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:75
&gt; +    if (m_needsTransformUpdate) {

Early exit should be used here.

&gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:78
&gt; +        // If this class were ever given a localTransform(), then the above would read:
&gt; +        // return viewportTranslation * localTransform() * viewportTransform()

The comment can go away, it&apos;s aged, and we won&apos;t do this :-)

&gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:97
&gt;  const AffineTransform&amp; RenderSVGViewportContainer::localToParentTransform() const
&gt;  {
&gt; -    m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
&gt;      return m_localToParentTransform;

Please inline this function as it has no content anymore.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:290
&gt; -    bool updateRelativeLengths = false;
&gt; +    bool updateRelativeLengthsOrViewBox = false;

This is unncessary, I&apos;d leave out this change and just do a
if (SVGFitToViewBox::isKnownAttribute(attrName)) {
    if (RenderObject* renderer = this-&gt;renderer()) {
        renderer-&gt;setNeedsTransformUpdate();
        RenderSVGresources::markForLayoutAndParent...(
    }
    return;
}
This way you don&apos;t need to touch the rest of the code at all, except removing the attrName == SVGNames::viewBoxAttr from the if (updateRelativeLengths branch below)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557315</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-02-15 09:14:03 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 127085 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127085&amp;action=review
&gt; 
&gt; Adding my 50 cent as well. Approach is much nicer this way.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:75
&gt; &gt; +    if (m_needsTransformUpdate) {
&gt; 
&gt; Early exit should be used here.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:78
&gt; &gt; +        // If this class were ever given a localTransform(), then the above would read:
&gt; &gt; +        // return viewportTranslation * localTransform() * viewportTransform()
&gt; 
&gt; The comment can go away, it&apos;s aged, and we won&apos;t do this :-)
Be careful with that. The SVG WG decided to support transform on SVGSVGelements for SVG 2.0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557395</commentid>
    <comment_count>9</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-15 10:58:24 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 127085 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127085&amp;action=review
&gt; 
&gt; Adding my 50 cent as well. Approach is much nicer this way.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:75
&gt; &gt; +    if (m_needsTransformUpdate) {
&gt; 
&gt; Early exit should be used here.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:78
&gt; &gt; +        // If this class were ever given a localTransform(), then the above would read:
&gt; &gt; +        // return viewportTranslation * localTransform() * viewportTransform()
&gt; 
&gt; The comment can go away, it&apos;s aged, and we won&apos;t do this :-)
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:97
&gt; &gt;  const AffineTransform&amp; RenderSVGViewportContainer::localToParentTransform() const
&gt; &gt;  {
&gt; &gt; -    m_localToParentTransform = AffineTransform::translation(m_viewport.x(), m_viewport.y()) * viewportTransform();
&gt; &gt;      return m_localToParentTransform;
&gt; 
&gt; Please inline this function as it has no content anymore.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:290
&gt; &gt; -    bool updateRelativeLengths = false;
&gt; &gt; +    bool updateRelativeLengthsOrViewBox = false;
&gt; 
&gt; This is unncessary, I&apos;d leave out this change and just do a
&gt; if (SVGFitToViewBox::isKnownAttribute(attrName)) {
&gt;     if (RenderObject* renderer = this-&gt;renderer()) {
&gt;         renderer-&gt;setNeedsTransformUpdate();
&gt;         RenderSVGresources::markForLayoutAndParent...(
&gt;     }
&gt;     return;
&gt; }
&gt; This way you don&apos;t need to touch the rest of the code at all, except removing the attrName == SVGNames::viewBoxAttr from the if (updateRelativeLengths branch below)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557399</commentid>
    <comment_count>10</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-15 11:03:56 -0800</bug_when>
    <thetext>Please ignore my last comment, my mouse has decided to have a field day.

I&apos;ll make these adjustments in the next patch. I&apos;ll leave the comment per Dirk&apos;s concerns.

&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:290
&gt; &gt; -    bool updateRelativeLengths = false;
&gt; &gt; +    bool updateRelativeLengthsOrViewBox = false;
&gt; 
&gt; This is unncessary, I&apos;d leave out this change and just do a
&gt; if (SVGFitToViewBox::isKnownAttribute(attrName)) {
&gt;     if (RenderObject* renderer = this-&gt;renderer()) {
&gt;         renderer-&gt;setNeedsTransformUpdate();
&gt;         RenderSVGresources::markForLayoutAndParent...(
&gt;     }
&gt;     return;
&gt; }
&gt; This way you don&apos;t need to touch the rest of the code at all, except removing the attrName == SVGNames::viewBoxAttr from the if (updateRelativeLengths branch below)

As I understand it, this would require moving the invalidation guard as well. If we can keep the setTransformUpdate and markForLayout calls separate, we won&apos;t invalidate when we are not yet attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557482</commentid>
    <comment_count>11</comment_count>
      <attachid>127220</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-15 13:00:41 -0800</bug_when>
    <thetext>Created attachment 127220
Updated Patch

Per Nikolas&apos; comments:
* Changed to use early exit in RenderSVGViewportContainer.cpp::calculateLocalTransform
* Inlined RenderSVGViewportContainer::localToParentTransform()

Per Dirk&apos;s comments:
* Leaving comment at RenderSVGViewportContainer.cpp::calculateLocalTransform intact

Leaving SVGSVGElement.cpp::svgAttribute changed as-is for now
The code, per Nikolas&apos; comments, would look like:

    SVGElementInstance::InvalidationGuard invalidationGuard(this);

    if (SVGFitToViewBox::isKnownAttribute(attrName)) { 
        if (RenderObject* object = renderer()) {
            object-&gt;setNeedsTransformUpdate();
            RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer());
        }
        return;
    }

    if (SVGTests::handleAttributeChange(this, attrName))
        return;

    if (updateRelativeLengths
        || SVGLangSpace::isKnownAttribute(attrName)
        || SVGExternalResourcesRequired::isKnownAttribute(attrName)
        || SVGZoomAndPan::isKnownAttribute(attrName)) {
        if (renderer())
            RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer());
        return;
    }

I can change this if it looks better. There is a chance we&apos;d invalidate when we don&apos;t have to (SVGTests::handleAttributeChange returns true).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557556</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 14:36:01 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; &gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:78
&gt; &gt; &gt; +        // If this class were ever given a localTransform(), then the above would read:
&gt; &gt; &gt; +        // return viewportTranslation * localTransform() * viewportTransform()
&gt; &gt; 
&gt; &gt; The comment can go away, it&apos;s aged, and we won&apos;t do this :-)
&gt; Be careful with that. The SVG WG decided to support transform on SVGSVGelements for SVG 2.0.
Heh, you misunderstood Erics comment it seems. Eric thought about passing localTransform() as _argument_ to localToParentTransform in his early work, hence the FIXME.
It has nothing to do with SVGSVGElements being transformable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557559</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 14:37:26 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I can change this if it looks better. There is a chance we&apos;d invalidate when we don&apos;t have to (SVGTests::handleAttributeChange returns true).
You&apos;re right, I missed the &lt;use&gt; shadow tree invalidation case. Keep it as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557636</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 15:29:58 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; I can change this if it looks better. There is a chance we&apos;d invalidate when we don&apos;t have to (SVGTests::handleAttributeChange returns true).
&gt; You&apos;re right, I missed the &lt;use&gt; shadow tree invalidation case. Keep it as-is.

Btw, can you look at bug 77535 as well, it seems highly related (not viewBox though, but relative length props and inner svgs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557694</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-02-15 16:10:43 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; Source/WebCore/rendering/svg/RenderSVGViewportContainer.cpp:78
&gt; &gt; &gt; &gt; +        // If this class were ever given a localTransform(), then the above would read:
&gt; &gt; &gt; &gt; +        // return viewportTranslation * localTransform() * viewportTransform()
&gt; &gt; &gt; 
&gt; &gt; &gt; The comment can go away, it&apos;s aged, and we won&apos;t do this :-)
&gt; &gt; Be careful with that. The SVG WG decided to support transform on SVGSVGelements for SVG 2.0.
&gt; Heh, you misunderstood Erics comment it seems. Eric thought about passing localTransform() as _argument_ to localToParentTransform in his early work, hence the FIXME.
&gt; It has nothing to do with SVGSVGElements being transformable.

Ok yes, I definitely interpreted it differently :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557710</commentid>
    <comment_count>16</comment_count>
      <attachid>127270</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-15 16:21:26 -0800</bug_when>
    <thetext>Created attachment 127270
Updated Patch

Removing comment from RenderSVGViewportContainer::calculateLocalTransform
Kicking off the bots again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557716</commentid>
    <comment_count>17</comment_count>
      <attachid>127270</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-15 16:25:58 -0800</bug_when>
    <thetext>Comment on attachment 127270
Updated Patch

Hm seems the EWS bots are not working. Still it looks great, r=me.
Please update the chromium test_expectations.txt file in LayoutTest/platform/chromium and upate the ChangeLog to include this file.
It should list sth. like:
// New test, needs a rebaseline
BUGWK77903 : svg/repaint/innert-sg-change-viewBox-contract.svg = IMAGE IMAGE+TEXT

Otherwise chromium will turn red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557733</commentid>
    <comment_count>18</comment_count>
      <attachid>127275</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-02-15 16:46:07 -0800</bug_when>
    <thetext>Created attachment 127275
Updated Patch

Updated LayoutTests/chromium/test_expectations.txt and LayoutTests/ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557926</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 23:09:14 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 127275:

perf/array-reverse.html bug 78593 (author: ojan@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557933</commentid>
    <comment_count>20</comment_count>
      <attachid>127275</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 23:16:50 -0800</bug_when>
    <thetext>Comment on attachment 127275
Updated Patch

Clearing flags on attachment: 127275

Committed r107893: &lt;http://trac.webkit.org/changeset/107893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557934</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 23:16:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126897</attachid>
            <date>2012-02-13 20:12:20 -0800</date>
            <delta_ts>2012-02-14 13:51:56 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>77903.patch</filename>
            <type>text/plain</type>
            <size>7031</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMjE2ZGNjLi5lYmEyMjVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDIt
MTMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQg
aXNzdWVzIG9uIGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgQWRkaW5n
IHRlc3QgZm9yIDc3OTAzLiBXaGVuIHNldHRpbmcgdGhlIHZpZXdib3ggb24gYW4gaW5uZXIgc3Zn
CisgICAgICAgIGVsZW1lbnQgY2F1c2VzIHRoZSBjb250ZW50IHRvIGJlY29tZSBzbWFsbGVyLCBt
YWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgYXJlYSBiZWhpbmQgdGhlIGNvbnRlbnQgaXMgcmVk
cmF3bi4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5n
ZS12aWV3Qm94LWNvbnRyYWN0LnN2ZzogQWRkZWQuCisKIDIwMTItMDItMTMgIEFtaSBGaXNjaG1h
biAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3
ZWQgZ2FyZGVuaW5nLiAgUmViYXNlbGluaW5nIHBvc3Qgc2tpYSBjaGFuZ2UgKGZyb20gYSBsb25n
IHRpbWUgYWdvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L2lubmVyLXN2
Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC1leHBlY3RlZC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcv
cmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3QtZXhwZWN0ZWQuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YzZjNWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29u
dHJhY3QtZXhwZWN0ZWQuc3ZnCkBAIC0wLDAgKzEsOSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIg0KKyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+DQorPHJlY3Qgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIyMDAiIGZpbGw9ImJsdWUiLz4NCis8dGV4dCB5PSIyNTAiPkJsdWUgcmVjdCBzaG91bGQg
YmUgdmlzaWJsZTwvdGV4dD4NCis8c3ZnIGlkPSJpbm5lciIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIy
MDAiIHZpZXdCb3g9Ii01MCAtNTAgMjAwIDIwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+
DQorICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4NCis8L3N2
Zz4NCis8L3N2Zz4NCisNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5l
ci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3Quc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFp
bnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40ZjYyMjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZwpAQCAt
MCwwICsxLDE5IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1s
bnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiDQorIHdpZHRoPSIzMDAiIGhl
aWdodD0iMzAwIiBvbmxvYWQ9IndpbmRvdy5zZXRUaW1lb3V0KHJlc2l6ZVZpZXdCb3gsIDApIj4N
Cis8c2NyaXB0PjwhW0NEQVRBWw0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCisNCitmdW5jdGlvbiBy
ZXNpemVWaWV3Qm94KCkgeyANCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyIiku
c2V0QXR0cmlidXRlKCJ2aWV3Qm94IiwgIi01MCAtNTAgMjAwIDIwMCIpOw0KKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOw0KK30NCitdXT48L3NjcmlwdD4NCis8cmVjdCB3aWR0aD0iMjAwIiBoZWln
aHQ9IjIwMCIgZmlsbD0iYmx1ZSIvPg0KKzx0ZXh0IHk9IjI1MCI+Qmx1ZSByZWN0IHNob3VsZCBi
ZSB2aXNpYmxlPC90ZXh0Pg0KKzxzdmcgaWQ9ImlubmVyIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIw
MCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPg0KKyAg
PHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIi8+DQorPC9zdmc+DQor
PC9zdmc+DQorDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQyNzIyODEuLjIzYjgxOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxMi0wMi0xMyAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5j
b20+CisKKyAgICAgICAgUmVwYWludCBpc3N1ZXMgb24gY2hhbmdpbmcgJ3ZpZXdCb3gnIG9mIGlu
bmVyIFNWRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzc5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
byBub3QgdXBkYXRlIHRoZSBjaGlsZCB2aWV3Ym94L3ZpZXdwb3J0IHRyYW5zZm9ybSB0byBpdHMg
cGFyZW50CisgICAgICAgIGNvb3JkaW5hdGUgc3lzdGVtIHVudGlsIGFmdGVyIGxheW91dCBoYXMg
c3RvcmVkIHRoZSBvbGQgYm91bmRzIGZvcgorICAgICAgICByZXBhaW50aW5nIHB1cnBvc2VzLgor
ICAgICAgICAKKyAgICAgICAgVGVzdHM6IHN2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmll
d0JveC1jb250cmFjdC1leHBlY3RlZC5zdmcKKyAgICAgICAgICAgICAgIHN2Zy9yZXBhaW50L2lu
bmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC5zdmcKKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpjYWxjVmlld3Bv
cnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lcjo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0pOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAg
ICAgICAgKFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKToKKwogMjAxMi0wMi0xMyAgQXJ1biBQ
YXRvbGUgIDxibWY4MzRAbW90b3JvbGEuY29tPgogCiAgICAgICAgIENocm9tZSBjcmFzaGVzIHdo
ZW4gYXR0ZW1wdGluZyB0byBhZGQgY3VlIHRvIHRyYWNrIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5jcHAKaW5kZXggMTAyMWFmZi4uZWU4MTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1N0eWxlZEVsZW1lbnQqIG5vZGUp
CiAgICAgOiBSZW5kZXJTVkdDb250YWluZXIobm9kZSkKICAgICAsIG1faXNMYXlvdXRTaXplQ2hh
bmdlZChmYWxzZSkKKyAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKIHsKIH0KIApA
QCAtNjMsOCArNjQsMjYgQEAgdm9pZCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY1Zp
ZXdwb3J0KCkKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoZWxlbWVudCk7CiAg
ICAgbV92aWV3cG9ydCA9IEZsb2F0UmVjdChzdmctPngoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwg
c3ZnLT55KCkudmFsdWUobGVuZ3RoQ29udGV4dCksIHN2Zy0+d2lkdGgoKS52YWx1ZShsZW5ndGhD
b250ZXh0KSwgc3ZnLT5oZWlnaHQoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAKLSAgICBpZiAo
b2xkVmlld3BvcnQgIT0gbV92aWV3cG9ydCkKKyAgICBGbG9hdFJlY3Qgb2xkVmlld2JveCA9IG1f
dmlld2JveDsKKyAgICBtX3ZpZXdib3ggPSBzdmctPmN1cnJlbnRWaWV3Qm94UmVjdCgpOworICAg
IAorICAgIGlmIChvbGRWaWV3cG9ydCAhPSBtX3ZpZXdwb3J0KSB7CiAgICAgICAgIHNldE5lZWRz
Qm91bmRhcmllc1VwZGF0ZSgpOworICAgICAgICBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1
ZTsKKyAgICB9IGVsc2UgaWYgKG9sZFZpZXdib3ggIT0gbV92aWV3Ym94KQorICAgICAgICBtX25l
ZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsKK30KKworYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lcjo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKSAKK3sKKyAgICBib29sIG5lZWRzVXBk
YXRlID0gbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZTsKKyAgICBpZiAobmVlZHNVcGRhdGUpIHsKKyAg
ICAgICAgbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xh
dGlvbihtX3ZpZXdwb3J0LngoKSwgbV92aWV3cG9ydC55KCkpICogdmlld3BvcnRUcmFuc2Zvcm0o
KTsKKyAgICAgICAgLy8gSWYgdGhpcyBjbGFzcyB3ZXJlIGV2ZXIgZ2l2ZW4gYSBsb2NhbFRyYW5z
Zm9ybSgpLCB0aGVuIHRoZSBhYm92ZSB3b3VsZCByZWFkOgorICAgICAgICAvLyByZXR1cm4gdmll
d3BvcnRUcmFuc2xhdGlvbiAqIGxvY2FsVHJhbnNmb3JtKCkgKiB2aWV3cG9ydFRyYW5zZm9ybSgp
CisgICAgICAgIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIG5lZWRzVXBkYXRlOwogfQogCiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXI6OnZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3QKQEAgLTc5LDEwICs5OCw3IEBAIEFm
ZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zv
cm0oKSBjb25zdAogCiBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyOjpsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBtX2xvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0aW9uKG1fdmlld3BvcnQu
eCgpLCBtX3ZpZXdwb3J0LnkoKSkgKiB2aWV3cG9ydFRyYW5zZm9ybSgpOwogICAgIHJldHVybiBt
X2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07Ci0gICAgLy8gSWYgdGhpcyBjbGFzcyB3ZXJlIGV2ZXIg
Z2l2ZW4gYSBsb2NhbFRyYW5zZm9ybSgpLCB0aGVuIHRoZSBhYm92ZSB3b3VsZCByZWFkOgotICAg
IC8vIHJldHVybiB2aWV3cG9ydFRyYW5zbGF0aW9uICogbG9jYWxUcmFuc2Zvcm0oKSAqIHZpZXdw
b3J0VHJhbnNmb3JtKCkKIH0KIAogYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6cG9p
bnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lci5oCmluZGV4IDgwOGQ2NzIuLjBkMDc0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmgKQEAgLTQ4LDEzICs0OCwxNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgY2FsY1ZpZXdwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJh
bnNmb3JtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAoUGFpbnRJbmZv
Jik7CiAgICAgdmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnRJblBhcmVudCk7CiAKICAgICBGbG9hdFJlY3QgbV92aWV3cG9ydDsKKyAg
ICBGbG9hdFJlY3QgbV92aWV3Ym94OwogICAgIG11dGFibGUgQWZmaW5lVHJhbnNmb3JtIG1fbG9j
YWxUb1BhcmVudFRyYW5zZm9ybTsKICAgICBib29sIG1faXNMYXlvdXRTaXplQ2hhbmdlZCA6IDE7
CisgICAgYm9vbCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlIDogMTsKIH07CiAgIAogaW5saW5lIFJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiB0b1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFJl
bmRlck9iamVjdCogb2JqZWN0KQo=
</data>
<flag name="review"
          id="128896"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127037</attachid>
            <date>2012-02-14 13:51:56 -0800</date>
            <delta_ts>2012-02-14 17:13:32 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>77903.patch</filename>
            <type>text/plain</type>
            <size>8430</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMjE2ZGNjLi5lYmEyMjVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDIt
MTMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQg
aXNzdWVzIG9uIGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgQWRkaW5n
IHRlc3QgZm9yIDc3OTAzLiBXaGVuIHNldHRpbmcgdGhlIHZpZXdib3ggb24gYW4gaW5uZXIgc3Zn
CisgICAgICAgIGVsZW1lbnQgY2F1c2VzIHRoZSBjb250ZW50IHRvIGJlY29tZSBzbWFsbGVyLCBt
YWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgYXJlYSBiZWhpbmQgdGhlIGNvbnRlbnQgaXMgcmVk
cmF3bi4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5n
ZS12aWV3Qm94LWNvbnRyYWN0LnN2ZzogQWRkZWQuCisKIDIwMTItMDItMTMgIEFtaSBGaXNjaG1h
biAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3
ZWQgZ2FyZGVuaW5nLiAgUmViYXNlbGluaW5nIHBvc3Qgc2tpYSBjaGFuZ2UgKGZyb20gYSBsb25n
IHRpbWUgYWdvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L2lubmVyLXN2
Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9zdmcv
cmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3QtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI2MWZhNWY4NDIwYTAwMzg5MDgxMWU5Zjg5NzBhY2JmOTU1NjViYzEKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDMzMTgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYy
YT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlVnJzCnpoOEVfUVd8a0h5bWQzYEc3S1cqb3Nm
TE0kQ1lGfEY3QVkxY3NtMkcrRT9DZE56fC1PQjt1dW1mPWszamx5ditzegp6dGQ3RDwtQ3dYLW1H
NnBKVChQVzR7cUZUd2VJSSkpRHwjIWZrSSM7fHpPeztwO1h3UylIRjd9UC1aKGJeTmw4V34KejI4
SStDNGhEdF5mKGlAXzRzTjRAQlBjLWplVihgNDlHRDdiZV8mKX1VQCY1MFZQSDdIQTs3Pyhwek9m
Rig5cHYkCnpEbWNPZHE8R0dBJWtYfCtpdW0/YGM/OUt5KGVoN1d3Q28/UDNgWkxScW03YF4ySDxG
bW4yZ0BRR3hucm9kfWJkRQpTanxjKUE0LUI1SmVsRntyNX1FKzk9JVNKVQoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3Zn
LWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9y
ZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzMWJlNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250
cmFjdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgMzAweDMwMAorICBSZW5kZXJTVkdSb290IHtzdmd9IGF0ICgwLDApIHNpemUgMjAweDIw
MAorICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgwLDApIHNpemUgMjAweDIwMCBbZmlsbD17
W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMEZGXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0y
MDAuMDBdIFtoZWlnaHQ9MjAwLjAwXQorICAgIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIHtz
dmd9IGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQg
KDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdfV0g
W3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTEwMC4wMF0gW2hlaWdodD0xMDAuMDBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29u
dHJhY3Quc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3
Qm94LWNvbnRyYWN0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDc5
NDNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3Zn
LWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZwpAQCAtMCwwICsxLDE0IEBACis8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiDQorIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIiBvbmxvYWQ9InJ1blJl
cGFpbnRUZXN0KCkiPg0KKzxzY3JpcHQgeGxpbms6aHJlZj0iLi4vLi4vZmFzdC9yZXBhaW50L3Jl
c291cmNlcy9yZXBhaW50LmpzIiAvPg0KKzxzY3JpcHQ+PCFbQ0RBVEFbDQorZnVuY3Rpb24gcmVw
YWludFRlc3QoKSB7IA0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXIiKS5zZXRB
dHRyaWJ1dGUoInZpZXdCb3giLCAiMCAwIDIwMCAyMDAiKTsNCit9DQorXV0+PC9zY3JpcHQ+DQor
PHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImJsdWUiLz4NCis8IS0tIGJsdWUg
cmVjdCdzIGxvd2VyIHJpZ2h0IGVkZ2VzIHNob3VsZCBiZSB2aXNpYmxlIGFmdGVyIHZpZXdib3gg
cmVzaXppbmcgLS0+DQorPHN2ZyBpZD0iaW5uZXIiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB2
aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+DQorICA8cmVj
dCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4NCis8L3N2Zz4NCis8L3N2
Zz4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNDI3MjI4MS4uMjNiODE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2IEBACisyMDEyLTAyLTEzICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KKwor
ICAgICAgICBSZXBhaW50IGlzc3VlcyBvbiBjaGFuZ2luZyAndmlld0JveCcgb2YgaW5uZXIgU1ZH
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzkwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIG5vdCB1
cGRhdGUgdGhlIGNoaWxkIHZpZXdib3gvdmlld3BvcnQgdHJhbnNmb3JtIHRvIGl0cyBwYXJlbnQK
KyAgICAgICAgY29vcmRpbmF0ZSBzeXN0ZW0gdW50aWwgYWZ0ZXIgbGF5b3V0IGhhcyBzdG9yZWQg
dGhlIG9sZCBib3VuZHMgZm9yCisgICAgICAgIHJlcGFpbnRpbmcgcHVycG9zZXMuCisgICAgICAg
IAorICAgICAgICBUZXN0czogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNv
bnRyYWN0LWV4cGVjdGVkLnN2ZworICAgICAgICAgICAgICAgc3ZnL3JlcGFpbnQvaW5uZXItc3Zn
LWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZworCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmNhbGNWaWV3cG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oOgorICAgICAgICAo
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIpOgorCiAyMDEyLTAyLTEzICBBcnVuIFBhdG9sZSAg
PGJtZjgzNEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgQ2hyb21lIGNyYXNoZXMgd2hlbiBhdHRl
bXB0aW5nIHRvIGFkZCBjdWUgdG8gdHJhY2sgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcApp
bmRleCAxMDIxYWZmLi4yMDQwZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtMzUsNiAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCogbm9kZSkKICAgICA6
IFJlbmRlclNWR0NvbnRhaW5lcihub2RlKQogICAgICwgbV9pc0xheW91dFNpemVDaGFuZ2VkKGZh
bHNlKQorICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQogewogfQogCkBAIC02Myw4
ICs2NCwyMiBAQCB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpjYWxjVmlld3BvcnQo
KQogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChlbGVtZW50KTsKICAgICBtX3Zp
ZXdwb3J0ID0gRmxvYXRSZWN0KHN2Zy0+eCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBzdmctPnko
KS52YWx1ZShsZW5ndGhDb250ZXh0KSwgc3ZnLT53aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQp
LCBzdmctPmhlaWdodCgpLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKIAotICAgIGlmIChvbGRWaWV3
cG9ydCAhPSBtX3ZpZXdwb3J0KQorICAgIGlmIChvbGRWaWV3cG9ydCAhPSBtX3ZpZXdwb3J0KSB7
CiAgICAgICAgIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpOworICAgICAgICBzZXROZWVkc1Ry
YW5zZm9ybVVwZGF0ZSgpOworICAgIH0KK30KKworYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lcjo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKSAKK3sKKyAgICBib29sIG5lZWRzVXBkYXRl
ID0gbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZTsKKyAgICBpZiAobmVlZHNVcGRhdGUpIHsKKyAgICAg
ICAgbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlv
bihtX3ZpZXdwb3J0LngoKSwgbV92aWV3cG9ydC55KCkpICogdmlld3BvcnRUcmFuc2Zvcm0oKTsK
KyAgICAgICAgLy8gSWYgdGhpcyBjbGFzcyB3ZXJlIGV2ZXIgZ2l2ZW4gYSBsb2NhbFRyYW5zZm9y
bSgpLCB0aGVuIHRoZSBhYm92ZSB3b3VsZCByZWFkOgorICAgICAgICAvLyByZXR1cm4gdmlld3Bv
cnRUcmFuc2xhdGlvbiAqIGxvY2FsVHJhbnNmb3JtKCkgKiB2aWV3cG9ydFRyYW5zZm9ybSgpCisg
ICAgICAgIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IG5lZWRzVXBkYXRlOwogfQogCiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXI6OnZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3QKQEAgLTc5LDEwICs5NCw3IEBAIEFmZmlu
ZVRyYW5zZm9ybSBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0o
KSBjb25zdAogCiBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyOjpsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBtX2xvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0aW9uKG1fdmlld3BvcnQueCgp
LCBtX3ZpZXdwb3J0LnkoKSkgKiB2aWV3cG9ydFRyYW5zZm9ybSgpOwogICAgIHJldHVybiBtX2xv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm07Ci0gICAgLy8gSWYgdGhpcyBjbGFzcyB3ZXJlIGV2ZXIgZ2l2
ZW4gYSBsb2NhbFRyYW5zZm9ybSgpLCB0aGVuIHRoZSBhYm92ZSB3b3VsZCByZWFkOgotICAgIC8v
IHJldHVybiB2aWV3cG9ydFRyYW5zbGF0aW9uICogbG9jYWxUcmFuc2Zvcm0oKSAqIHZpZXdwb3J0
VHJhbnNmb3JtKCkKIH0KIAogYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6cG9pbnRJ
c0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lci5oCmluZGV4IDgwOGQ2NzIuLjJkZDBkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgK
QEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNMYXlvdXRTaXplQ2hhbmdlZDsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRldGVybWluZUlmTGF5b3V0U2l6ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU1ZHQ29udGFpbmVyKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtNDgsNiArNDksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0
ZUxvY2FsVHJhbnNmb3JtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAo
UGFpbnRJbmZvJik7CiAgICAgdmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCk7CkBAIC01NSw2ICs1Nyw3IEBAIHByaXZh
dGU6CiAgICAgRmxvYXRSZWN0IG1fdmlld3BvcnQ7CiAgICAgbXV0YWJsZSBBZmZpbmVUcmFuc2Zv
cm0gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOwogICAgIGJvb2wgbV9pc0xheW91dFNpemVDaGFu
Z2VkIDogMTsKKyAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogfTsKICAgCiBp
bmxpbmUgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIqIHRvUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAKaW5kZXggNjUyZGVlYy4uNTU3ZDEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcApAQCAtMjk0LDYgKzI5NCw4IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgfHwgU1ZHRml0
VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHMgPSB0cnVlOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZv
cm1hdGlvbigpOworICAgICAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVy
KCktPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CiAgICAgfQogCiAgICAgU1ZHRWxlbWVudElu
c3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsK
</data>
<flag name="review"
          id="129048"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127085</attachid>
            <date>2012-02-14 17:13:32 -0800</date>
            <delta_ts>2012-02-15 13:00:41 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>77903.patch</filename>
            <type>text/plain</type>
            <size>13580</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMjE2ZGNjLi5kMjUwYTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDIt
MTMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQg
aXNzdWVzIG9uIGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgQWRkaW5n
IHRlc3QgZm9yIDc3OTAzLiBXaGVuIHNldHRpbmcgdGhlIHZpZXdib3ggb24gYW4gaW5uZXIgc3Zn
CisgICAgICAgIGVsZW1lbnQgY2F1c2VzIHRoZSBjb250ZW50IHRvIGJlY29tZSBzbWFsbGVyLCBt
YWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgYXJlYSBiZWhpbmQgdGhlIGNvbnRlbnQgaXMgcmVk
cmF3bi4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5n
ZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL3Jl
cGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZzogQWRkZWQuCisKIDIw
MTItMDItMTMgIEFtaSBGaXNjaG1hbiAgPGZpc2NobWFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiAgUmViYXNlbGluaW5nIHBvc3Qgc2tp
YSBjaGFuZ2UgKGZyb20gYSBsb25nIHRpbWUgYWdvKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC1leHBlY3RlZC5w
bmcgYi9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29u
dHJhY3QtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwMjRiMWZkNTljNzYxMDQyYWZmYTlhODNj
Yzk3ZTY1OWY4OTkyNTQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDU1NDIKemNtZUhKWEgtKyE3
Q3MybG5eWH5UZio/JkdiZmlOPHVMNDByUTdKLURxJHhAaDM/ME0pNXZlZjxEIW1GQ2pEWFN2Cnpx
eXp6fXAtMn1IZF94aEdfSlQ4dXdPSGRAR2U0WXBmQmJSUmBSO2VsVTEjdDg/WS19Z0s1ZVlTS3pv
RTEwS2xOOQp6dDchJVJJUnQ8TU5OUCRGbFhnQUNsZUV4eT5STWR8ZlIxKGRBcD5kbTQrQjdKYXVF
KGNlY0h2dCt2QlE+aGJLZjIKejR1XlBOQG8+SSkqJER2T0w5OTZuVkxyPkR2Tm9+O0dsKVhwR3c/
OERyLXFvcFYkZnt5MHdUT0wlPSVIaG5GSCptCnp3VEhCe0Q3YyQ1cVIzLW8oWU0pNk1kQCRSX0VT
eXJLOHl7MDZtX2QqVj1VbTJZajQlc2JvPShSS0dtN1JXbyZyfAp6UlNoK0xsQ0hGPUVTZiRLY0k/
cG0oNThtUXV9TnxEVXxOMXB6KVczIWYlb2JiOX5vRT1RZFR+QnlvVHh9QW9Kfn0KenFYc29ibT5Q
K3Jrdm1MdHV2QSt6YlFvRVVjbDs+PllCVT5BX203MlQxOWZkT0cmVilSOUFyPWN5SC1iczMyPDVy
CnoqYV9hOD9nblY9ZFRJYX11KGAqfVBMPmY1QWdvU05uIXJUfjZuMzFzcjNIYEBmWCYmVUs+X3JP
MFNQQHpYSSlUUQp6MGNyQCRiWSp+PTkhUXUqZyRvMFUwQVNiNSRMOTtlUVVST3hsQk0hKkN5U1k5
TGBhY0pFbU93eERgKkFWUD5YcHsKelN6M3g4NkMmdHdvQEE0PUtWWUF4RT8oIUMkfFYmbiF9Tlor
NFM8WXpjOU9UdFRmUEx3VmdmLWY3UlB2QVowOzUxCnomVCQ4YWlTNFA1MCM5YFMjPUxfJXc/KDFs
TjY8PT9YdChXJENsKURPJmUzSURUWj9mblZeVih4R0crJVltcHlsNQp6cW1fOUZLUUomZ0lvWXFA
MEpFYGd1Pypacyl0I0BnK2A5WkZOT15OQF81STZueyRRIUkhOCNQe0A5V3hENDZ9fVEKeitAJVJ+
N0BDZ0wqe3E9Mysyclh5LWt8NHpNfmJqYm42aH1xWU5wKkBtZFpMRjRaQUQrYGI1e3hoNEUzKjRS
WH57CnpTeHxhT2xgSjQkRWNkSjxgRFgoYFd+NnRgXyE8QzlsXihWNGdzOTJVRX0+JWBLMEJZKHdz
Yk8xMEpPOC1UYHZJNgp6WTRWRkJURlRYJHJ+JU4tMm9APlQ7OWpYY0VMdVood0QjYW9FIzBQX1Rv
e2JNcCReNmpxckhHV2Rje3QtRmEjelAKeihPJHxVVmg0U3YmTGRNfT5KcExRJHRZZkRAdGplYGxq
KkJIYiRZRShSV0o+T01sJl81Sj9+JT9uWnFxNFVvMTZlCnpZV087RHR1NiZpM19zKmU2cjFVQmdM
cWs4TndackJoPW5mQ2xGRjM+M1ghKGpGWEVNJmZtRno1TTNzKUB6Mkd1YQp6bTNRPmQ7UF9ubUJW
cFBQPkUyJU9tUTBKfCRpVGU0XjdNJHhaTW4+dXcqQFh0Z0s/X3hDVylGNGhwRDYrRT0hMHYKeioy
QThoNX5XRlNZPCtVUGtpTVl0TmE+a0VeMitFeyRCcmpINmZENzdIOGdTKkp9YCo9RiU0YSRBPTA+
Q0h5M2kwCnpVKl55dGpYVnVgbX0jQmhAcX1FMXJ2Zmh5ZVE3eENBU0RAeilEYDlIV3I8XmpHNnpK
Izh8Myp9cVR5MTRfJlcjbQp6bzsqZiR2Mjx5N3h0c0NMaXNvVHRiZFReUXljeFhVVDFLVUNQWlY7
cEllWmQzU3dBVH4kdncldFdKOE59UTFeUGcKelpheXcjKV5iVW9ZbD9ZRld7VDEmTU19ZnNRSlVG
c1pZSlc4WUA5VyRDPStLXlZqN3Z0RHN3R09wKkBzQyZtZ1BsCnpWUGZ8WTdmelM4aXpPZXRVbU99
dkpaN0J5KjBRVTBSXzg8VjJsNXBrZFdIITAoNTVKcTVFdGUhKW5PRXUmKjczMwp6ISkmaFo3X0tJ
U2d1TFdAJTFrTyNzKXEkcTFTZktYSi0mckRROW5eMmt5YHxjJGppXnBBSVliKVNoaT9JI08wa2MK
ejQ9bVFVa1QjI2xxantIOVYzQ2hLSiNXciFqPj1RWWptJF5vZExZeXUyVSVASlEoRHk8KXw8Y3xu
YFMmWUtUKntQCnpwPnlPYV9aOClKV2hqV2E3QSlIIUBUN2c8IyZ3YShscjVnaDc/dTNJT2Ete0t6
Ty1leis0NFBTSEw4Z2V1bDQpaAp6I3h5ZlJJbXlkR3c/XjFMMzZCZU5YVWlEa0M3bzx0Xk9LVTNr
T2pJMHJVZzNsKXBFclBJb1J4S3R4QnRuVWBDQjUKemVMLTc2OWFKM1FBYT0lbHo8ZkF8SGl5R1ZN
UkIhUUpsezJvSkZgO0w9YXFaVFZvTGhVYkxlektrREwqfD5ZMS1jCnoxRUVgcEV3YF5adDIqPlol
NXIqc04rTGJzdTx+bkpGQXJyTlhjT0BfUX4yMz5iJEZKMnFKOHBNU1VrUXtgQjlKZAp6dWk4d3ZG
RS1qdkBLM2xreC1+dSRwY0xSMEZmZmBrVDErIUQhZTxMLUQ7WCpvSG5xMzRLV3koIW1CcHc/X0RS
aVAKelcteHUyKEYhfGpVdSNpWkY3Q09MVWZIQnx3JCZvOCUwMWojITcyLUJWU1RuLXk5aXIhcVBN
Y0JHVXJlWi1aO1V5CnpBaVduPVUtfSNGNEtBO090OH1XTGwzMHYkIXYpJS05NV8pR3VaIXkhNlJI
eWVVaitXVHI5I0NKSWx4JUpXNmN3RQp6XzMwSGgjV1JXe1hAdldXWUpzbTtsNGhZT1dDd0Zjendg
dS13TjwjYEJHdyQhdCVLcjM7amV9K041dz1OZ3RVcSQKenRCUFp8ODs2XiNDLXVFb3owUXZMY2Rj
U0U8KFJzS1R3PStoK35VUT4kZXs7cUc3cDUpdCkjRU10IzV8RUg9WEtLCnpxa0U3ajtXfUN2V0NB
d3tNbT9NMWdFflV2RXNPZH1FMyRtQCpYJSFXcyh4MHpAP2IpQkxSbyU5WVEqWSVufHdgMAp6YjQ5
QzN5K2BgX0BLTnxwek1Uc0B7eVV1QDJZckdKTUlJZmo1b35pe1c4TUQtQDJnbGZNV1dOXnZWakdT
K1psS2IKemM4JDFAcUw4V0RCM19yfms5VWZBKkplQChAcX4rdjtpclE+XnVERkNwU0YqdzUyNjxn
anx7aHJQPmMxOUxMVFhxCnpPcVRXTzlELWpSKSU+Y05xJmIyP050ITU+aTBSOVVzT0YxYlFYWjZs
QUBmNDVRUVg8OHRwfHhrPlJtUUNzdnNePgp6RWEhZ3Q8Pj08WmFeeUk2b05nazNHWD5ndyozJlBP
UGA0N0UhO3ZTPkJDNDNBWld2e0o+ZlYxZW1fPjNxWmw3M1UKel4qSXFzPnNRQjloZEtgSmw8U1BA
aHVleEFHaFdnYUc0ajlyRn1fT0hrTj5yRm1ncDJkT2ZjX0dsXzcpU0ZoKCgqCnpCa2VsR08tZTx2
U35CISp7MmViP0tDZSolNG1GM0djRH4rUD1vRFZJe258YUkwKHZadz5XeXBwb3grMXdWemY5fAp6
XzZMTnVQQGYxQDhPcTdoYEJpJiNpJFlSQ2BwTmMldyg9SUA5cl5wODlfJWN6KVVrfSsjYnJlcFNj
PnI9cj5oR3UKekRVPk9EYDRNUisqYmtuSkk3Mztle1FNUzkjSTQ3cVY4SnJFSUgrMnstXmV4aVR5
MEI4P0szamhjeyZUKXNxbiEwCnpwfXZLKUNQPTgmPXJqQVQ1bTtfal9VSyMxWSgmbXZfTTgxZUwl
dmhva3NkOXRRaXR3NiVgMGZZVSs4ZXxhLU4rWQp6NWxncFdPditFNVBHKXB4NyNNdVlGblo/YyFz
PSUmQX5kO09oKiVrbGdYMTUpUWhyfExsPUZ0cnVCMyl8ajk1V0AKek1hVjY3NExgSCpUWCprVjxQ
TkMlRWMzQzRYajhTZXJUWFMyKFNwcHZzSz5kLVgrditMZGArITVJKThST1h+WFNvCnprK0daQ0xL
QXJ4YDQkeClCZCFuc3U3e15mMXp7R35kdmFjZnZGVnFXK3ReUCZWaG5OJjdRZnphOU92YFlecVpW
cgp6cVp3VTAjLUtRT3tkUGQlNyorUSMqTGhHcCZgWXFpcjhJNGZkREAxSmdVdCgqSHIzQUZ4ZUA8
TzlwVyFjX2hwbz0KentQZFIqWiFRa2JoSUEqT21PNUBANlMwOW87JE1kQmghMWZBR21lRE9PSDNa
MFVOQyEpYiFxTHklcVVlVTVwMCo5Cnpkb1Bze3ImdWtZVGModkxvX0N3YG8+U2dWPXIoRHB5a0Q3
Q2pKSXtnRlp4JE0zdmdiVzx4WkM7NDZqdUN7bD5BPQp6K21vKUtHRi1qdkAzSG9KWkZRN21JT3ZN
dDdOTkNyeig7VmdzTEdgM3tFR1U1I3NHWGN2UGFFa2QjTH1AKDlLSVYKekp7aWxNTHBwMWU7aGBQ
ZEB2Q3U2QFBsIXdhamcqeTUlY00lUjIzQSkpdmojS1pzeCF7RV80V19iOGJKfVpZfTJJCnpmQ2pE
aSU9WnlHUSN2en5teSMxK3ghdVV4bnlaPVREal8hM0g2REJVIyNkVk0reyY0YWc8Nzg+QUQmTi1N
d3ZffAp6WiROR2U/WU1rLXZURlZ8WENyfHRBel9EdEpZeyopUUNmXmhubH5ZaXhASlpJX0A0aig5
U1hwZzludn1yeiU+Wn4Kej1JajdhT2FYdz88TD4jXytOM2VHUSVfUl47WEMrb3UkQlEwVmJpUUZJ
VVN8dG1CbmUwMGt7Nm9xNlAqTTdNOUJMCnpgU1Y/c0BtTUlieztKa2Zfc0g8YUU4NDw2JW05U203
YSgwbUteaWgzcXstPCFmYjc1QFRsKVl0PX5KLUY+O3ZqKAp6NjEmVW4yTH53clZEPHJLMjxoLUhe
TD5CQFdXUjZpMmZMUGpXQT1kYFZFZGpvYCklTHpXfW9mZiZpcFhqNFpqPDsKenpxcSt5SiQ5eXlC
IUdtbHhePjB3OGN4VVlKKkI+ZD0xKXJmMypQUl5gZSZ1fm0+KGU3fDRgfkwwezczUStnPXN6CnpF
MHc8XjBSMjY0e359VHJ3OSh1IyVWI0lXUDF2QFNeIW9waFpDX3BPc2tJMEdJb1pCblVfWjlmTkhO
X0xYJUJvfgp6dC1tQU5VWihBVj8+cTRXUXRxYiFLbUszeUV2OT5JWTdoTFowUHdCentIJWNBPWFa
aTs9PVpNcUZTSDx+NGJzckoKYnZxS0pTRmlhWmklSTJoQDdYVXBpVzZmZmlVQzRneykpTUN6Cgps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvcmVwYWlu
dC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODMxYmU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12
aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDAsMCkg
c2l6ZSAyMDB4MjAwCisgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAyMDB4
MjAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0gW3g9MC4wMF0gW3k9MC4w
MF0gW3dpZHRoPTIwMC4wMF0gW2hlaWdodD0yMDAuMDBdCisgICAgUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXIge3N2Z30gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwCisgICAgICBSZW5kZXJTVkdSZWN0
IHtyZWN0fSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9
IzAwODAwMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9MTAwLjAwXSBbaGVpZ2h0PTEwMC4w
MF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Ut
dmlld0JveC1jb250cmFjdC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmct
Y2hhbmdlLXZpZXdCb3gtY29udHJhY3Quc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZhZTQzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvcmVwYWlu
dC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3Quc3ZnCkBAIC0wLDAgKzEsMTQgQEAK
KzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCisgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIG9u
bG9hZD0icnVuUmVwYWludFRlc3QoKSI+DQorPHNjcmlwdCB4bGluazpocmVmPSIuLi8uLi9mYXN0
L3JlcGFpbnQvcmVzb3VyY2VzL3JlcGFpbnQuanMiIC8+DQorPHNjcmlwdD48IVtDREFUQVsNCitm
dW5jdGlvbiByZXBhaW50VGVzdCgpIHsgDQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJp
bm5lciIpLnNldEF0dHJpYnV0ZSgidmlld0JveCIsICIwIDAgMjAwIDIwMCIpOw0KK30NCitdXT48
L3NjcmlwdD4NCis8IS0tIGJsdWUgcmVjdCdzIGxvd2VyIHJpZ2h0IGVkZ2VzIHNob3VsZCBiZSB2
aXNpYmxlIGFmdGVyIHZpZXdib3ggcmVzaXppbmcgLS0+DQorPHJlY3Qgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIyMDAiIGZpbGw9ImJsdWUiLz4NCis8c3ZnIGlkPSJpbm5lciIgd2lkdGg9IjIwMCIgaGVp
Z2h0PSIyMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25l
Ij4NCisgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPg0KKzwv
c3ZnPg0KKzwvc3ZnPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MjcyMjgxLi43MzQ5MGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDItMTMgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRv
YmUuY29tPgorCisgICAgICAgIFJlcGFpbnQgaXNzdWVzIG9uIGNoYW5naW5nICd2aWV3Qm94JyBv
ZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc3OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRG8gbm90IHVwZGF0ZSB0aGUgY2hpbGQgdmlld2JveC92aWV3cG9ydCB0cmFuc2Zvcm0gdG8g
aXRzIHBhcmVudAorICAgICAgICBjb29yZGluYXRlIHN5c3RlbSB1bnRpbCBhZnRlciBsYXlvdXQg
aGFzIHN0b3JlZCB0aGUgb2xkIGJvdW5kcyBmb3IKKyAgICAgICAgcmVwYWludGluZyBwdXJwb3Nl
cy4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Ut
dmlld0JveC1jb250cmFjdC5zdmcKKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpjYWxjVmlld3BvcnQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6
Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVmll
d3BvcnRDb250YWluZXI6OmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSk6Cisg
ICAgICAgIChSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcik6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisKIDIwMTItMDItMTMgIEFydW4gUGF0b2xlICA8Ym1mODM0QG1vdG9yb2xh
LmNvbT4KIAogICAgICAgICBDaHJvbWUgY3Jhc2hlcyB3aGVuIGF0dGVtcHRpbmcgdG8gYWRkIGN1
ZSB0byB0cmFjayBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCmluZGV4IDEwMjFhZmYuLjkz
OGRjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50KiBub2RlKQogICAgIDogUmVuZGVyU1ZHQ29udGFp
bmVyKG5vZGUpCiAgICAgLCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQoZmFsc2UpCisgICAgLCBtX25l
ZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiB7CiB9CiAKQEAgLTYzLDggKzY0LDIyIEBAIHZvaWQg
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmNhbGNWaWV3cG9ydCgpCiAgICAgU1ZHTGVuZ3Ro
Q29udGV4dCBsZW5ndGhDb250ZXh0KGVsZW1lbnQpOwogICAgIG1fdmlld3BvcnQgPSBGbG9hdFJl
Y3Qoc3ZnLT54KCkudmFsdWUobGVuZ3RoQ29udGV4dCksIHN2Zy0+eSgpLnZhbHVlKGxlbmd0aENv
bnRleHQpLCBzdmctPndpZHRoKCkudmFsdWUobGVuZ3RoQ29udGV4dCksIHN2Zy0+aGVpZ2h0KCku
dmFsdWUobGVuZ3RoQ29udGV4dCkpOwogCi0gICAgaWYgKG9sZFZpZXdwb3J0ICE9IG1fdmlld3Bv
cnQpCisgICAgaWYgKG9sZFZpZXdwb3J0ICE9IG1fdmlld3BvcnQpIHsKICAgICAgICAgc2V0TmVl
ZHNCb3VuZGFyaWVzVXBkYXRlKCk7CisgICAgICAgIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7
CisgICAgfQorfQorCitib29sIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpjYWxjdWxhdGVM
b2NhbFRyYW5zZm9ybSgpIAoreworICAgIGlmIChtX25lZWRzVHJhbnNmb3JtVXBkYXRlKSB7Cisg
ICAgICAgIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybTo6dHJhbnNs
YXRpb24obV92aWV3cG9ydC54KCksIG1fdmlld3BvcnQueSgpKSAqIHZpZXdwb3J0VHJhbnNmb3Jt
KCk7CisgICAgICAgIC8vIElmIHRoaXMgY2xhc3Mgd2VyZSBldmVyIGdpdmVuIGEgbG9jYWxUcmFu
c2Zvcm0oKSwgdGhlbiB0aGUgYWJvdmUgd291bGQgcmVhZDoKKyAgICAgICAgLy8gcmV0dXJuIHZp
ZXdwb3J0VHJhbnNsYXRpb24gKiBsb2NhbFRyYW5zZm9ybSgpICogdmlld3BvcnRUcmFuc2Zvcm0o
KQorICAgICAgICBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gZmFsc2U7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBS
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdApAQCAt
NzksMTAgKzk0LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
Ojp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CiAKIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgUmVu
ZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdAog
ewotICAgIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybTo6dHJhbnNs
YXRpb24obV92aWV3cG9ydC54KCksIG1fdmlld3BvcnQueSgpKSAqIHZpZXdwb3J0VHJhbnNmb3Jt
KCk7CiAgICAgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsKLSAgICAvLyBJZiB0aGlz
IGNsYXNzIHdlcmUgZXZlciBnaXZlbiBhIGxvY2FsVHJhbnNmb3JtKCksIHRoZW4gdGhlIGFib3Zl
IHdvdWxkIHJlYWQ6Ci0gICAgLy8gcmV0dXJuIHZpZXdwb3J0VHJhbnNsYXRpb24gKiBsb2NhbFRy
YW5zZm9ybSgpICogdmlld3BvcnRUcmFuc2Zvcm0oKQogfQogCiBib29sIFJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyOjpwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50SW5QYXJlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKaW5kZXggODA4ZDY3Mi4uMmRkMGQxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuaApAQCAtMzgsNiArMzgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2Vk
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5z
Zm9ybVVwZGF0ZSA9IHRydWU7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdD
b250YWluZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC00OCw2ICs0OSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjVmlld3BvcnQoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJ
c0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50KTsKQEAg
LTU1LDYgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV92aWV3cG9ydDsKICAgICBt
dXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CiAgICAgYm9v
bCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQgOiAxOworICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSA6IDE7CiB9OwogICAKIGlubGluZSBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciogdG9S
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA2NTJkZWVjLi4yNjJlNTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJh
bWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuaCIKQEAgLTI4NiwyNSArMjg3LDI5IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7IAotICAgIGJvb2wgdXBk
YXRlUmVsYXRpdmVMZW5ndGhzID0gZmFsc2U7CisgICAgYm9vbCB1cGRhdGVSZWxhdGl2ZUxlbmd0
aHNPclZpZXdCb3ggPSBmYWxzZTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRo
QXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cgogICAgICAg
ICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnlBdHRyCi0gICAgICAgIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzID0gdHJ1ZTsK
KyAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7CisgICAgICAgIHVwZGF0
ZVJlbGF0aXZlTGVuZ3Roc09yVmlld0JveCA9IHRydWU7CiAgICAgICAgIHVwZGF0ZVJlbGF0aXZl
TGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAgICAgfQogCisgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzT3JWaWV3Qm94ID0gdHJ1ZTsgCisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCisgICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRl
KCk7CisgICAgfQorCiAgICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBp
bnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKICAgICBpZiAoU1ZHVGVzdHM6OmhhbmRsZUF0dHJpYnV0
ZUNoYW5nZSh0aGlzLCBhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh1cGRh
dGVSZWxhdGl2ZUxlbmd0aHMKKyAgICBpZiAodXBkYXRlUmVsYXRpdmVMZW5ndGhzT3JWaWV3Qm94
CiAgICAgICAgIHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkKICAg
ICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkKLSAgICAgICAgfHwgU1ZHWm9vbUFuZFBhbjo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSB7Cisg
ICAgICAgIHx8IFNWR1pvb21BbmRQYW46OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcigpKTsKICAg
ICAgICAgcmV0dXJuOwo=
</data>
<flag name="commit-queue"
          id="129130"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127220</attachid>
            <date>2012-02-15 13:00:41 -0800</date>
            <delta_ts>2012-02-15 16:21:26 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>77903.patch</filename>
            <type>text/plain</type>
            <size>10157</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMTEzNTAzLi44OGMwMTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDIt
MTUgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQg
aXNzdWVzIG9uIGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgQWRkaW5n
IHRlc3QgZm9yIDc3OTAzLiBXaGVuIHNldHRpbmcgdGhlIHZpZXdib3ggb24gYW4gaW5uZXIgc3Zn
CisgICAgICAgIGVsZW1lbnQgY2F1c2VzIHRoZSBjb250ZW50IHRvIGJlY29tZSBzbWFsbGVyLCBt
YWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgYXJlYSBiZWhpbmQgdGhlIGNvbnRlbnQgaXMgcmVk
cmF3bi4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5n
ZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL3Jl
cGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZzogQWRkZWQuCisKIDIw
MTItMDItMTUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5zZXQgdGhlIGFjdGl2ZSBmbGFnIHdoZW4gVGV4dFRyYWNrQ3VlcyBnbyBhd2F5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gt
Y29udHJhY3QtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3Zn
LWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2MxZGJk
N2ViYjM3MDM5MWNhM2M2MDRlN2ZlNWEzODg4YjgyNTQ4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAzMzE2CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5
Z0NDTTQ3JD1TdUZ4ZVZzMQp6N1JpWXpEVyp3anJpdGNCbVpecFk9ODB4JD1CYjhlWF5CUURpM1pj
QmNhPD9QQFUoZmxJRUdacmQzKkNCPVYxY0AKelIhN1N2P25gQ0xefnlJSVVHIW4pZjB3OzhgJVdf
Tnl+a3lKPH0qS1V1ViFMNjVkWlV5OU1HfmsmSjkzUGw5N3BsCnpBJSVzNWZua0U2MHQxN0Mrbzwz
TzNYcHd8PDkzP15RJGhPJk1uKG4oQlBKRkdoNyVrRDM9OWcmNGgjJHBKcSk5UQp6QlA+OVEmc3R1
OEMmPDhYSyhifnUxJnBUdDV0ak4jT1RFeiZmM3lsNXReUC13Snx3cFZaNCNGOFNPaVVJX1hmNW0K
Tzg5Wko2VC1HQHlHeXdvfmBvWko/CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJh
Y3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5n
ZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45ODMxYmU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL3Jl
cGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgIFJlbmRl
clNWR1Jvb3Qge3N2Z30gYXQgKDAsMCkgc2l6ZSAyMDB4MjAwCisgICAgUmVuZGVyU1ZHUmVjdCB7
cmVjdH0gYXQgKDAsMCkgc2l6ZSAyMDB4MjAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMw
MDAwRkZdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTIwMC4wMF0gW2hlaWdodD0yMDAuMDBd
CisgICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIge3N2Z30gYXQgKDAsMCkgc2l6ZSAxMDB4
MTAwCisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2Zp
bGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwODAwMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lk
dGg9MTAwLjAwXSBbaGVpZ2h0PTEwMC4wMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9y
ZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC5zdmcgYi9MYXlvdXRUZXN0
cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3Quc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTQzYTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJh
Y3Quc3ZnCkBAIC0wLDAgKzEsMTQgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCisgd2lk
dGg9IjMwMCIgaGVpZ2h0PSIzMDAiIG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+DQorPHNjcmlw
dCB4bGluazpocmVmPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL3JlcGFpbnQuanMiIC8+
DQorPHNjcmlwdD48IVtDREFUQVsNCitmdW5jdGlvbiByZXBhaW50VGVzdCgpIHsgDQorICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lciIpLnNldEF0dHJpYnV0ZSgidmlld0JveCIsICIw
IDAgMjAwIDIwMCIpOw0KK30NCitdXT48L3NjcmlwdD4NCis8IS0tIGJsdWUgcmVjdCdzIGxvd2Vy
IHJpZ2h0IGVkZ2VzIHNob3VsZCBiZSB2aXNpYmxlIGFmdGVyIHZpZXdib3ggcmVzaXppbmcgLS0+
DQorPHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImJsdWUiLz4NCis8c3ZnIGlk
PSJpbm5lciIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBw
cmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4NCisgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0i
MTAwIiBmaWxsPSJncmVlbiIvPg0KKzwvc3ZnPg0KKzwvc3ZnPg0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZTM2
ZTdmLi43NzYyYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDItMTUgIEJl
YXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQgaXNzdWVz
IG9uIGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gbm90IHVwZGF0ZSB0aGUgY2hpbGQgdmlld2Jv
eC92aWV3cG9ydCB0cmFuc2Zvcm0gdG8gaXRzIHBhcmVudAorICAgICAgICBjb29yZGluYXRlIHN5
c3RlbSB1bnRpbCBhZnRlciBsYXlvdXQgaGFzIHN0b3JlZCB0aGUgb2xkIGJvdW5kcyBmb3IKKyAg
ICAgICAgcmVwYWludGluZyBwdXJwb3Nlcy4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9y
ZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC5zdmcKKworICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpj
YWxjVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpzZXRO
ZWVkc1RyYW5zZm9ybVVwZGF0ZSk6CisgICAgICAgIChSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
cik6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisKIDIwMTItMDItMTUgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5zZXQgdGhlIGFj
dGl2ZSBmbGFnIHdoZW4gVGV4dFRyYWNrQ3VlcyBnbyBhd2F5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3Bw
CmluZGV4IDEwMjFhZmYuLmRkYTQ3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCkBAIC0zNSw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
OjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50KiBub2RlKQogICAg
IDogUmVuZGVyU1ZHQ29udGFpbmVyKG5vZGUpCiAgICAgLCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQo
ZmFsc2UpCisgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiB7CiB9CiAKQEAgLTYz
LDggKzY0LDIyIEBAIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmNhbGNWaWV3cG9y
dCgpCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGVsZW1lbnQpOwogICAgIG1f
dmlld3BvcnQgPSBGbG9hdFJlY3Qoc3ZnLT54KCkudmFsdWUobGVuZ3RoQ29udGV4dCksIHN2Zy0+
eSgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBzdmctPndpZHRoKCkudmFsdWUobGVuZ3RoQ29udGV4
dCksIHN2Zy0+aGVpZ2h0KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogCi0gICAgaWYgKG9sZFZp
ZXdwb3J0ICE9IG1fdmlld3BvcnQpCisgICAgaWYgKG9sZFZpZXdwb3J0ICE9IG1fdmlld3BvcnQp
IHsKICAgICAgICAgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7CisgICAgICAgIHNldE5lZWRz
VHJhbnNmb3JtVXBkYXRlKCk7CisgICAgfQorfQorCitib29sIFJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpIAoreworICAgIGlmICghbV9uZWVkc1Ry
YW5zZm9ybVVwZGF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIG1fbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRpb24obV92aWV3cG9y
dC54KCksIG1fdmlld3BvcnQueSgpKSAqIHZpZXdwb3J0VHJhbnNmb3JtKCk7CisgICAgLy8gSWYg
dGhpcyBjbGFzcyB3ZXJlIGV2ZXIgZ2l2ZW4gYSBsb2NhbFRyYW5zZm9ybSgpLCB0aGVuIHRoZSBh
Ym92ZSB3b3VsZCByZWFkOgorICAgIC8vIHJldHVybiB2aWV3cG9ydFRyYW5zbGF0aW9uICogbG9j
YWxUcmFuc2Zvcm0oKSAqIHZpZXdwb3J0VHJhbnNmb3JtKCkKKyAgICBtX25lZWRzVHJhbnNmb3Jt
VXBkYXRlID0gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBS
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdApAQCAt
NzcsMTQgKzkyLDYgQEAgQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
Ojp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgp
OwogfQogCi1jb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
Ojpsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICBtX2xvY2FsVG9QYXJlbnRU
cmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0aW9uKG1fdmlld3BvcnQueCgpLCBt
X3ZpZXdwb3J0LnkoKSkgKiB2aWV3cG9ydFRyYW5zZm9ybSgpOwotICAgIHJldHVybiBtX2xvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm07Ci0gICAgLy8gSWYgdGhpcyBjbGFzcyB3ZXJlIGV2ZXIgZ2l2ZW4g
YSBsb2NhbFRyYW5zZm9ybSgpLCB0aGVuIHRoZSBhYm92ZSB3b3VsZCByZWFkOgotICAgIC8vIHJl
dHVybiB2aWV3cG9ydFRyYW5zbGF0aW9uICogbG9jYWxUcmFuc2Zvcm0oKSAqIHZpZXdwb3J0VHJh
bnNmb3JtKCkKLX0KLQogYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6cG9pbnRJc0lu
c2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50KQogewogICAg
IC8vIFJlc3BlY3QgdGhlIHZpZXdwb3J0IGNsaXAgKHdoaWNoIGlzIGluIHBhcmVudCBjb29yZHMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmgKaW5kZXggODA4ZDY3Mi4uNDE4ZmNmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIuaApAQCAtMzgsNiArMzgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFu
Z2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2VkOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRy
dWU7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb250YWluZXIoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CkBAIC00NSw5ICs0NiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lciI7IH0KIAogICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9y
bSgpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFy
ZW50VHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVG9QYXJlbnRU
cmFuc2Zvcm07IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjVmlld3BvcnQoKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBh
cHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0lu
c2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50KTsKQEAgLTU1
LDYgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV92aWV3cG9ydDsKICAgICBtdXRh
YmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CiAgICAgYm9vbCBt
X2lzTGF5b3V0U2l6ZUNoYW5nZWQgOiAxOworICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSA6IDE7CiB9OwogICAKIGlubGluZSBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciogdG9SZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lcihSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA2NTJkZWVjLi4yNjJlNTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1
ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aCIKQEAgLTI4NiwyNSArMjg3LDI5IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7IAotICAgIGJvb2wgdXBkYXRl
UmVsYXRpdmVMZW5ndGhzID0gZmFsc2U7CisgICAgYm9vbCB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNP
clZpZXdCb3ggPSBmYWxzZTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0
cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cgogICAgICAgICB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnlBdHRyCi0gICAgICAgIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzID0gdHJ1ZTsKKyAg
ICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7CisgICAgICAgIHVwZGF0ZVJl
bGF0aXZlTGVuZ3Roc09yVmlld0JveCA9IHRydWU7CiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKCk7CiAgICAgfQogCisgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhz
T3JWaWV3Qm94ID0gdHJ1ZTsgCisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJl
bmRlcmVyKCkpCisgICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7
CisgICAgfQorCiAgICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZh
bGlkYXRpb25HdWFyZCh0aGlzKTsKICAgICBpZiAoU1ZHVGVzdHM6OmhhbmRsZUF0dHJpYnV0ZUNo
YW5nZSh0aGlzLCBhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHMKKyAgICBpZiAodXBkYXRlUmVsYXRpdmVMZW5ndGhzT3JWaWV3Qm94CiAg
ICAgICAgIHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkKICAgICAg
ICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkKLSAgICAgICAgfHwgU1ZHWm9vbUFuZFBhbjo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSB7CisgICAg
ICAgIHx8IFNWR1pvb21BbmRQYW46OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAg
ICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcigpKTsKICAgICAg
ICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127270</attachid>
            <date>2012-02-15 16:21:26 -0800</date>
            <delta_ts>2012-02-15 16:46:07 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>77903.patch</filename>
            <type>text/plain</type>
            <size>10005</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYmQwMDU5Li4xNjgzMjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDIt
MTUgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQg
aXNzdWVzIG9uIGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgQWRkaW5n
IHRlc3QgZm9yIDc3OTAzLiBXaGVuIHNldHRpbmcgdGhlIHZpZXdib3ggb24gYW4gaW5uZXIgc3Zn
CisgICAgICAgIGVsZW1lbnQgY2F1c2VzIHRoZSBjb250ZW50IHRvIGJlY29tZSBzbWFsbGVyLCBt
YWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgYXJlYSBiZWhpbmQgdGhlIGNvbnRlbnQgaXMgcmVk
cmF3bi4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5n
ZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL3Jl
cGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZzogQWRkZWQuCisKIDIw
MTItMDItMTUgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFVucmV2aWV3ZWQsIHJlYmFzaW5nIHRlc3RzIGFmdGVyIHIxMDc4MzYuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29u
dHJhY3QtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNo
YW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2MxZGJkN2Vi
YjM3MDM5MWNhM2M2MDRlN2ZlNWEzODg4YjgyNTQ4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAz
MzE2CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5Z0ND
TTQ3JD1TdUZ4ZVZzMQp6N1JpWXpEVyp3anJpdGNCbVpecFk9ODB4JD1CYjhlWF5CUURpM1pjQmNh
PD9QQFUoZmxJRUdacmQzKkNCPVYxY0AKelIhN1N2P25gQ0xefnlJSVVHIW4pZjB3OzhgJVdfTnl+
a3lKPH0qS1V1ViFMNjVkWlV5OU1HfmsmSjkzUGw5N3BsCnpBJSVzNWZua0U2MHQxN0MrbzwzTzNY
cHd8PDkzP15RJGhPJk1uKG4oQlBKRkdoNyVrRDM9OWcmNGgjJHBKcSk5UQp6QlA+OVEmc3R1OEMm
PDhYSyhifnUxJnBUdDV0ak4jT1RFeiZmM3lsNXReUC13Snx3cFZaNCNGOFNPaVVJX1hmNW0KTzg5
Wko2VC1HQHlHeXdvfmBvWko/CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3Qt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12
aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45ODMxYmU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFp
bnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAzMDB4MzAwCisgIFJlbmRlclNW
R1Jvb3Qge3N2Z30gYXQgKDAsMCkgc2l6ZSAyMDB4MjAwCisgICAgUmVuZGVyU1ZHUmVjdCB7cmVj
dH0gYXQgKDAsMCkgc2l6ZSAyMDB4MjAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAw
RkZdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTIwMC4wMF0gW2hlaWdodD0yMDAuMDBdCisg
ICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIge3N2Z30gYXQgKDAsMCkgc2l6ZSAxMDB4MTAw
CisgICAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2ZpbGw9
e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwODAwMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9
MTAwLjAwXSBbaGVpZ2h0PTEwMC4wMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9yZXBh
aW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC5zdmcgYi9MYXlvdXRUZXN0cy9z
dmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3Quc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTQzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdlLXZpZXdCb3gtY29udHJhY3Qu
c3ZnCkBAIC0wLDAgKzEsMTQgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCisgd2lkdGg9
IjMwMCIgaGVpZ2h0PSIzMDAiIG9ubG9hZD0icnVuUmVwYWludFRlc3QoKSI+DQorPHNjcmlwdCB4
bGluazpocmVmPSIuLi8uLi9mYXN0L3JlcGFpbnQvcmVzb3VyY2VzL3JlcGFpbnQuanMiIC8+DQor
PHNjcmlwdD48IVtDREFUQVsNCitmdW5jdGlvbiByZXBhaW50VGVzdCgpIHsgDQorICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lciIpLnNldEF0dHJpYnV0ZSgidmlld0JveCIsICIwIDAg
MjAwIDIwMCIpOw0KK30NCitdXT48L3NjcmlwdD4NCis8IS0tIGJsdWUgcmVjdCdzIGxvd2VyIHJp
Z2h0IGVkZ2VzIHNob3VsZCBiZSB2aXNpYmxlIGFmdGVyIHZpZXdib3ggcmVzaXppbmcgLS0+DQor
PHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9ImJsdWUiLz4NCis8c3ZnIGlkPSJp
bm5lciIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4NCisgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAw
IiBmaWxsPSJncmVlbiIvPg0KKzwvc3ZnPg0KKzwvc3ZnPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYmYzM2My
Li45Zjk4OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDItMTUgIEJlYXIg
VHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQgaXNzdWVzIG9u
IGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gbm90IHVwZGF0ZSB0aGUgY2hpbGQgdmlld2JveC92
aWV3cG9ydCB0cmFuc2Zvcm0gdG8gaXRzIHBhcmVudAorICAgICAgICBjb29yZGluYXRlIHN5c3Rl
bSB1bnRpbCBhZnRlciBsYXlvdXQgaGFzIHN0b3JlZCB0aGUgb2xkIGJvdW5kcyBmb3IKKyAgICAg
ICAgcmVwYWludGluZyBwdXJwb3Nlcy4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9yZXBh
aW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC5zdmcKKworICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpjYWxj
Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpzZXROZWVk
c1RyYW5zZm9ybVVwZGF0ZSk6CisgICAgICAgIChSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcik6
CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisKIDIwMTItMDItMTUgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgVGlsZUNhY2hlIG9i
amVjdCBzaG91bGQgYmUgZGVhbGxvY2F0ZWQgb24gdGhlIG1haW4gdGhyZWFkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIuY3BwCmluZGV4IDEwMjFhZmYuLmIyMjMzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3Bw
CkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50KiBu
b2RlKQogICAgIDogUmVuZGVyU1ZHQ29udGFpbmVyKG5vZGUpCiAgICAgLCBtX2lzTGF5b3V0U2l6
ZUNoYW5nZWQoZmFsc2UpCisgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiB7CiB9
CiAKQEAgLTYzLDggKzY0LDIwIEBAIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmNh
bGNWaWV3cG9ydCgpCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGVsZW1lbnQp
OwogICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3Qoc3ZnLT54KCkudmFsdWUobGVuZ3RoQ29udGV4
dCksIHN2Zy0+eSgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBzdmctPndpZHRoKCkudmFsdWUobGVu
Z3RoQ29udGV4dCksIHN2Zy0+aGVpZ2h0KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogCi0gICAg
aWYgKG9sZFZpZXdwb3J0ICE9IG1fdmlld3BvcnQpCisgICAgaWYgKG9sZFZpZXdwb3J0ICE9IG1f
dmlld3BvcnQpIHsKICAgICAgICAgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7CisgICAgICAg
IHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAgfQorfQorCitib29sIFJlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpIAoreworICAgIGlmICgh
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRpb24o
bV92aWV3cG9ydC54KCksIG1fdmlld3BvcnQueSgpKSAqIHZpZXdwb3J0VHJhbnNmb3JtKCk7Cisg
ICAgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IGZhbHNlOworICAgIHJldHVybiB0cnVlOwogfQog
CiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OnZpZXdwb3J0VHJh
bnNmb3JtKCkgY29uc3QKQEAgLTc3LDE0ICs5MCw2IEBAIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oKTsKIH0KIAotY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0g
ICAgbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlv
bihtX3ZpZXdwb3J0LngoKSwgbV92aWV3cG9ydC55KCkpICogdmlld3BvcnRUcmFuc2Zvcm0oKTsK
LSAgICByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOwotICAgIC8vIElmIHRoaXMgY2xh
c3Mgd2VyZSBldmVyIGdpdmVuIGEgbG9jYWxUcmFuc2Zvcm0oKSwgdGhlbiB0aGUgYWJvdmUgd291
bGQgcmVhZDoKLSAgICAvLyByZXR1cm4gdmlld3BvcnRUcmFuc2xhdGlvbiAqIGxvY2FsVHJhbnNm
b3JtKCkgKiB2aWV3cG9ydFRyYW5zZm9ybSgpCi19Ci0KIGJvb2wgUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXI6OnBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnRJblBhcmVudCkKIHsKICAgICAvLyBSZXNwZWN0IHRoZSB2aWV3cG9ydCBjbGlwICh3aGljaCBp
cyBpbiBwYXJlbnQgY29vcmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCmluZGV4IDgwOGQ2NzIuLjQxOGZj
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmll
d3BvcnRDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXlvdXRTaXplQ2hh
bmdlZDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUlmTGF5b3V0U2l6ZUNoYW5nZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNU
cmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
U1ZHQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNDUsOSArNDYsMTAgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIiOyB9CiAKICAgICBBZmZpbmVUcmFuc2Zv
cm0gdmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY1Zp
ZXdwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAoUGFpbnRJbmZvJik7CiAgICAgdmly
dHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnRJblBhcmVudCk7CkBAIC01NSw2ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1f
dmlld3BvcnQ7CiAgICAgbXV0YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRvUGFyZW50VHJh
bnNmb3JtOwogICAgIGJvb2wgbV9pc0xheW91dFNpemVDaGFuZ2VkIDogMTsKKyAgICBib29sIG1f
bmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogfTsKICAgCiBpbmxpbmUgUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIqIHRvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoUmVuZGVyT2JqZWN0KiBv
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggNjUyZGVlYy4uMjYy
ZTU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJl
bmRlclBhcnQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJl
bmRlclNWR01vZGVsT2JqZWN0LmgiCkBAIC0yODYsMjUgKzI4NywyOSBAQCB2b2lkIFNWR1NWR0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIAogdm9pZCBTVkdTVkdFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
eyAKLSAgICBib29sIHVwZGF0ZVJlbGF0aXZlTGVuZ3RocyA9IGZhbHNlOworICAgIGJvb2wgdXBk
YXRlUmVsYXRpdmVMZW5ndGhzT3JWaWV3Qm94ID0gZmFsc2U7CiAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp3aWR0aEF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyCi0gICAgICAg
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cgotICAgICAgICB8fCBTVkdGaXRUb1ZpZXdC
b3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIHVwZGF0ZVJlbGF0aXZl
TGVuZ3RocyA9IHRydWU7CisgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikg
eworICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNPclZpZXdCb3ggPSB0cnVlOwogICAgICAg
ICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogICAgIH0KIAorICAgIGlmIChT
VkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIHVw
ZGF0ZVJlbGF0aXZlTGVuZ3Roc09yVmlld0JveCA9IHRydWU7IAorICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQorICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVk
c1RyYW5zZm9ybVVwZGF0ZSgpOworICAgIH0KKwogICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52
YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CiAgICAgaWYgKFNWR1Rlc3Rz
OjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UodGhpcywgYXR0ck5hbWUpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAodXBkYXRlUmVsYXRpdmVMZW5ndGhzCisgICAgaWYgKHVwZGF0ZVJlbGF0aXZl
TGVuZ3Roc09yVmlld0JveAogICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpCiAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpCi0gICAgICAgIHx8IFNWR1pvb21BbmRQYW46OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp2
aWV3Qm94QXR0cikgeworICAgICAgICB8fCBTVkdab29tQW5kUGFuOjppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
cmVuZGVyZXIoKSk7CiAgICAgICAgIHJldHVybjsK
</data>
<flag name="review"
          id="129356"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127275</attachid>
            <date>2012-02-15 16:46:07 -0800</date>
            <delta_ts>2012-02-15 23:16:50 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>77903.patch</filename>
            <type>text/plain</type>
            <size>10726</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYmQwMDU5Li5kZDI2YzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDIt
MTUgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgorCisgICAgICAgIFJlcGFpbnQg
aXNzdWVzIG9uIGNoYW5naW5nICd2aWV3Qm94JyBvZiBpbm5lciBTVkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTAzCisKKyAgICAgICAgQWRkaW5n
IHRlc3QgZm9yIDc3OTAzLiBXaGVuIHNldHRpbmcgdGhlIHZpZXdib3ggb24gYW4gaW5uZXIgc3Zn
CisgICAgICAgIGVsZW1lbnQgY2F1c2VzIHRoZSBjb250ZW50IHRvIGJlY29tZSBzbWFsbGVyLCBt
YWtlIHN1cmUgdGhhdCB0aGUKKyAgICAgICAgYXJlYSBiZWhpbmQgdGhlIGNvbnRlbnQgaXMgcmVk
cmF3bi4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAg
ICAqIHN2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmll
d0JveC1jb250cmFjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9yZXBhaW50
L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC5zdmc6IEFkZGVkLgorCiAyMDEyLTAy
LTE1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBVbnJldmlld2VkLCByZWJhc2luZyB0ZXN0cyBhZnRlciByMTA3ODM2LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDRh
YTNiYzMuLjE0NTRhNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTk2OCw2ICs5NjgsOSBAQCBCVUdDUjYyNDMzIFdJ
TiA6IGZhc3QvaW1hZ2VzL2dpZi1sb29wLWNvdW50Lmh0bWwgPSBJTUFHRQogLy8gU1ZHIFRFU1RT
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCisvLyBOZXcgdGVzdCwgbmVlZHMgYSByZWJhc2VsaW5lCitCVUdXSzc3
OTAzIDogc3ZnL3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZyA9
IElNQUdFIElNQUdFK1RFWFQKKwogLy8gTmVlZCByZWJhc2VsaW5pbmcgYWZ0ZXIgYnVnIDY0NTkx
CiBCVUdXSzY0NTkxIDogY29tcG9zaXRpbmcvcmVwYWludC9iZWNvbWUtb3ZlcmxheS1jb21wb3Np
dGVkLWxheWVyLmh0bWwgPSBQQVNTIEZBSUwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L3JlcGFpbnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnBuZyBi
L0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFj
dC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdjMWRiZDdlYmIzNzAzOTFjYTNjNjA0ZTdmZTVh
Mzg4OGI4MjU0OApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzMxNgp6Y21lQVNATj8ob2xIeWB1
VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVWczEKejdSaVl6
RFcqd2pyaXRjQm1aXnBZPTgweCQ9QmI4ZVheQlFEaTNaY0JjYTw/UEBVKGZsSUVHWnJkMypDQj1W
MWNACnpSITdTdj9uYENMXn55SUlVRyFuKWYwdzs4YCVXX055fmt5Sjx9KktVdVYhTDY1ZFpVeTlN
R35rJko5M1BsOTdwbAp6QSUlczVmbmtFNjB0MTdDK288M08zWHB3fDw5Mz9eUSRoTyZNbihuKEJQ
SkZHaDcla0QzPTlnJjRoIyRwSnEpOVEKekJQPjlRJnN0dThDJjw4WEsoYn51MSZwVHQ1dGpOI09U
RXomZjN5bDV0XlAtd0p8d3BWWjQjRjhTT2lVSV9YZjVtCk84OVpKNlQtR0B5R3l3b35gb1pKPwoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL3JlcGFp
bnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1jb250cmFjdC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzMWJlNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Ut
dmlld0JveC1jb250cmFjdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgMzAweDMwMAorICBSZW5kZXJTVkdSb290IHtzdmd9IGF0ICgwLDAp
IHNpemUgMjAweDIwMAorICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgwLDApIHNpemUgMjAw
eDIwMCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMEZGXX1dIFt4PTAuMDBdIFt5PTAu
MDBdIFt3aWR0aD0yMDAuMDBdIFtoZWlnaHQ9MjAwLjAwXQorICAgIFJlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyIHtzdmd9IGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgICAgUmVuZGVyU1ZHUmVj
dCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9y
PSMwMDgwMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTEwMC4wMF0gW2hlaWdodD0xMDAu
MDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdl
LXZpZXdCb3gtY29udHJhY3Quc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFpbnQvaW5uZXItc3Zn
LWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42YWU0M2E0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL3JlcGFp
bnQvaW5uZXItc3ZnLWNoYW5nZS12aWV3Qm94LWNvbnRyYWN0LnN2ZwpAQCAtMCwwICsxLDE0IEBA
Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiDQorIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIiBv
bmxvYWQ9InJ1blJlcGFpbnRUZXN0KCkiPg0KKzxzY3JpcHQgeGxpbms6aHJlZj0iLi4vLi4vZmFz
dC9yZXBhaW50L3Jlc291cmNlcy9yZXBhaW50LmpzIiAvPg0KKzxzY3JpcHQ+PCFbQ0RBVEFbDQor
ZnVuY3Rpb24gcmVwYWludFRlc3QoKSB7IA0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aW5uZXIiKS5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLCAiMCAwIDIwMCAyMDAiKTsNCit9DQorXV0+
PC9zY3JpcHQ+DQorPCEtLSBibHVlIHJlY3QncyBsb3dlciByaWdodCBlZGdlcyBzaG91bGQgYmUg
dmlzaWJsZSBhZnRlciB2aWV3Ym94IHJlc2l6aW5nIC0tPg0KKzxyZWN0IHdpZHRoPSIyMDAiIGhl
aWdodD0iMjAwIiBmaWxsPSJibHVlIi8+DQorPHN2ZyBpZD0iaW5uZXIiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9u
ZSI+DQorICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4NCis8
L3N2Zz4NCis8L3N2Zz4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJmMzNjMi4uOWY5ODkyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTE1ICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGFk
b2JlLmNvbT4KKworICAgICAgICBSZXBhaW50IGlzc3VlcyBvbiBjaGFuZ2luZyAndmlld0JveCcg
b2YgaW5uZXIgU1ZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NzkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERvIG5vdCB1cGRhdGUgdGhlIGNoaWxkIHZpZXdib3gvdmlld3BvcnQgdHJhbnNmb3JtIHRv
IGl0cyBwYXJlbnQKKyAgICAgICAgY29vcmRpbmF0ZSBzeXN0ZW0gdW50aWwgYWZ0ZXIgbGF5b3V0
IGhhcyBzdG9yZWQgdGhlIG9sZCBib3VuZHMgZm9yCisgICAgICAgIHJlcGFpbnRpbmcgcHVycG9z
ZXMuCisgICAgICAgIAorICAgICAgICBUZXN0OiBzdmcvcmVwYWludC9pbm5lci1zdmctY2hhbmdl
LXZpZXdCb3gtY29udHJhY3Quc3ZnCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY1ZpZXdwb3J0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6
OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyOjpsb2NhbFRvUGFyZW50VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUpOgor
ICAgICAgICAoUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9TVkdT
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorCiAyMDEyLTAyLTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgVGhlIFRpbGVDYWNoZSBvYmplY3Qgc2hvdWxkIGJlIGRlYWxs
b2NhdGVkIG9uIHRoZSBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAppbmRleCAxMDIx
YWZmLi5iMjIzMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtMzUsNiArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6UmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCogbm9kZSkKICAgICA6IFJlbmRlclNW
R0NvbnRhaW5lcihub2RlKQogICAgICwgbV9pc0xheW91dFNpemVDaGFuZ2VkKGZhbHNlKQorICAg
ICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQogewogfQogCkBAIC02Myw4ICs2NCwyMCBA
QCB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpjYWxjVmlld3BvcnQoKQogICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChlbGVtZW50KTsKICAgICBtX3ZpZXdwb3J0ID0g
RmxvYXRSZWN0KHN2Zy0+eCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBzdmctPnkoKS52YWx1ZShs
ZW5ndGhDb250ZXh0KSwgc3ZnLT53aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpLCBzdmctPmhl
aWdodCgpLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKIAotICAgIGlmIChvbGRWaWV3cG9ydCAhPSBt
X3ZpZXdwb3J0KQorICAgIGlmIChvbGRWaWV3cG9ydCAhPSBtX3ZpZXdwb3J0KSB7CiAgICAgICAg
IHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpOworICAgICAgICBzZXROZWVkc1RyYW5zZm9ybVVw
ZGF0ZSgpOworICAgIH0KK30KKworYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6Y2Fs
Y3VsYXRlTG9jYWxUcmFuc2Zvcm0oKSAKK3sKKyAgICBpZiAoIW1fbmVlZHNUcmFuc2Zvcm1VcGRh
dGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtX2xvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0aW9uKG1fdmlld3BvcnQueCgpLCBtX3Zp
ZXdwb3J0LnkoKSkgKiB2aWV3cG9ydFRyYW5zZm9ybSgpOworICAgIG1fbmVlZHNUcmFuc2Zvcm1V
cGRhdGUgPSBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CkBAIC03
NywxNCArOTAsNiBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6
OnZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7
CiB9CiAKLWNvbnN0IEFmZmluZVRyYW5zZm9ybSYgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6
OmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdAotewotICAgIG1fbG9jYWxUb1BhcmVudFRy
YW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRpb24obV92aWV3cG9ydC54KCksIG1f
dmlld3BvcnQueSgpKSAqIHZpZXdwb3J0VHJhbnNmb3JtKCk7Ci0gICAgcmV0dXJuIG1fbG9jYWxU
b1BhcmVudFRyYW5zZm9ybTsKLSAgICAvLyBJZiB0aGlzIGNsYXNzIHdlcmUgZXZlciBnaXZlbiBh
IGxvY2FsVHJhbnNmb3JtKCksIHRoZW4gdGhlIGFib3ZlIHdvdWxkIHJlYWQ6Ci0gICAgLy8gcmV0
dXJuIHZpZXdwb3J0VHJhbnNsYXRpb24gKiBsb2NhbFRyYW5zZm9ybSgpICogdmlld3BvcnRUcmFu
c2Zvcm0oKQotfQotCiBib29sIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpwb2ludElzSW5z
aWRlVmlld3BvcnRDbGlwKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQpCiB7CiAgICAg
Ly8gUmVzcGVjdCB0aGUgdmlld3BvcnQgY2xpcCAod2hpY2ggaXMgaW4gcGFyZW50IGNvb3JkcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmll
d3BvcnRDb250YWluZXIuaAppbmRleCA4MDhkNjcyLi40MThmY2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oCkBAIC0zOCw2ICszOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTGF5b3V0U2l6ZUNoYW5n
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1
ZTsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KQEAgLTQ1LDkgKzQ2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyIjsgfQogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdwb3J0VHJhbnNmb3Jt
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRy
YW5zZm9ybTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNhbGNWaWV3cG9ydCgpOworICAgIHZpcnR1
YWwgYm9vbCBjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFw
cGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYpOwogICAgIHZpcnR1YWwgYm9vbCBwb2ludElzSW5z
aWRlVmlld3BvcnRDbGlwKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQpOwpAQCAtNTUs
NiArNTcsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX3ZpZXdwb3J0OwogICAgIG11dGFi
bGUgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybTsKICAgICBib29sIG1f
aXNMYXlvdXRTaXplQ2hhbmdlZCA6IDE7CisgICAgYm9vbCBtX25lZWRzVHJhbnNmb3JtVXBkYXRl
IDogMTsKIH07CiAgIAogaW5saW5lIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiB0b1JlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyKFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IDY1MmRlZWMuLjI2MmU1NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZVRy
ZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdC5o
IgpAQCAtMjg2LDI1ICsyODcsMjkgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsgCi0gICAgYm9vbCB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHMgPSBmYWxzZTsKKyAgICBib29sIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc09y
Vmlld0JveCA9IGZhbHNlOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRy
CiAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyCiAgICAgICAgIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eUF0dHIKLSAgICAgICAgfHwgU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHMgPSB0cnVlOworICAg
ICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKKyAgICAgICAgdXBkYXRlUmVs
YXRpdmVMZW5ndGhzT3JWaWV3Qm94ID0gdHJ1ZTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oKTsKICAgICB9CiAKKyAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNP
clZpZXdCb3ggPSB0cnVlOyAKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsK
KyAgICB9CisKICAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFs
aWRhdGlvbkd1YXJkKHRoaXMpOwogICAgIGlmIChTVkdUZXN0czo6aGFuZGxlQXR0cmlidXRlQ2hh
bmdlKHRoaXMsIGF0dHJOYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVwZGF0ZVJl
bGF0aXZlTGVuZ3RocworICAgIGlmICh1cGRhdGVSZWxhdGl2ZUxlbmd0aHNPclZpZXdCb3gKICAg
ICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKQogICAgICAg
ICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKQotICAgICAgICB8fCBTVkdab29tQW5kUGFuOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KQotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmlld0JveEF0dHIpIHsKKyAgICAg
ICAgfHwgU1ZHWm9vbUFuZFBhbjo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKCkpOwogICAgICAg
ICByZXR1cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>