<?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>56825</bug_id>
          
          <creation_ts>2011-03-22 06:29:21 -0700</creation_ts>
          <short_desc>[Qt] fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html fails</short_desc>
          <delta_ts>2011-03-28 07:40:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jarkko Sakkinen">jarkko.j.sakkinen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jarkko.j.sakkinen</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>371351</commentid>
    <comment_count>0</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-22 06:29:21 -0700</bug_when>
    <thetext>LayoutTest fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371353</commentid>
    <comment_count>1</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-22 06:31:25 -0700</bug_when>
    <thetext>I&apos;m working on a fix for this. I plan to do also small refactoring:
- Get common code from GraphicsContext3DInternal constructor and GraphicsContext3D::reshape().
- Create bool reshape(int width, int height) that will be called by both of these functions in order to remove duplicate code.
So that I don&apos;t have to do same fixes into two places. This is probably OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371412</commentid>
    <comment_count>2</comment_count>
      <attachid>86465</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-22 09:21:18 -0700</bug_when>
    <thetext>Created attachment 86465
Create common reshaping function for main FBO

Does this work this way that one can create multiple patches for a single bug? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371657</commentid>
    <comment_count>3</comment_count>
      <attachid>86508</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-22 14:36:55 -0700</bug_when>
    <thetext>Created attachment 86508
Fixes for context attribute handling.

Why stencil handling is done how it is done (always enable stencil when depth is enabled). Look at http://www.opengl.org/wiki/GL_EXT_framebuffer_object: &quot;NEVER EVER MAKE A STENCIL buffer. All GPUs and all drivers do not support an independent stencil buffer. If you need a stencil buffer, then you need to make a Depth=24, Stencil=8 buffer, also called D24S8. Please search for the example about GL_EXT_packed_depth_stencil on this page. &quot;

For now for OpenGL ES 2.0 I&apos;ve implemented only depth handling because I don&apos;t have N900 or any other ES 2.0 device to develop and test the fixes for that part so context attribute stencil is set to false there always.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371686</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-22 14:59:11 -0700</bug_when>
    <thetext>No&apos;am, could you have a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372249</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-03-23 10:37:53 -0700</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372257</commentid>
    <comment_count>6</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-23 10:45:16 -0700</bug_when>
    <thetext>Should I create bug about enabling stencil buffer with ES 2.0 (enhancement) with low priority? I don&apos;t think it is very important for the mobile ATM because it is rarely used feature in practice. It is, however, good to have this limitation in the backlog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372259</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-23 10:47:08 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Should I create bug about enabling stencil buffer with ES 2.0 (enhancement) with low priority? I don&apos;t think it is very important for the mobile ATM because it is rarely used feature in practice. It is, however, good to have this limitation in the backlog.

Yes please.
It is better to have a bug open. If you know of a test failing because of it, you can also put the name of the test in the title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372269</commentid>
    <comment_count>8</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-23 11:05:09 -0700</bug_when>
    <thetext>I created bug for ES 2.0: https://bugs.webkit.org/show_bug.cgi?id=56939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373425</commentid>
    <comment_count>9</comment_count>
      <attachid>86508</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-25 03:16:30 -0700</bug_when>
    <thetext>Comment on attachment 86508
Fixes for context attribute handling.

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

I made general comments to get me started reviewing this :)

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:451
&gt; +    if (!reshapeMainFbo(1, 1)) {

Why do we create the Fbo of size (1, 1) at this stage?

It seems reasonable to me to have an invalid painter state until GraphicsContext3D::reshape() is called with a valid size. Or some initialization of reshapeMainFbo() is needed in the constructor?

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:454
&gt;          LOG_ERROR(&quot;GraphicsContext3D: Wasn&apos;t able to create the main framebuffer&quot;);
&gt;          m_contextValid = false;
&gt;      }

Shouldn&apos;t this code be part of reshapeMainFbo()?
Logging the error and setting m_contextValid = false; seems reasonable to do in the function if the allocation failed.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:482
&gt; +    m_pixels = QImage(width, height, QImage::Format_ARGB32);

I got rid of m_pixels yesterday :)

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:494
&gt; +    bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_depthBuffer);

if !(m_attrs.depth) || QT_OPENGL_ES_2, genRenderbuffers() is not called. So I guess we should not bind the buffer either(?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373431</commentid>
    <comment_count>10</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 03:34:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 86508 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86508&amp;action=review
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:451
&gt; &gt; +    if (!reshapeMainFbo(1, 1)) {
&gt; 
&gt; Why do we create the Fbo of size (1, 1) at this stage?
&gt; 
&gt; It seems reasonable to me to have an invalid painter state until GraphicsContext3D::reshape() is called with a valid size. Or some initialization of reshapeMainFbo() is needed in the constructor?

I will verify whether GraphicsContext3D::reshape() is called before
anything that depends on valid context. 

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:454
&gt; &gt;          LOG_ERROR(&quot;GraphicsContext3D: Wasn&apos;t able to create the main framebuffer&quot;);
&gt; &gt;          m_contextValid = false;
&gt; &gt;      }
&gt; 
&gt; Shouldn&apos;t this code be part of reshapeMainFbo()?
&gt; Logging the error and setting m_contextValid = false; seems reasonable to do in the function if the allocation failed.

You&apos;re probably right. I will verify this one too.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:482
&gt; &gt; +    m_pixels = QImage(width, height, QImage::Format_ARGB32);
&gt; 
&gt; I got rid of m_pixels yesterday :)

Yeah, have to revise this patch against those changes :)

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:494
&gt; &gt; +    bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_depthBuffer);
&gt; 
&gt; if !(m_attrs.depth) || QT_OPENGL_ES_2, genRenderbuffers() is not called. So I guess we should not bind the buffer either(?).

Oops, right. And handle for the renderbuffer should not be created either. Fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373440</commentid>
    <comment_count>11</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 04:50:39 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 86508 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86508&amp;action=review
&gt; &gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:451
&gt; &gt; &gt; +    if (!reshapeMainFbo(1, 1)) {
&gt; &gt; 
&gt; &gt; Why do we create the Fbo of size (1, 1) at this stage?
&gt; &gt; 
&gt; &gt; It seems reasonable to me to have an invalid painter state until GraphicsContext3D::reshape() is called with a valid size. Or some initialization of reshapeMainFbo() is needed in the constructor?
&gt; 
&gt; I will verify whether GraphicsContext3D::reshape() is called before
&gt; anything that depends on valid context. 

Of course this doesn&apos;t matter because there is proper FBO handle created in constructor. Draw calls will fail with error code. No reshape needed there. 

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:454
&gt; &gt; &gt;          LOG_ERROR(&quot;GraphicsContext3D: Wasn&apos;t able to create the main framebuffer&quot;);
&gt; &gt; &gt;          m_contextValid = false;
&gt; &gt; &gt;      }
&gt; &gt; 
&gt; &gt; Shouldn&apos;t this code be part of reshapeMainFbo()?
&gt; &gt; Logging the error and setting m_contextValid = false; seems reasonable to do in the function if the allocation failed.
&gt; 
&gt; You&apos;re probably right. I will verify this one too.

m_contextValid flag means whether GL symbols are resolved correctly. For reshaping error log should be enough (does not affect outside of canvas, drawing stop to work).

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:482
&gt; &gt; &gt; +    m_pixels = QImage(width, height, QImage::Format_ARGB32);
&gt; &gt; 
&gt; &gt; I got rid of m_pixels yesterday :)
&gt; 
&gt; Yeah, have to revise this patch against those changes :)
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:494
&gt; &gt; &gt; +    bindRenderbuffer(GraphicsContext3D::RENDERBUFFER, m_depthBuffer);
&gt; &gt; 
&gt; &gt; if !(m_attrs.depth) || QT_OPENGL_ES_2, genRenderbuffers() is not called. So I guess we should not bind the buffer either(?).
&gt; 
&gt; Oops, right. And handle for the renderbuffer should not be created either. Fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373450</commentid>
    <comment_count>12</comment_count>
      <attachid>86921</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 05:35:25 -0700</bug_when>
    <thetext>Created attachment 86921
Revised version based on comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373451</commentid>
    <comment_count>13</comment_count>
      <attachid>86922</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 05:36:56 -0700</bug_when>
    <thetext>Created attachment 86922
Ooops, last patch had invalid git diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373468</commentid>
    <comment_count>14</comment_count>
      <attachid>86922</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-25 06:18:46 -0700</bug_when>
    <thetext>Comment on attachment 86922
Ooops, last patch had invalid git diff

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

quick review

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:313
&gt; +    else
&gt; +        m_glWidget = new QGLWidget();

Shouldn&apos;t we get rid of this? Just set m_valid = false and return?
If the viewport does not have QGLWidget -&gt; too bad for you, you won&apos;t enjoy webgl :)

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:-325
&gt; -    m_attrs.alpha = format.alpha();

Why can you skip checking the alpha from the GL surface?
You use m_attrs.alpha in reshape(), but as far as I can see, it is initialized with the default value.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:-327
&gt; -    m_attrs.depth = format.depth();
&gt; -    m_attrs.stencil = format.stencil();

Ditto :)

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:322
&gt; +    // No need for widgets viewport. We use QGLWidget only to get a separate
&gt; +    // OpenGL context.

The comment can be on one line, we don&apos;t limit lines at 80 characters in WebKit.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:428
&gt; +        m_valid = false;

This assignement is useless, the condition to enter this branch is
if (!m_valid)

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:507
&gt; +    // Construct canvas FBO

Comments must be sentence, so they must end with a full stop.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:512
&gt; +#if !defined(QT_OPENGL_ES_2)

Do you have to #ifdef here, it looks like m_attrs.stencil is always gonna be false for QT_OPENGL_ES_2 because of the way it is initialized.

I am not aware of the problem of the stencil buffer with OpenGL ES 2. So my question is: would the following call make sense if stencil problems were fixed of GL ES 2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373477</commentid>
    <comment_count>15</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 06:30:58 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 86922 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86922&amp;action=review
&gt; 
&gt; quick review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:313
&gt; &gt; +    else
&gt; &gt; +        m_glWidget = new QGLWidget();
&gt; 
&gt; Shouldn&apos;t we get rid of this? Just set m_valid = false and return?
&gt; If the viewport does not have QGLWidget -&gt; too bad for you, you won&apos;t enjoy webgl :)
&gt; 

No. For that case I think the best compromise is to allow creation of WebGL context but disallow painting of it. In the paint method there should be check that we are painting on a QImage before allowing software fallback. Anyway, let&apos;s leave fixing of this issue to that bug that I created :)

&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:-325
&gt; &gt; -    m_attrs.alpha = format.alpha();
&gt; 
&gt; Why can you skip checking the alpha from the GL surface?
&gt; You use m_attrs.alpha in reshape(), but as far as I can see, it is initialized with the default value.

Default values for enabling/disabling are defined:
- Second parameter given by getContext call from JavaScript
- GraphicsContext3D::Attributes default constructor 

This was invalid code. That&apos;s why the test case failed (it uses
getContext() to enable/disable alpha).

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:-327
&gt; &gt; -    m_attrs.depth = format.depth();
&gt; &gt; -    m_attrs.stencil = format.stencil();
&gt; 
&gt; Ditto :)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:322
&gt; &gt; +    // No need for widgets viewport. We use QGLWidget only to get a separate
&gt; &gt; +    // OpenGL context.
&gt; 
&gt; The comment can be on one line, we don&apos;t limit lines at 80 characters in WebKit.

Roger.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:428
&gt; &gt; +        m_valid = false;
&gt; 
&gt; This assignement is useless, the condition to enter this branch is
&gt; if (!m_valid)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:507
&gt; &gt; +    // Construct canvas FBO
&gt; 
&gt; Comments must be sentence, so they must end with a full stop.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:512
&gt; &gt; +#if !defined(QT_OPENGL_ES_2)
&gt; 
&gt; Do you have to #ifdef here, it looks like m_attrs.stencil is always gonna be false for QT_OPENGL_ES_2 because of the way it is initialized.
&gt; 
&gt; I am not aware of the problem of the stencil buffer with OpenGL ES 2. So my question is: would the following call make sense if stencil problems were fixed of GL ES 2?

