<?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>24947</bug_id>
          
          <creation_ts>2009-03-30 14:50:49 -0700</creation_ts>
          <short_desc>Special-case chromium drawing text-shadow when opaque color &amp; no shadow blur</short_desc>
          <delta_ts>2009-03-31 09:46:55 -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>Layout and Rendering</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="Rafael Weinstein">rafaelw</reporter>
          <assigned_to name="Rafael Weinstein">rafaelw</assigned_to>
          <cc>brettw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>115898</commentid>
    <comment_count>0</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2009-03-30 14:50:49 -0700</bug_when>
    <thetext>This patch special-cases drawing of text-shadows on the chromium port to let GDI draw the text and text shadow, by passing Skia. This only occurs when both the text fill color and shadow color are opaque and the text shadow is 0 blur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115899</commentid>
    <comment_count>1</comment_count>
      <attachid>29088</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2009-03-30 14:52:24 -0700</bug_when>
    <thetext>Created attachment 29088
Let GDI draw text-shadow on opaque colors and 0 blur</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115902</commentid>
    <comment_count>2</comment_count>
      <attachid>29088</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-03-30 15:03:34 -0700</bug_when>
    <thetext>Comment on attachment 29088
Let GDI draw text-shadow on opaque colors and 0 blur

Clearing review flag as it was set to + by a non-reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115903</commentid>
    <comment_count>3</comment_count>
      <attachid>29088</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-30 15:05:40 -0700</bug_when>
    <thetext>Comment on attachment 29088
Let GDI draw text-shadow on opaque colors and 0 blur

&gt;Index: ChangeLog
...
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+	Special-case drawing text-shadow on win32, to let GDI draw in cases when both fill &amp; 
&gt;+	shadow color are opaque and the shadow has no blur.

replace tabs with spaces.


&gt;Index: platform/graphics/chromium/FontChromiumWin.cpp

&gt;+    IntSize shadow_size;
&gt;+    int shadow_blur;
&gt;+    Color shadow_color;

please use webkit style for naming variables:
http://webkit.org/coding/coding-style.html


&gt;Index: platform/graphics/skia/SkiaFontWin.cpp

