<?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>73949</bug_id>
          
          <creation_ts>2011-12-06 13:58:12 -0800</creation_ts>
          <short_desc>Use Skia&apos;s Gaussian blur implementation for the FEGaussianBlur filter</short_desc>
          <delta_ts>2011-12-08 14:30:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephen White">senorblanco</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>dino</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>516222</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-06 13:58:12 -0800</bug_when>
    <thetext>Call out to Skia&apos;s implementation of Gaussian blur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516232</commentid>
    <comment_count>1</comment_count>
      <attachid>118109</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-06 14:04:17 -0800</bug_when>
    <thetext>Created attachment 118109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516508</commentid>
    <comment_count>2</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-12-06 23:22:50 -0800</bug_when>
    <thetext>Just a question since you didn&apos;t set r?: adding new fields to GraphicsContext makes a burden for all platforms. If this is intended for SVG use only, why don&apos;t you put this change there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516656</commentid>
    <comment_count>3</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-07 08:24:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Just a question since you didn&apos;t set r?: adding new fields to GraphicsContext makes a burden for all platforms. If this is intended for SVG use only, why don&apos;t you put this change there?

(I assume you mean a maintenance burden, not a memory burden, since this is only a (non-virtual) member function, so it shouldn&apos;t cause additional memory bloat.)  The idea was that other ports could also implement this API.  For instance, the CoreGraphics port could use CoreImage to implement it.

I could put the skia-specific code in platform/graphics/filters, but that seems unfortunate, and would pepper platform/graphics/filters with platform-specific code.  I feel it&apos;s better to abstract it behind an API.  It would also allow us to re-use this API in other contexts (for example, as a webkit-specific extension to do gaussian blurs in &lt;canvas&gt;), although that&apos;s not the thrust of this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517223</commentid>
    <comment_count>4</comment_count>
      <attachid>118109</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-12-07 23:52:26 -0800</bug_when>
    <thetext>Comment on attachment 118109
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:195
&gt; +void GraphicsContext::blurImage(Image*, const IntPoint&amp;, float, float)
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +}
&gt; +void GraphicsContext::blurImageBuffer(ImageBuffer*, const IntPoint&amp;, float, float)
&gt; +{
&gt; +    ASSERT_NOT_REACHED();
&gt; +}

I wonder if it makes more sense to move this to either Image or ImageBuffer (later might make more sense).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517354</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-12-08 06:12:12 -0800</bug_when>
    <thetext>&gt; I could put the skia-specific code in platform/graphics/filters, but that seems unfortunate, and would pepper platform/graphics/filters with platform-specific code.  I feel it&apos;s better to abstract it behind an API.  It would also allow us to re-use this API in other contexts (for example, as a webkit-specific extension to do gaussian blurs in &lt;canvas&gt;), although that&apos;s not the thrust of this work.

We have already put platform specific code there, see the ARM directory. This is the Platform directory after all! I know we could put everything to GraphicsContext but this is not the WebKit way. It is hard for porting GraphicsContext as it is now, so we should not add things because it might be useful for somebody sometimes in the future. I think the optimization itself is usefult, just puting it into a central data structure without a strong reason is just an extra maintainability burden without any advantage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517472</commentid>
    <comment_count>6</comment_count>
      <attachid>118406</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-08 09:28:10 -0800</bug_when>
    <thetext>Created attachment 118406
Move skia-specific code to FEGaussianBlur.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517473</commentid>
    <comment_count>7</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-08 09:31:18 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 118109 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118109&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:195
&gt; &gt; +void GraphicsContext::blurImage(Image*, const IntPoint&amp;, float, float)
&gt; &gt; +{
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; &gt; +}
&gt; &gt; +void GraphicsContext::blurImageBuffer(ImageBuffer*, const IntPoint&amp;, float, float)
&gt; &gt; +{
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; &gt; +}
&gt; 
&gt; I wonder if it makes more sense to move this to either Image or ImageBuffer (later might make more sense).

Could do that, but ImageBuffer::draw() and drawPattern() are private, so there would still be a need for public wrapper functions in GraphicsContext (or at least, that&apos;s the current precedent).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517477</commentid>
    <comment_count>8</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-08 09:33:25 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; I could put the skia-specific code in platform/graphics/filters, but that seems unfortunate, and would pepper platform/graphics/filters with platform-specific code.  I feel it&apos;s better to abstract it behind an API.  It would also allow us to re-use this API in other contexts (for example, as a webkit-specific extension to do gaussian blurs in &lt;canvas&gt;), although that&apos;s not the thrust of this work.