There&apos;s no problem with ES 2.0 but stencil buffer has to be made as
separate renderbuffer there. http://www.khronos.org/opengles/sdk/docs/man/xhtml/glRenderbufferStorage.xml I created separate bug for fixing the same test for ES 2 because I don&apos;t have a N900 that I could use to test this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373484</commentid>
    <comment_count>16</comment_count>
      <attachid>86932</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 06:48:54 -0700</bug_when>
    <thetext>Created attachment 86932
Comments fixed to be in one line.

Values for m_attrs should be read from QGLFormat. Those code bits and some others that are now cleared are kind of left-overs when the this backend implementation was in its starting points and the WebGL implementation in WebKit as a whole was shaky. This patch cleans most of the history clutter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373491</commentid>
    <comment_count>17</comment_count>
      <attachid>86933</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 07:28:47 -0700</bug_when>
    <thetext>Created attachment 86933
Style and cosmetic fixes.

Comment on common implementation (summary of the flood in IRC):

If you want common implementation there must a driver class for these features (platform dependent):
- Symbol resolution (GC3DOGL assumes that symbols are resolved)
- Some calls differ whether compiled for OGL ES 2 or desktop GL. ES 2.0 flagging is not done in the GC3DOGL.
- Context handling
- Painting of canvas

These already cover so huge chunk of GC3DQt that I think it would not be a good idea to go for common. Or at least there has to be good answers where platform dependent parts are placed. I think this is something that should be considered in long-term but not for the first release at least :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373532</commentid>
    <comment_count>18</comment_count>
      <attachid>86933</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-25 08:40:23 -0700</bug_when>
    <thetext>Comment on attachment 86933
Style and cosmetic fixes.

Removed commit queue flag until review is done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373913</commentid>
    <comment_count>19</comment_count>
      <attachid>86933</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-26 10:26:23 -0700</bug_when>
    <thetext>Comment on attachment 86933
Style and cosmetic fixes.

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

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:161
&gt; +    // Used by GraphicsContext3D to check whether construction was done succesfully.

Not sure that comment brings much value, anyway it is called &quot;successfully&quot; with 3 s&apos;s in total.

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:320
&gt; +    // No need viewport of QGLWidget. We use to get a separate QGLContext.

I dont understand that comment

&gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:475
&gt; +    if (((width == m_boundingRect.width()) &amp;&amp; (height == m_boundingRect.height())))

Are all those ()&apos;s needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373914</commentid>
    <comment_count>20</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-26 11:04:51 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 86933 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86933&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:161
&gt; &gt; +    // Used by GraphicsContext3D to check whether construction was done succesfully.
&gt; 
&gt; Not sure that comment brings much value, anyway it is called &quot;successfully&quot; with 3 s&apos;s in total.

True, this misguiding comment. I&apos;ll remove it.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:320
&gt; &gt; +    // No need viewport of QGLWidget. We use to get a separate QGLContext.
&gt; 
&gt; I dont understand that comment

I don&apos;t understand it either :) I&apos;ll revise this one.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:475
&gt; &gt; +    if (((width == m_boundingRect.width()) &amp;&amp; (height == m_boundingRect.height())))
&gt; 
&gt; Are all those ()&apos;s needed?

No. I&apos;ll change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373925</commentid>
    <comment_count>21</comment_count>
      <attachid>87032</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-26 11:42:02 -0700</bug_when>
    <thetext>Created attachment 87032
Cosmetic fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374382</commentid>
    <comment_count>22</comment_count>
      <attachid>87032</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-28 03:19:06 -0700</bug_when>
    <thetext>Comment on attachment 87032
Cosmetic fixes.

Looks good, I can&apos;t think of anything to complain about this time :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374384</commentid>
    <comment_count>23</comment_count>
      <attachid>87032</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 03:24:04 -0700</bug_when>
    <thetext>Comment on attachment 87032
Cosmetic fixes.

Rejecting attachment 87032 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;apply-...&quot; exit_code: 1

Last 500 characters of output:
autoinstalled/mechanize/_urllib2_fork.py&quot;, line 332, in _call_chain
    result = func(*args)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1170, in https_open
    return self.do_open(conn_factory, req)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
    raise URLError(err)
urllib2.URLError: &lt;urlopen error [Errno 60] Operation timed out&gt;

Full output: http://queues.webkit.org/results/8271810</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374395</commentid>
    <comment_count>24</comment_count>
      <attachid>87032</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-28 04:19:30 -0700</bug_when>
    <thetext>Comment on attachment 87032
Cosmetic fixes.

The bot had a problem, re-cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374479</commentid>
    <comment_count>25</comment_count>
      <attachid>87032</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 07:40:19 -0700</bug_when>
    <thetext>Comment on attachment 87032
Cosmetic fixes.

Clearing flags on attachment: 87032

Committed r82117: &lt;http://trac.webkit.org/changeset/82117&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374481</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 07:40:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86465</attachid>
            <date>2011-03-22 09:21:18 -0700</date>
            <delta_ts>2011-03-22 14:36:55 -0700</delta_ts>
            <desc>Create common reshaping function for main FBO</desc>
            <filename>56825-refactor.diff</filename>
            <type>text/plain</type>
            <size>7212</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZGMwZDM5Li42Mzg3MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDMtMjIgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgyNQorCisgICAgICAgIFJlZmFjdG9yZWQgV2ViR0wgY2FudmFz
IEZCTyByZXNoYXBpbmcgaW50byBhIGNvbW1vbiBmdW5jdGlvbi4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlTWFp
bkZibyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisK
IDIwMTEtMDMtMjEgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5k
ZXggOGQzNTQ3YS4uZGQwMWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTE1Niw2ICsx
NTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9j
b250ZXh0VmFsaWQ7IH0KICAgICBRR0xXaWRnZXQqIGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKKyAg
ICBib29sIHJlc2hhcGVNYWluRmJvKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBw
YWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQq
KTsKICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAKQEAgLTQyOCw3ICs0MjksNiBA
QCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dAogICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQ
X1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKICAgICBnbFRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4
SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEsIDEsIDEsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgMCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCk7CiAKICAgICBnZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8g
MSwgJm1fbWFpbkZibyk7CkBAIC00MzcsMjAgKzQzNywxMCBAQCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dAogICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fbWFpbkZibyk7CiAKICAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2Rl
cHRoQnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5E
RVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0g
ICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIC8qIHdpZHRoICovIDEsIC8qIGhl
aWdodCAqLyAxKTsKLSNlbHNlCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCAv
KiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7Ci0jZW5kaWYKIAotICAgIGJpbmRSZW5kZXJi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0gCi0gICAgZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBtX3RleHR1cmUsIDApOwotICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQs
IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAgIGds
Q2xlYXJDb2xvcigvKiByZWQgKi8gMCwgLyogZ3JlZW4gKi8gMCwgLyogYmx1ZSAqLyAwLCAvKiBh
bHBoYSAqLyAwKTsKIAotICAgIGlmIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NP
TVBMRVRFKSB7CisgICAgaWYgKCFyZXNoYXBlTWFpbkZibygxLCAxKSkgewogICAgICAgICBMT0df
RVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBXYXNuJ3QgYWJsZSB0byBjcmVhdGUgdGhlIG1haW4g
ZnJhbWVidWZmZXIiKTsKICAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBmYWxzZTsKICAgICB9CkBA
IC00NzMsNiArNDYzLDM2IEBAIFFHTFdpZGdldCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Z2V0Vmlld3BvcnRHTFdpZGdldCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6cmVzaGFwZU1haW5GYm8oaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor
eworICAgIGlmICgoKHdpZHRoID09IG1fYm91bmRpbmdSZWN0LndpZHRoKCkpICYmIChoZWlnaHQg
PT0gbV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCkpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBtX2JvdW5kaW5nUmVjdCA9IFFSZWN0RihRUG9pbnRGKDAsIDApLCBRU2l6ZUYod2lkdGgsIGhl
aWdodCkpOworICAgIG1fcGl4ZWxzID0gUUltYWdlKHdpZHRoLCBoZWlnaHQsIFFJbWFnZTo6Rm9y
bWF0X0FSR0IzMik7CisKKyAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworCisgICAgZ2xC
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAg
ICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICov
IDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8g
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCAvKiBkYXRhICovIDApOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDApOworCisgICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgbV9tYWluRmJvKTsKKyAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworI2lmIGRlZmluZWQoUVRf
T1BFTkdMX0VTXzIpCisgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRo
LCBoZWlnaHQpOworI2Vsc2UKKyAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdp
ZHRoLCBoZWlnaHQpOworI2VuZGlmCisgICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKworICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFD
SE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKKyAg
ICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKworICAgIEdMZW51bSBzdGF0dXMgPSBjaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7CisgICAg
cmV0dXJuIHN0YXR1cyA9PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEU7
Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3
aWRnZXQpCiB7CiAgICAgUV9VTlVTRUQod2lkZ2V0KTsKQEAgLTU3NywzMyArNTk3LDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewog
ICAgIGlmICgoKHdpZHRoID09IG1fY3VycmVudFdpZHRoKSAmJiAoaGVpZ2h0ID09IG1fY3VycmVu
dEhlaWdodCkpIHx8ICghbV9pbnRlcm5hbCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
IG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0Owog
Ci0gICAgbV9pbnRlcm5hbC0+bV9ib3VuZGluZ1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwg
UVNpemVGKHdpZHRoLCBoZWlnaHQpKTsKLSAgICBtX2ludGVybmFsLT5tX3BpeGVscyA9IFFJbWFn
ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIp
OwotCi0gICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLQotICAgIGds
QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1f
dGV4dHVyZSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwg
LyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKLSAgIAotICAgIG1faW50ZXJuYWwtPmJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1f
bWFpbkZibyk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVybmFsLT5tX2RlcHRoQnVmZmVyKTsKLSNpZiBkZWZp
bmVkKFFUX09QRU5HTF9FU18yKQotICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2
LCB3aWR0aCwgaGVpZ2h0KTsKLSNlbHNlCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGlj
c0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9O
RU5ULCB3aWR0aCwgaGVpZ2h0KTsKLSNlbmRpZgotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0gICAgCi0gICAgbV9p
bnRlcm5hbC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFsLT5tX3RleHR1cmUsIDApOwotICAgIG1faW50ZXJu
YWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIpOwotCi0gICAgR0xlbnVt
IHN0YXR1cyA9IG1faW50ZXJuYWwtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKLSAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgIGlmICghbV9pbnRlcm5hbC0+cmVzaGFwZU1h
aW5GYm8od2lkdGgsIGhlaWdodCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRl
eHQzRDogV2Fzbid0IGFibGUgdG8gcmVzaGFwZSB0aGUgbWFpbiBmcmFtZWJ1ZmZlciIpOwogICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86508</attachid>
            <date>2011-03-22 14:36:55 -0700</date>
            <delta_ts>2011-03-25 05:35:25 -0700</delta_ts>
            <desc>Fixes for context attribute handling.</desc>
            <filename>56825.diff</filename>
            <type>text/plain</type>
            <size>9180</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZGI1YTEwLi41YzA4ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTEtMDMtMjIgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgyNQorCisgICAgICAgIEZpeGVzIGZvciBjb250ZXh0IGF0dHJp
