<?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>18808</bug_id>
          
          <creation_ts>2008-04-30 00:40:25 -0700</creation_ts>
          <short_desc>[CAIRO] minor problems with SVG-Gradients</short_desc>
          <delta_ts>2008-07-26 22:41:07 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>Cairo</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79271</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-30 00:40:25 -0700</bug_when>
    <thetext>There are still some minor problems with SVG Gradients.

1.Stroke of objects aren&apos;t handled with gradients at present.

2.If a stop is less than all previous stops, it is set equal to the largest stop:
http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-pservers-grad-16-b.html

3.If you fill the stroke of a line with a gradient without stoppoints (only color-set), CAIRO stops rendering at this point:
http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-pservers-grad-17-b.html
(only related to lines)

4.If you use an own font-family (with glyph) a gradient is drawn for every glyph instead for the hole text.
http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-pservers-grad-08-b.html
(can only be seen if you modify FontCairo, to draw texts with colors, gradients, pattern for SVG)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79273</commentid>
    <comment_count>1</comment_count>
      <attachid>20899</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-30 00:53:20 -0700</bug_when>
    <thetext>Created attachment 20899
GradientFix

Fixes point 1 and 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79308</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-30 14:28:17 -0700</bug_when>
    <thetext>Point 3 is related to the boundingBoxMode. 

FloatRect bbox = object-&gt;relativeBBox(false);
gets (0,0,0,0). Thats why cairo stops rendering. 
I have no idea what could be the reason. 

object-&gt;relativeBBox(false) seems to call FloatRect(const IntRect&amp; r) ... in FloatRect.cpp
and FloatRect should give the right values but gives (0,0,0,0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79404</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-05-01 19:30:29 -0700</bug_when>
    <thetext>I could have sworn I reviewed this exact patch already on some other bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79429</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-02 06:33:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I could have sworn I reviewed this exact patch already on some other bug?
&gt; 
Nearly the same, on another bug yes :-) 18700.
I reseted the review-tag to none, since it is clear, how the code should be shared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79900</commentid>
    <comment_count>5</comment_count>
      <attachid>21022</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-08 11:35:39 -0700</bug_when>
    <thetext>Created attachment 21022
Fixes Gradients

This patch fixes 1, 2 and 3.
The problem for 3 was PathCairo. PathCairo uses cairo_fill_extends instead of cairo_path_extends (like suggested in the manual of cairo). Thats why boundingBox gets (0,0,0,0). The SVG-test-suite of W3C runs smooth with one exception: point 4.

4 is related to FontCairo and should be fixed there.