&gt; 
&gt; We have already put platform specific code there, see the ARM directory. This is the Platform directory after all! I know we could put everything to GraphicsContext but this is not the WebKit way. It is hard for porting GraphicsContext as it is now, so we should not add things because it might be useful for somebody sometimes in the future. I think the optimization itself is usefult, just puting it into a central data structure without a strong reason is just an extra maintainability burden without any advantage.

OK, fair enough.  I&apos;ve moved it to FEGaussianBlur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517485</commentid>
    <comment_count>9</comment_count>
      <attachid>118406</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-12-08 09:43:30 -0800</bug_when>
    <thetext>Comment on attachment 118406
Move skia-specific code to FEGaussianBlur.cpp

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

&gt; Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:279
&gt; +#if USE(SKIA)
&gt; +    if (filter()-&gt;renderingMode() == Accelerated) {
&gt; +        ImageBuffer* resultImage = createImageBufferResult();
&gt; +        if (!resultImage)
&gt; +            return;

I wonder if you can move this code into a new file, just like it is done for the ARM port (see platformApplyNeon()).

&gt; Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:293
&gt; +        paint.setImageFilter(new SkBlurImageFilter(stdX, stdY))-&gt;unref();

As far as I know, the Skia blur filter was just a simple box blur, no gaussian Blur. If this is the case, you will get significant differences on the blur result. The SVG specification doesn&apos;t allow a to big delta. Can you confirm that? You should see bigger differences on pixel results on some tests. If you see differences, this would mean a standard violation. But if you can confirm that it is a box blur filter, you just need to run it three times and the result should look like a gaussian blur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517531</commentid>
    <comment_count>10</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-08 10:36:50 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 118406 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118406&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:279
&gt; &gt; +#if USE(SKIA)
&gt; &gt; +    if (filter()-&gt;renderingMode() == Accelerated) {
&gt; &gt; +        ImageBuffer* resultImage = createImageBufferResult();
&gt; &gt; +        if (!resultImage)
&gt; &gt; +            return;
&gt; 
&gt; I wonder if you can move this code into a new file, just like it is done for the ARM port (see platformApplyNeon()).

OK, will give it a shot.  It will look a little different from the Neon case, since I want to avoid use of the ByteArrays (being GPU-accelerated), so I&apos;ll need to hook in a little earlier than the call to platformApply(), 

&gt; &gt; Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:293
&gt; &gt; +        paint.setImageFilter(new SkBlurImageFilter(stdX, stdY))-&gt;unref();
&gt; 
&gt; As far as I know, the Skia blur filter was just a simple box blur, no gaussian Blur. If this is the case, you will get significant differences on the blur result. The SVG specification doesn&apos;t allow a to big delta. Can you confirm that? You should see bigger differences on pixel results on some tests. If you see differences, this would mean a standard violation. But if you can confirm that it is a box blur filter, you just need to run it three times and the result should look like a gaussian blur.

Nope, it&apos;s now a Gaussian:  triple-box on the CPU side, and true Gaussian on the GPU side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517610</commentid>
    <comment_count>11</comment_count>
      <attachid>118434</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-08 11:33:19 -0800</bug_when>
    <thetext>Created attachment 118434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517620</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-12-08 11:44:33 -0800</bug_when>
    <thetext>&gt; OK, fair enough.  I&apos;ve moved it to FEGaussianBlur.

Thanks!

&gt; I wonder if you can move this code into a new file, just like it is done for the ARM port (see platformApplyNeon()).

Not sure this can be done without much code duplication. Maybe the body of the &quot;if&quot; statement could be moved to an inline function, but you would still need an &quot;if&quot;, since SKIA is not enough, the condition must also be satisfied.

Still the body of the platformApplySoftware would be more readable if we would move the body of the &quot;if&quot; statement into an inline function.

Otherwise the patch is ok for me. Just this minor change, and I will give you an r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517626</commentid>
    <comment_count>13</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-12-08 11:48:38 -0800</bug_when>
    <thetext>Mid air collision :)

Ok, your latest patch is fine by me. Do you wish to make it an inline function (turn the .cpp into a .h)? Either is ok for me, inline is faster, no other difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517633</commentid>
    <comment_count>14</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-08 11:52:42 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Mid air collision :)
&gt; 
&gt; Ok, your latest patch is fine by me. Do you wish to make it an inline function (turn the .cpp into a .h)? Either is ok for me, inline is faster, no other difference.

I prefer to leave it out-of-line, unless it shows up as a hot spot in profiling (which I doubt).