YnV0ZSBoYW5kbGluZzoKKyAgICAgICAgLSBDcmVhdGUgZWl0aGVyIFJHQkEgb3IgUkdCIHN1cmZh
Y2UgZGVwZW5kaW5nIG9uIGFscGhhLgorICAgICAgICAtIFN0ZW5jaWwgZW5hYmxlZDogb24gZGVz
a3RvcCBhbHdheXMgZW5hYmxlIGFsc28gZGVwdGggYW5kCisgICAgICAgIGNyZWF0ZSBHTF9ERVBU
SDI0X1NURU5DSUw4IHJlbmRlcmJ1ZmZlci4gT24gT3BlbkdMIEVTIDIuMAorICAgICAgICBzZXQg
c3RlbmNpbCB0byBmYWxzZS4KKyAgICAgICAgLSBPbmx5IGRlcHRoIChubyBzdGVuY2lsKSBlbmFi
bGVkOiBjcmVhdGUgcmVuZGVyYnVmZmVyIHdpdGgKKyAgICAgICAgZGVwdGggY29tcG9uZW50Lgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxw
aGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGVNYWluRmJvKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKwogMjAxMS0w
My0yMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgxNjUzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApp
bmRleCA5N2ViY2JlLi5hMTdmNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMTYwLDYg
KzE2MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNDb250ZXh0VmFsaWQoKSB7IHJldHVybiBt
X2NvbnRleHRWYWxpZDsgfQogICAgIFFHTFdpZGdldCogZ2V0Vmlld3BvcnRHTFdpZGdldCgpOwor
ICAgIGJvb2wgcmVzaGFwZU1haW5GYm8oaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2b2lk
IHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdl
dCopOwogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKIApAQCAtMzE4LDEyICszMTks
MTUgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBm
YWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAKKwogICAgIFFHTEZvcm1hdCBmb3JtYXQg
PSBtX2dsV2lkZ2V0LT5mb3JtYXQoKTsKIAotICAgIG1fYXR0cnMuYWxwaGEgPSBmb3JtYXQuYWxw
aGEoKTsKLSAgICBtX2F0dHJzLmRlcHRoID0gZm9ybWF0LmRlcHRoKCk7Ci0gICAgbV9hdHRycy5z
dGVuY2lsID0gZm9ybWF0LnN0ZW5jaWwoKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQor
ICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOworI2Vsc2UKKyAgICBpZiAobV9hdHRycy5zdGVu
Y2lsKQorICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKKyNlbmRpZgogICAgIG1fYXR0cnMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVl
OwogCkBAIC00MzIsNyArNDM2LDYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICBnbFRl
eFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwogICAg
IGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURH
RSk7CiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFN
UF9UT19FREdFKTsKLSAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCAxLCAxLCAwLCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApOwogICAgIGdsQmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogCiAgICAgZ2VuRnJh
bWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX21haW5GYm8pOwpAQCAtNDQwLDIxICs0NDMsMTIg
QEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKIAogICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbWFpbkZibyk7CiAKLSAgICBnZW5SZW5kZXJidWZm
ZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lmIGRl
ZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5U
MTYsIC8qIHdpZHRoICovIDEsIC8qIGhlaWdodCAqLyAxKTsKLSNlbHNlCi0gICAgcmVuZGVyYnVm
ZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6REVQVEhfQ09NUE9ORU5ULCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7Ci0j
ZW5kaWYKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2VuUmVuZGVyYnVmZmVycygv
KiBjb3VudCAqLyAxLCAmbV9kZXB0aEJ1ZmZlcik7CiAKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwotIAotICAgIGZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0
dXJlLCAwKTsKLSAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGlj
c0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICAgICBnbENsZWFyQ29s
b3IoLyogcmVkICovIDAsIC8qIGdyZWVuICovIDAsIC8qIGJsdWUgKi8gMCwgLyogYWxwaGEgKi8g
MCk7CiAKLSAgICBpZiAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkg
eworICAgIGlmICghcmVzaGFwZU1haW5GYm8oMSwgMSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJH
cmFwaGljc0NvbnRleHQzRDogV2Fzbid0IGFibGUgdG8gY3JlYXRlIHRoZSBtYWluIGZyYW1lYnVm
ZmVyIik7CiAgICAgICAgIG1fY29udGV4dFZhbGlkID0gZmFsc2U7CiAgICAgfQpAQCAtNDc5LDYg
KzQ3Myw1MCBAQCBRR0xXaWRnZXQqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFZpZXdw
b3J0R0xXaWRnZXQoKQogICAgIHJldHVybiAwOwogfQogCitib29sIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnJlc2hhcGVNYWluRmJvKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBp
ZiAoKCh3aWR0aCA9PSBtX2JvdW5kaW5nUmVjdC53aWR0aCgpKSAmJiAoaGVpZ2h0ID09IG1fYm91
bmRpbmdSZWN0LmhlaWdodCgpKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgbV9ib3Vu
ZGluZ1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQpKTsK
KyAgICBtX3BpeGVscyA9IFFJbWFnZSh3aWR0aCwgaGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdC
MzIpOworCisgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKworICAgIGdsQmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgaWYgKG1f
YXR0cnMuYWxwaGEpCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdpZHRoLCBo
ZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZWxzZQorICAgICAg
ICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICov
IDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAw
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSwgLyogZGF0YSAqLyAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwKTsKKworICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fbWFpbkZibyk7CisgICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyNpZiBkZWZpbmVkKFFUX09Q
RU5HTF9FU18yKQorICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJF
TkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwg
aGVpZ2h0KTsKKyNlbHNlCisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgcmVuZGVy
YnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0
X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBlbHNlIGlmIChtX2F0dHJzLmRlcHRoKQor
ICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwor
I2VuZGlmCisgICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVG
RkVSLCAwKTsKKworICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKKyNpZiBkZWZpbmVkKFFUX09Q
RU5HTF9FU18yKQorICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBo
aWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworI2Vsc2UKKyAgICBp
ZiAobV9hdHRycy5zdGVuY2lsKSB7CisgICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FU
VEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIp
OworICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworICAgIH0gZWxzZSBpZiAo
bV9hdHRycy5kZXB0aCkKKyAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVO
VCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisjZW5k
aWYKKworICAgIEdMZW51bSBzdGF0dXMgPSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUik7CisgICAgcmV0dXJuIHN0YXR1cyA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEU7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdy
YXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgUV9VTlVTRUQod2lk
Z2V0KTsKQEAgLTU4MywzMyArNjIxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hh
cGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmICgoKHdpZHRoID09IG1fY3VycmVu
dFdpZHRoKSAmJiAoaGVpZ2h0ID09IG1fY3VycmVudEhlaWdodCkpIHx8ICghbV9pbnRlcm5hbCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAg
ICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwogCi0gICAgbV9pbnRlcm5hbC0+bV9ib3VuZGlu
Z1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQpKTsKLSAg
ICBtX2ludGVybmFsLT5tX3BpeGVscyA9IFFJbWFnZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwotCi0gICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLQotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSk7Ci0gICAgZ2xUZXhJbWFnZTJE
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAq
LyAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
KTsKLSAgIAotICAgIG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fbWFpbkZibyk7Ci0gICAgbV9pbnRlcm5hbC0+
YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVy
bmFsLT5tX2RlcHRoQnVmZmVyKTsKLSNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgIHJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKLSNlbHNlCi0g
ICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0KTsKLSNlbmRp
ZgotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJF
TkRFUkJVRkZFUiwgMCk7Ci0gICAgCi0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFs
LT5tX3RleHR1cmUsIDApOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwt
Pm1fZGVwdGhCdWZmZXIpOwotCi0gICAgR0xlbnVtIHN0YXR1cyA9IG1faW50ZXJuYWwtPmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKLSAgICBp
ZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewor
ICAgIGlmICghbV9pbnRlcm5hbC0+cmVzaGFwZU1haW5GYm8od2lkdGgsIGhlaWdodCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogV2Fzbid0IGFibGUgdG8gcmVzaGFw
ZSB0aGUgbWFpbiBmcmFtZWJ1ZmZlciIpOwogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IH0K
</data>
<flag name="review"
          id="78790"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86921</attachid>
            <date>2011-03-25 05:35:25 -0700</date>
            <delta_ts>2011-03-25 05:36:56 -0700</delta_ts>
            <desc>Revised version based on comments</desc>
            <filename>56825-3.diff</filename>
            <type>text/plain</type>
            <size>2904</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkN2VkOWEzLi43MDE3NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDMtMjUgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgyNQorCisgICAgICAgIEZpeGVzIGZvciBjb250ZXh0IGF0dHJp
YnV0ZSBoYW5kbGluZzoKKyAgICAgICAgLSBJbml0aWFsaXplIGRlcHRoIGFuZCBzdGVuY2lsIGJ1
ZmZlciBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5CisgICAgICAgIGFyZSBlbmFibGVkIGluIGNv
bnRleHQgYXR0cmlidXRlcy4KKyAgICAgICAgLSBBbHdheXMgZW5hYmxlIGRlcHRoIGJ1ZmZlciB3
aGVuIHN0ZW5jaWwgYnVmZmVyIGlzIGVuYWJsZWQuCisgICAgICAgIC0gRGlzYWJsZSBzdGVuY2ls
IGJ1ZmZlciBvbiBPcGVuR0wgRVMgMi4wCisgICAgICAgIC0gQ2xlYW5lZCB1cCBjbHV0dGVyIGNv
ZGUgZnJvbSBpbml0aWFsaXphdGlvbi4gTWFkZSBjb2RlIHBhdGhzIAorICAgICAgICBtb3JlIHNh
bmUuCisgICAgICAgIC0gQ2xlYXIgbWFzayBpcyBub3cgc2V0IGNvcnJlY3RseSBpbiByZXNoYXBl
KCkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRl
cy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKwogMjAxMS0w
My0yNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCBm
MTVlMjQ1Li5iNTljYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtNTE1LDggKzUxNSwx
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQogI2VuZGlmCiAKICAgICBHTGVudW0gc3RhdHVzID0gY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOwotICAgIGlmIChzdGF0dXMg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChzdGF0
dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CiAgICAgICAg
IExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IENhbnZhcyBGQk8gaW5pdGlhbGl6YXRpb24g
ZmFpbGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGNsZWFyRmxhZ3Mg
PSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICBpZiAobV9hdHRycy5k
ZXB0aCkKKyAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVG
RkVSX0JJVDsKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBjbGVhckZsYWdzIHw9
IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisKKyAgICBnbENsZWFyKGNs
ZWFyRmxhZ3MpOworICAgIGdsRmx1c2goKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhp
Y3NJdGVtKiBvcHRpb24sIFFXaWRnZXQqIHdpZGdldCkKQEAgLTY1Nyw4ICs2NjgsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAg
IG1faW50ZXJuYWwtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CiAKLSAgICBnbENsZWFyKEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsKLSAgICBnbEZsdXNoKCk7CiB9CiAKIElu
dFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86922</attachid>
            <date>2011-03-25 05:36:56 -0700</date>
            <delta_ts>2011-03-25 06:48:54 -0700</delta_ts>
            <desc>Ooops, last patch had invalid git diff</desc>
            <filename>56825-4.diff</filename>
            <type>text/plain</type>
            <size>13941</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkN2VkOWEzLi43MDE3NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDMtMjUgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgyNQorCisgICAgICAgIEZpeGVzIGZvciBjb250ZXh0IGF0dHJp