As long as it is not clear which code should be shared with the other PaintServers (look #18700), the review-flag is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81303</commentid>
    <comment_count>6</comment_count>
      <attachid>21309</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-23 07:28:30 -0700</bug_when>
    <thetext>Created attachment 21309
Fixes Gradients

Additional fix for radial gradients with bounding box. (see http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-pservers-grad-13-b.html last two boxes). A focus have to be inside a radius of a gradient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81920</commentid>
    <comment_count>7</comment_count>
      <attachid>21429</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-30 04:00:45 -0700</bug_when>
    <thetext>Created attachment 21429
Fixes Gradients

Modified coding-style to the one of SVG/Cairo patterns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84271</commentid>
    <comment_count>8</comment_count>
      <attachid>21909</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-06-24 09:18:28 -0700</bug_when>
    <thetext>Created attachment 21909
Fixes Gradients

forgot my email</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85225</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-07-05 12:35:09 -0700</bug_when>
    <thetext>Good job, indeed the paintserver code has to be shared across all implementations. The long term goal is to remove the whole specialized painting abstraction for SVG anyway and join with GraphicsContext used throughout WebCore.

Have a nice weekend :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87040</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-07-26 22:41:07 -0700</bug_when>
    <thetext>Landed in r35391.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20899</attachid>
            <date>2008-04-30 00:53:20 -0700</date>
            <delta_ts>2008-05-08 11:35:39 -0700</delta_ts>
            <desc>GradientFix</desc>
            <filename>CairoGradient.patch</filename>
            <type>text/plain</type>
            <size>2613</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjcxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDgtMDQtMzAgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJOSU5H
OiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICBTdHJva2VkIE9iamVj
dHMgYXJlIHJlbmRlcmVkIGNvcnJlY3QgaW4gU1ZHL0NhaXJvCisgICAgICAgIFNWRy9DYWlybyBp
cyBuZWFyIHRvIHRoZSBXM0Mtc2VwY2lmaWNhdGlvbiBub3cuCisKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvY2Fpcm8vU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNldHVwKToKKwogMjAwOC0wNC0yOSAgRGF2
aWQgRC4gS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJVSUxEIEZJWCBm
b3IgZXhwb3J0IG9mIFdURjo6UmVmQ291bnRlZDxXZWJDb3JlOjpGb3JtRGF0YT46OmRlcmVmKCkK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1BhaW50U2VydmVyR3JhZGllbnRD
YWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudENhaXJvLmNwcAkocmV2aXNpb24gMzI2MDMpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9jYWlyby9TVkdQYWludFNlcnZlckdyYWRpZW50Q2Fpcm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsMTAgKzEyMiwzNSBAQCBib29sIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6
OnNldHVwKEdyYXBoCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0b3BzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIGZsb2F0IG9mZnNldCA9IHN0b3BzW2ldLmZpcnN0OwogICAgICAgICBD
b2xvciBjb2xvciA9IHN0b3BzW2ldLnNlY29uZDsKKyAgICAgICAgaWYgKGkgPiAwICYmIG9mZnNl
dCA8IHN0b3BzW2ktMV0uZmlyc3QpCisgICAgICAgICAgICBvZmZzZXQgPSBzdG9wc1tpLTFdLmZp
cnN0OwogCiAgICAgICAgIGNhaXJvX3BhdHRlcm5fYWRkX2NvbG9yX3N0b3BfcmdiYShwYXR0ZXJu
LCBvZmZzZXQsIGNvbG9yLnJlZCgpIC8gMjU1LjAsIGNvbG9yLmdyZWVuKCkgLyAyNTUuMCwgY29s
b3IuYmx1ZSgpIC8gMjU1LjAsIGNvbG9yLmFscGhhKCkgLyAyNTUuMCk7CiAgICAgfQogCisgICAg
Ly8gVE9ETzogc2hhcmUgdGhpcyBjb2RlIHdpdGggb3RoZXIgUGFpbnRTZXJ2ZXJzCisKKyAgICBj
b25zdCBTVkdSZW5kZXJTdHlsZSogc3R5bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxlKCk7
CisKKyAgICBpZiAoKHR5cGUgJiBBcHBseVRvRmlsbFRhcmdldFR5cGUpICYmIHN0eWxlLT5oYXNG
aWxsKCkpCisgICAgICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHN0eWxlLT5maWxsUnVsZSgp
ID09IFJVTEVfRVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExf
UlVMRV9XSU5ESU5HKTsKKworICAgIGlmICgodHlwZSAmIEFwcGx5VG9TdHJva2VUYXJnZXRUeXBl
KSAmJiBzdHlsZS0+aGFzU3Ryb2tlKCkpIHsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhp
Y2tuZXNzKFNWR1JlbmRlclN0eWxlOjpjc3NQcmltaXRpdmVUb0xlbmd0aChvYmplY3QsIHN0eWxl
LT5zdHJva2VXaWR0aCgpLCAxLjApKTsKKyAgICAgICAgY29udGV4dC0+c2V0TGluZUNhcChzdHls
ZS0+Y2FwU3R5bGUoKSk7CisgICAgICAgIGNvbnRleHQtPnNldExpbmVKb2luKHN0eWxlLT5qb2lu
U3R5bGUoKSk7CisgICAgICAgIGlmIChzdHlsZS0+am9pblN0eWxlKCkgPT0gTWl0ZXJKb2luKQor
ICAgICAgICAgICAgY29udGV4dC0+c2V0TWl0ZXJMaW1pdChzdHlsZS0+c3Ryb2tlTWl0ZXJMaW1p
dCgpKTsKKworICAgICAgICBjb25zdCBEYXNoQXJyYXkmIGRhc2hlcyA9IGRhc2hBcnJheUZyb21S
ZW5kZXJpbmdTdHlsZShvYmplY3QtPnN0eWxlKCkpOworICAgICAgICBkb3VibGUqIGRzaCA9IG5l
dyBkb3VibGVbZGFzaGVzLnNpemUoKV07CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBp
IDwgZGFzaGVzLnNpemUoKSA7IGkrKykKKyAgICAgICAgICAgIGRzaFtpXSA9IGRhc2hlc1tpXTsK
KyAgICAgICAgZG91YmxlIGRhc2hPZmZzZXQgPSBTVkdSZW5kZXJTdHlsZTo6Y3NzUHJpbWl0aXZl
VG9MZW5ndGgob2JqZWN0LCBzdHlsZS0+c3Ryb2tlRGFzaE9mZnNldCgpLCAwLjApOworICAgICAg
ICBjYWlyb19zZXRfZGFzaChjciwgZHNoLCBkYXNoZXMuc2l6ZSgpLCBkYXNoT2Zmc2V0KTsKKyAg
ICAgICAgZGVsZXRlW10gZHNoOworICAgIH0KKwogICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIHBh
dHRlcm4pOwogICAgIGNhaXJvX3BhdHRlcm5fZGVzdHJveShwYXR0ZXJuKTsKIAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21022</attachid>
            <date>2008-05-08 11:35:39 -0700</date>
            <delta_ts>2008-05-23 07:28:30 -0700</delta_ts>
            <desc>Fixes Gradients</desc>
            <filename>CairoGradient.patch</filename>
            <type>text/plain</type>
            <size>5249</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjk4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDgtMDUtMDggIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBy
ZW5kZXJpbmcgaXNzdWVzIHdpdGggZ3JhZGllbnRzIGluIFNWRy9DYWlyby4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXRoOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9jYWlyby9TVkdQ
YWludFNlcnZlckdyYWRpZW50Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlUb0Zp
bGxBbmRTdHJva2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6
c2V0dXApOgorCiAyMDA4LTA1LTA4ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tl
QHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAkocmV2aXNpb24gMzI5
ODMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCBGbG9hdFJlY3QgUGF0aDo6Ym91bmRpbmdS
ZWN0KCkgY29uc3QKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtUGF0aCgpLT5tX2NyOwog
ICAgIGRvdWJsZSB4MCwgeDEsIHkwLCB5MTsKLSAgICBjYWlyb19maWxsX2V4dGVudHMoY3IsICZ4
MCwgJnkwLCAmeDEsICZ5MSk7CisgICAgY2Fpcm9fcGF0aF9leHRlbnRzKGNyLCAmeDAsICZ5MCwg
JngxLCAmeTEpOwogICAgIHJldHVybiBGbG9hdFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkw
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUGFpbnRTZXJ2ZXJH
cmFkaWVudENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWly
by9TVkdQYWludFNlcnZlckdyYWRpZW50Q2Fpcm8uY3BwCShyZXZpc2lvbiAzMjk4MykKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1BhaW50U2VydmVyR3JhZGllbnRDYWlyby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDQ5IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50
LmgiCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorc3RhdGljIGZsb2F0IGFwcGx5VG9GaWxsQW5kU3Ryb2tlKEdyYXBoaWNzQ29udGV4dComIGNv
bnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBTVkdQYWludFRhcmdldFR5cGUgdHlw
ZSwgYm9vbCBpc1BhaW50aW5nVGV4dCkgeworCisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKKworICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdHlsZSA9IG9i
amVjdC0+c3R5bGUoKS0+c3ZnU3R5bGUoKTsKKyAgICBmbG9hdCBhbHBoYTsKKworICAgIGlmICgo
dHlwZSAmIEFwcGx5VG9GaWxsVGFyZ2V0VHlwZSkgJiYgc3R5bGUtPmhhc0ZpbGwoKSkgeworCisg
ICAgICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHN0eWxlLT5maWxsUnVsZSgpID09IFJVTEVf
RVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExfUlVMRV9XSU5E
SU5HKTsKKworICAgICAgICBpZiAoaXNQYWludGluZ1RleHQpCisgICAgICAgICAgICBjb250ZXh0
LT5zZXRUZXh0RHJhd2luZ01vZGUoY1RleHRGaWxsKTsKKworICAgICAgICByZXR1cm4gYWxwaGEg
PSBzdHlsZS0+ZmlsbE9wYWNpdHkoKTsKKyAgICB9CisKKyAgICBpZiAoKHR5cGUgJiBBcHBseVRv
U3Ryb2tlVGFyZ2V0VHlwZSkgJiYgc3R5bGUtPmhhc1N0cm9rZSgpKSB7CisgICAgICAgIGNvbnRl
eHQtPnNldFN0cm9rZVRoaWNrbmVzcyhTVkdSZW5kZXJTdHlsZTo6Y3NzUHJpbWl0aXZlVG9MZW5n
dGgob2JqZWN0LCBzdHlsZS0+c3Ryb2tlV2lkdGgoKSwgMS4wKSk7CisgICAgICAgIGNvbnRleHQt
PnNldExpbmVDYXAoc3R5bGUtPmNhcFN0eWxlKCkpOworICAgICAgICBjb250ZXh0LT5zZXRMaW5l
Sm9pbihzdHlsZS0+am9pblN0eWxlKCkpOworICAgICAgICBpZiAoc3R5bGUtPmpvaW5TdHlsZSgp
ID09IE1pdGVySm9pbikKKyAgICAgICAgICAgIGNvbnRleHQtPnNldE1pdGVyTGltaXQoc3R5bGUt
PnN0cm9rZU1pdGVyTGltaXQoKSk7CisKKyAgICAgICAgY29uc3QgRGFzaEFycmF5JiBkYXNoZXMg
PSBkYXNoQXJyYXlGcm9tUmVuZGVyaW5nU3R5bGUob2JqZWN0LT5zdHlsZSgpKTsKKyAgICAgICAg
T3duQXJyYXlQdHI8ZG91YmxlPiBkc2gobmV3IGRvdWJsZVtkYXNoZXMuc2l6ZSgpXSk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgZGFzaGVzLnNpemUoKSA7IGkrKykKKyAgICAg
ICAgICAgIGRzaFtpXSA9IGRhc2hlc1tpXTsKKyAgICAgICAgZG91YmxlIGRhc2hPZmZzZXQgPSBT
VkdSZW5kZXJTdHlsZTo6Y3NzUHJpbWl0aXZlVG9MZW5ndGgob2JqZWN0LCBzdHlsZS0+c3Ryb2tl
RGFzaE9mZnNldCgpLCAwLjApOworICAgICAgICBjYWlyb19zZXRfZGFzaChjciwgZHNoLmdldCgp
LCBkYXNoZXMuc2l6ZSgpLCBkYXNoT2Zmc2V0KTsKKworICAgICAgICBpZiAoaXNQYWludGluZ1Rl
eHQpCisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoY1RleHRTdHJva2Up
OworCisgICAgICAgIHJldHVybiBhbHBoYSA9IHN0eWxlLT5zdHJva2VPcGFjaXR5KCk7CisgICAg
fQorfQorCisKIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0dXAoR3JhcGhpY3NDb250
ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFNWR1BhaW50VGFyZ2V0
VHlwZSB0eXBlLCBib29sIGlzUGFpbnRpbmdUZXh0KSBjb25zdAogewogICAgIG1fb3duZXJFbGVt
ZW50LT5idWlsZEdyYWRpZW50KCk7CkBAIC00NSw5ICs4NSwxNCBAQCBib29sIFNWR1BhaW50U2Vy
dmVyR3JhZGllbnQ6OnNldHVwKEdyYXBoCiAKICAgICBpZiAodGhpcy0+dHlwZSgpID09IExpbmVh
ckdyYWRpZW50UGFpbnRTZXJ2ZXIpIHsKICAgICAgICAgY29uc3QgU1ZHUGFpbnRTZXJ2ZXJMaW5l
YXJHcmFkaWVudCogbGluZWFyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHUGFpbnRTZXJ2ZXJMaW5l
YXJHcmFkaWVudCo+KHRoaXMpOwotCisgICAgICAgIAogICAgICAgICBpZiAoYm91bmRpbmdCb3hN
b2RlKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBiYm94ID0gb2JqZWN0LT5yZWxhdGl2ZUJC
b3goZmFsc2UpOworICAgICAgICAgICAgaWYgKGJib3gud2lkdGgoKSA9PSAwIHx8IGJib3guaGVp
Z2h0KCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGFwcGx5VG9GaWxsQW5kU3Ryb2tlKGNvbnRl
eHQsIG9iamVjdCwgdHlwZSwgaXNQYWludGluZ1RleHQpOworICAgICAgICAgICAgICAgIGNhaXJv
X3NldF9zb3VyY2VfcmdiKGNyLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhaXJvX21hdHJpeF90cmFuc2xhdGUoJm1h
dHJpeCwgYmJveC54KCksIGJib3gueSgpKTsKICAgICAgICAgICAgIGNhaXJvX21hdHJpeF9zY2Fs
ZSgmbWF0cml4LCBiYm94LndpZHRoKCksIGJib3guaGVpZ2h0KCkpOwogICAgICAgICB9CkBAIC02
NCw2ICsxMDksMTEgQEAgYm9vbCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXR1cChHcmFwaAog
CiAgICAgICAgIGlmIChib3VuZGluZ0JveE1vZGUoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0
IGJib3ggPSBvYmplY3QtPnJlbGF0aXZlQkJveChmYWxzZSk7CisgICAgICAgICAgICBpZiAoYmJv
eC53aWR0aCgpID09IDAgfHwgYmJveC5oZWlnaHQoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAg
YXBwbHlUb0ZpbGxBbmRTdHJva2UoY29udGV4dCwgb2JqZWN0LCB0eXBlLCBpc1BhaW50aW5nVGV4
dCk7CisgICAgICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDAsIDAsIDApOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2Fpcm9fbWF0cml4X3RyYW5zbGF0ZSgmbWF0cml4LCBiYm94LngoKSwgYmJveC55KCkpOwogICAg
ICAgICAgICAgY2Fpcm9fbWF0cml4X3NjYWxlKCZtYXRyaXgsIGJib3gud2lkdGgoKSwgYmJveC5o
ZWlnaHQoKSk7CiAgICAgICAgIH0KQEAgLTEyMiwxMyArMTcyLDE2IEBAIGJvb2wgU1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudDo6c2V0dXAoR3JhcGgKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c3RvcHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gc3RvcHNbaV0uZmly
c3Q7CiAgICAgICAgIENvbG9yIGNvbG9yID0gc3RvcHNbaV0uc2Vjb25kOworICAgICAgICBpZiAo
aSA+IDAgJiYgb2Zmc2V0IDwgc3RvcHNbaS0xXS5maXJzdCkKKyAgICAgICAgICAgIG9mZnNldCA9
IHN0b3BzW2ktMV0uZmlyc3Q7CiAKICAgICAgICAgY2Fpcm9fcGF0dGVybl9hZGRfY29sb3Jfc3Rv
cF9yZ2JhKHBhdHRlcm4sIG9mZnNldCwgY29sb3IucmVkKCkgLyAyNTUuMCwgY29sb3IuZ3JlZW4o
KSAvIDI1NS4wLCBjb2xvci5ibHVlKCkgLyAyNTUuMCwgY29sb3IuYWxwaGEoKSAvIDI1NS4wKTsK
ICAgICB9CiAKKyAgICBhcHBseVRvRmlsbEFuZFN0cm9rZShjb250ZXh0LCBvYmplY3QsIHR5cGUs
IGlzUGFpbnRpbmdUZXh0KTsKKwogICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIHBhdHRlcm4pOwog
ICAgIGNhaXJvX3BhdHRlcm5fZGVzdHJveShwYXR0ZXJuKTsKLQogICAgIHJldHVybiB0cnVlOwog
fQogCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21309</attachid>
            <date>2008-05-23 07:28:30 -0700</date>
            <delta_ts>2008-05-30 04:00:45 -0700</delta_ts>
            <desc>Fixes Gradients</desc>
            <filename>CairoGradient.patch</filename>
            <type>text/plain</type>
            <size>6005</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDA3NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDgtMDUtMjMgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBy
ZW5kZXJpbmcgaXNzdWVzIHdpdGggZ3JhZGllbnRzIGluIFNWRy9DYWlyby4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXRoOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9jYWlyby9TVkdQ
YWludFNlcnZlckdyYWRpZW50Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTdHJv
a2VTdHlsZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlckdyYWRp
ZW50OjpzZXR1cCk6CisKIDIwMDgtMDUtMjMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeGVzIGEgYnVnIHdoZXJlIHRoZSBJbnNwZWN0b3IgY291bGQg
aGF2ZSAwbXMgdGltZXJzIGZpcmluZwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXRoQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0aENhaXJvLmNwcAkocmV2aXNpb24gMzM1NzYpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw3
ICsxODAsNyBAQCBGbG9hdFJlY3QgUGF0aDo6Ym91bmRpbmdSZWN0KCkgY29uc3QKIHsKICAgICBj
YWlyb190KiBjciA9IHBsYXRmb3JtUGF0aCgpLT5tX2NyOwogICAgIGRvdWJsZSB4MCwgeDEsIHkw
LCB5MTsKLSAgICBjYWlyb19maWxsX2V4dGVudHMoY3IsICZ4MCwgJnkwLCAmeDEsICZ5MSk7Cisg
ICAgY2Fpcm9fcGF0aF9leHRlbnRzKGNyLCAmeDAsICZ5MCwgJngxLCAmeTEpOwogICAgIHJldHVy
biBGbG9hdFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKTsKIH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENhaXJvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9TVkdQYWludFNlcnZlckdyYWRp
ZW50Q2Fpcm8uY3BwCShyZXZpc2lvbiAzMzU3NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Nh
aXJvL1NWR1BhaW50U2VydmVyR3JhZGllbnRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDkgKzI5LDI5IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlLmgiCiAjaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy9UT0RPOiBTaGFyZSB0aGlz
IENvZGUgd2l0aCBhbGwgU1ZHUGFpblNlcnZlcnMKK3N0YXRpYyB2b2lkIGFwcGx5U3Ryb2tlU3R5
bGVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTVkdSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIGNhaXJvX3QqIGNy
ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisKKyAgICBjb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MoU1ZHUmVuZGVyU3R5bGU6OmNzc1ByaW1pdGl2ZVRvTGVuZ3RoKG9iamVjdCwgc3R5
bGUtPnN0cm9rZVdpZHRoKCksIDEuMCkpOworICAgIGNvbnRleHQtPnNldExpbmVDYXAoc3R5bGUt
PmNhcFN0eWxlKCkpOworICAgIGNvbnRleHQtPnNldExpbmVKb2luKHN0eWxlLT5qb2luU3R5bGUo
KSk7CisgICAgaWYgKHN0eWxlLT5qb2luU3R5bGUoKSA9PSBNaXRlckpvaW4pCisgICAgICAgIGNv
bnRleHQtPnNldE1pdGVyTGltaXQoc3R5bGUtPnN0cm9rZU1pdGVyTGltaXQoKSk7CisKKyAgICBj
b25zdCBEYXNoQXJyYXkmIGRhc2hlcyA9IGRhc2hBcnJheUZyb21SZW5kZXJpbmdTdHlsZShvYmpl
Y3QtPnN0eWxlKCkpOworICAgIE93bkFycmF5UHRyPGRvdWJsZT4gZHNoKG5ldyBkb3VibGVbZGFz
aGVzLnNpemUoKV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgZGFzaGVzLnNpemUo
KSA7IGkrKykKKyAgICAgICAgZHNoW2ldID0gZGFzaGVzW2ldOworICAgIGRvdWJsZSBkYXNoT2Zm
c2V0ID0gU1ZHUmVuZGVyU3R5bGU6OmNzc1ByaW1pdGl2ZVRvTGVuZ3RoKG9iamVjdCwgc3R5bGUt
PnN0cm9rZURhc2hPZmZzZXQoKSwgMC4wKTsKKyAgICBjYWlyb19zZXRfZGFzaChjciwgZHNoLmdl
dCgpLCBkYXNoZXMuc2l6ZSgpLCBkYXNoT2Zmc2V0KTsgICAKK30KKwogYm9vbCBTVkdQYWludFNl
cnZlckdyYWRpZW50OjpzZXR1cChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCwgU1ZHUGFpbnRUYXJnZXRUeXBlIHR5cGUsIGJvb2wgaXNQYWludGlu
Z1RleHQpIGNvbnN0CiB7CiAgICAgbV9vd25lckVsZW1lbnQtPmJ1aWxkR3JhZGllbnQoKTsKQEAg
LTQyLDEyICs2MiwxOCBAQCBib29sIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNldHVwKEdyYXBo
CiAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4OwogICAgIGNhaXJvX21hdHJpeF9pbml0X2lkZW50
aXR5ICgmbWF0cml4KTsKICAgICBjb25zdCBjYWlyb19tYXRyaXhfdCBncmFkaWVudF9tYXRyaXgg
PSBncmFkaWVudFRyYW5zZm9ybSgpOworICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdHlsZSA9
IG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5bGUoKTsKIAogICAgIGlmICh0aGlzLT50eXBlKCkgPT0g
TGluZWFyR3JhZGllbnRQYWludFNlcnZlcikgewogICAgICAgICBjb25zdCBTVkdQYWludFNlcnZl
ckxpbmVhckdyYWRpZW50KiBsaW5lYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdQYWludFNlcnZl
ckxpbmVhckdyYWRpZW50Kj4odGhpcyk7Ci0KKyAgICAgICAgCiAgICAgICAgIGlmIChib3VuZGlu
Z0JveE1vZGUoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IGJib3ggPSBvYmplY3QtPnJlbGF0
aXZlQkJveChmYWxzZSk7CisgICAgICAgICAgICBpZiAoYmJveC53aWR0aCgpID09IDAgfHwgYmJv
eC5oZWlnaHQoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgYXBwbHlTdHJva2VTdHlsZVRvQ29u
dGV4dChjb250ZXh0LCBzdHlsZSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICBjYWlyb19zZXRf
c291cmNlX3JnYihjciwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWlyb19tYXRyaXhfdHJhbnNsYXRlKCZtYXRyaXgs
IGJib3gueCgpLCBiYm94LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19tYXRyaXhfc2NhbGUoJm1h
dHJpeCwgYmJveC53aWR0aCgpLCBiYm94LmhlaWdodCgpKTsKICAgICAgICAgfQpAQCAtNjQsNiAr
OTAsMTEgQEAgYm9vbCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXR1cChHcmFwaAogCiAgICAg
ICAgIGlmIChib3VuZGluZ0JveE1vZGUoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IGJib3gg
PSBvYmplY3QtPnJlbGF0aXZlQkJveChmYWxzZSk7CisgICAgICAgICAgICBpZiAoYmJveC53aWR0
aCgpID09IDAgfHwgYmJveC5oZWlnaHQoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgYXBwbHlT
dHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSwgb2JqZWN0KTsKKyAgICAgICAgICAg
ICAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWlyb19tYXRyaXhfdHJh
bnNsYXRlKCZtYXRyaXgsIGJib3gueCgpLCBiYm94LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19t
YXRyaXhfc2NhbGUoJm1hdHJpeCwgYmJveC53aWR0aCgpLCBiYm94LmhlaWdodCgpKTsKICAgICAg
ICAgfQpAQCAtNzYsMTggKzEwNywxOSBAQCBib29sIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNl
dHVwKEdyYXBoCiAKICAgICAgICAgZnggLT0gY3g7CiAgICAgICAgIGZ5IC09IGN5OworCiAgICAg
ICAgIGRvdWJsZSBmcmFkaXVzID0gMC4wOwogCi0gICAgICAgIGlmIChzcXJ0KGZ4ICogZnggKyBm
eSAqIGZ5KSA+IHJhZGl1cykgeworICAgICAgICBpZiAoc3FydChmeCAqIGZ4ICsgZnkgKiBmeSkg
Pj0gcmFkaXVzKSB7CiAgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBhdGFuMihmeSwgZngpOwog
ICAgICAgICAgICAgaWYgKChmeCArIGN4KSA8IGN4KQotICAgICAgICAgICAgICAgIGZ4ID0gaW50
KGNvcyhhbmdsZSkgKiByYWRpdXMpICsgMTsKKyAgICAgICAgICAgICAgICBmeCA9IGRvdWJsZShj
b3MoYW5nbGUpICogcmFkaXVzKSArIDAuMDAyOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGZ4ID0gaW50KGNvcyhhbmdsZSkgKiByYWRpdXMpIC0gMTsKKyAgICAgICAgICAgICAg
ICBmeCA9IGRvdWJsZShjb3MoYW5nbGUpICogcmFkaXVzKSAtIDAuMDAyOwogICAgICAgICAgICAg
aWYgKChmeSArIGN5KSA8IGN5KQotICAgICAgICAgICAgICAgIGZ5ID0gaW50KHNpbihhbmdsZSkg
KiByYWRpdXMpICsgMTsKKyAgICAgICAgICAgICAgICBmeSA9IGRvdWJsZShzaW4oYW5nbGUpICog
cmFkaXVzKSArIDAuMDAyOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZ5ID0g
aW50KHNpbihhbmdsZSkgKiByYWRpdXMpIC0gMTsKKyAgICAgICAgICAgICAgICBmeSA9IGRvdWJs
ZShzaW4oYW5nbGUpICogcmFkaXVzKSAtIDAuMDAyOwogICAgICAgICB9CiAKICAgICAgICAgcGF0
dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX3JhZGlhbChmeCArIGN4LCBmeSArIGN5LCBmcmFk
aXVzLCBjeCwgY3ksIHJhZGl1cyk7CkBAIC0xMjIsMTMgKzE1NCwyMCBAQCBib29sIFNWR1BhaW50
U2VydmVyR3JhZGllbnQ6OnNldHVwKEdyYXBoCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHN0b3BzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZsb2F0IG9mZnNldCA9IHN0b3BzW2ldLmZp
cnN0OwogICAgICAgICBDb2xvciBjb2xvciA9IHN0b3BzW2ldLnNlY29uZDsKKyAgICAgICAgaWYg
KGkgPiAwICYmIG9mZnNldCA8IHN0b3BzW2ktMV0uZmlyc3QpCisgICAgICAgICAgICBvZmZzZXQg
PSBzdG9wc1tpLTFdLmZpcnN0OwogCiAgICAgICAgIGNhaXJvX3BhdHRlcm5fYWRkX2NvbG9yX3N0
b3BfcmdiYShwYXR0ZXJuLCBvZmZzZXQsIGNvbG9yLnJlZCgpIC8gMjU1LjAsIGNvbG9yLmdyZWVu
KCkgLyAyNTUuMCwgY29sb3IuYmx1ZSgpIC8gMjU1LjAsIGNvbG9yLmFscGhhKCkgLyAyNTUuMCk7
CiAgICAgfQogCisgICAgaWYgKCh0eXBlICYgQXBwbHlUb0ZpbGxUYXJnZXRUeXBlKSAmJiBzdHls
ZS0+aGFzRmlsbCgpKQorICAgICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzdHlsZS0+Zmls
bFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQgPyBDQUlST19GSUxMX1JVTEVfRVZFTl9PREQgOiBDQUlS
T19GSUxMX1JVTEVfV0lORElORyk7CisKKyAgICBpZiAoKHR5cGUgJiBBcHBseVRvU3Ryb2tlVGFy
Z2V0VHlwZSkgJiYgc3R5bGUtPmhhc1N0cm9rZSgpKQorICAgICAgICBhcHBseVN0cm9rZVN0eWxl
VG9Db250ZXh0KGNvbnRleHQsIHN0eWxlLCBvYmplY3QpOworCiAgICAgY2Fpcm9fc2V0X3NvdXJj
ZShjciwgcGF0dGVybik7CiAgICAgY2Fpcm9fcGF0dGVybl9kZXN0cm95KHBhdHRlcm4pOwotCiAg
ICAgcmV0dXJuIHRydWU7CiB9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21429</attachid>
            <date>2008-05-30 04:00:45 -0700</date>
            <delta_ts>2008-06-24 09:18:28 -0700</delta_ts>
            <desc>Fixes Gradients</desc>
            <filename>CairoGradient.patch</filename>
            <type>text/plain</type>
            <size>6237</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDI2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDgtMDUtMzAgIERpcmsgU2NodWx6ZSAgPHNldCBFTUFJTF9BRERS
RVNTIGVudmlyb25tZW50IHZhcmlhYmxlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZpeGVzIHJlbmRlcmluZyBpc3N1ZXMgd2l0aCBncmFkaWVudHMg
aW4gU1ZHL0NhaXJvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmJvdW5kaW5nUmVjdCk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1BhaW50U2VydmVyR3JhZGllbnRDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjphcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNldHVwKToKKwogMjAwOC0wNS0zMCAgTWFj
aWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCBmaXggZm9y
IDE5Mjg1LCBpdCBqdXN0IGNhdXNlZCBtb3JlIGNyYXNoZXMgYW5kIEkgbmVlZCB0aW1lCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCShyZXZp
c2lvbiAzMzU3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIEZsb2F0UmVjdCBQYXRoOjpi
b3VuZGluZ1JlY3QoKSBjb25zdAogewogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1QYXRoKCkt
Pm1fY3I7CiAgICAgZG91YmxlIHgwLCB4MSwgeTAsIHkxOwotICAgIGNhaXJvX2ZpbGxfZXh0ZW50
cyhjciwgJngwLCAmeTAsICZ4MSwgJnkxKTsKKyAgICBjYWlyb19wYXRoX2V4dGVudHMoY3IsICZ4
MCwgJnkwLCAmeDEsICZ5MSk7CiAgICAgcmV0dXJuIEZsb2F0UmVjdCh4MCwgeTAsIHgxIC0geDAs
IHkxIC0geTApOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9TVkdQYWlu
dFNlcnZlckdyYWRpZW50Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2NhaXJvL1NWR1BhaW50U2VydmVyR3JhZGllbnRDYWlyby5jcHAJKHJldmlzaW9uIDMzNTc2
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENh
aXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBEaXJrIFNjaHVsemUgPHZiczg1QGdteC5kZT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjks
OSArMzAsMjkgQEAKICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTVkdHcmFkaWVudEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvT3du
QXJyYXlQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvL1RPRE86IFNoYXJlIHRoaXMg
Q29kZSB3aXRoIGFsbCBTVkdQYWludFNlcnZlcnMKK3N0YXRpYyB2b2lkIGFwcGx5U3Ryb2tlU3R5
bGVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTVkdSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQoreworICAgIGNhaXJvX3QqIGNy
ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisKKyAgICBjb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MoU1ZHUmVuZGVyU3R5bGU6OmNzc1ByaW1pdGl2ZVRvTGVuZ3RoKG9iamVjdCwgc3R5
bGUtPnN0cm9rZVdpZHRoKCksIDEuMCkpOworICAgIGNvbnRleHQtPnNldExpbmVDYXAoc3R5bGUt
PmNhcFN0eWxlKCkpOworICAgIGNvbnRleHQtPnNldExpbmVKb2luKHN0eWxlLT5qb2luU3R5bGUo
KSk7CisgICAgaWYgKHN0eWxlLT5qb2luU3R5bGUoKSA9PSBNaXRlckpvaW4pCisgICAgICAgIGNv
bnRleHQtPnNldE1pdGVyTGltaXQoc3R5bGUtPnN0cm9rZU1pdGVyTGltaXQoKSk7CisKKyAgICBj
b25zdCBEYXNoQXJyYXkmIGRhc2hlcyA9IGRhc2hBcnJheUZyb21SZW5kZXJpbmdTdHlsZShvYmpl
Y3QtPnN0eWxlKCkpOworICAgIE93bkFycmF5UHRyPGRvdWJsZT4gZHNoKG5ldyBkb3VibGVbZGFz
aGVzLnNpemUoKV0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgZGFzaGVzLnNpemUo
KSA7IGkrKykKKyAgICAgICAgZHNoW2ldID0gZGFzaGVzW2ldOworICAgIGRvdWJsZSBkYXNoT2Zm
c2V0ID0gU1ZHUmVuZGVyU3R5bGU6OmNzc1ByaW1pdGl2ZVRvTGVuZ3RoKG9iamVjdCwgc3R5bGUt
PnN0cm9rZURhc2hPZmZzZXQoKSwgMC4wKTsKKyAgICBjYWlyb19zZXRfZGFzaChjciwgZHNoLmdl
dCgpLCBkYXNoZXMuc2l6ZSgpLCBkYXNoT2Zmc2V0KTsgICAKK30KKwogYm9vbCBTVkdQYWludFNl
cnZlckdyYWRpZW50OjpzZXR1cChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5k
ZXJPYmplY3QqIG9iamVjdCwgU1ZHUGFpbnRUYXJnZXRUeXBlIHR5cGUsIGJvb2wgaXNQYWludGlu
Z1RleHQpIGNvbnN0CiB7CiAgICAgbV9vd25lckVsZW1lbnQtPmJ1aWxkR3JhZGllbnQoKTsKQEAg
LTQyLDEyICs2MywxOCBAQCBib29sIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNldHVwKEdyYXBo
CiAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4OwogICAgIGNhaXJvX21hdHJpeF9pbml0X2lkZW50
aXR5ICgmbWF0cml4KTsKICAgICBjb25zdCBjYWlyb19tYXRyaXhfdCBncmFkaWVudF9tYXRyaXgg
PSBncmFkaWVudFRyYW5zZm9ybSgpOworICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdHlsZSA9
IG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5bGUoKTsKIAogICAgIGlmICh0aGlzLT50eXBlKCkgPT0g
TGluZWFyR3JhZGllbnRQYWludFNlcnZlcikgewogICAgICAgICBjb25zdCBTVkdQYWludFNlcnZl
ckxpbmVhckdyYWRpZW50KiBsaW5lYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdQYWludFNlcnZl
ckxpbmVhckdyYWRpZW50Kj4odGhpcyk7Ci0KKyAgICAgICAgCiAgICAgICAgIGlmIChib3VuZGlu
Z0JveE1vZGUoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IGJib3ggPSBvYmplY3QtPnJlbGF0
aXZlQkJveChmYWxzZSk7CisgICAgICAgICAgICBpZiAoYmJveC53aWR0aCgpID09IDAgfHwgYmJv
eC5oZWlnaHQoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgYXBwbHlTdHJva2VTdHlsZVRvQ29u
dGV4dChjb250ZXh0LCBzdHlsZSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICBjYWlyb19zZXRf
c291cmNlX3JnYihjciwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWlyb19tYXRyaXhfdHJhbnNsYXRlKCZtYXRyaXgs
IGJib3gueCgpLCBiYm94LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19tYXRyaXhfc2NhbGUoJm1h
dHJpeCwgYmJveC53aWR0aCgpLCBiYm94LmhlaWdodCgpKTsKICAgICAgICAgfQpAQCAtNjQsNiAr
OTEsMTEgQEAgYm9vbCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXR1cChHcmFwaAogCiAgICAg
ICAgIGlmIChib3VuZGluZ0JveE1vZGUoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IGJib3gg
PSBvYmplY3QtPnJlbGF0aXZlQkJveChmYWxzZSk7CisgICAgICAgICAgICBpZiAoYmJveC53aWR0
aCgpID09IDAgfHwgYmJveC5oZWlnaHQoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgYXBwbHlT
dHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSwgb2JqZWN0KTsKKyAgICAgICAgICAg
ICAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWlyb19tYXRyaXhfdHJh
bnNsYXRlKCZtYXRyaXgsIGJib3gueCgpLCBiYm94LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19t
YXRyaXhfc2NhbGUoJm1hdHJpeCwgYmJveC53aWR0aCgpLCBiYm94LmhlaWdodCgpKTsKICAgICAg
ICAgfQpAQCAtNzYsMTggKzEwOCwxOSBAQCBib29sIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNl
dHVwKEdyYXBoCiAKICAgICAgICAgZnggLT0gY3g7CiAgICAgICAgIGZ5IC09IGN5OworCiAgICAg
ICAgIGRvdWJsZSBmcmFkaXVzID0gMC4wOwogCi0gICAgICAgIGlmIChzcXJ0KGZ4ICogZnggKyBm
eSAqIGZ5KSA+IHJhZGl1cykgeworICAgICAgICBpZiAoc3FydChmeCAqIGZ4ICsgZnkgKiBmeSkg
Pj0gcmFkaXVzKSB7CiAgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBhdGFuMihmeSwgZngpOwog
ICAgICAgICAgICAgaWYgKChmeCArIGN4KSA8IGN4KQotICAgICAgICAgICAgICAgIGZ4ID0gaW50
KGNvcyhhbmdsZSkgKiByYWRpdXMpICsgMTsKKyAgICAgICAgICAgICAgICBmeCA9IGNvcyhhbmds
ZSkgKiByYWRpdXMgKyAwLjAwMjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBm
eCA9IGludChjb3MoYW5nbGUpICogcmFkaXVzKSAtIDE7CisgICAgICAgICAgICAgICAgZnggPSBj
b3MoYW5nbGUpICogcmFkaXVzIC0gMC4wMDI7CiAgICAgICAgICAgICBpZiAoKGZ5ICsgY3kpIDwg
Y3kpCi0gICAgICAgICAgICAgICAgZnkgPSBpbnQoc2luKGFuZ2xlKSAqIHJhZGl1cykgKyAxOwor
ICAgICAgICAgICAgICAgIGZ5ID0gc2luKGFuZ2xlKSAqIHJhZGl1cyArIDAuMDAyOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZ5ID0gaW50KHNpbihhbmdsZSkgKiByYWRpdXMp
IC0gMTsKKyAgICAgICAgICAgICAgICBmeSA9IHNpbihhbmdsZSkgKiByYWRpdXMgLSAwLjAwMjsK
ICAgICAgICAgfQogCiAgICAgICAgIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9yYWRp
YWwoZnggKyBjeCwgZnkgKyBjeSwgZnJhZGl1cywgY3gsIGN5LCByYWRpdXMpOwpAQCAtMTIyLDEw
ICsxNTUsMTggQEAgYm9vbCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXR1cChHcmFwaAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9wcy5zaXplKCk7ICsraSkgewogICAgICAgICBm
bG9hdCBvZmZzZXQgPSBzdG9wc1tpXS5maXJzdDsKICAgICAgICAgQ29sb3IgY29sb3IgPSBzdG9w
c1tpXS5zZWNvbmQ7CisgICAgICAgIGlmIChpID4gMCAmJiBvZmZzZXQgPCBzdG9wc1tpLTFdLmZp
cnN0KQorICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcHNbaS0xXS5maXJzdDsKIAogICAgICAgICBj
YWlyb19wYXR0ZXJuX2FkZF9jb2xvcl9zdG9wX3JnYmEocGF0dGVybiwgb2Zmc2V0LCBjb2xvci5y
ZWQoKSAvIDI1NS4wLCBjb2xvci5ncmVlbigpIC8gMjU1LjAsIGNvbG9yLmJsdWUoKSAvIDI1NS4w
LCBjb2xvci5hbHBoYSgpIC8gMjU1LjApOwogICAgIH0KIAorICAgIGlmICgodHlwZSAmIEFwcGx5
VG9GaWxsVGFyZ2V0VHlwZSkgJiYgc3R5bGUtPmhhc0ZpbGwoKSkKKyAgICAgICAgY2Fpcm9fc2V0
X2ZpbGxfcnVsZShjciwgc3R5bGUtPmZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9f
RklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOworCisgICAgaWYg
KCh0eXBlICYgQXBwbHlUb1N0cm9rZVRhcmdldFR5cGUpICYmIHN0eWxlLT5oYXNTdHJva2UoKSkK
KyAgICAgICAgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSwgb2JqZWN0
KTsKKwogICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIHBhdHRlcm4pOwogICAgIGNhaXJvX3BhdHRl
cm5fZGVzdHJveShwYXR0ZXJuKTsKIAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21909</attachid>
            <date>2008-06-24 09:18:28 -0700</date>
            <delta_ts>2008-07-05 12:34:20 -0700</delta_ts>
            <desc>Fixes Gradients</desc>
            <filename>CairoGradient.patch</filename>
            <type>text/plain</type>
            <size>6211</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDI2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDgtMDUtMzAgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBy
ZW5kZXJpbmcgaXNzdWVzIHdpdGggZ3JhZGllbnRzIGluIFNWRy9DYWlyby4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXRoOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9jYWlyby9TVkdQ
YWludFNlcnZlckdyYWRpZW50Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlTdHJv
a2VTdHlsZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlckdyYWRp
ZW50OjpzZXR1cCk6CisKIDIwMDgtMDUtMzAgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZlcnQgZml4IGZvciAxOTI4NSwgaXQganVzdCBjYXVzZWQgbW9y
ZSBjcmFzaGVzIGFuZCBJIG5lZWQgdGltZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXRoQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAkocmV2aXNpb24gMzM1NzYpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MCw3ICsxODAsNyBAQCBGbG9hdFJlY3QgUGF0aDo6Ym91bmRpbmdSZWN0KCkgY29uc3QKIHsKICAg
ICBjYWlyb190KiBjciA9IHBsYXRmb3JtUGF0aCgpLT5tX2NyOwogICAgIGRvdWJsZSB4MCwgeDEs
IHkwLCB5MTsKLSAgICBjYWlyb19maWxsX2V4dGVudHMoY3IsICZ4MCwgJnkwLCAmeDEsICZ5MSk7
CisgICAgY2Fpcm9fcGF0aF9leHRlbnRzKGNyLCAmeDAsICZ5MCwgJngxLCAmeTEpOwogICAgIHJl
dHVybiBGbG9hdFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENhaXJvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9TVkdQYWludFNlcnZlckdy
YWRpZW50Q2Fpcm8uY3BwCShyZXZpc2lvbiAzMzU3NikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2NhaXJvL1NWR1BhaW50U2VydmVyR3JhZGllbnRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRGlyayBTY2h1bHplIDx2YnM4NUBnbXgu
ZGU+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDkgKzMwLDI5IEBACiAjaW5jbHVkZSAiUmVu
ZGVyUGF0aC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHR3JhZGll
bnRFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorLy9UT0RPOiBTaGFyZSB0aGlzIENvZGUgd2l0aCBhbGwgU1ZHUGFpbnRTZXJ2
ZXJzCitzdGF0aWMgdm9pZCBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKK3sKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpOworCisgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKFNWR1JlbmRlclN0eWxlOjpj
c3NQcmltaXRpdmVUb0xlbmd0aChvYmplY3QsIHN0eWxlLT5zdHJva2VXaWR0aCgpLCAxLjApKTsK
KyAgICBjb250ZXh0LT5zZXRMaW5lQ2FwKHN0eWxlLT5jYXBTdHlsZSgpKTsKKyAgICBjb250ZXh0
LT5zZXRMaW5lSm9pbihzdHlsZS0+am9pblN0eWxlKCkpOworICAgIGlmIChzdHlsZS0+am9pblN0
eWxlKCkgPT0gTWl0ZXJKb2luKQorICAgICAgICBjb250ZXh0LT5zZXRNaXRlckxpbWl0KHN0eWxl
LT5zdHJva2VNaXRlckxpbWl0KCkpOworCisgICAgY29uc3QgRGFzaEFycmF5JiBkYXNoZXMgPSBk
YXNoQXJyYXlGcm9tUmVuZGVyaW5nU3R5bGUob2JqZWN0LT5zdHlsZSgpKTsKKyAgICBPd25BcnJh
eVB0cjxkb3VibGU+IGRzaChuZXcgZG91YmxlW2Rhc2hlcy5zaXplKCldKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwIDsgaSA8IGRhc2hlcy5zaXplKCkgOyBpKyspCisgICAgICAgIGRzaFtpXSA9
IGRhc2hlc1tpXTsKKyAgICBkb3VibGUgZGFzaE9mZnNldCA9IFNWR1JlbmRlclN0eWxlOjpjc3NQ
cmltaXRpdmVUb0xlbmd0aChvYmplY3QsIHN0eWxlLT5zdHJva2VEYXNoT2Zmc2V0KCksIDAuMCk7
CisgICAgY2Fpcm9fc2V0X2Rhc2goY3IsIGRzaC5nZXQoKSwgZGFzaGVzLnNpemUoKSwgZGFzaE9m
ZnNldCk7ICAgCit9CisKIGJvb2wgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0dXAoR3JhcGhp
Y3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFNWR1BhaW50
VGFyZ2V0VHlwZSB0eXBlLCBib29sIGlzUGFpbnRpbmdUZXh0KSBjb25zdAogewogICAgIG1fb3du
ZXJFbGVtZW50LT5idWlsZEdyYWRpZW50KCk7CkBAIC00MiwxMiArNjMsMTggQEAgYm9vbCBTVkdQ
YWludFNlcnZlckdyYWRpZW50OjpzZXR1cChHcmFwaAogICAgIGNhaXJvX21hdHJpeF90IG1hdHJp
eDsKICAgICBjYWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSAoJm1hdHJpeCk7CiAgICAgY29uc3Qg
Y2Fpcm9fbWF0cml4X3QgZ3JhZGllbnRfbWF0cml4ID0gZ3JhZGllbnRUcmFuc2Zvcm0oKTsKKyAg
ICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3R5bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxl
KCk7CiAKICAgICBpZiAodGhpcy0+dHlwZSgpID09IExpbmVhckdyYWRpZW50UGFpbnRTZXJ2ZXIp
IHsKICAgICAgICAgY29uc3QgU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCogbGluZWFyID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCo+KHRoaXMpOwot
CisgICAgICAgIAogICAgICAgICBpZiAoYm91bmRpbmdCb3hNb2RlKCkpIHsKICAgICAgICAgICAg
IEZsb2F0UmVjdCBiYm94ID0gb2JqZWN0LT5yZWxhdGl2ZUJCb3goZmFsc2UpOworICAgICAgICAg
ICAgaWYgKGJib3gud2lkdGgoKSA9PSAwIHx8IGJib3guaGVpZ2h0KCkgPT0gMCkgeworICAgICAg
ICAgICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgc3R5bGUsIG9iamVj
dCk7CisgICAgICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDAsIDAsIDApOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y2Fpcm9fbWF0cml4X3RyYW5zbGF0ZSgmbWF0cml4LCBiYm94LngoKSwgYmJveC55KCkpOwogICAg
ICAgICAgICAgY2Fpcm9fbWF0cml4X3NjYWxlKCZtYXRyaXgsIGJib3gud2lkdGgoKSwgYmJveC5o
ZWlnaHQoKSk7CiAgICAgICAgIH0KQEAgLTY0LDYgKzkxLDExIEBAIGJvb2wgU1ZHUGFpbnRTZXJ2
ZXJHcmFkaWVudDo6c2V0dXAoR3JhcGgKIAogICAgICAgICBpZiAoYm91bmRpbmdCb3hNb2RlKCkp
IHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBiYm94ID0gb2JqZWN0LT5yZWxhdGl2ZUJCb3goZmFs
c2UpOworICAgICAgICAgICAgaWYgKGJib3gud2lkdGgoKSA9PSAwIHx8IGJib3guaGVpZ2h0KCkg
PT0gMCkgeworICAgICAgICAgICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4
dCwgc3R5bGUsIG9iamVjdCk7CisgICAgICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2Io
Y3IsIDAsIDAsIDApOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2Fpcm9fbWF0cml4X3RyYW5zbGF0ZSgmbWF0cml4LCBiYm94LngoKSwg
YmJveC55KCkpOwogICAgICAgICAgICAgY2Fpcm9fbWF0cml4X3NjYWxlKCZtYXRyaXgsIGJib3gu
d2lkdGgoKSwgYmJveC5oZWlnaHQoKSk7CiAgICAgICAgIH0KQEAgLTc2LDE4ICsxMDgsMTkgQEAg
Ym9vbCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXR1cChHcmFwaAogCiAgICAgICAgIGZ4IC09
IGN4OwogICAgICAgICBmeSAtPSBjeTsKKwogICAgICAgICBkb3VibGUgZnJhZGl1cyA9IDAuMDsK
IAotICAgICAgICBpZiAoc3FydChmeCAqIGZ4ICsgZnkgKiBmeSkgPiByYWRpdXMpIHsKKyAgICAg
ICAgaWYgKHNxcnQoZnggKiBmeCArIGZ5ICogZnkpID49IHJhZGl1cykgewogICAgICAgICAgICAg
ZG91YmxlIGFuZ2xlID0gYXRhbjIoZnksIGZ4KTsKICAgICAgICAgICAgIGlmICgoZnggKyBjeCkg
PCBjeCkKLSAgICAgICAgICAgICAgICBmeCA9IGludChjb3MoYW5nbGUpICogcmFkaXVzKSArIDE7
CisgICAgICAgICAgICAgICAgZnggPSBjb3MoYW5nbGUpICogcmFkaXVzICsgMC4wMDI7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZnggPSBpbnQoY29zKGFuZ2xlKSAqIHJhZGl1
cykgLSAxOworICAgICAgICAgICAgICAgIGZ4ID0gY29zKGFuZ2xlKSAqIHJhZGl1cyAtIDAuMDAy
OwogICAgICAgICAgICAgaWYgKChmeSArIGN5KSA8IGN5KQotICAgICAgICAgICAgICAgIGZ5ID0g
aW50KHNpbihhbmdsZSkgKiByYWRpdXMpICsgMTsKKyAgICAgICAgICAgICAgICBmeSA9IHNpbihh
bmdsZSkgKiByYWRpdXMgKyAwLjAwMjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBmeSA9IGludChzaW4oYW5nbGUpICogcmFkaXVzKSAtIDE7CisgICAgICAgICAgICAgICAgZnkg
PSBzaW4oYW5nbGUpICogcmFkaXVzIC0gMC4wMDI7CiAgICAgICAgIH0KIAogICAgICAgICBwYXR0
ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfcmFkaWFsKGZ4ICsgY3gsIGZ5ICsgY3ksIGZyYWRp
dXMsIGN4LCBjeSwgcmFkaXVzKTsKQEAgLTEyMiwxMCArMTU1LDE4IEBAIGJvb2wgU1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudDo6c2V0dXAoR3JhcGgKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c3RvcHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gc3RvcHNbaV0uZmly
c3Q7CiAgICAgICAgIENvbG9yIGNvbG9yID0gc3RvcHNbaV0uc2Vjb25kOworICAgICAgICBpZiAo
aSA+IDAgJiYgb2Zmc2V0IDwgc3RvcHNbaS0xXS5maXJzdCkKKyAgICAgICAgICAgIG9mZnNldCA9
IHN0b3BzW2ktMV0uZmlyc3Q7CiAKICAgICAgICAgY2Fpcm9fcGF0dGVybl9hZGRfY29sb3Jfc3Rv
cF9yZ2JhKHBhdHRlcm4sIG9mZnNldCwgY29sb3IucmVkKCkgLyAyNTUuMCwgY29sb3IuZ3JlZW4o
KSAvIDI1NS4wLCBjb2xvci5ibHVlKCkgLyAyNTUuMCwgY29sb3IuYWxwaGEoKSAvIDI1NS4wKTsK
ICAgICB9CiAKKyAgICBpZiAoKHR5cGUgJiBBcHBseVRvRmlsbFRhcmdldFR5cGUpICYmIHN0eWxl
LT5oYXNGaWxsKCkpCisgICAgICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHN0eWxlLT5maWxs
UnVsZSgpID09IFJVTEVfRVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6IENBSVJP
X0ZJTExfUlVMRV9XSU5ESU5HKTsKKworICAgIGlmICgodHlwZSAmIEFwcGx5VG9TdHJva2VUYXJn
ZXRUeXBlKSAmJiBzdHlsZS0+aGFzU3Ryb2tlKCkpCisgICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVU
b0NvbnRleHQoY29udGV4dCwgc3R5bGUsIG9iamVjdCk7CisKICAgICBjYWlyb19zZXRfc291cmNl
KGNyLCBwYXR0ZXJuKTsKICAgICBjYWlyb19wYXR0ZXJuX2Rlc3Ryb3kocGF0dGVybik7CiAKCg==
</data>
<flag name="review"
          id="9630"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>