Thanks for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517637</commentid>
    <comment_count>15</comment_count>
      <attachid>118434</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-12-08 11:58:21 -0800</bug_when>
    <thetext>Comment on attachment 118434
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517799</commentid>
    <comment_count>16</comment_count>
      <attachid>118434</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 14:29:56 -0800</bug_when>
    <thetext>Comment on attachment 118434
Patch

Clearing flags on attachment: 118434

Committed r102385: &lt;http://trac.webkit.org/changeset/102385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517800</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 14:30:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118109</attachid>
            <date>2011-12-06 14:04:17 -0800</date>
            <delta_ts>2011-12-08 09:28:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73949-20111206170415.patch</filename>
            <type>text/plain</type>
            <size>5725</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDExLTEyLTA2ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBTa2lhJ3Mg
aW1wbGVtZW50YXRpb24gb2YgR2F1c3NpYW4gYmx1ciB3aGVuIGFjY2VsZXJhdGVkIGZpbHRlcnMK
KyAgICAgICAgYXJlIGVuYWJsZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Mzk0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHRoaXMgd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoZSBT
VkcgdGVzdHMgcnVuIGluIEdQVSBtb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Ymx1ckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Ymx1ckltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgTmV3IGVudHJ5IHBvaW50cyBmb3IgZHJhd2luZyBhbiBpbWFnZSB3aXRoIGEgR2F1
c3NpYW4gYmx1ci4gIFN0dWJiZWQKKyAgICAgICAgb3V0IG9uIG5vbi1Ta2lhIHBsYXRmb3Jtcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICBPbiB0aGUgU2tpYSBwb3J0LCB1c2UgR3JhcGhpY3NDb250ZXh0OjpibHVySW1h
Z2VCdWZmZXIoKSBmb3IgZHJhd2luZworICAgICAgICBHYXVzc2lhbiBibHVycyBpbiBhY2NlbGVy
YXRlZCBtb2RlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250
ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJsdXJJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJsdXJJbWFnZUJ1ZmZlcik6
CisgICAgICAgIENhbGwgb3V0IHRvIHNraWEgaW1wbGVtZW50YXRpb24sIHVzaW5nIFNrQmx1cklt
YWdlRmlsdGVyLgorCiAyMDExLTEyLTA2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU2V0IG9wYXF1ZSBmbGFnIGZvciBJbWFnZUxheWVy
Q2hyb21pdW0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMTAyMTc0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg0LDYgKzE4NCwxNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0
U2l6CiAgICAgcmV0dXJuIGhhc1NoYWRvdygpOwogfQogCisjaWYgIVVTRShTS0lBKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmJsdXJJbWFnZShJbWFnZSosIGNvbnN0IEludFBvaW50JiwgZmxvYXQs
IGZsb2F0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmJsdXJJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEludFBvaW50JiwgZmxv
YXQsIGZsb2F0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorI2VuZGlmCisKIGZs
b2F0IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMTAyMTc0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3Nyw2ICszNzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImLCBDb2xvclNwYWNl
JikgY29uc3Q7CiAgICAgICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKIAorICAgICAgICB2b2lkIGJs
dXJJbWFnZShJbWFnZSosIGNvbnN0IEludFBvaW50JiwgZmxvYXQgc2lnbWFYLCBmbG9hdCBzaWdt
YVkpOworICAgICAgICB2b2lkIGJsdXJJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IElu
dFBvaW50JiwgZmxvYXQgc2lnbWFYLCBmbG9hdCBzaWdtYVkpOworCiAgICAgICAgIHZvaWQgZHJh
d0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBpbnQgd2lkdGgsIGludCBvZmZzZXQs
IGNvbnN0IENvbG9yJik7CiAgICAgICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwg
aW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmNwcAkocmV2aXNpb24gMTAyMTc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
Nyw2ICsyNjcsMjQgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YQog
ewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAorI2lmIFVTRShTS0lB
KQorICAgIGlmIChmaWx0ZXIoKS0+cmVuZGVyaW5nTW9kZSgpID09IEFjY2VsZXJhdGVkKSB7Cisg
ICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0
KCk7CisgICAgICAgIGlmICghcmVzdWx0SW1hZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgSW50UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CisKKyAgICAgICAgc2V0SXNBbHBoYUltYWdlKGluLT5p
c0FscGhhSW1hZ2UoKSk7CisKKyAgICAgICAgZmxvYXQgc3RkWCA9IGZpbHRlcigpLT5hcHBseUhv
cml6b250YWxTY2FsZShtX3N0ZFgpOworICAgICAgICBmbG9hdCBzdGRZID0gZmlsdGVyKCktPmFw
cGx5VmVydGljYWxTY2FsZShtX3N0ZFkpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS0+Ymx1ckltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIGRyYXdpbmdS
ZWdpb24ubG9jYXRpb24oKSwgc3RkWCwgc3RkWSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpOwogICAgIGlmICghc3JjUGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiAxMDIxNzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJCaXRt
YXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKQEAgLTQyLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAKICNpbmNsdWRlICJTa0JpdG1hcC5oIgor
I2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU2tCbHVyTWFza0ZpbHRl
ci5oIgogI2luY2x1ZGUgIlNrQ29sb3JGaWx0ZXIuaCIKICNpbmNsdWRlICJTa0Nvcm5lclBhdGhF
ZmZlY3QuaCIKQEAgLTEwNjAsNiArMTA2MiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1TaGFkb3coCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldERyYXdMb29wZXIoZGwp
OwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Ymx1ckltYWdlKEltYWdlKiBpbWFnZSwgY29u
c3QgSW50UG9pbnQmIHAsIGZsb2F0IHNpZ21hWCwgZmxvYXQgc2lnbWFZKQoreworICAgIFNrUGFp
bnQgcGFpbnQ7CisgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIobmV3IFNrQmx1ckltYWdlRmlsdGVy
KHNpZ21hWCwgc2lnbWFZKSktPnVucmVmKCk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZh
cygpLT5zYXZlTGF5ZXIoMCwgJnBhaW50KTsKKyAgICBwYWludC5zZXRDb2xvcigweEZGRkZGRkZG
KTsKKyAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLT5zaXplKCkpOwor
ICAgIEZsb2F0UmVjdCBkc3RSZWN0KEZsb2F0UG9pbnQocCksIGltYWdlLT5zaXplKCkpOworICAg
IGltYWdlLT5kcmF3KHRoaXMsIGRzdFJlY3QsIHNyY1JlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IENvbXBvc2l0ZUNvcHkpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+cmVzdG9y
ZSgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Ymx1ckltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlciwgY29uc3QgSW50UG9pbnQmIHAsIGZsb2F0IHNpZ21hWCwgZmxvYXQg
c2lnbWFZKQoreworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZy
YW1lU2tpYTo6Y3JlYXRlKCppbWFnZUJ1ZmZlci0+bV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LmJp
dG1hcCgpLCBmYWxzZSk7CisgICAgYmx1ckltYWdlKGltYWdlLmdldCgpLCBwLCBzaWdtYVgsIHNp
Z21hWSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9y
KGNvbnN0IENvbG9yJiBzdHJva2Vjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118406</attachid>
            <date>2011-12-08 09:28:10 -0800</date>
            <delta_ts>2011-12-08 11:33:14 -0800</delta_ts>
            <desc>Move skia-specific code to FEGaussianBlur.cpp</desc>
            <filename>bug-73949-20111208122809.patch</filename>
            <type>text/plain</type>
            <size>3586</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjM0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBTa2lhJ3Mg