YnV0ZSBoYW5kbGluZzoKKyAgICAgICAgLSBJbml0aWFsaXplIGRlcHRoIGFuZCBzdGVuY2lsIGJ1
ZmZlciBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5CisgICAgICAgIGFyZSBlbmFibGVkIGluIGNv
bnRleHQgYXR0cmlidXRlcy4KKyAgICAgICAgLSBBbHdheXMgZW5hYmxlIGRlcHRoIGJ1ZmZlciB3
aGVuIHN0ZW5jaWwgYnVmZmVyIGlzIGVuYWJsZWQuCisgICAgICAgIC0gRGlzYWJsZSBzdGVuY2ls
IGJ1ZmZlciBvbiBPcGVuR0wgRVMgMi4wCisgICAgICAgIC0gQ2xlYW5lZCB1cCBjbHV0dGVyIGNv
ZGUgZnJvbSBpbml0aWFsaXphdGlvbi4gTWFkZSBjb2RlIHBhdGhzIAorICAgICAgICBtb3JlIHNh
bmUuCisgICAgICAgIC0gQ2xlYXIgbWFzayBpcyBub3cgc2V0IGNvcnJlY3RseSBpbiByZXNoYXBl
KCkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRl
cy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKwogMjAxMS0w
My0yNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAx
NjE1Mzk3Li5iNTljYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMTU4LDggKzE1OCwx
MiBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CiAgICAgfkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAotICAgIGJvb2wgaXNDb250ZXh0VmFsaWQoKSB7
IHJldHVybiBtX2NvbnRleHRWYWxpZDsgfQorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBi
eSBHcmFwaGljc0NvbnRleHQzRCB0byBjaGVjayB3aGV0aGVyIGNvbnN0cnVjdGlvbgorICAgIC8v
IG9mIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgb2JqZWN0IHdhcyBzdWNjZXNzZnVsIG9yIG5v
dC4KKyAgICBib29sIGlzVmFsaWQoKSB7IHJldHVybiBtX3ZhbGlkOyB9CisKICAgICBRR0xXaWRn
ZXQqIGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKKyAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKICAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9u
R3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25z
dDsKIApAQCAtMjYwLDcgKzI2NCw3IEBAIHB1YmxpYzoKICAgICBRR0xXaWRnZXQqIG1fdmlld3Bv
cnRHTFdpZGdldDsKICAgICBRUmVjdEYgbV9ib3VuZGluZ1JlY3Q7CiAgICAgR0x1aW50IG1fdGV4
dHVyZTsKLSAgICBHTHVpbnQgbV9tYWluRmJvOworICAgIEdMdWludCBtX2NhbnZhc0ZibzsKICAg
ICBHTHVpbnQgbV9jdXJyZW50RmJvOwogICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwogICAgIGJv
b2wgbV9sYXllckNvbXBvc2l0ZWQ7CkBAIC0yNzEsNyArMjc1LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKIAogICAgIHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7Ci0gICAg
Ym9vbCBtX2NvbnRleHRWYWxpZDsKKyAgICBib29sIG1fdmFsaWQ7CiB9OwogCiAjaWYgZGVmaW5l
ZCAoUVRfT1BFTkdMX0VTXzIpIApAQCAtMjk1LDM4ICsyOTksMzYgQEAgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXQKICAgICAsIG1fZ2xXaWRnZXQoMCkKICAgICAsIG1fdmlld3BvcnRHTFdpZGdldCgw
KQogICAgICwgbV90ZXh0dXJlKDApCi0gICAgLCBtX21haW5GYm8oMCkKKyAgICAsIG1fY2FudmFz
RmJvKDApCiAgICAgLCBtX2N1cnJlbnRGYm8oMCkKICAgICAsIG1fZGVwdGhCdWZmZXIoMCkKICAg
ICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQotICAgICwgbV9jb250ZXh0VmFsaWQodHJ1ZSkK
KyAgICAsIG1fdmFsaWQodHJ1ZSkKIHsKICAgICBtX3ZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3
cG9ydEdMV2lkZ2V0KCk7CiAKICAgICBpZiAobV92aWV3cG9ydEdMV2lkZ2V0KQogICAgICAgICBt
X2dsV2lkZ2V0ID0gbmV3IFFHTFdpZGdldCgwLCBtX3ZpZXdwb3J0R0xXaWRnZXQpOwotICAgIGVs
c2UgewotICAgICAgICBRR0xGb3JtYXQgZm9ybWF0OwotICAgICAgICBmb3JtYXQuc2V0RGVwdGgo
dHJ1ZSk7Ci0gICAgICAgIGZvcm1hdC5zZXRTYW1wbGVCdWZmZXJzKHRydWUpOwotICAgICAgICBm
b3JtYXQuc2V0U3RlbmNpbChmYWxzZSk7Ci0KLSAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xX
aWRnZXQoZm9ybWF0KTsKLSAgICB9CisgICAgZWxzZQorICAgICAgICBtX2dsV2lkZ2V0ID0gbmV3
IFFHTFdpZGdldCgpOwogCiAgICAgaWYgKCFtX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGRvZXMgbm90IGhhdmUg
YSB2YWxpZCBjb250ZXh0Iik7Ci0gICAgICAgIG1fY29udGV4dFZhbGlkID0gZmFsc2U7CisgICAg
ICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlv
biBmYWlsZWQuIik7CisgICAgICAgIG1fdmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAKLSAgICBRR0xGb3JtYXQgZm9ybWF0ID0gbV9nbFdpZGdldC0+Zm9ybWF0KCk7CiAK
LSAgICBtX2F0dHJzLmFscGhhID0gZm9ybWF0LmFscGhhKCk7Ci0gICAgbV9hdHRycy5kZXB0aCA9
IGZvcm1hdC5kZXB0aCgpOwotICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZvcm1hdC5zdGVuY2lsKCk7
CisgICAgLy8gTm8gbmVlZCBmb3Igd2lkZ2V0cyB2aWV3cG9ydC4gV2UgdXNlIFFHTFdpZGdldCBv
bmx5IHRvIGdldCBhIHNlcGFyYXRlCisgICAgLy8gT3BlbkdMIGNvbnRleHQuCisgICAgbV9nbFdp
ZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7CisKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9F
U18yKQorICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOworI2Vsc2UKKyAgICBpZiAobV9hdHRy
cy5zdGVuY2lsKQorICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKKyNlbmRpZgogICAgIG1f
YXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEg
PSB0cnVlOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIApAQCAtNDIxLDQ0ICs0
MjMsMzAgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliNGZ2KTsKICAgICB2ZXJ0ZXhBdHRyaWJQb2lu
dGVyID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOwogCi0gICAgaWYg
KCFtX2NvbnRleHRWYWxpZCkgeworICAgIGlmICghbV92YWxpZCkgewogICAgICAgICBMT0dfRVJS
T1IoIkdyYXBoaWNzQ29udGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5HTCBleHRlbnNpb25zIGFyZSBu
b3QgYXZhaWxhYmxlIik7Ci0gICAgICAgIG1fY29udGV4dFZhbGlkID0gZmFsc2U7CisgICAgICAg
IG1fdmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIENyZWF0
ZSBidWZmZXJzCisgICAgZ2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2NhbnZhc0Zi
byk7CisKICAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOwogICAgIGdsQmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CiAgICAgZ2xUZXhQ
YXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKICAgICBn
bFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwog
ICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9f
RURHRSk7CiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpD
TEFNUF9UT19FREdFKTsKLSAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCAxLCAxLCAwLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApOwogICAgIGds
QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogCi0gICAgZ2Vu
RnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX21haW5GYm8pOwotICAgIG1fY3VycmVudEZi
byA9IG1fbWFpbkZibzsKLQotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fbWFpbkZibyk7Ci0KLSAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50
ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lmIGRlZmluZWQoUVRfT1BF
TkdMX0VTXzIpCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIC8qIHdpZHRo
ICovIDEsIC8qIGhlaWdodCAqLyAxKTsKLSNlbHNlCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShH
cmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
Q09NUE9ORU5ULCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7Ci0jZW5kaWYKLQotICAg
IGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0g
Ci0gICAgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBtX3RleHR1cmUsIDApOwotICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZm
ZXIpOwotICAgIGdsQ2xlYXJDb2xvcigvKiByZWQgKi8gMCwgLyogZ3JlZW4gKi8gMCwgLyogYmx1
ZSAqLyAwLCAvKiBhbHBoYSAqLyAwKTsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAg
Z2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9kZXB0aEJ1ZmZlcik7CiAKLSAgICBp
ZiAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIp
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewotICAgICAgICBM
T0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBXYXNuJ3QgYWJsZSB0byBjcmVhdGUgdGhlIG1h
aW4gZnJhbWVidWZmZXIiKTsKLSAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBmYWxzZTsKLSAgICB9
CisgICAgLy8gQmluZCBjYW52YXMgRkJPIGFuZCBzZXQgaW5pdGlhbCBjbGVhciBjb2xvciB0byBi
bGFjay4KKyAgICBtX2N1cnJlbnRGYm8gPSBtX2NhbnZhc0ZibzsKKyAgICBiaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZ2xD
bGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCkKQEAgLTQ4NSw2ICs0NzMsNjMgQEAg
c3RhdGljIGlubGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogICAgIHJl
dHVybiAoKHBpeGVsIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhmZikg
fCAocGl4ZWwgJiAweGZmMDBmZjAwKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBpZiAoKCh3aWR0aCA9
PSBtX2JvdW5kaW5nUmVjdC53aWR0aCgpKSAmJiAoaGVpZ2h0ID09IG1fYm91bmRpbmdSZWN0Lmhl
aWdodCgpKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYm91bmRpbmdSZWN0ID0gUVJlY3RG
KFFQb2ludEYoMCwgMCksIFFTaXplRih3aWR0aCwgaGVpZ2h0KSk7CisKKyAgICBtX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworCisgICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgorICAgIGdsQmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAg
aWYgKG1fYXR0cnMuYWxwaGEpCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdp
ZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZWxzZQor
ICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxl
dmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRl
ciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfQllURSwgLyogZGF0YSAqLyAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwKTsKKworICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7CisgICAgICAg
IC8vIENyZWF0ZSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLgorICAgICAgICBiaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwor
I2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKKyNlbHNlCisgICAgICAgIGlmIChtX2F0dHJz
LnN0ZW5jaWwpCisgICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQs
IHdpZHRoLCBoZWlnaHQpOworI2VuZGlmCisgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0
IGNhbnZhcyBGQk8KKyAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUsIDApOworICAgIGlm
IChtX2F0dHJzLmRlcHRoKQorICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hN
RU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyNp
ZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAg
ICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworI2VuZGlmCisKKyAgICBHTGVudW0g
c3RhdHVzID0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIpOworICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
X0NPTVBMRVRFKSB7CisgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IENhbnZh
cyBGQk8gaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaW50IGNsZWFyRmxhZ3MgPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJ
VDsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQor
ICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9C
SVQ7CisKKyAgICBnbENsZWFyKGNsZWFyRmxhZ3MpOworICAgIGdsRmx1c2goKTsKK30KKwogdm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29u
c3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24sIFFXaWRnZXQqIHdpZGdldCkKIHsK
ICAgICBRX1VOVVNFRCh3aWRnZXQpOwpAQCAtNTA0LDcgKzU0OSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9w
dGlvbkdyYXBoCiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1
aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX21haW5GYm8pOworICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKICAgICBnbFJlYWRQaXhlbHMoLyogeCAqLyAwLCAv
KiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CiAK
ICAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1
cnJlbnRGYm8pOwpAQCAtNTUzLDcgKzU5OCw3IEBAIHZvaWQqIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OmdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYykKICAgICB9CiAKICAgICBM
T0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBEaWQgbm90IGZpbmQgR0wgZnVuY3Rpb24gJXMi
LCBwcm9jLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29udGV4dFZhbGlkID0gZmFsc2U7CisgICAg
bV92YWxpZCA9IGZhbHNlOwogICAgIHJldHVybiAwOwogfQogCkBAIC01NjksNyArNjE0LDcgQEAg
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmkKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRl
eHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgYm9vbCkKICAgICA6IG1faW50ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwoYXR0cnMsIGhvc3RXaW5kb3cpKQogewotICAgIGlmICghbV9pbnRlcm5hbC0+aXNDb250
ZXh0VmFsaWQoKSkgCisgICAgaWYgKCFtX2ludGVybmFsLT5pc1ZhbGlkKCkpCiAgICAgICAgIG1f
aW50ZXJuYWwgPSAwOwogfQogCkBAIC02MTcsMzggKzY2MiwxMiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBpZiAoKCh3aWR0
aCA9PSBtX2N1cnJlbnRXaWR0aCkgJiYgKGhlaWdodCA9PSBtX2N1cnJlbnRIZWlnaHQpKSB8fCAo
IW1faW50ZXJuYWwpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtX2N1cnJlbnRXaWR0
aCA9IHdpZHRoOwogICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKIAotICAgIG1faW50ZXJu
YWwtPm1fYm91bmRpbmdSZWN0ID0gUVJlY3RGKFFQb2ludEYoMCwgMCksIFFTaXplRih3aWR0aCwg
aGVpZ2h0KSk7Ci0KLSAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9pbnRl
cm5hbC0+bV90ZXh0dXJlKTsKLSAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0aCwg
aGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwotICAgIGdsQmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwotICAgCi0gICAgbV9pbnRlcm5h
bC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9pbnRl
cm5hbC0+bV9tYWluRmJvKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIpOwot
I2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09N
UE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwotI2Vsc2UKLSAgICByZW5kZXJidWZmZXJTdG9yYWdl
KEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwotI2VuZGlmCi0gICAgbV9pbnRlcm5hbC0+Ymlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKLSAgICAK
LSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSwgMCk7Ci0gICAg
bV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7Ci0KLSAg
ICBHTGVudW0gc3RhdHVzID0gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOwotICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3Jh
cGhpY3NDb250ZXh0M0Q6IFdhc24ndCBhYmxlIHRvIHJlc2hhcGUgdGhlIG1haW4gZnJhbWVidWZm
ZXIiKTsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9CisgICAgbV9pbnRlcm5hbC0+
cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGdsQ2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0JVRkZFUl9CSVQpOwotICAgIGdsRmx1c2goKTsKIH0KIAogSW50U2l6ZSBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKQpAQCAtNjk3LDcgKzcxNiw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFt
ZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
bV9jdXJyZW50RmJvID0gYnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9tYWluRmJvOwor
ICAgIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1faW50ZXJu
YWwtPm1fY2FudmFzRmJvOwogICAgIG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQs
IG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7CiB9CiAK
</data>
<flag name="review"
          id="79291"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86932</attachid>
            <date>2011-03-25 06:48:54 -0700</date>
            <delta_ts>2011-03-25 07:28:47 -0700</delta_ts>
            <desc>Comments fixed to be in one line.</desc>
            <filename>56825-5.diff</filename>
            <type>text/plain</type>
            <size>13853</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkN2VkOWEzLi43MDE3NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDMtMjUgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgyNQorCisgICAgICAgIEZpeGVzIGZvciBjb250ZXh0IGF0dHJp
