<?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>16577</bug_id>
          
          <creation_ts>2007-12-22 20:28:03 -0800</creation_ts>
          <short_desc>Merge Cairo enhancements from Apollo project</short_desc>
          <delta_ts>2007-12-23 17:12:15 -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>WebCore Misc.</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>Cairo</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Alp Toker">alp</assigned_to>
          <cc>alp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>65098</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-22 20:28:03 -0800</bug_when>
    <thetext>The attached patch extends the Cairo backend, namely providing the missing implementations for:
* GraphicsContext::clipOut(const Path&amp;)
* GraphicsContext::clipOut(const IntRect&amp;)
* GraphicsContext::clipOutEllipseInRect(const IntRect&amp;)
* GraphicsContext::fillRoundedRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65099</commentid>
    <comment_count>1</comment_count>
      <attachid>18064</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-22 20:29:12 -0800</bug_when>
    <thetext>Created attachment 18064
Patch to flesh-out the Cairo implementation

Patch extends the Cairo implementation with additional functionality missing in the current implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65100</commentid>
    <comment_count>2</comment_count>
      <attachid>18064</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-22 20:38:26 -0800</bug_when>
    <thetext>Comment on attachment 18064
Patch to flesh-out the Cairo implementation

This patch will need to update copyrights as well in order to be considered for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65101</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-12-22 20:43:49 -0800</bug_when>
    <thetext>The changes in platform/graphics/Image.cpp shouldn&apos;t be there.  They were removed from trunk in r27060.  I also don&apos;t like the addition of the many PLATFORM(APOLLO) ifdefs when that port is not present in SVN.  The code these are being added to is virtually free of ifdef&apos;s at present, which is the way we prefer things to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65103</commentid>
    <comment_count>4</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-22 21:59:33 -0800</bug_when>
    <thetext>Eric: There is no problem with the copyright headers here, everything&apos;s in order.

We will want to boil this patch down to remove the platform-specific parts for now. If we go ahead with a Cairo/Win port, this code will go elsewhere anyway, not in GraphicsContextCairo.

The hasAlpha() change is also obsolete IIRC.

I&apos;ll continue to investigate this patch and verify the correctness of the substantive changes.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65104</commentid>
    <comment_count>5</comment_count>
      <attachid>18064</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-22 22:00:24 -0800</bug_when>
    <thetext>Comment on attachment 18064
Patch to flesh-out the Cairo implementation

r- for now based on inclusion of needless APOLLO-only changes in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65114</commentid>
    <comment_count>6</comment_count>
      <attachid>18069</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-23 01:15:05 -0800</bug_when>
    <thetext>Created attachment 18069
Cairo graphics fixes

In this patch I&apos;ve extracted all useful modifications to shared code, modified it to follow coding style, studied and documented the effects in the ChangeLog entry.

We only cover GraphicsContextCairo.cpp and ImageSourceCairo.cpp here. There are several other good fixes that still need to be merged in other files from the Apollo port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65147</commentid>
    <comment_count>7</comment_count>
      <attachid>18069</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-12-23 16:21:02 -0800</bug_when>
    <thetext>Comment on attachment 18069
Cairo graphics fixes

Looks sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65157</commentid>
    <comment_count>8</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-23 17:12:15 -0800</bug_when>
    <thetext>Landed in r28969.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18064</attachid>
            <date>2007-12-22 20:29:12 -0800</date>
            <delta_ts>2007-12-23 01:15:05 -0800</delta_ts>
            <desc>Patch to flesh-out the Cairo implementation</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>16006</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTY1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDctMTIt
MjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBB
RERFRCBPUiBDSEFOR0VECisKKworICAgICAgICBNZXJnZSBDYWlybyBiYWNrZW5kIHVwZGF0ZXMg
ZnJvbSB0aGUgV2ViS2l0IHRlYW0uICBQcm92aWRlcyB0aGUKKyAgICAgICAgbWlzc2luZyBpbXBs
ZW1lbnRhdGlvbnMgZm9yIGNsaXBPdXQsIGNsaXBPdXRFbGxpcHNlSW5SZWN0LAorICAgICAgICBh
bmQgZmlsbFJvdW5kZWRSZWN0LgorCisgICAgICAgIFRvdWNoZXMgYSBmZXcgb3RoZXIgZnVuY3Rp
b25zIHRvIGFkZCBBcG9sbG8tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENhaXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0V2ViQml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpnZXRXaW5kb3dzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6On5HcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRFbGxp
cHNlSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDYWlyb1N1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlU291cmNlQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorCiAyMDA3LTEy
LTIyICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KIAogICAgICAgICBHVEsrIGJ1aWxkIGZp
eApJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNpb24gMjg5NjUpCisrKyBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE3IEBAIGJvb2wgSW1h
Z2U6OnNldERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWYKICAgICBpbnQgbGVuZ3RoID0gbV9kYXRh
LT5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiB0cnVlOworCisKKyNp
ZmRlZiBrSW1hZ2VCeXRlc0N1dG9mZgorICAgIC8vIFRoaXMgaXMgYSBoYWNrIHRvIGhlbHAgd2l0
aCB0ZXN0aW5nIGRpc3BsYXkgb2YgcGFydGlhbGx5LWxvYWRlZCBpbWFnZXMuCisgICAgLy8gVG8g
ZW5hYmxlIGl0LCBkZWZpbmUga0ltYWdlQnl0ZXNDdXRvZmYgdG8gYmUgYSBzaXplIHNtYWxsZXIg
dGhhbiB0aGF0IG9mIHRoZSBpbWFnZSBmaWxlcworICAgIC8vIGJlaW5nIGxvYWRlZC4gVGhleSds
bCBuZXZlciBmaW5pc2ggbG9hZGluZy4KKyAgICBpZiAobGVuZ3RoID4ga0ltYWdlQnl0ZXNDdXRv
ZmYpIHsKKyAgICAgICAgbGVuZ3RoID0ga0ltYWdlQnl0ZXNDdXRvZmY7CisgICAgICAgIGFsbERh
dGFSZWNlaXZlZCA9IGZhbHNlOworICAgIH0KKyNlbmRpZgogICAgIAogICAgIHJldHVybiBkYXRh
Q2hhbmdlZChhbGxEYXRhUmVjZWl2ZWQpOwogfQpJbmRleDogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAy
ODk2NSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDYgKzU0LDE3IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNpbmNsdWRl
IDxRUGl4bWFwPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDQUlSTykKK3R5cGVkZWYgc3RydWN0
IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
QVBPTExPKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWU7Cit9CitzdHJ1Y3QgV2Vi
Qml0bWFwOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOwpAQCAtMTMxLDYgKzE0MiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdl
dEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgTFBTSVpFKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShDQUlSTykKKyAgICB2aXJ0dWFsIGNhaXJvX3N1cmZhY2VfdCogZ2V0
Q2Fpcm9TdXJmYWNlKCkgeyByZXR1cm4gMDsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShBUE9M
TE8pCisgICAgdmlydHVhbCBXZWJCaXRtYXAqIGdldFdlYkJpdG1hcChGcmFtZSopIHsgcmV0dXJu
IDA7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xp
ZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKTsKIApJbmRleDogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAkocmV2aXNp
b24gMjg5NjUpCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYg
UExBVEZPUk0oV0lOX09TKQogI2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAjZW5kaWYKIApAQCAt
NTAsNiArNTAsOSBAQAogI2luY2x1ZGUgPHBhbmdvL3BhbmdvLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEFQT0xMTykgJiYgUExBVEZPUk0oV0lOX09TKQorI2luY2x1ZGUgPFdlYktpdEFwb2xs
by9XZWJCaXRtYXAuaD4KKyNlbmRpZgogCiAjaWZuZGVmIE1fUEkKICNkZWZpbmUgTV9QSSAzLjE0
MTU5MjY1MzU4OTc5MzIzODQ2CkBAIC02OCw2ICs3MSwxNiBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIEdka0V2ZW50RXhwb3NlKiBleHBvc2U7CiAjZW5kaWYKKworI2lmIFBMQVRG
T1JNKFdJTl9PUykKKyAgICBIREMgaGRjOworI2VuZGlmCisKKyNpZiBQTEFURk9STShBUE9MTE8p
CisgICAgOjpXZWJCaXRtYXAqIGJpdG1hcDsKKyAgICBjYWlyb19zdXJmYWNlX3QqIGhkY19zdXJm
YWNlOworICAgIHVuc2lnbmVkIGludCBoZGNfcmVmY291bnQ7CisjZW5kaWYKIH07CiAKIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRDb2xvcihjYWlyb190KiBjciwgY29uc3QgQ29sb3ImIGNvbCkKQEAg
LTkxLDYgKzEwNCwxNCBAQCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNz
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICwgZXhwb3NlKDApCiAjZW5kaWYKKyNpZiBQTEFURk9S
TShXSU5fT1MpCisgICAgLCBoZGMoMCkKKyNlbmRpZgorI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAg
ICAsIGJpdG1hcCgwKQorICAgICwgaGRjX3JlZmNvdW50KDApCisgICAgLCBoZGNfc3VyZmFjZSgw
KQorI2VuZGlmCiB7CiB9CiAKQEAgLTk5LDcgKzEyMCw3IEBAIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZTo6fkdyYXBoaWMKICAgICBjYWlyb19kZXN0cm95KGNyKTsKIH0KIAotI2lmIFBM
QVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShXSU5fT1MpICYmIFBM
QVRGT1JNKEFQT0xMTykpCiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgZGMp
CiAgICAgOiBtX2NvbW1vbihjcmVhdGVHcmFwaGljc0NvbnRleHRQcml2YXRlKCkpCiAgICAgLCBt
X2RhdGEobmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSkKQEAgLTEwNywxMSArMTI4
LDk0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBkYykKICAgICBpZiAo
ZGMpIHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fd2luMzJfc3Vy
ZmFjZV9jcmVhdGUoZGMpOwogICAgICAgICBtX2RhdGEtPmNyID0gY2Fpcm9fY3JlYXRlKHN1cmZh
Y2UpOworICAgICAgICBtX2RhdGEtPmhkYyA9IGRjOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNl
dFBhaW50aW5nRGlzYWJsZWQodHJ1ZSk7CiAgICAgICAgIG1fZGF0YS0+Y3IgPSAwOwogICAgIH0K
IH0KKworI2lmIFBMQVRGT1JNKEFQT0xMTykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0Ojppc1RyYW5z
cGFyZW50KCkKK3sKKyAgICByZXR1cm4gbV9kYXRhLT5sYXllcnMuc2l6ZSgpICE9IDA7Cit9CisK
K0hEQyBHcmFwaGljc0NvbnRleHQ6OmdldFdpbmRvd3NDb250ZXh0KGJvb2wgc3VwcG9ydEFscGhh
QmxlbmQsIGNvbnN0IEludFJlY3QqIGRzdFJlY3QpCit7CisgICAgaWYoIW1fZGF0YS0+aGRjX3Jl
ZmNvdW50KyspIHsKKyAgICAgICAgQVNTRVJUKCBkc3RSZWN0ICk7CisgICAgICAgIG1fZGF0YS0+
aGRjX3N1cmZhY2UgPSBjYWlyb193aW4zMl9zdXJmYWNlX2NyZWF0ZV93aXRoX2RpYihDQUlST19G
T1JNQVRfUkdCMjQsIGRzdFJlY3QtPndpZHRoKCksIGRzdFJlY3QtPmhlaWdodCgpKTsKKworICAg
ICAgICAvLyBzZWUgaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL0ZBUS8jcGFpbnRfZnJvbV9hX3N1
cmZhY2UKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzb3VyY2UgPSBjYWlyb19nZXRfdGFyZ2V0
KCBtX2RhdGEtPmNyICk7CisgICAgICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKCBtX2Rh
dGEtPmhkY19zdXJmYWNlICk7CisgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwg
c291cmNlLCAtZHN0UmVjdC0+eCgpLCAtZHN0UmVjdC0+eSgpICk7CisgICAgICAgIGNhaXJvX3Bh
aW50KGNyKTsKKyAgICAgICAgY2Fpcm9fZGVzdHJveShjcik7CisKKyAgICAgICAgbV9kYXRhLT5o
ZGMgPSBjYWlyb193aW4zMl9zdXJmYWNlX2dldF9kYyhtX2RhdGEtPmhkY19zdXJmYWNlKTsKKwor
ICAgICAgICBTYXZlREMobV9kYXRhLT5oZGMpOworICAgIH0KKworICAgIHJldHVybiBtX2RhdGEt
PmhkYzsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29udGV4dChI
REMgaGRjLCBib29sIHN1cHBvcnRBbHBoYUJsZW5kLCBjb25zdCBJbnRSZWN0KiBkc3RSZWN0KQor
eyAgICAKKyAgICBpZighbV9kYXRhLT5oZGNfcmVmY291bnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChoZGMgPT0gbV9kYXRhLT5oZGMpOworCisgICAgaWYoIS0tbV9kYXRhLT5oZGNf
cmVmY291bnQpIHsKKyAgICAgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUoY2Fpcm9fZ2V0
X3RhcmdldChtX2RhdGEtPmNyKSk7CisgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShj
ciwgbV9kYXRhLT5oZGNfc3VyZmFjZSwgZHN0UmVjdC0+eCgpLCBkc3RSZWN0LT55KCkpOworCisg
ICAgICAgIGlmKG1fZGF0YS0+bGF5ZXJzLnNpemUoKSkKKyAgICAgICAgICAgIGNhaXJvX3BhaW50
X3dpdGhfYWxwaGEoY3IsIG1fZGF0YS0+bGF5ZXJzLmxhc3QoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNhaXJvX3BhaW50IChjcik7CisKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KG1fZGF0YS0+aGRjX3N1cmZhY2UpOworICAgICAgICBjYWlyb19kZXN0cm95KGNyKTsKKwor
ICAgICAgICBSZXN0b3JlREMobV9kYXRhLT5oZGMsIC0xKTsKKyAgICAgICAgbV9kYXRhLT5oZGNf
c3VyZmFjZSA9IDA7CisgICAgICAgIG1fZGF0YS0+aGRjID0gMDsKKyAgICB9Cit9CisKK0dyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KFdlYkJpdG1hcCogcFRhcmdldEJpdG1hcCwgY29u
c3QgV2ViSW50UmVjdCogY29uc3QgcFBhaW50UmVjdCkKKyAgICA6IG1fY29tbW9uKGNyZWF0ZUdy
YXBoaWNzQ29udGV4dFByaXZhdGUoKSkKKyAgICAsIG1fZGF0YShuZXcgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKQoreworICAgIGlmIChwVGFyZ2V0Qml0bWFwKSB7CisgICAgICAgIEFT
U0VSVChwVGFyZ2V0Qml0bWFwLT5tX3BWVGFibGUpOworCisgICAgICAgIHVuc2lnbmVkIGNoYXIq
IGNvbnN0IHBUYXJnZXRQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PihwVGFyZ2V0Qml0bWFwLT5tX3BWVGFibGUtPmdldFBpeGVsRGF0YShwVGFyZ2V0Qml0bWFwKSk7
CisgICAgICAgIGludCBjb25zdCB0YXJnZXRCaXRtYXBXaWR0aCA9IHN0YXRpY19jYXN0PGludD4o
cFRhcmdldEJpdG1hcC0+bV9wVlRhYmxlLT5nZXRXaWR0aChwVGFyZ2V0Qml0bWFwKSk7CisgICAg
ICAgIGludCBjb25zdCB0YXJnZXRCaXRtYXBIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBUYXJn
ZXRCaXRtYXAtPm1fcFZUYWJsZS0+Z2V0SGVpZ2h0KHBUYXJnZXRCaXRtYXApKTsKKyAgICAgICAg
aW50IGNvbnN0IHRhcmdldEJpdG1hcFN0cmlkZSA9IHN0YXRpY19jYXN0PGludD4ocFRhcmdldEJp
dG1hcC0+bV9wVlRhYmxlLT5nZXRTdHJpZGUocFRhcmdldEJpdG1hcCkpOworCisgICAgICAgIGNh
aXJvX3N1cmZhY2VfdCogY29uc3QgcFRhcmdldFN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2NyZWF0ZV9mb3JfZGF0YShwVGFyZ2V0UGl4ZWxEYXRhLCBDQUlST19GT1JNQVRfQVJHQjMyLCB0
YXJnZXRCaXRtYXBXaWR0aCwgdGFyZ2V0Qml0bWFwSGVpZ2h0LCB0YXJnZXRCaXRtYXBTdHJpZGUp
OworICAgICAgICBjYWlyb190KiBwQ2Fpcm9Db250ZXh0ID0gY2Fpcm9fY3JlYXRlKHBUYXJnZXRT
dXJmYWNlKTsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKHBDYWlyb0NvbnRleHQsIHBQYWludFJl
Y3QtPm1fbGVmdCwgcFBhaW50UmVjdC0+bV90b3AsIHBQYWludFJlY3QtPm1fcmlnaHQgLSBwUGFp
bnRSZWN0LT5tX2xlZnQsIHBQYWludFJlY3QtPm1fYm90dG9tIC0gcFBhaW50UmVjdC0+bV90b3Ap
OworICAgICAgICBjYWlyb19jbGlwKHBDYWlyb0NvbnRleHQpOworCisgICAgICAgIHN0YXRpYyBj
YWlyb19mb250X29wdGlvbnNfdCogZm9udE9wdGlvbnMgPSBjYWlyb19mb250X29wdGlvbnNfY3Jl
YXRlKCk7IC8vIEZvcmNlIENsZWFyVHlwZS1sZXZlbCBxdWFsaXR5LgorICAgICAgICBjYWlyb19m
b250X29wdGlvbnNfc2V0X2FudGlhbGlhcyhmb250T3B0aW9ucywgQ0FJUk9fQU5USUFMSUFTX1NV
QlBJWEVMKTsKKyAgICAgICAgY2Fpcm9fc2V0X2ZvbnRfb3B0aW9ucyhwQ2Fpcm9Db250ZXh0LCBm
b250T3B0aW9ucyk7CisKKyAgICAgICAgbV9kYXRhLT5jciA9IGNhaXJvX3JlZmVyZW5jZShwQ2Fp
cm9Db250ZXh0KTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBzZXRQYWludGluZ0Rpc2FibGVk
KHRydWUpOworCisgICAgbV9kYXRhLT5iaXRtYXAgPSBwVGFyZ2V0Qml0bWFwOworfQorI2VuZGlm
CiAjZW5kaWYKIAogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQqIGNyKQpAQCAtMTI0LDggKzIyOCwyMSBAQCBHcmFwaGljc0NvbnRleHQ6Okdy
YXBoaWNzQ29udGV4dChQbGF0Zm9yCiAKIEdyYXBoaWNzQ29udGV4dDo6fkdyYXBoaWNzQ29udGV4
dCgpCiB7CisjaWYgUExBVEZPUk0oQVBPTExPKSAmJiBQTEFURk9STShXSU5fT1MpCisgICAgY2Fp
cm9fdCogcENhaXJvQ29udGV4dCA9IG1fZGF0YS0+Y3I7CisgICAgV2ViQml0bWFwKiBwVGFyZ2V0
Qml0bWFwID0gbV9kYXRhLT5iaXRtYXA7CisjZW5kaWYKKwogICAgIGRlc3Ryb3lHcmFwaGljc0Nv
bnRleHRQcml2YXRlKG1fY29tbW9uKTsKICAgICBkZWxldGUgbV9kYXRhOworICAgIG1fZGF0YSA9
IDA7CisKKyNpZiBQTEFURk9STShBUE9MTE8pICYmIFBMQVRGT1JNKFdJTl9PUykKKyAgICBpZihw
Q2Fpcm9Db250ZXh0ICYmIHBUYXJnZXRCaXRtYXApIHsKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KGNhaXJvX2dldF90YXJnZXQocENhaXJvQ29udGV4dCkpOworICAgICAgICBjYWlyb19k
ZXN0cm95KHBDYWlyb0NvbnRleHQpOworICAgIH0KKyNlbmRpZgogfQogCiBjYWlyb190KiBHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CkBAIC00MDksOSArNTI2LDEzIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEludFJlY3QKIAogICAgIGNhaXJvX3Qq
IGNyID0gbV9kYXRhLT5jcjsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBjYWlyb19maWxsX3J1bGVf
dCBvbGRGaWxsUnVsZSA9IGNhaXJvX2dldF9maWxsX3J1bGUoY3IpOworICAgIGNhaXJvX3NldF9m
aWxsX3J1bGUoY3IsIENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKICAgICBjYWlyb19jbGlwKGNy
KTsKKyAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBvbGRGaWxsUnVsZSk7CiB9CiAKKyNpZiAh
UExBVEZPUk0oQVBPTExPKQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29u
c3QgQ29sb3ImIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC00NDAs
NiArNTYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29ucwogICAg
IGNhaXJvX3N0cm9rZShjcik7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CisjZW5kaWYKIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBJbnRQb2ludCYgb3Jp
Z2luLCBpbnQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCiB7CkBAIC02MDQsMTcgKzcyNiwxOSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjCiAKICAgICBjbGlwKHJlY3Qp
OwogICAgIFBhdGggcGF0aDsKLQotICAgIHBhdGguYWRkRWxsaXBzZShyZWN0KTsKLQotICAgIElu
dFJlY3QgaW5uZXIocmVjdCk7CisgICAgRmxvYXRSZWN0IGlubmVyKHJlY3QpOworICAgIC8vIEFk
ZCBvdXRlciBlbGxpcHNlCisgICAgcGF0aC5hZGRFbGxpcHNlKGlubmVyKTsKKyAgICAvLyBBZGQg
aW5uZXIgZWxsaXBzZQogICAgIGlubmVyLmluZmxhdGUoLXRoaWNrbmVzcyk7CiAgICAgcGF0aC5h
ZGRFbGxpcHNlKGlubmVyKTsKKyAgICBhZGRQYXRoKHBhdGgpOwogCiAgICAgY2Fpcm9fdCogY3Ig
PSBtX2RhdGEtPmNyOworICAgIGNhaXJvX2ZpbGxfcnVsZV90IG9sZEZpbGxSdWxlID0gY2Fpcm9f
Z2V0X2ZpbGxfcnVsZShjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklM
TF9SVUxFX0VWRU5fT0REKTsKLQotICAgIGNsaXAocGF0aCk7CisgICAgY2Fpcl9jbGlwKGNyKTsK
KyAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBvbGRGaWxsUnVsZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTaGFkb3coSW50U2l6ZSBjb25zdCYsIGludCwgQ29sb3IgY29uc3Qm
KQpAQCAtNjcwLDkgKzc5NCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChj
b25zdCBGCiAKICAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CiAgICAgY2Fpcm9fc2F2ZShj
cik7Ci0gICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgc2V0Q29sb3IoY3IsIHN0cm9rZUNvbG9yKCkpOwog
ICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCB3aWR0aCk7CisgICAgc2V0Q29sb3IoY3IsIHN0
cm9rZUNvbG9yKCkpOworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgp
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihj
ciwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CiAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKICAgICBjYWly
b19yZXN0b3JlKGNyKTsKIH0KQEAgLTgwMSwxNSArOTI2LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fpcm9fdCog
Y3IgPSBtX2RhdGEtPmNyOwotICAgIGNhaXJvX3BhdGhfdCAqcCA9IGNhaXJvX2NvcHlfcGF0aChw
YXRoLnBsYXRmb3JtUGF0aCgpLT5tX2NyKTsKKyAgICBjYWlyb19wYXRoX3QqIHAgPSBjYWlyb19j
b3B5X3BhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKS0+bV9jcik7CiAgICAgY2Fpcm9fYXBwZW5kX3Bh
dGgoY3IsIHApOwogICAgIGNhaXJvX3BhdGhfZGVzdHJveShwKTsKKyAgICBjYWlyb19maWxsX3J1
bGVfdCBvbGRGaWxsUnVsZSA9IGNhaXJvX2dldF9maWxsX3J1bGUoY3IpOworICAgIGNhaXJvX3Nl
dF9maWxsX3J1bGUoY3IsIENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKICAgICBjYWlyb19jbGlw
KGNyKTsKKyAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBvbGRGaWxsUnVsZSk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNh
aXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7CisgICAg
Y2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngyLCAmeTIpOworICAgIGNhaXJvX3Jl
Y3RhbmdsZShjciwgeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsKKyAgICBhZGRQYXRoKHBhdGgp
OworCisgICAgY2Fpcm9fZmlsbF9ydWxlX3Qgb2xkRmlsbFJ1bGUgPSBjYWlyb19nZXRfZmlsbF9y
dWxlKGNyKTsKKyAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZF
Tl9PREQpOworICAgIGNhaXJvX2NsaXAoY3IpOworICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3Is
IG9sZEZpbGxSdWxlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZShmbG9hdCBy
YWRpYW5zKQpAQCAtODI4LDE5ICs5NjgsNDQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxl
KGNvbnN0IEZsb2F0UwogICAgIGNhaXJvX3NjYWxlKG1fZGF0YS0+Y3IsIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0
IEludFJlY3QmKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAg
ICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7CisgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEs
ICZ5MSwgJngyLCAmeTIpOworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeDEsIHgyLCB4MiAtIHgx
LCB5MiAtIHkxKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwg
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBjYWlyb19maWxsX3J1bGVfdCBvbGRG
aWxsUnVsZSA9IGNhaXJvX2dldF9maWxsX3J1bGUoY3IpOworICAgIGNhaXJvX3NldF9maWxsX3J1
bGUoY3IsIENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCk7CisgICAgY2Fpcm9fY2xpcChjcik7Cisg
ICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgb2xkRmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJlY3QoY29uc3QgSW50UmVjdCYpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLmFkZEVsbGlwc2UocmVj
dCk7CisgICAgY2xpcE91dChwYXRoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
b3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwgY29uc3Qg
SW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnQsIGNvbnN0IEludFNp
emUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnQs
IGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0LCBjb25z
dCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3NhdmUoY3IpOwor
ICAgIGJlZ2luUGF0aCgpOworICAgIGFkZFBhdGgoUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3Rhbmds
ZShyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAg
ICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBj
b2xvci5ibHVlKCksIGNvbG9yLmFscGhhKCkpOworICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAJKHJldmlzaW9uIDI4OTY1KQorKysgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4
LDExIEBAIHZvaWQgRnJhbWVEYXRhOjpjbGVhcigpCiAgICAgfQogfQogCitjYWlyb19zdXJmYWNl
X3QqIEJpdG1hcEltYWdlOjpnZXRDYWlyb1N1cmZhY2UoKQoreworICAgIHJldHVybiBmcmFtZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOworfQorCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBpZiAoIW1fc291cmNlLmluaXRp
YWxpemVkKCkpCkluZGV4OiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZVNvdXJjZUNhaXJv
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZVNvdXJjZUNh
aXJvLmNwcAkocmV2aXNpb24gMjg5NjUpCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZVNvdXJjZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwxMiBAQCBOYXRp
dmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBCiAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5zdGF0dXMoKSA9PSBSR0JBMzJCdWZmZXI6OkZyYW1lRW1wdHkpCiAgICAgICAgIHJl
dHVybiAwOwogCisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgLy8gY2Fpcm8gZG9lcyBub3QgbGlr
ZSB6ZXJvIGhlaWdodCBpbWFnZXMuCisgICAgLy8gaWYgd2UgaGF2ZSBhIHplcm8gaGVpZ2h0IGlt
YWdlLCBqdXN0IHByZXRlbmQgd2UgZG9uJ3QgaGF2ZSBlbm91Z2ggZGF0YSB5ZXQuCisgICAgaWYg
KCEoYnVmZmVyLT5oZWlnaHQoKSkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgcmV0dXJuIGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25lZCBjaGFyKilidWZmZXIt
PmJ5dGVzKCkuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplKCkud2lkdGgoKSwKQEAgLTE5NSw2ICsyMDEsMTUgQEAg
ZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KAogCiBib29sIEltYWdlU291
cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CisgICAgaWYgKCFtX2Rl
Y29kZXIgfHwgIW1fZGVjb2Rlci0+c3VwcG9ydHNBbHBoYSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSR0JBMzJCdWZmZXIqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJB
dEluZGV4KGluZGV4KTsKKworI2lmIFBMQVRGT1JNKEFQT0xMTykKKyAgICBpZiAoIWJ1ZmZlciB8
fCBidWZmZXItPnN0YXR1cygpID09IFJHQkEzMkJ1ZmZlcjo6RnJhbWVFbXB0eSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworI2Vsc2UKICAgICAvLyBXaGVuIGEgZnJhbWUgaGFzIG5vdCBmaW5pc2hl
ZCBkZWNvZGluZywgYWx3YXlzIG1hcmsgaXQgYXMgaGF2aW5nIGFscGhhLAogICAgIC8vIHNvIHdl
IGRvbid0IGdldCBhIGJsYWNrIGJhY2tncm91bmQgZm9yIHRoZSB1bmRlY29kZWQgc2VjdGlvbnMu
CiAgICAgLy8gVE9ETzogQSBiZXR0ZXIgc29sdXRpb24gaXMgcHJvYmFibHkgdG8gaGF2ZSB0aGUg
dW5kZXJseWluZyBidWZmZXIncwpAQCAtMjAyLDggKzIxNyw5IEBAIGJvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHMKICAgICAvLyB0cnVlLgogICAgIGlmICghZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChpbmRleCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpLT5oYXNBbHBoYSgp
OworICAgIHJldHVybiBidWZmZXItPmhhc0FscGhhKCk7ICAgIAogfQogCiB9Cg==
</data>
<flag name="review"
          id="7837"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18069</attachid>
            <date>2007-12-23 01:15:05 -0800</date>
            <delta_ts>2007-12-23 16:21:02 -0800</delta_ts>
            <desc>Cairo graphics fixes</desc>
            <filename>apollo-cairo.patch</filename>
            <type>text/plain</type>
            <size>6626</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODk2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDctMTItMjMgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTc3CisgICAgICAgIE1lcmdlIENhaXJv