aW1wbGVtZW50YXRpb24gb2YgR2F1c3NpYW4gYmx1ciB3aGVuIGFjY2VsZXJhdGVkIGZpbHRlcnMK
KyAgICAgICAgYXJlIGVuYWJsZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Mzk0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHRoaXMgd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoZSBT
VkcgdGVzdHMgcnVuIGluIEdQVSBtb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFu
Qmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgT24gdGhlIFNraWEgcG9ydCwg
dXNlIFNrQmx1ckltYWdlRmlsdGVyIGZvciBkcmF3aW5nCisgICAgICAgIEdhdXNzaWFuIGJsdXJz
IGluIGFjY2VsZXJhdGVkIG1vZGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9J
bWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJ
bWFnZSk6CisgICAgICAgIEltcGxlbWVudCBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKCkgd2l0aCBE
b250Q29weUJhY2tpbmdTdG9yZSBzZW1hbnRpY3MuCisKIDIwMTEtMTItMDggIFRha2FzaGkgVG95
b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFByb3ZpZGUgbW9yZSBz
cGVjaWZpYyBlcnJvciBkZXNjcmlwdGlvbiBmb3IgU29ja2V0U3RyZWFtRXJyb3IuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gMTAyMTc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDExIEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CiAKKyNpZiBVU0UoU0tJQSkKKyNpbmNsdWRlICJCaXRt
YXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oIgorI2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgi
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIGlubGluZSBmbG9hdCBn
YXVzc2lhbktlcm5lbEZhY3RvcigpCkBAIC0yNjcsNiArMjcyLDMzIEBAIHZvaWQgRkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2EKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5w
dXRFZmZlY3QoMCk7CiAKKyNpZiBVU0UoU0tJQSkKKyAgICBpZiAoZmlsdGVyKCktPnJlbmRlcmlu
Z01vZGUoKSA9PSBBY2NlbGVyYXRlZCkgeworICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1h
Z2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgICAgICBpZiAoIXJlc3VsdEltYWdl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEludFJlY3QgZHJhd2luZ1JlZ2lvbiA9
IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOworCisg
ICAgICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOworCisgICAgICAgIGZs
b2F0IHN0ZFggPSBmaWx0ZXIoKS0+YXBwbHlIb3Jpem9udGFsU2NhbGUobV9zdGRYKTsKKyAgICAg
ICAgZmxvYXQgc3RkWSA9IGZpbHRlcigpLT5hcHBseVZlcnRpY2FsU2NhbGUobV9zdGRZKTsKKyAg
ICAgICAgCisgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigp
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworCisgICAgICAgIFNrUGFpbnQgcGFp
bnQ7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCogZHN0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCk7CisgICAgICAgIFNrQ2FudmFzKiBjYW52YXMgPSBkc3RDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKG5ldyBT
a0JsdXJJbWFnZUZpbHRlcihzdGRYLCBzdGRZKSktPnVucmVmKCk7CisgICAgICAgIGNhbnZhcy0+
c2F2ZUxheWVyKDAsICZwYWludCk7CisgICAgICAgIHBhaW50LnNldENvbG9yKDB4RkZGRkZGRkYp
OworICAgICAgICBkc3RDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24ubG9jYXRpb24oKSwgQ29tcG9zaXRlQ29weSk7CisgICAg
ICAgIGNhbnZhcy0+cmVzdG9yZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisK
ICAgICBCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKTsKICAgICBpZiAoIXNyY1BpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0lt
YWdlQnVmZmVyU2tpYS5jcHAJKHJldmlzaW9uIDEwMjE3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQzLDggKzE0Myw3IEBAIHNpemVfdCBJbWFnZUJ1ZmZlcjo6ZGF0YVNpemUoKSBjb25zdAog
CiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yKSBjb25zdAogewotICAgIEFTU0VSVChjb3B5QmVoYXZpb3IgPT0gQ29w
eUJhY2tpbmdTdG9yZSk7Ci0gICAgcmV0dXJuIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpj
cmVhdGUoKm1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5iaXRtYXAoKSwgdHJ1ZSk7CisgICAgcmV0
dXJuIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVhdGUoKm1fZGF0YS5tX3BsYXRmb3Jt
Q29udGV4dC5iaXRtYXAoKSwgY29weUJlaGF2aW9yID09IENvcHlCYWNraW5nU3RvcmUpOwogfQog
CiBQbGF0Zm9ybUxheWVyKiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118434</attachid>
            <date>2011-12-08 11:33:19 -0800</date>
            <delta_ts>2011-12-08 14:29:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73949-20111208143318.patch</filename>
            <type>text/plain</type>
            <size>7295</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjM1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDExLTEyLTA4ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBTa2lhJ3Mg