YnV0ZSBoYW5kbGluZzoKKyAgICAgICAgLSBJbml0aWFsaXplIGRlcHRoIGFuZCBzdGVuY2lsIGJ1
ZmZlciBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5CisgICAgICAgIGFyZSBlbmFibGVkIGluIGNv
bnRleHQgYXR0cmlidXRlcy4KKyAgICAgICAgLSBBbHdheXMgZW5hYmxlIGRlcHRoIGJ1ZmZlciB3
aGVuIHN0ZW5jaWwgYnVmZmVyIGlzIGVuYWJsZWQuCisgICAgICAgIC0gRGlzYWJsZSBzdGVuY2ls
IGJ1ZmZlciBvbiBPcGVuR0wgRVMgMi4wCisgICAgICAgIC0gQ2xlYW5lZCB1cCBjbHV0dGVyIGNv
ZGUgZnJvbSBpbml0aWFsaXphdGlvbi4gTWFkZSBjb2RlIHBhdGhzIAorICAgICAgICBtb3JlIHNh
bmUuCisgICAgICAgIC0gQ2xlYXIgbWFzayBpcyBub3cgc2V0IGNvcnJlY3RseSBpbiByZXNoYXBl
KCkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRl
cy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKwogMjAxMS0w
My0yNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAx
NjE1Mzk3Li4yZDczNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMTU4LDggKzE1OCwx
MSBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CiAgICAgfkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAotICAgIGJvb2wgaXNDb250ZXh0VmFsaWQoKSB7
IHJldHVybiBtX2NvbnRleHRWYWxpZDsgfQorICAgIC8vIFVzZWQgYnkgR3JhcGhpY3NDb250ZXh0
M0QgdG8gY2hlY2sgd2hldGhlciBjb25zdHJ1Y3Rpb24gd2FzIGRvbmUgc3VjY2VzZnVsbHkuCisg
ICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV92YWxpZDsgfQorCiAgICAgUUdMV2lkZ2V0KiBn
ZXRWaWV3cG9ydEdMV2lkZ2V0KCk7CisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhl
aWdodCk7CiAgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
aWNzSXRlbSosIFFXaWRnZXQqKTsKICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAK
QEAgLTI2MCw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgUUdMV2lkZ2V0KiBtX3ZpZXdwb3J0R0xX
aWRnZXQ7CiAgICAgUVJlY3RGIG1fYm91bmRpbmdSZWN0OwogICAgIEdMdWludCBtX3RleHR1cmU7
Ci0gICAgR0x1aW50IG1fbWFpbkZibzsKKyAgICBHTHVpbnQgbV9jYW52YXNGYm87CiAgICAgR0x1
aW50IG1fY3VycmVudEZibzsKICAgICBHTHVpbnQgbV9kZXB0aEJ1ZmZlcjsKICAgICBib29sIG1f
bGF5ZXJDb21wb3NpdGVkOwpAQCAtMjcxLDcgKzI3NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAK
ICAgICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwotICAgIGJvb2wg
bV9jb250ZXh0VmFsaWQ7CisgICAgYm9vbCBtX3ZhbGlkOwogfTsKIAogI2lmIGRlZmluZWQgKFFU
X09QRU5HTF9FU18yKSAKQEAgLTI5NSwzOCArMjk4LDM1IEBAIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0CiAgICAgLCBtX2dsV2lkZ2V0KDApCiAgICAgLCBtX3ZpZXdwb3J0R0xXaWRnZXQoMCkKICAg
ICAsIG1fdGV4dHVyZSgwKQotICAgICwgbV9tYWluRmJvKDApCisgICAgLCBtX2NhbnZhc0Zibygw
KQogICAgICwgbV9jdXJyZW50RmJvKDApCiAgICAgLCBtX2RlcHRoQnVmZmVyKDApCiAgICAgLCBt
X2xheWVyQ29tcG9zaXRlZChmYWxzZSkKLSAgICAsIG1fY29udGV4dFZhbGlkKHRydWUpCisgICAg
LCBtX3ZhbGlkKHRydWUpCiB7CiAgICAgbV92aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRH
TFdpZGdldCgpOwogCiAgICAgaWYgKG1fdmlld3BvcnRHTFdpZGdldCkKICAgICAgICAgbV9nbFdp
ZGdldCA9IG5ldyBRR0xXaWRnZXQoMCwgbV92aWV3cG9ydEdMV2lkZ2V0KTsKLSAgICBlbHNlIHsK
LSAgICAgICAgUUdMRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgZm9ybWF0LnNldERlcHRoKHRydWUp
OwotICAgICAgICBmb3JtYXQuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsKLSAgICAgICAgZm9ybWF0
LnNldFN0ZW5jaWwoZmFsc2UpOwotCi0gICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0
KGZvcm1hdCk7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xX
aWRnZXQoKTsKIAogICAgIGlmICghbV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBkb2VzIG5vdCBoYXZlIGEgdmFs
aWQgY29udGV4dCIpOwotICAgICAgICBtX2NvbnRleHRWYWxpZCA9IGZhbHNlOworICAgICAgICBM
T0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgaW5pdGlhbGl6YXRpb24gZmFp
bGVkLiIpOworICAgICAgICBtX3ZhbGlkID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gCi0gICAgUUdMRm9ybWF0IGZvcm1hdCA9IG1fZ2xXaWRnZXQtPmZvcm1hdCgpOwogCi0gICAg
bV9hdHRycy5hbHBoYSA9IGZvcm1hdC5hbHBoYSgpOwotICAgIG1fYXR0cnMuZGVwdGggPSBmb3Jt
YXQuZGVwdGgoKTsKLSAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmb3JtYXQuc3RlbmNpbCgpOworICAg
IC8vIE5vIG5lZWQgdmlld3BvcnQgb2YgUUdMV2lkZ2V0LiBXZSB1c2UgdG8gZ2V0IGEgc2VwYXJh
dGUgUUdMQ29udGV4dC4KKyAgICBtX2dsV2lkZ2V0LT5zZXRHZW9tZXRyeSgwLCAwLCAwLCAwKTsK
KworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgbV9hdHRycy5zdGVuY2lsID0gZmFs
c2U7CisjZWxzZQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIG1fYXR0cnMuZGVw
dGggPSB0cnVlOworI2VuZGlmCiAgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKLSAgICBt
X2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogCkBAIC00MjEsNDQgKzQyMSwzMCBAQCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dAogICAgIHZlcnRleEF0dHJpYjRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWI0
ZnYpOwogICAgIHZlcnRleEF0dHJpYlBvaW50ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4
QXR0cmliUG9pbnRlcik7CiAKLSAgICBpZiAoIW1fY29udGV4dFZhbGlkKSB7CisgICAgaWYgKCFt
X3ZhbGlkKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVk
ZWQgT3BlbkdMIGV4dGVuc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUiKTsKLSAgICAgICAgbV9jb250
ZXh0VmFsaWQgPSBmYWxzZTsKKyAgICAgICAgbV92YWxpZCA9IGZhbHNlOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgLy8gQ3JlYXRlIGJ1ZmZlcnMKKyAgICBnZW5GcmFtZWJ1ZmZlcnMo
LyogY291bnQgKi8gMSwgJm1fY2FudmFzRmJvKTsKKwogICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1f
dGV4dHVyZSk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV90ZXh0dXJlKTsKICAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FQVIpOwogICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdy
YXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKICAgICBnbFRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dS
QVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4SW1hZ2Uy
RChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIDEsIDEsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgMCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCk7CiAKLSAgICBnZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1f
bWFpbkZibyk7Ci0gICAgbV9jdXJyZW50RmJvID0gbV9tYWluRmJvOwotCi0gICAgYmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWluRmJvKTsKLQotICAg
IGdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhCdWZmZXIpOwotICAgIGJp
bmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1
ZmZlcik7Ci0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICByZW5kZXJidWZmZXJTdG9y
YWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNiwgLyogd2lkdGggKi8gMSwgLyogaGVpZ2h0ICovIDEpOwotI2Vsc2UK
LSAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIC8qIHdpZHRoICovIDEsIC8qIGhl
aWdodCAqLyAxKTsKLSNlbmRpZgotCi0gICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKLSAKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7Ci0g
ICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgZ2xDbGVhckNvbG9yKC8qIHJlZCAq
LyAwLCAvKiBncmVlbiAqLyAwLCAvKiBibHVlICovIDAsIC8qIGFscGhhICovIDApOworICAgIGlm
IChtX2F0dHJzLmRlcHRoKQorICAgICAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEs
ICZtX2RlcHRoQnVmZmVyKTsKIAotICAgIGlmIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSX0NPTVBMRVRFKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFdh
c24ndCBhYmxlIHRvIGNyZWF0ZSB0aGUgbWFpbiBmcmFtZWJ1ZmZlciIpOwotICAgICAgICBtX2Nv
bnRleHRWYWxpZCA9IGZhbHNlOwotICAgIH0KKyAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNl
dCBpbml0aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgorICAgIG1fY3VycmVudEZibyA9IG1fY2Fu
dmFzRmJvOworICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fY2FudmFzRmJvKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsK
IH0KIAogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwoKQpAQCAtNDg1LDYgKzQ3MSw2MyBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRv
UmdiKHF1aW50MzIgcGl4ZWwpCiAgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYgMHhmZjAwMDAp
IHwgKChwaXhlbCA+PiAxNikgJiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDApOwogfQogCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQoreworICAgIGlmICgoKHdpZHRoID09IG1fYm91bmRpbmdSZWN0LndpZHRoKCkpICYmICho
ZWlnaHQgPT0gbV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCkpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9ib3VuZGluZ1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBo
ZWlnaHQpKTsKKworICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisKKyAgICAvLyBDcmVh
dGUgY29sb3IgYnVmZmVyCisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBpZiAobV9hdHRycy5hbHBoYSkKKyAgICAgICAgZ2xU
ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
LyogZGF0YSAqLyAwKTsKKyAgICBlbHNlCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
Qiwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0Is
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOworICAgIGds
QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOworCisgICAgaWYg
KG1fYXR0cnMuZGVwdGgpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1
ZmZlcnMuCisgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAg
ICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwor
I2Vsc2UKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIHJlbmRlcmJ1
ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9T
VEVOQ0lMOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbmRl
cmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CisjZW5kaWYKKyAgICAg
ICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsK
KyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTworICAgIGJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKKyAgICBmcmFt
ZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fdGV4dHVyZSwgMCk7CisgICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgIGZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJC
VUZGRVIsIG1fZGVwdGhCdWZmZXIpOworI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAg
IGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxf
QVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZl
cik7CisjZW5kaWYKKworICAgIEdMZW51bSBzdGF0dXMgPSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7CisgICAgaWYgKHN0YXR1cyAhPSBHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJHcmFwaGljc0NvbnRleHQzRDogQ2FudmFzIEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgY2xlYXJGbGFncyA9IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUOworICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAg
ICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOwor
ICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKKworICAgIGdsQ2xlYXIoY2xlYXJGbGFncyk7
CisgICAgZ2xGbHVzaCgpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBh
aW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qIG9w
dGlvbiwgUVdpZGdldCogd2lkZ2V0KQogewogICAgIFFfVU5VU0VEKHdpZGdldCk7CkBAIC01MDQs
NyArNTQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRl
ciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMyKiBpbWFnZVBp
eGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7
CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbWFpbkZibyk7CisgICAgYmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwogICAg
IGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKIAogICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CkBAIC01NTMsNyArNTk2LDcgQEAg
dm9pZCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3Ry
aW5nJiBwcm9jKQogICAgIH0KIAogICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IERp
ZCBub3QgZmluZCBHTCBmdW5jdGlvbiAlcyIsIHByb2MudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9j
b250ZXh0VmFsaWQgPSBmYWxzZTsKKyAgICBtX3ZhbGlkID0gZmFsc2U7CiAgICAgcmV0dXJuIDA7
CiB9CiAKQEAgLTU2OSw3ICs2MTIsNyBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaQogR3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sKQogICAgIDogbV9pbnRlcm5h
bChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycywgaG9zdFdpbmRvdykpCiB7Ci0g
ICAgaWYgKCFtX2ludGVybmFsLT5pc0NvbnRleHRWYWxpZCgpKSAKKyAgICBpZiAoIW1faW50ZXJu
YWwtPmlzVmFsaWQoKSkKICAgICAgICAgbV9pbnRlcm5hbCA9IDA7CiB9CiAKQEAgLTYxNywzOCAr
NjYwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogewogICAgIGlmICgoKHdpZHRoID09IG1fY3VycmVudFdpZHRoKSAmJiAoaGVpZ2h0
ID09IG1fY3VycmVudEhlaWdodCkpIHx8ICghbV9pbnRlcm5hbCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0
ID0gaGVpZ2h0OwogCi0gICAgbV9pbnRlcm5hbC0+bV9ib3VuZGluZ1JlY3QgPSBRUmVjdEYoUVBv
aW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQpKTsKLQotICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFsLT5tX3RleHR1cmUpOwotICAgIGdsVGV4SW1h
Z2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRh
dGEgKi8gMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCk7Ci0gICAKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX21haW5GYm8pOwotICAgIG1faW50ZXJu
YWwtPmJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9p
bnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7Ci0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAg
ICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7Ci0jZWxz
ZQotICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7Ci0j
ZW5kaWYKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIDApOwotICAgIAotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9pbnRl
cm5hbC0+bV90ZXh0dXJlLCAwKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVy
bmFsLT5tX2RlcHRoQnVmZmVyKTsKLQotICAgIEdMZW51bSBzdGF0dXMgPSBtX2ludGVybmFsLT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7Ci0g
ICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogV2Fzbid0IGFibGUgdG8g
cmVzaGFwZSB0aGUgbWFpbiBmcmFtZWJ1ZmZlciIpOwotICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIH0KKyAgICBtX2ludGVybmFsLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwogCi0gICAg
Z2xDbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZ2xGbHVz
aCgpOwogfQogCiBJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpCkBAIC02OTcsNyArNzE0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8gPSBidWZmZXIgPyBidWZmZXIg
OiBtX2ludGVybmFsLT5tX21haW5GYm87CisgICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvID0g
YnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9jYW52YXNGYm87CiAgICAgbV9pbnRlcm5h
bC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86933</attachid>
            <date>2011-03-25 07:28:47 -0700</date>
            <delta_ts>2011-03-26 11:42:02 -0700</delta_ts>
            <desc>Style and cosmetic fixes.</desc>
            <filename>56825-6.diff</filename>
            <type>text/plain</type>
            <size>13848</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkN2VkOWEzLi43MDE3NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDMtMjUgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgyNQorCisgICAgICAgIEZpeGVzIGZvciBjb250ZXh0IGF0dHJp