&gt;+bool windowsCanHandleDrawTextShadow(WebCore::GraphicsContext *context) {
&gt;+    IntSize shadow_size;
&gt;+    int shadow_blur;
&gt;+    Color shadow_color;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115904</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-30 15:06:15 -0700</bug_when>
    <thetext>See:
http://webkit.org/coding/coding-style.html
for information on WebKit coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115918</commentid>
    <comment_count>5</comment_count>
      <attachid>29092</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2009-03-30 15:46:28 -0700</bug_when>
    <thetext>Created attachment 29092
Spaces removed, variables now reflect webkit style guide</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115919</commentid>
    <comment_count>6</comment_count>
      <attachid>29092</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-30 15:53:11 -0700</bug_when>
    <thetext>Comment on attachment 29092
Spaces removed, variables now reflect webkit style guide

The bug url should be in the ChangeLog.

Much stronger would be to ASSERT these conditions instead of just makign a comment:

+    // Note: If the fillColor or shadowColor are ever non-opaque, we should 
+    // never reach this code. SkiaFontWin::windowsCanHandleTextDrawing() will
+    // have set m_useGDI == false and the above check will have passed and 
+    // the this function returned.

tempColor isn&apos;t a very descriptiveName.

textColor would probably be better.

savedColor or savedTextColor would be better than &quot;saveColor&quot;.

+bool windowsCanHandleDrawTextShadow(WebCore::GraphicsContext *context) {

{ should be on its own line.

&quot;context&quot; is not needed here (nor on the line after) as it provides no additional description to purpose of the argument (See style guide).

+bool windowsCanHandleDrawTextShadow(GraphicsContext *context);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115920</commentid>
    <comment_count>7</comment_count>
      <attachid>29092</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-30 15:54:26 -0700</bug_when>
    <thetext>Comment on attachment 29092
Spaces removed, variables now reflect webkit style guide

I can&apos;t really comment on if this is the right approach or not.  Maybe fishd or brettw can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115947</commentid>
    <comment_count>8</comment_count>
      <attachid>29101</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2009-03-30 17:55:01 -0700</bug_when>
    <thetext>Created attachment 29101
Changes from Comment #6 (Eric Seidel)

-ASSERT()s used rather than second check of windowCanHandleDrawTextShadow()
-tempColor -&gt; textColor
-saveColor -&gt; savedTextColor
-formatting
-&quot;context&quot; removed from function declaration of both *canHandle*Text functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115948</commentid>
    <comment_count>9</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2009-03-30 17:56:45 -0700</bug_when>
    <thetext>I pre-reviewed this approach with brettw and made his corrections before submitting here.

(In reply to comment #7)
&gt; (From update of attachment 29092 [review])
&gt; I can&apos;t really comment on if this is the right approach or not.  Maybe fishd or
&gt; brettw can.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115955</commentid>
    <comment_count>10</comment_count>
      <attachid>29101</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-30 18:23:01 -0700</bug_when>
    <thetext>Comment on attachment 29101
Changes from Comment #6 (Eric Seidel)

Looks fine.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116022</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-31 09:46:55 -0700</bug_when>
    <thetext>Landed as:  http://trac.webkit.org/changeset/42131</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29088</attachid>
            <date>2009-03-30 14:52:24 -0700</date>
            <delta_ts>2009-03-30 15:46:28 -0700</delta_ts>
            <desc>Let GDI draw text-shadow on opaque colors and 0 blur</desc>
            <filename>special_case_text_shadow.txt</filename>
            <type>text/plain</type>
            <size>5527</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQyMTE3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDMt
MzAgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCVNwZWNpYWwtY2FzZSBkcmF3aW5nIHRleHQt
c2hhZG93IG9uIHdpbjMyLCB0byBsZXQgR0RJIGRyYXcgaW4gY2FzZXMgd2hlbiBib3RoIGZpbGwg
JiAKKwlzaGFkb3cgY29sb3IgYXJlIG9wYXF1ZSBhbmQgdGhlIHNoYWRvdyBoYXMgbm8gYmx1ci4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFu
c3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvU2tpYUZvbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0NhbkhhbmRsZURy
YXdUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJh
d2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oOgor
CiAyMDA5LTAzLTMwICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAkocmV2aXNpb24gNDIxMTUpCisrKyBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDksNiArMjQ5LDI0IEBAIGJvb2wgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6
OmRyYXcKICAgICAvLyB0byBzdWJ0cmFjdCBvZmYgdGhlIGZvbnQgYXNjZW50IHRvIGdldCBpdC4K
ICAgICBpbnQgeCA9IGxyb3VuZGYobV9wb2ludC54KCkgKyBzdGFydEFkdmFuY2UpOwogICAgIGlu
dCB5ID0gbHJvdW5kZihtX3BvaW50LnkoKSAtIG1fZm9udC0+YXNjZW50KCkpOworCisgICAgLy8g
SWYgdGhlcmUgaXMgYSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZpbGwgY29sb3IgYW5k
IHNoYWRvdyBjb2xvciAKKyAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0aG91dCBza2lhLiAK
KyAgICAvLyBOb3RlOiBJZiB0aGUgZmlsbENvbG9yIG9yIHNoYWRvd0NvbG9yIGFyZSBldmVyIG5v
bi1vcGFxdWUsIHdlIHNob3VsZCAKKyAgICAvLyBuZXZlciByZWFjaCB0aGlzIGNvZGUuIFNraWFG
b250V2luOjp3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoKSB3aWxsCisgICAgLy8gaGF2ZSBz
ZXQgbV91c2VHREkgPT0gZmFsc2UgYW5kIHRoZSBhYm92ZSBjaGVjayB3aWxsIGhhdmUgcGFzc2Vk
IGFuZCAKKyAgICAvLyB0aGUgdGhpcyBmdW5jdGlvbiByZXR1cm5lZC4KKyAgICBJbnRTaXplIHNo
YWRvd19zaXplOworICAgIGludCBzaGFkb3dfYmx1cjsKKyAgICBDb2xvciBzaGFkb3dfY29sb3I7
CisgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2hhZG93X3NpemUsIHNoYWRv
d19ibHVyLCBzaGFkb3dfY29sb3IpICYmIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyht
X2dyYXBoaWNzQ29udGV4dCkpIHsKKyAgICAgICAgQ09MT1JSRUYgdGVtcF9jb2xvciA9IHNraWE6
OlNrQ29sb3JUb0NPTE9SUkVGKFNrQ29sb3JTZXRBUkdCKDI1NSwgc2hhZG93X2NvbG9yLnJlZCgp
LCBzaGFkb3dfY29sb3IuZ3JlZW4oKSwgc2hhZG93X2NvbG9yLmJsdWUoKSkpOworICAgICAgICBD
T0xPUlJFRiBzYXZlX2NvbG9yID0gR2V0VGV4dENvbG9yKG1faGRjKTsKKyAgICAgICAgU2V0VGV4
dENvbG9yKG1faGRjLCB0ZW1wX2NvbG9yKTsKKyAgICAgICAgRXh0VGV4dE91dChtX2hkYywgeCAr
IHNoYWRvd19zaXplLndpZHRoKCksIHkgKyBzaGFkb3dfc2l6ZS5oZWlnaHQoKSwgRVRPX0dMWVBI
X0lOREVYLCAwLCByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3QqPigmZ2x5cGhzWzBdKSwg
bnVtR2x5cGhzLCAmYWR2YW5jZXNbMF0pOworICAgICAgICBTZXRUZXh0Q29sb3IobV9oZGMsIHNh
dmVfY29sb3IpOyAKKyAgICB9CisgICAgCiAgICAgcmV0dXJuICEhRXh0VGV4dE91dChtX2hkYywg
eCwgeSwgRVRPX0dMWVBIX0lOREVYLCAwLCByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3Qq
PigmZ2x5cGhzWzBdKSwgbnVtR2x5cGhzLCAmYWR2YW5jZXNbMF0pOwogfQogCkBAIC00MTYsNiAr
NDM0LDIwIEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGUKICAgICBT
ZXRUZXh0Q29sb3IoaGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xvcikpOwogICAgIFNl
dEJrTW9kZShoZGMsIFRSQU5TUEFSRU5UKTsKIAorICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJs
dXIgc2hhZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCisgICAg
Ly8gYXJlIG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCisgICAgSW50U2l6ZSBzaGFkb3df
c2l6ZTsKKyAgICBpbnQgc2hhZG93X2JsdXI7CisgICAgQ29sb3Igc2hhZG93X2NvbG9yOworICAg
IGlmIChncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dfc2l6ZSwgc2hhZG93X2JsdXIs
IHNoYWRvd19jb2xvcikgJiYgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNz
Q29udGV4dCkpIHsKKyAgICAgICAgQ09MT1JSRUYgdGVtcF9jb2xvciA9IHNraWE6OlNrQ29sb3JU
b0NPTE9SUkVGKFNrQ29sb3JTZXRBUkdCKDI1NSwgc2hhZG93X2NvbG9yLnJlZCgpLCBzaGFkb3df
Y29sb3IuZ3JlZW4oKSwgc2hhZG93X2NvbG9yLmJsdWUoKSkpOworICAgICAgICBDT0xPUlJFRiBz
YXZlX2NvbG9yID0gR2V0VGV4dENvbG9yKGhkYyk7CisgICAgICAgIFNldFRleHRDb2xvcihoZGMs
IHRlbXBfY29sb3IpOworICAgICAgICBzdGF0ZS5kcmF3KGdyYXBoaWNzQ29udGV4dCwgaGRjLCBz
dGF0aWNfY2FzdDxpbnQ+KHBvaW50LngoKSkgKyBzaGFkb3dfc2l6ZS53aWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocG9pbnQueSgpIC0gYXNjZW50KCkpICsgc2hh
ZG93X3NpemUuaGVpZ2h0KCksIGZyb20sIHRvKTsKKyAgICAgICAgU2V0VGV4dENvbG9yKGhkYywg
c2F2ZV9jb2xvcik7IAorICAgIH0KKwogICAgIC8vIFVuaXNjcmliZSBjb3VudHMgdGhlIGNvb3Jk
aW5hdGVzIGZyb20gdGhlIHVwcGVyIGxlZnQsIHdoaWxlIFdlYktpdCB1c2VzCiAgICAgLy8gdGhl
IGJhc2VsaW5lLCBzbyB3ZSBoYXZlIHRvIHN1YnRyYWN0IG9mZiB0aGUgYXNjZW50LgogICAgIHN0
YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIHN0YXRpY19jYXN0PGludD4ocG9pbnQueCgp
KSwKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lvbiA0
MjExNSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjAsNiArMjIwLDE1IEBAIHZvaWQgU2tpYVdpbk91dGxpbmVDYWNoZTo6cmVt
b3ZlUGF0aHNGb3IKICAgICAgICAgZGVsZXRlT3V0bGluZShvdXRsaW5lQ2FjaGUuZmluZCgqaSkp
OwogfQogCitib29sIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQgKmNvbnRleHQpIHsKKyAgICBJbnRTaXplIHNoYWRvd19zaXplOworICAgIGlu
dCBzaGFkb3dfYmx1cjsKKyAgICBDb2xvciBzaGFkb3dfY29sb3I7CisKKyAgICBib29sIGhhc19z
aGFkb3cgPSBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93X3NpemUsIHNoYWRvd19ibHVyLCBzaGFk
b3dfY29sb3IpOworICAgIHJldHVybiAoaGFzX3NoYWRvdyAmJiAoc2hhZG93X2JsdXIgPT0gMCkg
JiYgKHNoYWRvd19jb2xvci5hbHBoYSgpID09IDI1NSkgJiYgKGNvbnRleHQtPmZpbGxDb2xvcigp
LmFscGhhKCkgPT0gMjU1KSk7Cit9CisKIGJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5n
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBDaGVjayBmb3Igbm9uLXRyYW5z
bGF0aW9uIHRyYW5zZm9ybXMuIFNvbWV0aW1lcyB6b29tcyB3aWxsIGxvb2sgYmV0dGVyIGluCkBA
IC0yNDQsNyArMjUzLDcgQEAgYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3JhcGhp
YwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDaGVjayBmb3Igc2hhZG93IGVmZmVj
dHMuCi0gICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXREcmF3TG9vcGVyKCkp
CisgICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXREcmF3TG9vcGVyKCkgJiYg
KCF3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29udGV4dCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvU2tpYUZvbnRXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Nr
aWFGb250V2luLmgJKHJldmlzaW9uIDQyMTE1KQorKysgcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9T
a2lhRm9udFdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMCBAQCBwcml2YXRlOgog
Ly8gUmVtZW1iZXIgdGhhdCBTa2lhJ3MgdGV4dCBkcmF3aW5nIG9yaWdpbiBpcyB0aGUgYmFzZWxp
bmUsIGxpa2UgV2ViS2l0LCBub3QKIC8vIHRoZSB0b3AsIGxpa2UgV2luZG93cy4KIAorLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBmaWxsQ29sb3IgYW5kIHNoYWRvd0NvbG9yIGFyZSBvcGFxdWUgYW5k
IHRoZSB0ZXh0LXNoYWRvdworLy8gaXMgbm90IGJsdXJyZWQuCitib29sIHdpbmRvd3NDYW5IYW5k
bGVEcmF3VGV4dFNoYWRvdyhHcmFwaGljc0NvbnRleHQgKmNvbnRleHQpOworCiAvLyBSZXR1cm5z
IHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcgaXMgcmVjb21tZW5kZWQuCiBib29sIHdp
bmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpOwogCg==
</data>
<flag name="review"
          id="14404"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29092</attachid>
            <date>2009-03-30 15:46:28 -0700</date>
            <delta_ts>2009-03-30 17:57:05 -0700</delta_ts>
            <desc>Spaces removed, variables now reflect webkit style guide</desc>
            <filename>special_case_text_shadow2.txt</filename>
            <type>text/plain</type>
            <size>5501</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQyMTE3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDMt
MzAgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVjaWFsLWNhc2UgZHJhd2lu
ZyB0ZXh0LXNoYWRvdyBvbiB3aW4zMiwgdG8gbGV0IEdESSBkcmF3IGluIGNhc2VzIHdoZW4gYm90
aCBmaWxsICYgCisgICAgICAgIHNoYWRvdyBjb2xvciBhcmUgb3BhcXVlIGFuZCB0aGUgc2hhZG93
IGhhcyBubyBibHVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9u
dFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0Nh
bkhhbmRsZVRleHREcmF3aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Nr
aWFGb250V2luLmg6CisKIDIwMDktMDMtMzAgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiA0
MjExNSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDksMjQgQEAgYm9vbCBUcmFuc3BhcmVuY3lBd2Fy
ZUdseXBoUGFpbnRlcjo6ZHJhdwogICAgIC8vIHRvIHN1YnRyYWN0IG9mZiB0aGUgZm9udCBhc2Nl
bnQgdG8gZ2V0IGl0LgogICAgIGludCB4ID0gbHJvdW5kZihtX3BvaW50LngoKSArIHN0YXJ0QWR2
YW5jZSk7CiAgICAgaW50IHkgPSBscm91bmRmKG1fcG9pbnQueSgpIC0gbV9mb250LT5hc2NlbnQo
KSk7CisKKyAgICAvLyBJZiB0aGVyZSBpcyBhIG5vbi1ibHVyIHNoYWRvdyBhbmQgYm90aCB0aGUg
ZmlsbCBjb2xvciBhbmQgc2hhZG93IGNvbG9yIAorICAgIC8vIGFyZSBvcGFxdWUsIGhhbmRsZSB3
aXRob3V0IHNraWEuIAorICAgIC8vIE5vdGU6IElmIHRoZSBmaWxsQ29sb3Igb3Igc2hhZG93Q29s
b3IgYXJlIGV2ZXIgbm9uLW9wYXF1ZSwgd2Ugc2hvdWxkIAorICAgIC8vIG5ldmVyIHJlYWNoIHRo
aXMgY29kZS4gU2tpYUZvbnRXaW46OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZygpIHdpbGwK
KyAgICAvLyBoYXZlIHNldCBtX3VzZUdESSA9PSBmYWxzZSBhbmQgdGhlIGFib3ZlIGNoZWNrIHdp
bGwgaGF2ZSBwYXNzZWQgYW5kIAorICAgIC8vIHRoZSB0aGlzIGZ1bmN0aW9uIHJldHVybmVkLgor
ICAgIEludFNpemUgc2hhZG93U2l6ZTsKKyAgICBpbnQgc2hhZG93Qmx1cjsKKyAgICBDb2xvciBz
aGFkb3dDb2xvcjsKKyAgICBpZiAobV9ncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dT
aXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikgJiYgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0
U2hhZG93KG1fZ3JhcGhpY3NDb250ZXh0KSkgeworICAgICAgICBDT0xPUlJFRiB0ZW1wQ29sb3Ig
PSBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0NvbG9y
LnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKKyAgICAg
ICAgQ09MT1JSRUYgc2F2ZUNvbG9yID0gR2V0VGV4dENvbG9yKG1faGRjKTsKKyAgICAgICAgU2V0
VGV4dENvbG9yKG1faGRjLCB0ZW1wQ29sb3IpOworICAgICAgICBFeHRUZXh0T3V0KG1faGRjLCB4
ICsgc2hhZG93U2l6ZS53aWR0aCgpLCB5ICsgc2hhZG93U2l6ZS5oZWlnaHQoKSwgRVRPX0dMWVBI
X0lOREVYLCAwLCByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3QqPigmZ2x5cGhzWzBdKSwg
bnVtR2x5cGhzLCAmYWR2YW5jZXNbMF0pOworICAgICAgICBTZXRUZXh0Q29sb3IobV9oZGMsIHNh
dmVDb2xvcik7IAorICAgIH0KKyAgICAKICAgICByZXR1cm4gISFFeHRUZXh0T3V0KG1faGRjLCB4
LCB5LCBFVE9fR0xZUEhfSU5ERVgsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+
KCZnbHlwaHNbMF0pLCBudW1HbHlwaHMsICZhZHZhbmNlc1swXSk7CiB9CiAKQEAgLTQxNiw2ICs0
MzQsMjAgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZQogICAgIFNl
dFRleHRDb2xvcihoZGMsIHNraWE6OlNrQ29sb3JUb0NPTE9SUkVGKGNvbG9yKSk7CiAgICAgU2V0
QmtNb2RlKGhkYywgVFJBTlNQQVJFTlQpOwogCisgICAgLy8gSWYgdGhlcmUgaXMgYSBub24tYmx1
ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZpbGwgY29sb3IgYW5kIHNoYWRvdyBjb2xvciAKKyAgICAv
LyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0aG91dCBza2lhLiAKKyAgICBJbnRTaXplIHNoYWRvd1Np
emU7CisgICAgaW50IHNoYWRvd0JsdXI7CisgICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgaWYg
KGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKSAmJiB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0
KSkgeworICAgICAgICBDT0xPUlJFRiB0ZW1wQ29sb3IgPSBza2lhOjpTa0NvbG9yVG9DT0xPUlJF
RihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVl
bigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKKyAgICAgICAgQ09MT1JSRUYgc2F2ZUNvbG9yID0g
R2V0VGV4dENvbG9yKGhkYyk7CisgICAgICAgIFNldFRleHRDb2xvcihoZGMsIHRlbXBDb2xvcik7
CisgICAgICAgIHN0YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIHN0YXRpY19jYXN0PGlu
dD4ocG9pbnQueCgpKSArIHNoYWRvd1NpemUud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KHBvaW50LnkoKSAtIGFzY2VudCgpKSArIHNoYWRvd1NpemUuaGVpZ2h0
KCksIGZyb20sIHRvKTsKKyAgICAgICAgU2V0VGV4dENvbG9yKGhkYywgc2F2ZUNvbG9yKTsgCisg
ICAgfQorCiAgICAgLy8gVW5pc2NyaWJlIGNvdW50cyB0aGUgY29vcmRpbmF0ZXMgZnJvbSB0aGUg
dXBwZXIgbGVmdCwgd2hpbGUgV2ViS2l0IHVzZXMKICAgICAvLyB0aGUgYmFzZWxpbmUsIHNvIHdl
IGhhdmUgdG8gc3VidHJhY3Qgb2ZmIHRoZSBhc2NlbnQuCiAgICAgc3RhdGUuZHJhdyhncmFwaGlj
c0NvbnRleHQsIGhkYywgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC54KCkpLApJbmRleDogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHJldmlzaW9uIDQyMTE1KQorKysgcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2
ICsyMjAsMTUgQEAgdm9pZCBTa2lhV2luT3V0bGluZUNhY2hlOjpyZW1vdmVQYXRoc0ZvcgogICAg
ICAgICBkZWxldGVPdXRsaW5lKG91dGxpbmVDYWNoZS5maW5kKCppKSk7CiB9CiAKK2Jvb2wgd2lu
ZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCAqY29u
dGV4dCkgeworICAgIEludFNpemUgc2hhZG93U2l6ZTsKKyAgICBpbnQgc2hhZG93Qmx1cjsKKyAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKKworICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+Z2V0
U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICByZXR1cm4g
KGhhc1NoYWRvdyAmJiAoc2hhZG93Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9
PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOworfQorCiBi
b29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgLy8gQ2hlY2sgZm9yIG5vbi10cmFuc2xhdGlvbiB0cmFuc2Zvcm1zLiBTb21ldGlt
ZXMgem9vbXMgd2lsbCBsb29rIGJldHRlciBpbgpAQCAtMjQ0LDcgKzI1Myw3IEBAIGJvb2wgd2lu
ZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWMKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgotICAgIGlmIChjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Z2V0RHJhd0xvb3BlcigpKQorICAgIGlmIChjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Z2V0RHJhd0xvb3BlcigpICYmICghd2luZG93c0NhbkhhbmRsZURyYXdUZXh0
U2hhZG93KGNvbnRleHQpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCShyZXZpc2lvbiA0MjEx
NSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNiArNjgsMTAgQEAgcHJpdmF0ZToKIC8vIFJlbWVtYmVyIHRoYXQgU2tpYSdzIHRl
eHQgZHJhd2luZyBvcmlnaW4gaXMgdGhlIGJhc2VsaW5lLCBsaWtlIFdlYktpdCwgbm90CiAvLyB0
aGUgdG9wLCBsaWtlIFdpbmRvd3MuCiAKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsbENvbG9y
IGFuZCBzaGFkb3dDb2xvciBhcmUgb3BhcXVlIGFuZCB0aGUgdGV4dC1zaGFkb3cKKy8vIGlzIG5v
dCBibHVycmVkLgorYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coR3JhcGhpY3ND
b250ZXh0ICpjb250ZXh0KTsKKwogLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVu
ZGVyaW5nIGlzIHJlY29tbWVuZGVkLgogYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KTsKIAo=
</data>
<flag name="review"
          id="14408"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29101</attachid>
            <date>2009-03-30 17:55:01 -0700</date>
            <delta_ts>2009-03-30 18:23:01 -0700</delta_ts>
            <desc>Changes from Comment #6 (Eric Seidel)</desc>
            <filename>special_case_text_shadow3.txt</filename>
            <type>text/plain</type>
            <size>5929</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQyMTE3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDMt
MzAgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5NDcKKworICAgICAgICBTcGVjaWFsLWNhc2UgZHJhd2lu
ZyB0ZXh0LXNoYWRvdyBvbiB3aW4zMiwgdG8gbGV0IEdESSBkcmF3IGluIGNhc2VzIHdoZW4gYm90
aCBmaWxsICYgCisgICAgICAgIHNoYWRvdyBjb2xvciBhcmUgb3BhcXVlIGFuZCB0aGUgc2hhZG93
IGhhcyBubyBibHVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9u
dFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0Nh
bkhhbmRsZVRleHREcmF3aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Nr
aWFGb250V2luLmg6CisKIDIwMDktMDMtMzAgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiA0
MjExNSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OSwxMCArMjQ5LDI4IEBAIGJvb2wgVHJhbnNwYXJlbmN5QXdh
cmVHbHlwaFBhaW50ZXI6OmRyYXcKICAgICAvLyB0byBzdWJ0cmFjdCBvZmYgdGhlIGZvbnQgYXNj
ZW50IHRvIGdldCBpdC4KICAgICBpbnQgeCA9IGxyb3VuZGYobV9wb2ludC54KCkgKyBzdGFydEFk
dmFuY2UpOwogICAgIGludCB5ID0gbHJvdW5kZihtX3BvaW50LnkoKSAtIG1fZm9udC0+YXNjZW50
KCkpOworCisgICAgLy8gSWYgdGhlcmUgaXMgYSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhl
IGZpbGwgY29sb3IgYW5kIHNoYWRvdyBjb2xvciAKKyAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUg
d2l0aG91dCBza2lhLiAKKyAgICBJbnRTaXplIHNoYWRvd1NpemU7CisgICAgaW50IHNoYWRvd0Js
dXI7CisgICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0LT5n
ZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAgICAg
IC8vIElmIHRoZXJlIGlzIGEgc2hhZG93IGFuZCB0aGlzIGNvZGUgaXMgcmVhY2hlZCwgd2luZG93
c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KCkKKyAgICAgICAgLy8gd2lsbCBoYXZlIGFscmVhZHkg
cmV0dXJuZWQgdHJ1ZSBkdXJpbmcgdGhlIGN0b3IgaW5pdGlhdGl6YXRpb24gb2YgbV91c2VHREkK
KyAgICAgICAgQVNTRVJUKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KTsKKyAgICAgICAgQVNT
RVJUKG1fZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSk7CisgICAg
ICAgIEFTU0VSVChzaGFkb3dCbHVyID09IDApOworICAgICAgICBDT0xPUlJFRiB0ZXh0Q29sb3Ig
PSBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0NvbG9y
LnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKKyAgICAg
ICAgQ09MT1JSRUYgc2F2ZWRUZXh0Q29sb3IgPSBHZXRUZXh0Q29sb3IobV9oZGMpOworICAgICAg
ICBTZXRUZXh0Q29sb3IobV9oZGMsIHRleHRDb2xvcik7CisgICAgICAgIEV4dFRleHRPdXQobV9o
ZGMsIHggKyBzaGFkb3dTaXplLndpZHRoKCksIHkgKyBzaGFkb3dTaXplLmhlaWdodCgpLCBFVE9f
R0xZUEhfSU5ERVgsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KCZnbHlwaHNb
MF0pLCBudW1HbHlwaHMsICZhZHZhbmNlc1swXSk7CisgICAgICAgIFNldFRleHRDb2xvcihtX2hk
Yywgc2F2ZWRUZXh0Q29sb3IpOyAKKyAgICB9CisgICAgCiAgICAgcmV0dXJuICEhRXh0VGV4dE91
dChtX2hkYywgeCwgeSwgRVRPX0dMWVBIX0lOREVYLCAwLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHdjaGFyX3QqPigmZ2x5cGhzWzBdKSwgbnVtR2x5cGhzLCAmYWR2YW5jZXNbMF0pOwogfQogCi0K
IGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlciA6IHB1YmxpYyBUcmFuc3Bh
cmVuY3lBd2FyZUZvbnRQYWludGVyIHsKICBwdWJsaWM6CiAgICAgVHJhbnNwYXJlbmN5QXdhcmVV
bmlzY3JpYmVQYWludGVyKEdyYXBoaWNzQ29udGV4dCosCkBAIC00MTYsNiArNDM0LDIwIEBAIHZv
aWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGUKICAgICBTZXRUZXh0Q29sb3Io
aGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xvcikpOwogICAgIFNldEJrTW9kZShoZGMs
IFRSQU5TUEFSRU5UKTsKIAorICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFu
ZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCisgICAgLy8gYXJlIG9wYXF1
ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCisgICAgSW50U2l6ZSBzaGFkb3dTaXplOworICAgIGlu
dCBzaGFkb3dCbHVyOworICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIGlmIChncmFwaGljc0Nv
bnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikgJiYg
d2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKKyAgICAg
ICAgQ09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoU2tDb2xvclNl
dEFSR0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93
Q29sb3IuYmx1ZSgpKSk7CisgICAgICAgIENPTE9SUkVGIHNhdmVkVGV4dENvbG9yID0gR2V0VGV4
dENvbG9yKGhkYyk7CisgICAgICAgIFNldFRleHRDb2xvcihoZGMsIHRleHRDb2xvcik7CisgICAg
ICAgIHN0YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIHN0YXRpY19jYXN0PGludD4ocG9p
bnQueCgpKSArIHNoYWRvd1NpemUud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQ+KHBvaW50LnkoKSAtIGFzY2VudCgpKSArIHNoYWRvd1NpemUuaGVpZ2h0KCksIGZy
b20sIHRvKTsKKyAgICAgICAgU2V0VGV4dENvbG9yKGhkYywgc2F2ZWRUZXh0Q29sb3IpOyAKKyAg
ICB9CisKICAgICAvLyBVbmlzY3JpYmUgY291bnRzIHRoZSBjb29yZGluYXRlcyBmcm9tIHRoZSB1
cHBlciBsZWZ0LCB3aGlsZSBXZWJLaXQgdXNlcwogICAgIC8vIHRoZSBiYXNlbGluZSwgc28gd2Ug
aGF2ZSB0byBzdWJ0cmFjdCBvZmYgdGhlIGFzY2VudC4KICAgICBzdGF0ZS5kcmF3KGdyYXBoaWNz
Q29udGV4dCwgaGRjLCBzdGF0aWNfY2FzdDxpbnQ+KHBvaW50LngoKSksCkluZGV4OiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkocmV2aXNpb24gNDIxMTUpCisrKyBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYg
KzIyMCwxNiBAQCB2b2lkIFNraWFXaW5PdXRsaW5lQ2FjaGU6OnJlbW92ZVBhdGhzRm9yCiAgICAg
ICAgIGRlbGV0ZU91dGxpbmUob3V0bGluZUNhY2hlLmZpbmQoKmkpKTsKIH0KIAorYm9vbCB3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0ICpjb250
ZXh0KQoreworICAgIEludFNpemUgc2hhZG93U2l6ZTsKKyAgICBpbnQgc2hhZG93Qmx1cjsKKyAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKKworICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+Z2V0
U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICByZXR1cm4g
KGhhc1NoYWRvdyAmJiAoc2hhZG93Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9
PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOworfQorCiBi
b29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgLy8gQ2hlY2sgZm9yIG5vbi10cmFuc2xhdGlvbiB0cmFuc2Zvcm1zLiBTb21ldGlt
ZXMgem9vbXMgd2lsbCBsb29rIGJldHRlciBpbgpAQCAtMjQ0LDcgKzI1NCw3IEBAIGJvb2wgd2lu
ZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWMKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgotICAgIGlmIChjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Z2V0RHJhd0xvb3BlcigpKQorICAgIGlmIChjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Z2V0RHJhd0xvb3BlcigpICYmICghd2luZG93c0NhbkhhbmRsZURyYXdUZXh0
U2hhZG93KGNvbnRleHQpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCShyZXZpc2lvbiA0MjEx
NSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsOCArNjgsMTIgQEAgcHJpdmF0ZToKIC8vIFJlbWVtYmVyIHRoYXQgU2tpYSdzIHRl
eHQgZHJhd2luZyBvcmlnaW4gaXMgdGhlIGJhc2VsaW5lLCBsaWtlIFdlYktpdCwgbm90CiAvLyB0
aGUgdG9wLCBsaWtlIFdpbmRvd3MuCiAKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsbENvbG9y
IGFuZCBzaGFkb3dDb2xvciBhcmUgb3BhcXVlIGFuZCB0aGUgdGV4dC1zaGFkb3cKKy8vIGlzIG5v
dCBibHVycmVkLgorYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coR3JhcGhpY3ND
b250ZXh0Kik7CisKIC8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJlbmRlcmluZyBp
cyByZWNvbW1lbmRlZC4KLWJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCk7Citib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFw
aGljc0NvbnRleHQqKTsKIAogLy8gTm90ZSB0aGF0IHRoZSBvZmZzZXRzIHBhcmFtZXRlciBpcyBv
cHRpb25hbC4gIElmIG5vdCBOVUxMIGl0IHJlcHJlc2VudHMgYQogLy8gcGVyIGdseXBoIG9mZnNl
dCAoc3VjaCBhcyByZXR1cm5lZCBieSBTY3JpcHRQbGFjZSBXaW5kb3dzIEFQSSBmdW5jdGlvbiku
Cg==
</data>
<flag name="review"
          id="14416"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>