aW1wbGVtZW50YXRpb24gb2YgR2F1c3NpYW4gYmx1ciB3aGVuIGFjY2VsZXJhdGVkIGZpbHRlcnMK
KyAgICAgICAgYXJlIGVuYWJsZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Mzk0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHRoaXMgd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoZSBT
VkcgdGVzdHMgcnVuIGluIEdQVSBtb2RlLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICBBZGQgRkVHYXVzc2lhbkJsdXJTa2lhLmNwcCB0byB0aGUgYnVpbGQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
Q2FsbCBvdXQgdG8gcGxhdGZvcm1BcHBseVNraWEoKSB3aGVuIFVTRV9TS0lBIGlzIGVuYWJsZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgor
ICAgICAgICBwbGF0Zm9ybUFwcGx5U2tpYSgpIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAg
T24gdGhlIFNraWEgcG9ydCwgdXNlIFNrQmx1ckltYWdlRmlsdGVyIGZvciBkcmF3aW5nCisgICAg
ICAgIEdhdXNzaWFuIGJsdXJzIGluIGFjY2VsZXJhdGVkIG1vZGUuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSk6CisgICAgICAgIEltcGxlbWVudCBJbWFnZUJ1ZmZlcjo6
Y29weUltYWdlKCkgd2l0aCBEb250Q29weUJhY2tpbmdTdG9yZSBzZW1hbnRpY3MuCisKIDIwMTEt
MTItMDggIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQWRkIG1pc3NpbmcgVjggYmluZGluZ3MgdG8gZ2V0IENTU19GSUxURVJTIHRvIGNvbXBpbGUg
aW4gQ2hyb21pdW0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDIzNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM3MDEsNiArMzcw
MSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVHYXVz
c2lhbkJsdXJORU9OLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
YXJtL0ZFTGlnaHRpbmdORU9OLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9hcm0vRkVMaWdodGluZ05FT04uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCShyZXZpc2lv
biAxMDIzNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
R2F1c3NpYW5CbHVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSwxMyBAQCB2b2lk
IEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhCiAKIHZvaWQgRkVHYXVzc2lhbkJs
dXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CisjaWYgVVNFKFNLSUEpCisgICAgaWYgKGZp
bHRlcigpLT5yZW5kZXJpbmdNb2RlKCkgPT0gQWNjZWxlcmF0ZWQpIHsKKyAgICAgICAgcGxhdGZv
cm1BcHBseVNraWEoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRmls
dGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCiAgICAgQnl0ZUFycmF5KiBzcmNQaXhl
bEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5oCShyZXZpc2lvbiAxMDIzNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYg
KzczLDcgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmlj
KEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNp
Z25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6
ZSk7CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseU5lb24oQnl0ZUFycmF5KiBzcmNQaXhl
bEFycmF5LCBCeXRlQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1
bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKTsKKyAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTa2lhKCk7CiAKICAgICBmbG9hdCBtX3N0ZFg7CiAgICAgZmxvYXQgbV9zdGRZOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1
c3NpYW5CbHVyU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVz
c2lhbkJsdXJTa2lhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpZiBVU0UoU0tJQSkKKyNpbmNsdWRlICJGRUdhdXNzaWFuQmx1
ci5oIgorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaCIKKyNpbmNsdWRl
ICJTa0JsdXJJbWFnZUZpbHRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRkVH
YXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKCkKK3sKKyAgICBJbWFnZUJ1ZmZlciogcmVz
dWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIGlmICghcmVzdWx0SW1h
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVj
dCgwKTsKKworICAgIEludFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOworCisgICAgc2V0SXNBbHBoYUltYWdlKGlu
LT5pc0FscGhhSW1hZ2UoKSk7CisKKyAgICBmbG9hdCBzdGRYID0gZmlsdGVyKCktPmFwcGx5SG9y
aXpvbnRhbFNjYWxlKG1fc3RkWCk7CisgICAgZmxvYXQgc3RkWSA9IGZpbHRlcigpLT5hcHBseVZl
cnRpY2FsU2NhbGUobV9zdGRZKTsKKyAgICAKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW4t
PmFzSW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKworICAg
IFNrUGFpbnQgcGFpbnQ7CisgICAgR3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBTa0NhbnZhcyogY2FudmFzID0gZHN0Q29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIHBhaW50LnNldEltYWdlRmlsdGVyKG5ldyBT
a0JsdXJJbWFnZUZpbHRlcihzdGRYLCBzdGRZKSktPnVucmVmKCk7CisgICAgY2FudmFzLT5zYXZl
TGF5ZXIoMCwgJnBhaW50KTsKKyAgICBwYWludC5zZXRDb2xvcigweEZGRkZGRkZGKTsKKyAgICBk
c3RDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb24ubG9jYXRpb24oKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY2FudmFzLT5yZXN0
b3JlKCk7CisgICAgcmV0dXJuOworfQorCit9OworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lh
bkJsdXJTa2lhLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tp
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9JbWFnZUJ1ZmZlclNraWEuY3BwCShyZXZpc2lvbiAxMDIzNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Myw4ICsxNDMsNyBAQCBzaXplX3QgSW1hZ2VCdWZmZXI6OmRhdGFTaXplKCkgY29u
c3QKIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKLSAgICBBU1NFUlQoY29weUJlaGF2aW9yID09
IENvcHlCYWNraW5nU3RvcmUpOwotICAgIHJldHVybiBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tp
YTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCksIHRydWUpOworICAg
IHJldHVybiBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0
Zm9ybUNvbnRleHQuYml0bWFwKCksIGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlKTsK
IH0KIAogUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>