YnV0ZSBoYW5kbGluZzoKKyAgICAgICAgLSBJbml0aWFsaXplIGRlcHRoIGFuZCBzdGVuY2lsIGJ1
ZmZlciBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5CisgICAgICAgIGFyZSBlbmFibGVkIGluIGNv
bnRleHQgYXR0cmlidXRlcy4KKyAgICAgICAgLSBBbHdheXMgZW5hYmxlIGRlcHRoIGJ1ZmZlciB3
aGVuIHN0ZW5jaWwgYnVmZmVyIGlzIGVuYWJsZWQuCisgICAgICAgIC0gRGlzYWJsZSBzdGVuY2ls
IGJ1ZmZlciBvbiBPcGVuR0wgRVMgMi4wCisgICAgICAgIC0gQ2xlYW5lZCB1cCBjbHV0dGVyIGNv
ZGUgZnJvbSBpbml0aWFsaXphdGlvbi4gTWFkZSBjb2RlIHBhdGhzIAorICAgICAgICBtb3JlIHNh
bmUuCisgICAgICAgIC0gQ2xlYXIgbWFzayBpcyBub3cgc2V0IGNvcnJlY3RseSBpbiByZXNoYXBl
KCkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRl
cy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKwogMjAxMS0w
My0yNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAx
NjE1Mzk3Li41YWQzZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMTU4LDggKzE1OCwx
MSBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CiAgICAgfkdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAotICAgIGJvb2wgaXNDb250ZXh0VmFsaWQoKSB7
IHJldHVybiBtX2NvbnRleHRWYWxpZDsgfQorICAgIC8vIFVzZWQgYnkgR3JhcGhpY3NDb250ZXh0
M0QgdG8gY2hlY2sgd2hldGhlciBjb25zdHJ1Y3Rpb24gd2FzIGRvbmUgc3VjY2VzZnVsbHkuCisg
ICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV92YWxpZDsgfQorCiAgICAgUUdMV2lkZ2V0KiBn
ZXRWaWV3cG9ydEdMV2lkZ2V0KCk7CisgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhl
aWdodCk7CiAgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
aWNzSXRlbSosIFFXaWRnZXQqKTsKICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAK
QEAgLTI2MCw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgUUdMV2lkZ2V0KiBtX3ZpZXdwb3J0R0xX
aWRnZXQ7CiAgICAgUVJlY3RGIG1fYm91bmRpbmdSZWN0OwogICAgIEdMdWludCBtX3RleHR1cmU7
Ci0gICAgR0x1aW50IG1fbWFpbkZibzsKKyAgICBHTHVpbnQgbV9jYW52YXNGYm87CiAgICAgR0x1
aW50IG1fY3VycmVudEZibzsKICAgICBHTHVpbnQgbV9kZXB0aEJ1ZmZlcjsKICAgICBib29sIG1f
bGF5ZXJDb21wb3NpdGVkOwpAQCAtMjcxLDcgKzI3NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAK
ICAgICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwotICAgIGJvb2wg
bV9jb250ZXh0VmFsaWQ7CisgICAgYm9vbCBtX3ZhbGlkOwogfTsKIAogI2lmIGRlZmluZWQgKFFU
X09QRU5HTF9FU18yKSAKQEAgLTI5NSwzOCArMjk4LDM1IEBAIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0CiAgICAgLCBtX2dsV2lkZ2V0KDApCiAgICAgLCBtX3ZpZXdwb3J0R0xXaWRnZXQoMCkKICAg
ICAsIG1fdGV4dHVyZSgwKQotICAgICwgbV9tYWluRmJvKDApCisgICAgLCBtX2NhbnZhc0Zibygw
KQogICAgICwgbV9jdXJyZW50RmJvKDApCiAgICAgLCBtX2RlcHRoQnVmZmVyKDApCiAgICAgLCBt
X2xheWVyQ29tcG9zaXRlZChmYWxzZSkKLSAgICAsIG1fY29udGV4dFZhbGlkKHRydWUpCisgICAg
LCBtX3ZhbGlkKHRydWUpCiB7CiAgICAgbV92aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRH
TFdpZGdldCgpOwogCiAgICAgaWYgKG1fdmlld3BvcnRHTFdpZGdldCkKICAgICAgICAgbV9nbFdp
ZGdldCA9IG5ldyBRR0xXaWRnZXQoMCwgbV92aWV3cG9ydEdMV2lkZ2V0KTsKLSAgICBlbHNlIHsK
LSAgICAgICAgUUdMRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgZm9ybWF0LnNldERlcHRoKHRydWUp
OwotICAgICAgICBmb3JtYXQuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsKLSAgICAgICAgZm9ybWF0
LnNldFN0ZW5jaWwoZmFsc2UpOwotCi0gICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0
KGZvcm1hdCk7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xX
aWRnZXQoKTsKIAogICAgIGlmICghbV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBkb2VzIG5vdCBoYXZlIGEgdmFs
aWQgY29udGV4dCIpOwotICAgICAgICBtX2NvbnRleHRWYWxpZCA9IGZhbHNlOworICAgICAgICBM
T0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgaW5pdGlhbGl6YXRpb24gZmFp
bGVkLiIpOworICAgICAgICBtX3ZhbGlkID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gCi0gICAgUUdMRm9ybWF0IGZvcm1hdCA9IG1fZ2xXaWRnZXQtPmZvcm1hdCgpOwogCi0gICAg
bV9hdHRycy5hbHBoYSA9IGZvcm1hdC5hbHBoYSgpOwotICAgIG1fYXR0cnMuZGVwdGggPSBmb3Jt
YXQuZGVwdGgoKTsKLSAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmb3JtYXQuc3RlbmNpbCgpOworICAg
IC8vIE5vIG5lZWQgdmlld3BvcnQgb2YgUUdMV2lkZ2V0LiBXZSB1c2UgdG8gZ2V0IGEgc2VwYXJh
dGUgUUdMQ29udGV4dC4KKyAgICBtX2dsV2lkZ2V0LT5zZXRHZW9tZXRyeSgwLCAwLCAwLCAwKTsK
KworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgbV9hdHRycy5zdGVuY2lsID0gZmFs
c2U7CisjZWxzZQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIG1fYXR0cnMuZGVw
dGggPSB0cnVlOworI2VuZGlmCiAgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKLSAgICBt
X2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogCkBAIC00MjEsNDQgKzQyMSwyOSBAQCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dAogICAgIHZlcnRleEF0dHJpYjRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWI0
ZnYpOwogICAgIHZlcnRleEF0dHJpYlBvaW50ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4
QXR0cmliUG9pbnRlcik7CiAKLSAgICBpZiAoIW1fY29udGV4dFZhbGlkKSB7CisgICAgaWYgKCFt
X3ZhbGlkKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVk
ZWQgT3BlbkdMIGV4dGVuc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUiKTsKLSAgICAgICAgbV9jb250
ZXh0VmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIENyZWF0
ZSBidWZmZXJzIGZvciB0aGUgY2FudmFzIEZCTy4KKyAgICBnZW5GcmFtZWJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1fY2FudmFzRmJvKTsKKwogICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVy
ZSk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90
ZXh0dXJlKTsKICAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIpOwogICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUik7CiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNz
Q29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKICAgICBnbFRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwg
R3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4SW1hZ2UyRChHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIDEs
IDEsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfQllURSwgMCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCk7CiAKLSAgICBnZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fbWFpbkZi
byk7Ci0gICAgbV9jdXJyZW50RmJvID0gbV9tYWluRmJvOwotCi0gICAgYmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWluRmJvKTsKLQotICAgIGdlblJl
bmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhCdWZmZXIpOwotICAgIGJpbmRSZW5k
ZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7
Ci0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9D
T01QT05FTlQxNiwgLyogd2lkdGggKi8gMSwgLyogaGVpZ2h0ICovIDEpOwotI2Vsc2UKLSAgICBy
ZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIC8qIHdpZHRoICovIDEsIC8qIGhlaWdodCAq
LyAxKTsKLSNlbmRpZgotCi0gICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCAwKTsKLSAKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5U
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7Ci0gICAgZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgZ2xDbGVhckNvbG9yKC8qIHJlZCAqLyAwLCAv
KiBncmVlbiAqLyAwLCAvKiBibHVlICovIDAsIC8qIGFscGhhICovIDApOworICAgIGlmIChtX2F0
dHJzLmRlcHRoKQorICAgICAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2Rl
cHRoQnVmZmVyKTsKIAotICAgIGlmIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NP
TVBMRVRFKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFdhc24ndCBh
YmxlIHRvIGNyZWF0ZSB0aGUgbWFpbiBmcmFtZWJ1ZmZlciIpOwotICAgICAgICBtX2NvbnRleHRW
YWxpZCA9IGZhbHNlOwotICAgIH0KKyAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNldCBpbml0
aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgorICAgIG1fY3VycmVudEZibyA9IG1fY2FudmFzRmJv
OworICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y2FudmFzRmJvKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIAog
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQpA
QCAtNDg1LDYgKzQ3MCw2MyBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1
aW50MzIgcGl4ZWwpCiAgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYgMHhmZjAwMDApIHwgKChw
aXhlbCA+PiAxNikgJiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDApOwogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor
eworICAgIGlmICgoKHdpZHRoID09IG1fYm91bmRpbmdSZWN0LndpZHRoKCkpICYmIChoZWlnaHQg
PT0gbV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCkpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9i
b3VuZGluZ1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQp
KTsKKworICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisKKyAgICAvLyBDcmVhdGUgY29s
b3IgYnVmZmVyCisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV90ZXh0dXJlKTsKKyAgICBpZiAobV9hdHRycy5hbHBoYSkKKyAgICAgICAgZ2xUZXhJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0
YSAqLyAwKTsKKyAgICBlbHNlCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgd2lk
dGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOworICAgIGdsQmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOworCisgICAgaWYgKG1fYXR0
cnMuZGVwdGgpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMu
CisgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgbV9kZXB0aEJ1ZmZlcik7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICAgICAg
cmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworI2Vsc2UK
KyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lM
OCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CisjZW5kaWYKKyAgICAgICAgYmlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKyAgICB9
CisKKyAgICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4KKyAgICBiaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X3RleHR1cmUsIDApOworICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAgICAgICBmcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBtX2RlcHRoQnVmZmVyKTsKKyNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBpZiAo
bV9hdHRycy5zdGVuY2lsKQorICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFD
SE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwor
I2VuZGlmCisKKyAgICBHTGVudW0gc3RhdHVzID0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOworICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIExPR19FUlJPUigiR3Jh
cGhpY3NDb250ZXh0M0Q6IENhbnZhcyBGQk8gaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGNsZWFyRmxhZ3MgPSBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAg
Y2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICBp
ZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4
dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisKKyAgICBnbENsZWFyKGNsZWFyRmxhZ3MpOworICAg
IGdsRmx1c2goKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChR
UGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24s
IFFXaWRnZXQqIHdpZGdldCkKIHsKICAgICBRX1VOVVNFRCh3aWRnZXQpOwpAQCAtNTA0LDcgKzU0
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMg
PSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAg
ICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX21haW5GYm8pOworICAgIGJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKICAgICBnbFJl
YWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBpbWFnZVBpeGVscyk7CiAKICAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOwpAQCAtNTUzLDcgKzU5NSw3IEBAIHZvaWQq
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYg
cHJvYykKICAgICB9CiAKICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBEaWQgbm90
IGZpbmQgR0wgZnVuY3Rpb24gJXMiLCBwcm9jLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29udGV4
dFZhbGlkID0gZmFsc2U7CisgICAgbV92YWxpZCA9IGZhbHNlOwogICAgIHJldHVybiAwOwogfQog
CkBAIC01NjksNyArNjExLDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmkKIEdyYXBoaWNzQ29u
dGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCkKICAgICA6IG1faW50ZXJuYWwobmV3
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoYXR0cnMsIGhvc3RXaW5kb3cpKQogewotICAgIGlm
ICghbV9pbnRlcm5hbC0+aXNDb250ZXh0VmFsaWQoKSkgCisgICAgaWYgKCFtX2ludGVybmFsLT5p
c1ZhbGlkKCkpCiAgICAgICAgIG1faW50ZXJuYWwgPSAwOwogfQogCkBAIC02MTcsMzggKzY1OSwx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdo
dCkKIHsKICAgICBpZiAoKCh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCkgJiYgKGhlaWdodCA9PSBt
X2N1cnJlbnRIZWlnaHQpKSB8fCAoIW1faW50ZXJuYWwpKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKICAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwogICAgIG1fY3VycmVudEhlaWdodCA9IGhl
aWdodDsKIAotICAgIG1faW50ZXJuYWwtPm1fYm91bmRpbmdSZWN0ID0gUVJlY3RGKFFQb2ludEYo
MCwgMCksIFFTaXplRih3aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV9pbnRlcm5hbC0+bV90ZXh0dXJlKTsKLSAgICBnbFRleEltYWdlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICov
IDApOwotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAp
OwotICAgCi0gICAgbV9pbnRlcm5hbC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgbV9pbnRlcm5hbC0+bV9tYWluRmJvKTsKLSAgICBtX2ludGVybmFsLT5i
aW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJu
YWwtPm1fZGVwdGhCdWZmZXIpOwotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgcmVu
ZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwotI2Vsc2UKLSAg
ICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwotI2VuZGlm
Ci0gICAgbV9pbnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCAwKTsKLSAgICAKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwt
Pm1fdGV4dHVyZSwgMCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+
bV9kZXB0aEJ1ZmZlcik7Ci0KLSAgICBHTGVudW0gc3RhdHVzID0gbV9pbnRlcm5hbC0+Y2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOwotICAgIGlm
IChzdGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFdhc24ndCBhYmxlIHRvIHJlc2hh
cGUgdGhlIG1haW4gZnJhbWVidWZmZXIiKTsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICB9CisgICAgbV9pbnRlcm5hbC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGdsQ2xl
YXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOwotICAgIGdsRmx1c2goKTsK
IH0KIAogSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKQpAQCAtNjk3LDcgKzcxMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZm
ZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvID0gYnVmZmVyID8gYnVmZmVyIDogbV9p
bnRlcm5hbC0+bV9tYWluRmJvOworICAgIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyA9IGJ1ZmZl
ciA/IGJ1ZmZlciA6IG1faW50ZXJuYWwtPm1fY2FudmFzRmJvOwogICAgIG1faW50ZXJuYWwtPmJp
bmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87032</attachid>
            <date>2011-03-26 11:42:02 -0700</date>
            <delta_ts>2011-03-28 07:40:19 -0700</delta_ts>
            <desc>Cosmetic fixes.</desc>
            <filename>56825.diff</filename>
            <type>text/plain</type>
            <size>13915</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjI2ZmQxLi5iYzhjZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTEtMDMtMjYgIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVu
Y2lsLWFudGlhbGlhcy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjgyNQorCisgICAgICAgIEZpeGVzIGZvciBjb250ZXh0IGF0dHJp
YnV0ZSBoYW5kbGluZzoKKyAgICAgICAgLSBJbml0aWFsaXplIGRlcHRoIGFuZCBzdGVuY2lsIGJ1
ZmZlciBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5CisgICAgICAgIGFyZSBlbmFibGVkIGluIGNv
bnRleHQgYXR0cmlidXRlcy4KKyAgICAgICAgLSBBbHdheXMgZW5hYmxlIGRlcHRoIGJ1ZmZlciB3
aGVuIHN0ZW5jaWwgYnVmZmVyIGlzIGVuYWJsZWQuCisgICAgICAgIC0gRGlzYWJsZSBzdGVuY2ls
IGJ1ZmZlciBvbiBPcGVuR0wgRVMgMi4wCisgICAgICAgIC0gQ2xlYW5lZCB1cCBjbHV0dGVyIGNv
ZGUgZnJvbSBpbml0aWFsaXphdGlvbi4gTWFkZSBjb2RlIHBhdGhzIAorICAgICAgICBtb3JlIHNh
bmUuCisgICAgICAgIC0gQ2xlYXIgbWFzayBpcyBub3cgc2V0IGNvcnJlY3RseSBpbiByZXNoYXBl
KCkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRl
cy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKwogMjAxMS0w
My0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAxNjE1Mzk3Li40ZGFh
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMTU4LDggKzE1OCwxMCBAQCBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CiAgICAgfkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwoKTsKIAotICAgIGJvb2wgaXNDb250ZXh0VmFsaWQoKSB7IHJldHVybiBtX2Nv
bnRleHRWYWxpZDsgfQorICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1fdmFsaWQ7IH0KKwog
ICAgIFFHTFdpZGdldCogZ2V0Vmlld3BvcnRHTFdpZGdldCgpOworICAgIHZvaWQgcmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBR
U3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qLCBRV2lkZ2V0Kik7CiAgICAgUVJlY3RGIGJvdW5kaW5n
UmVjdCgpIGNvbnN0OwogCkBAIC0yNjAsNyArMjYyLDcgQEAgcHVibGljOgogICAgIFFHTFdpZGdl
dCogbV92aWV3cG9ydEdMV2lkZ2V0OwogICAgIFFSZWN0RiBtX2JvdW5kaW5nUmVjdDsKICAgICBH
THVpbnQgbV90ZXh0dXJlOwotICAgIEdMdWludCBtX21haW5GYm87CisgICAgR0x1aW50IG1fY2Fu
dmFzRmJvOwogICAgIEdMdWludCBtX2N1cnJlbnRGYm87CiAgICAgR0x1aW50IG1fZGVwdGhCdWZm
ZXI7CiAgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZDsKQEAgLTI3MSw3ICsyNzMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogCiAgICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBw
cm9jKTsKLSAgICBib29sIG1fY29udGV4dFZhbGlkOworICAgIGJvb2wgbV92YWxpZDsKIH07CiAK
ICNpZiBkZWZpbmVkIChRVF9PUEVOR0xfRVNfMikgCkBAIC0yOTUsMzggKzI5NywzNSBAQCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dAogICAgICwgbV9nbFdpZGdldCgwKQogICAgICwgbV92aWV3cG9y
dEdMV2lkZ2V0KDApCiAgICAgLCBtX3RleHR1cmUoMCkKLSAgICAsIG1fbWFpbkZibygwKQorICAg
ICwgbV9jYW52YXNGYm8oMCkKICAgICAsIG1fY3VycmVudEZibygwKQogICAgICwgbV9kZXB0aEJ1
ZmZlcigwKQogICAgICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCi0gICAgLCBtX2NvbnRleHRW
YWxpZCh0cnVlKQorICAgICwgbV92YWxpZCh0cnVlKQogewogICAgIG1fdmlld3BvcnRHTFdpZGdl
dCA9IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKIAogICAgIGlmIChtX3ZpZXdwb3J0R0xXaWRnZXQp
CiAgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KDAsIG1fdmlld3BvcnRHTFdpZGdl
dCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFFHTEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAgIGZvcm1h
dC5zZXREZXB0aCh0cnVlKTsKLSAgICAgICAgZm9ybWF0LnNldFNhbXBsZUJ1ZmZlcnModHJ1ZSk7
Ci0gICAgICAgIGZvcm1hdC5zZXRTdGVuY2lsKGZhbHNlKTsKLQotICAgICAgICBtX2dsV2lkZ2V0
ID0gbmV3IFFHTFdpZGdldChmb3JtYXQpOwotICAgIH0KKyAgICBlbHNlCisgICAgICAgIG1fZ2xX
aWRnZXQgPSBuZXcgUUdMV2lkZ2V0KCk7CiAKICAgICBpZiAoIW1fZ2xXaWRnZXQtPmlzVmFsaWQo
KSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgZG9l
cyBub3QgaGF2ZSBhIHZhbGlkIGNvbnRleHQiKTsKLSAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBm
YWxzZTsKKyAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGlu
aXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgbV92YWxpZCA9IGZhbHNlOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotIAotICAgIFFHTEZvcm1hdCBmb3JtYXQgPSBtX2dsV2lkZ2V0LT5m
b3JtYXQoKTsKIAotICAgIG1fYXR0cnMuYWxwaGEgPSBmb3JtYXQuYWxwaGEoKTsKLSAgICBtX2F0
dHJzLmRlcHRoID0gZm9ybWF0LmRlcHRoKCk7Ci0gICAgbV9hdHRycy5zdGVuY2lsID0gZm9ybWF0
LnN0ZW5jaWwoKTsKKyAgICAvLyBHZW9tZXRyeSBjYW4gYmUgc2V0IHRvIHplcm8gYmVjYXVzZSBt
X2dsV2lkZ2V0IGlzIHVzZWQgb25seSBmb3IgaXRzIFFHTENvbnRleHQuCisgICAgbV9nbFdpZGdl
dC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7CisKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18y
KQorICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOworI2Vsc2UKKyAgICBpZiAobV9hdHRycy5z
dGVuY2lsKQorICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKKyNlbmRpZgogICAgIG1fYXR0
cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0gICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0
cnVlOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIApAQCAtNDIxLDQ0ICs0MjAs
MjkgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliNGZ2KTsKICAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOwogCi0gICAgaWYgKCFt
X2NvbnRleHRWYWxpZCkgeworICAgIGlmICghbV92YWxpZCkgewogICAgICAgICBMT0dfRVJST1Io
IkdyYXBoaWNzQ29udGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5HTCBleHRlbnNpb25zIGFyZSBub3Qg
YXZhaWxhYmxlIik7Ci0gICAgICAgIG1fY29udGV4dFZhbGlkID0gZmFsc2U7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8u
CisgICAgZ2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2NhbnZhc0Zibyk7CisKICAg
ICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CiAgICAgZ2xUZXhQYXJhbWV0ZXJm
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKICAgICBnbFRleFBhcmFt
ZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwogICAgIGdsVGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19F
REdFKTsKLSAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCAxLCAxLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApOwogICAgIGdsQmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogCi0gICAgZ2VuRnJhbWVidWZm
ZXJzKC8qIGNvdW50ICovIDEsICZtX21haW5GYm8pOwotICAgIG1fY3VycmVudEZibyA9IG1fbWFp
bkZibzsKLQotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fbWFpbkZibyk7Ci0KLSAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZt
X2RlcHRoQnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIp
Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIC8qIHdpZHRoICovIDEsIC8q
IGhlaWdodCAqLyAxKTsKLSNlbHNlCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5U
LCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7Ci0jZW5kaWYKLQotICAgIGJpbmRSZW5k
ZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0gCi0gICAgZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX3RleHR1cmUsIDApOwotICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1F
TlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotICAg
IGdsQ2xlYXJDb2xvcigvKiByZWQgKi8gMCwgLyogZ3JlZW4gKi8gMCwgLyogYmx1ZSAqLyAwLCAv
KiBhbHBoYSAqLyAwKTsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2VuUmVuZGVy
YnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9kZXB0aEJ1ZmZlcik7CiAKLSAgICBpZiAoY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewotICAgICAgICBMT0dfRVJST1Io
IkdyYXBoaWNzQ29udGV4dDNEOiBXYXNuJ3QgYWJsZSB0byBjcmVhdGUgdGhlIG1haW4gZnJhbWVi
dWZmZXIiKTsKLSAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBmYWxzZTsKLSAgICB9CisgICAgLy8g
QmluZCBjYW52YXMgRkJPIGFuZCBzZXQgaW5pdGlhbCBjbGVhciBjb2xvciB0byBibGFjay4KKyAg
ICBtX2N1cnJlbnRGYm8gPSBtX2NhbnZhc0ZibzsKKyAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZ2xDbGVhckNvbG9y
KDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5H
cmFwaGljc0NvbnRleHQzREludGVybmFsKCkKQEAgLTQ4NSw2ICs0NjksNjMgQEAgc3RhdGljIGlu
bGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogICAgIHJldHVybiAoKHBp
eGVsIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhmZikgfCAocGl4ZWwg
JiAweGZmMDBmZjAwKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBpZiAod2lkdGggPT0gbV9ib3VuZGlu
Z1JlY3Qud2lkdGgoKSAmJiBoZWlnaHQgPT0gbV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fYm91bmRpbmdSZWN0ID0gUVJlY3RGKFFQb2ludEYoMCwgMCks
IFFTaXplRih3aWR0aCwgaGVpZ2h0KSk7CisKKyAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OworCisgICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgorICAgIGdsQmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgaWYgKG1fYXR0cnMuYWxw
aGEpCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
LyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdpZHRoLCBoZWlnaHQsIC8q
IGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZWxzZQorICAgICAgICBnbFRleElt
YWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0
YSAqLyAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAwKTsKKworICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7CisgICAgICAgIC8vIENyZWF0ZSBkZXB0
aCBhbmQgc3RlbmNpbCBidWZmZXJzLgorICAgICAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworI2lmIGRlZmluZWQoUVRf
T1BFTkdMX0VTXzIpCisgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3
aWR0aCwgaGVpZ2h0KTsKKyNlbHNlCisgICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAg
ICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZG
RVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJC
VUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQp
OworI2VuZGlmCisgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJF
TkRFUkJVRkZFUiwgMCk7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IGNhbnZhcyBGQk8uCisg
ICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52
YXNGYm8pOworICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKKyAgICBpZiAobV9hdHRycy5kZXB0
aCkKKyAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisjaWYgIWRlZmluZWQoUVRf
T1BFTkdMX0VTXzIpCisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVG
RkVSLCBtX2RlcHRoQnVmZmVyKTsKKyNlbmRpZgorCisgICAgR0xlbnVtIHN0YXR1cyA9IGNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKKyAgICBp
ZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewor
ICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBDYW52YXMgRkJPIGluaXRpYWxp
emF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBjbGVh
ckZsYWdzID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1f
YXR0cnMuZGVwdGgpCisgICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgY2xlYXJG
bGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworCisgICAgZ2xD
bGVhcihjbGVhckZsYWdzKTsKKyAgICBnbEZsdXNoKCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlv
bkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgUV9VTlVTRUQo
d2lkZ2V0KTsKQEAgLTUwNCw3ICs1NDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAg
IHF1aW50MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2Ny
ZWVuSW1hZ2UuYml0cygpKTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWluRmJv
KTsKKyAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2NhbnZhc0Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOwogCiAgICAgYmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jdXJyZW50RmJvKTsKQEAg
LTU1Myw3ICs1OTQsNyBAQCB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9j
QWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCiAgICAgfQogCiAgICAgTE9HX0VSUk9SKCJHcmFw
aGljc0NvbnRleHQzRDogRGlkIG5vdCBmaW5kIEdMIGZ1bmN0aW9uICVzIiwgcHJvYy51dGY4KCku
ZGF0YSgpKTsKLSAgICBtX2NvbnRleHRWYWxpZCA9IGZhbHNlOworICAgIG1fdmFsaWQgPSBmYWxz
ZTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTY5LDcgKzYxMCw3IEBAIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wp
CiAgICAgOiBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKGF0dHJzLCBo
b3N0V2luZG93KSkKIHsKLSAgICBpZiAoIW1faW50ZXJuYWwtPmlzQ29udGV4dFZhbGlkKCkpIAor
ICAgIGlmICghbV9pbnRlcm5hbC0+aXNWYWxpZCgpKQogICAgICAgICBtX2ludGVybmFsID0gMDsK
IH0KIApAQCAtNjE1LDQwICs2NTYsMTMgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNz
Q29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIGlm
ICgoKHdpZHRoID09IG1fY3VycmVudFdpZHRoKSAmJiAoaGVpZ2h0ID09IG1fY3VycmVudEhlaWdo
dCkpIHx8ICghbV9pbnRlcm5hbCkpCisgICAgaWYgKHdpZHRoID09IG1fY3VycmVudFdpZHRoICYm
IGhlaWdodCA9PSBtX2N1cnJlbnRIZWlnaHQgfHwgKCFtX2ludGVybmFsKSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKICAgICBtX2N1cnJlbnRI
ZWlnaHQgPSBoZWlnaHQ7CiAKLSAgICBtX2ludGVybmFsLT5tX2JvdW5kaW5nUmVjdCA9IFFSZWN0
RihRUG9pbnRGKDAsIDApLCBRU2l6ZUYod2lkdGgsIGhlaWdodCkpOwotCi0gICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLQotICAgIGdsQmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSk7Ci0gICAgZ2xU
ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
LyogZGF0YSAqLyAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwKTsKLSAgIAotICAgIG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fbWFpbkZibyk7Ci0gICAgbV9p
bnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBtX2ludGVybmFsLT5tX2RlcHRoQnVmZmVyKTsKLSNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18y
KQotICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsK
LSNlbHNlCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVS
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0
KTsKLSNlbmRpZgotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0gICAgCi0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X2ludGVybmFsLT5tX3RleHR1cmUsIDApOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1f
aW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIpOwotCi0gICAgR0xlbnVtIHN0YXR1cyA9IG1faW50ZXJu
YWwtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
KTsKLSAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01Q
TEVURSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBXYXNuJ3QgYWJs
ZSB0byByZXNoYXBlIHRoZSBtYWluIGZyYW1lYnVmZmVyIik7Ci0gICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgfQotCi0gICAgZ2xDbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVG
RkVSX0JJVCk7Ci0gICAgZ2xGbHVzaCgpOworICAgIG1faW50ZXJuYWwtPnJlc2hhcGUod2lkdGgs
IGhlaWdodCk7CiB9CiAKIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCkKQEAgLTY5Nyw3ICs3MTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyA9IGJ1ZmZlciA/IGJ1
ZmZlciA6IG1faW50ZXJuYWwtPm1fbWFpbkZibzsKKyAgICBtX2ludGVybmFsLT5tX2N1cnJlbnRG
Ym8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX2NhbnZhc0ZibzsKICAgICBtX2lu
dGVybmFsLT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8p
OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>