IGVuaGFuY2VtZW50cyBmcm9tIEFwb2xsbyBwcm9qZWN0CisKKyAgICAgICAgVGhpcyBwYXRjaCBp
cyBiYXNlZCBvbiBpbml0aWFsIG1lcmdpbmcgd29yayBieSBCcmVudCBGdWxnaGFtLiBBZG9iZSdz
CisgICAgICAgIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJldHRl
ciBzdWl0IHRoZSBleGlzdGluZworICAgICAgICBjb2Rpbmcgc3R5bGUuCisKKyAgICAgICAgSW1w
bGVtZW50IG1vcmUgY2xpcHBpbmcgYW5kIGRyYXdpbmcgZnVuY3Rpb25zLgorCisgICAgICAgIFNh
dmUgYW5kIHJlc3RvcmUgdGhlIGZpbGwgcnVsZSBtYW51YWxseSB3aGVuIGNsaXBwaW5nLgorCisg
ICAgICAgIEF2b2lkIGltYWdlIHN1cmZhY2UgY3JlYXRpb24gd2hlbiB0aGUgaW1hZ2UgYnVmZmVy
IGhhcyBoZWlnaHQgemVyby4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91
bmRlZFJlY3RDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YWRkUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0RWxsaXBzZUluUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VTb3VyY2VDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KToKKwogMjAwNy0xMi0y
MiAgQWxwIFRva2VyICA8YWxwQGF0b2tlci5jb20+CiAKICAgICAgICAgR1RLKyBidWlsZCBmaXgK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShyZXZpc2lvbiAyODk2NSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MDksNyArNDA5LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IElu
dFJlY3QKIAogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKICAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsK
KyAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVs
ZShjcik7CisgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJTkRJ
TkcpOwogICAgIGNhaXJvX2NsaXAoY3IpOworICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHNh
dmVkRmlsbFJ1bGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhj
b25zdCBDb2xvciYgY29sb3IpCkBAIC02MDMsMjAgKzYwNiwyNCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjCiAgICAgICAgIHJldHVybjsKIAogICAgIGNsaXAocmVj
dCk7Ci0gICAgUGF0aCBwYXRoOwogCi0gICAgcGF0aC5hZGRFbGxpcHNlKHJlY3QpOwotCi0gICAg
SW50UmVjdCBpbm5lcihyZWN0KTsKLSAgICBpbm5lci5pbmZsYXRlKC10aGlja25lc3MpOwotICAg
IHBhdGguYWRkRWxsaXBzZShpbm5lcik7CisgICAgUGF0aCBwOworICAgIEZsb2F0UmVjdCByKHJl
Y3QpOworICAgIC8vIEFkZCBvdXRlciBlbGxpcHNlCisgICAgcC5hZGRFbGxpcHNlKHIpOworICAg
IC8vIEFkZCBpbm5lciBlbGxpcHNlCisgICAgci5pbmZsYXRlKC10aGlja25lc3MpOworICAgIHAu
YWRkRWxsaXBzZShyKTsKKyAgICBhZGRQYXRoKHApOwogCiAgICAgY2Fpcm9fdCogY3IgPSBtX2Rh
dGEtPmNyOworICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19nZXRf
ZmlsbF9ydWxlKGNyKTsKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JV
TEVfRVZFTl9PREQpOwotCi0gICAgY2xpcChwYXRoKTsKKyAgICBjYWlyb19jbGlwKGNyKTsKKyAg
ICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0KIAorCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KEludFNpemUgY29uc3QmLCBpbnQsIENvbG9yIGNvbnN0
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNzkwLDcgKzc5Nyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjphZGRQYXRoKGNvbnN0IFBhdGgKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwotICAgIGNhaXJvX3BhdGhfdCAqcCA9IGNhaXJvX2Nv
cHlfcGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLT5tX2NyKTsKKyAgICBjYWlyb19wYXRoX3QqIHAg
PSBjYWlyb19jb3B5X3BhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKS0+bV9jcik7CiAgICAgY2Fpcm9f
YXBwZW5kX3BhdGgoY3IsIHApOwogICAgIGNhaXJvX3BhdGhfZGVzdHJveShwKTsKIH0KQEAgLTgw
MSwxNSArODA4LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwotICAgIGNh
aXJvX3BhdGhfdCAqcCA9IGNhaXJvX2NvcHlfcGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLT5tX2Ny
KTsKKyAgICBjYWlyb19wYXRoX3QqIHAgPSBjYWlyb19jb3B5X3BhdGgocGF0aC5wbGF0Zm9ybVBh
dGgoKS0+bV9jcik7CiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY3IsIHApOwogICAgIGNhaXJvX3Bh
dGhfZGVzdHJveShwKTsKKyAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fp
cm9fZ2V0X2ZpbGxfcnVsZShjcik7CisgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9f
RklMTF9SVUxFX1dJTkRJTkcpOwogICAgIGNhaXJvX2NsaXAoY3IpOworICAgIGNhaXJvX3NldF9m
aWxsX3J1bGUoY3IsIHNhdmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcE91dChjb25zdCBQYXRoJikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0
IFBhdGgmIHBhdGgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+
Y3I7CisgICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyOworICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhj
ciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHgxLCB5MSwg
eDIgLSB4MSwgeTIgLSB5MSk7CisgICAgYWRkUGF0aChwYXRoKTsKKworICAgIGNhaXJvX2ZpbGxf
cnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19nZXRfZmlsbF9ydWxlKGNyKTsKKyAgICBjYWly
b19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZFTl9PREQpOworICAgIGNhaXJv
X2NsaXAoY3IpOworICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHNhdmVkRmlsbFJ1bGUpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cm90YXRlKGZsb2F0IHJhZGlhbnMpCkBAIC04Mjgs
MTkgKzg1MCw0NCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTCiAg
ICAgY2Fpcm9fc2NhbGUobV9kYXRhLT5jciwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBJbnRSZWN0JiByKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGRvdWJsZSB4MSwgeTEsIHgy
LCB5MjsKKyAgICBjYWlyb19jbGlwX2V4dGVudHMoY3IsICZ4MSwgJnkxLCAmeDIsICZ5Mik7Cisg
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCB4MSwgeDIsIHgyIC0geDEsIHkyIC0geTEpOworICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgci54KCksIHIueSgpLCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOwor
ICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19nZXRfZmlsbF9ydWxl
KGNyKTsKKyAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZFTl9P
REQpOworICAgIGNhaXJvX2NsaXAoY3IpOworICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIHNh
dmVkRmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJ
blJlY3QoY29uc3QgSW50UmVjdCYpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlw
c2VJblJlY3QoY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBhdGggcDsK
KyAgICBwLmFkZEVsbGlwc2Uocik7CisgICAgY2xpcE91dChwKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYg
dG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJvdHRvbUxl
ZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0IEludFNp
emUmIHRvcExlZnQsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0LCBjb25zdCBJbnRTaXplJiBib3R0
b21MZWZ0LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCwgY29uc3QgQ29sb3ImIGNvbG9yKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJv
X3NhdmUoY3IpOworICAgIGJlZ2luUGF0aCgpOworICAgIGFkZFBhdGgoUGF0aDo6Y3JlYXRlUm91
bmRlZFJlY3RhbmdsZShyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQpKTsKKyAgICBzZXRDb2xvcihjciwgY29sb3IpOworICAgIGNhaXJvX2ZpbGwoY3IpOworICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZVNvdXJjZUNhaXJvLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlU291cmNlQ2Fpcm8uY3Bw
CShyZXZpc2lvbiAyODk2NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VTb3VyY2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksMTEgQEAgTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQQogICAgIGlmICghYnVmZmVyIHx8
IGJ1ZmZlci0+c3RhdHVzKCkgPT0gUkdCQTMyQnVmZmVyOjpGcmFtZUVtcHR5KQogICAgICAgICBy
ZXR1cm4gMDsKIAorICAgIC8vIENhaXJvIGRvZXMgbm90IGxpa2UgemVybyBoZWlnaHQgaW1hZ2Vz
LgorICAgIC8vIElmIHdlIGhhdmUgYSB6ZXJvIGhlaWdodCBpbWFnZSwganVzdCBwcmV0ZW5kIHdl
IGRvbid0IGhhdmUgZW5vdWdoIGRhdGEgeWV0LgorICAgIGlmICghYnVmZmVyLT5oZWlnaHQoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVh
dGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNoYXIqKWJ1ZmZlci0+Ynl0ZXMoKS5kYXRhKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBSVJPX0ZPUk1BVF9B
UkdCMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emUoKS53aWR0aCgpLAo=
</data>
<flag name="review"
          id="7840"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>