<?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>14129</bug_id>
          
          <creation_ts>2007-06-13 16:21:50 -0700</creation_ts>
          <short_desc>[CAIRO] Support the canvas element</short_desc>
          <delta_ts>2007-10-03 10:35:34 -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>New Bugs</component>
          <version>523.x (Safari 3)</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Alp Toker">alp</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>7632</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-06-13 16:21:50 -0700</bug_when>
    <thetext>A brief look at CanvasRenderingContext2D suggests this can be done in a couple of steps. First we need to add basic Cairo fill/stroke and possibly image support. Gradient support will require some abstraction and further work (for which #13312 may provide inspiration).

It seems that unlike most of the WebKit porting layer, CanvasRenderingContext2D porting is simply done with inline conditional macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655</commentid>
    <comment_count>1</comment_count>
      <attachid>16258</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-09-11 09:52:47 -0700</bug_when>
    <thetext>Created attachment 16258
Initial work on Cairo canvas support

This is not particularly complete, but eg. canvas painter mostly works (http://caimansys.com/painter/).

Thoughts and improvements welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631</commentid>
    <comment_count>2</comment_count>
      <attachid>16261</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-09-11 13:56:22 -0700</bug_when>
    <thetext>Created attachment 16261
Cairo canvas support

Now renders canvas content in the correct position.
Memory leak fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57709</commentid>
    <comment_count>3</comment_count>
      <attachid>16514</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-10-03 01:54:20 -0700</bug_when>
    <thetext>Created attachment 16514
Cairo canvas support

Not complete, but works quite well. There are a few FIXMEs and CanvasPattern is not yet implemented, but it may make sense to get this landed soon so the patch doesn&apos;t become obsolete every time the QT port is tweaked.

(No ChangeLog entry just yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57740</commentid>
    <comment_count>4</comment_count>
      <attachid>16514</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-03 09:46:34 -0700</bug_when>
    <thetext>Comment on attachment 16514
Cairo canvas support

Ick.  The code looks fine.  The only problem is see is that this makes Canvas code even uglier (as now there is a 3-way ifdef.  Canvas needs to be taught to use platform dependent support classes, and the platform independent bits should then have all the #ifdef&apos;d code removed.

I mentioned some needless comments on IRC.  Please remove those, then feel free to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57744</commentid>
    <comment_count>5</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-10-03 10:35:34 -0700</bug_when>
    <thetext>Fixed in r26021</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16258</attachid>
            <date>2007-09-11 09:52:47 -0700</date>
            <delta_ts>2007-09-11 13:56:22 -0700</delta_ts>
            <desc>Initial work on Cairo canvas support</desc>
            <filename>canvas.patch</filename>
            <type>text/plain</type>
            <size>9386</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNTQ4OSkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgVHJvbGx0ZWNoIEFTQQorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBU
b2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDksNiArNTAsOSBAQAogI2luY2x1ZGUgPFFQYWludGVyPgogI2luY2x1ZGUg
PFFQaXhtYXA+CiAjaW5jbHVkZSA8UVBhaW50ZXJQYXRoPgorI2VsaWYgUExBVEZPUk0oQ0FJUk8p
CisjaW5jbHVkZSAiQ2Fpcm9QYXRoLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NzMsNiArNDc3LDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAg
ICAgICAgcC0+ZmlsbFBhdGgoKnBhdGgsIHAtPmJydXNoKCkpOwogICAgIH0KKyNlbGlmIFBMQVRG
T1JNKENBSVJPKQorICAgIGNhaXJvX3QqIHBhdGhDciA9IHN0YXRlKCkubV9wYXRoLnBsYXRmb3Jt
UGF0aCgpLT5tX2NyOworICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgY2Fpcm9fc2F2ZShjcik7CisgICAgd2lsbERyYXcoc3RhdGUoKS5tX3BhdGguYm91bmRpbmdS
ZWN0KCkpOworICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLT5ncmFkaWVudCgpKSB7CisgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCku
bV9maWxsU3R5bGUtPnBhdHRlcm4oKSkKKyAgICAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsK
KyAgICAgICAgYy0+YWRkUGF0aChzdGF0ZSgpLm1fcGF0aCk7CisgICAgICAgIGNhaXJvX2ZpbGwo
Y3IpOworICAgIH0KKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKICNlbmRpZgogCiAgICAgY2xlYXJQ
YXRoRm9yRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpOwpAQCAtNTE4LDYgKzUz
NiwyMCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkKICAgICAgICAg
ICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgICAgICBwLT5zdHJva2VQYXRoKCpwYXRoLCBw
LT5wZW4oKSk7CiAgICAgfQorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgY2Fpcm9fdCogcGF0
aENyID0gc3RhdGUoKS5tX3BhdGgucGxhdGZvcm1QYXRoKCktPm1fY3I7CisgICAgY2Fpcm9fdCog
Y3IgPSBjLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb19zYXZlKGNyKTsKKyAgICB3aWxs
RHJhdyhzdGF0ZSgpLm1fcGF0aC5ib3VuZGluZ1JlY3QoKSk7CisgICAgaWYgKHN0YXRlKCkubV9z
dHJva2VTdHlsZS0+Z3JhZGllbnQoKSkgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUtPnBhdHRlcm4oKSkK
KyAgICAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOworICAgICAgICBjLT5hZGRQYXRoKHN0
YXRlKCkubV9wYXRoKTsKKyAgICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKKyAgICB9CisgICAgY2Fp
cm9fcmVzdG9yZShjcik7CiAjZW5kaWYKIAogICAgIGNsZWFyUGF0aEZvckRhc2hib2FyZEJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUoKTsKQEAgLTU4Nyw2ICs2MTksMTMgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KAogICAgICAgICAgICAgYXBwbHlGaWxsUGF0dGVy
bigpOwogICAgICAgICBwLT5maWxsUmVjdChyZWN0LCBwLT5icnVzaCgpKTsKICAgICB9CisjZWxp
ZiBQTEFURk9STShDQUlSTykKKyAgICBjYWlyb190KiBjciA9IGMtPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIGNhaXJvX3NhdmUoY3IpOworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeCwgeSwgd2lk
dGgsIGhlaWdodCk7CisgICAgLy9UT0RPOiBhcHBseUZpbGxQYXR0ZXJuKCkgZXF1aXZhbGVudAor
ICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogI2VuZGlmCiB9CiAK
QEAgLTkxMiw2ICs5NTEsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZQogICAgIHdpbGxEcmF3KGRzdFJlY3QpOwogICAgIFFQYWludGVyKiBwYWludGVyID0gc3Rh
dGljX2Nhc3Q8UVBhaW50ZXIqPihjLT5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcGFpbnRlci0+
ZHJhd1BpeG1hcChkc3RSZWN0LCBweCwgc3JjUmVjdCk7CisjZWxpZiBQTEFURk9STShDQUlSTykK
KyAgICAvL0ZJWE1FOiB0aGlzIGlzIGEgYml0IG1lc3N5CisgICAgY2Fpcm9fc3VyZmFjZV90KiBp
bWFnZSA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpOworICAgIHdpbGxEcmF3KGRzdFJl
Y3QpOworICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9f
c2F2ZShjcik7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBpbWFnZSwgc3JjUmVj
dC54KCksIHNyY1JlY3QueSgpKTsKKyAgICAvL2NhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFnZSk7
CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJl
Y3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fZmlsbChjcik7CisgICAg
Y2Fpcm9fcmVzdG9yZShjcik7CiAjZW5kaWYKIH0KIApAQCAtMTAzOCw2ICsxMDg4LDggQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U3RybwogICAgIHN0YXRlKCkubV9zdHJv
a2VTdHlsZVBhdHRlcm5UcmFuc2Zvcm0gPSBtOwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgZnBy
aW50ZihzdGRlcnIsICJGSVhNRTogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVN0cm9r
ZVBhdHRlcm5cbiIpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgbm90SW1wbGVtZW50ZWQo
KTsKICNlbmRpZgogICAgIHN0YXRlKCkubV9hcHBsaWVkU3Ryb2tlUGF0dGVybiA9IHRydWU7CiB9
CkBAIC0xMDczLDcgKzExMjUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBw
bHlGaWxsCiAKICAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlUGF0dGVyblRyYW5zZm9ybSA9IG07CiAj
ZWxpZiBQTEFURk9STShRVCkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmFwcGx5U3Ryb2tlUGF0dGVyblxuIik7CisgICAgZnByaW50ZihzdGRl
cnIsICJGSVhNRTogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuXG4i
KTsKICNlbmRpZgogICAgIHN0YXRlKCkubV9hcHBsaWVkRmlsbFBhdHRlcm4gPSB0cnVlOwogfQpJ
bmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lvbiAyNTQ4OSkKKysrIFdlYkNvcmUvaHRtbC9D
YW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3IFRyb2xsdGVjaCBBU0EKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM5LDggQEAKICNpbmNsdWRlIDxRQnJ1c2g+CiAj
aW5jbHVkZSA8UVBlbj4KICNpbmNsdWRlIDxRQ29sb3I+CisjZWxpZiBQTEFURk9STShDQUlSTykK
KyNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4
LDYgKzkxLDggQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaAogICAg
ICAgICByZXR1cm47CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUVBhaW50ZXIqIHAgPSBzdGF0aWNf
Y2FzdDxRUGFpbnRlcio+KGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyNlbGlmIFBMQVRG
T1JNKENBSVJPKQorICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
CiAjZW5kaWYKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENvbG9yU3RyaW5n
OiB7CkBAIC0xMDEsNiArMTA2LDEyIEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29s
b3IoR3JhcGgKICAgICAgICAgICAgICAgICAoKGNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMjU1LjBm
KTsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgcC0+c2V0UGVuKFFQZW4oUUNvbG9y
KFFSZ2IoY29sb3IpKSkpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgICAgICAgICBjYWly
b19zZXRfc291cmNlX3JnYmEoY3IsCisgICAgICAgICAgICAgICAgKChjb2xvciA+PiAxNikgJiAw
eEZGKSAvIDI1NS4wZiwKKyAgICAgICAgICAgICAgICAoKGNvbG9yID4+IDgpICYgMHhGRikgLyAy
NTUuMGYsCisgICAgICAgICAgICAgICAgKGNvbG9yICYgMHhGRikgLyAyNTUuMGYsCisgICAgICAg
ICAgICAgICAgKChjb2xvciA+PiAyNCkgJiAweEZGKSAvIDI1NS4wZik7CiAjZW5kaWYKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTcsNiArMTI4LDcgQEAgdm9pZCBDYW52YXNT
dHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaAogICAgICAgICAgICAgUUNvbG9yIGNsciA9IFFD
b2xvcihRUmdiKGNvbG9yKSk7CiAgICAgICAgICAgICBjbHIuc2V0QWxwaGFGKG1fYWxwaGEpOwog
ICAgICAgICAgICAgcC0+c2V0UGVuKGNscik7CisjZWxpZiBQTEFURk9STShDQUlSTykKICNlbmRp
ZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAkocmV2aXNpb24gMjU0ODkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3JhLmNvLnVr
PgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0NCw4IEBACiAjaWYg
UExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UVBpeG1hcD4KKyNl
bGlmIFBMQVRGT1JNKENBSVJPKQorI2luY2x1ZGUgPGNhaXJvLmg+CiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzksNiArODIsOSBAQCBIVE1MQ2FudmFzRWxlbWVudDo6fkhUTUxD
YW52YXNFbGVtZW50KCkKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIGRlbGV0ZSBtX3BhaW50ZXI7
CiAgICAgZGVsZXRlIG1fZGF0YTsKKyNlbGlmIFBMQVRGT1JNKENHKQorICAgIGNhaXJvX3N1cmZh
Y2VfZGVzdHJveShtX3N1cmZhY2UpOworICAgIGZhc3RGcmVlKG1fZGF0YSk7CiAjZW5kaWYKICAg
ICBkZWxldGUgbV9kcmF3aW5nQ29udGV4dDsKIH0KQEAgLTE3Miw2ICsxNzgsOCBAQCB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpyZXNldCgpCiAgICAgZGVsZXRlIG1fcGFpbnRlcjsKICAgICBtX3Bh
aW50ZXIgPSAwOwogICAgIGRlbGV0ZSBtX2RhdGE7CisjZWxpZiBQTEFURk9STShDRykKKyAgICBm
YXN0RnJlZShtX2RhdGEpOwogI2VuZGlmCiAgICAgbV9kYXRhID0gMDsKICAgICBkZWxldGUgbV9k
cmF3aW5nQ29udGV4dDsKQEAgLTIwMyw2ICsyMTEsMTUgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6cGFpbnQoR3JhcGhpY3NDbwogICAgICAgICAgICAgbV9wYWludGVyLT5lbmQoKTsKICAgICAg
ICAgc3RhdGljX2Nhc3Q8UVBhaW50ZXIqPihwLT5wbGF0Zm9ybUNvbnRleHQoKSktPmRyYXdQaXht
YXAociwgKm1fZGF0YSk7CiAgICAgfQorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgaWYgKG1f
ZGF0YSkgeworICAgICAgICBjYWlyb190KiBjciA9IHAtPnBsYXRmb3JtQ29udGV4dCgpOworICAg
ICAgICBjYWlyb19zYXZlKGNyKTsKKyAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNy
LCBtX3N1cmZhY2UsIDAsIDApOworICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHIueCgpLCBy
LnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKKyAgICAgICAgY2Fpcm9fZmlsbChjcik7Cisg
ICAgICAgIGNhaXJvX3Jlc3RvcmUoY3IpOworICAgIH0KICNlbmRpZgogfQogCkBAIC0yNDUsNiAr
MjYyLDIyIEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZURyYXdpbmdDb24KICAgICBt
X2RhdGEtPmZpbGwoUXQ6OndoaXRlKTsKICAgICBtX3BhaW50ZXIgPSBuZXcgUVBhaW50ZXIobV9k
YXRhKTsKICAgICBtX2RyYXdpbmdDb250ZXh0ID0gbmV3IEdyYXBoaWNzQ29udGV4dChtX3BhaW50
ZXIpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgLy9GSVhNRTogdGhpcyBiaXQgaXMgY29w
aWVkCisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gdyAqIDQ7CisgICAgaWYgKGJ5dGVzUGVyUm93
IC8gNCAhPSB3KSAvLyBjaGVjayBmb3Igb3ZlcmZsb3cKKyAgICAgICAgcmV0dXJuOworICAgIG1f
ZGF0YSA9IGZhc3RDYWxsb2MoaCwgYnl0ZXNQZXJSb3cpOworICAgIGlmICghbV9kYXRhKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvL2NhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25lZCBjaGFyKiltX2RhdGEsIENBSVJP
X0ZPUk1BVF9BUkdCMzIsIHcsIGgsIHcpOworICAgIG1fc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25lZCBjaGFyKiltX2RhdGEsIENBSVJPX0ZPUk1B
VF9BUkdCMzIsIHcsIGgsIGJ5dGVzUGVyUm93KTsKKyAgICBjYWlyb190KiBjciA9IGNhaXJvX2Ny
ZWF0ZShtX3N1cmZhY2UpOworICAgIC8vY2Fpcm9fc2NhbGUoY3IsIHcgLyB1bnNjYWxlZFdpZHRo
LCBoIC8gdW5zY2FsZWRIZWlnaHQpOworICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShtX3N1cmZh
Y2UpOworICAgIG1fZHJhd2luZ0NvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0KGNyKTsKKyAg
ICBjYWlyb19kZXN0cm95KGNyKTsKICNlbmRpZgogfQogCkBAIC0yODEsNiArMzE0LDEzIEBAIFFQ
aXhtYXAgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZVBsYXRmb3IKICAgICByZXR1cm4gUVBpeG1h
cCgpOwogfQogCisjZWxpZiBQTEFURk9STShDQUlSTykKK2NhaXJvX3N1cmZhY2VfdCogSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBjb25zdAoreworICAgIC8vRklYTUUK
KyAgICByZXR1cm4gbV9zdXJmYWNlOworfQorCiAjZW5kaWYKIAogfQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmgJKHJldmlzaW9uIDI1NDg5KQorKysgV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwLnRva2VyQGNvbGxhYm9y
YS5jby51az4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzcsOCBA
QCB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oUVQp
CiBjbGFzcyBRUGl4bWFwOwogY2xhc3MgUVBhaW50ZXI7CisjZWxpZiBQTEFURk9STShDQUlSTykK
K3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NSw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICBDR0lt
YWdlUmVmIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBjb25zdDsKICNlbGlmIFBMQVRGT1JNKFFUKQog
ICAgIFFQaXhtYXAgY3JlYXRlUGxhdGZvcm1JbWFnZSgpIGNvbnN0OworI2VsaWYgUExBVEZPUk0o
Q0FJUk8pCisgICAgY2Fpcm9fc3VyZmFjZV90KiBjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29uc3Q7
CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTk1LDYgKzEwMCw5IEBAIHByaXZhdGU6CiAjZWxpZiBQ
TEFURk9STShRVCkKICAgICBtdXRhYmxlIFFQaXhtYXAqIG1fZGF0YTsKICAgICBtdXRhYmxlIFFQ
YWludGVyKiBtX3BhaW50ZXI7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBtdXRhYmxlIHZv
aWQqIG1fZGF0YTsKKyAgICBtdXRhYmxlIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlOwogI2Vs
c2UKICAgICBtdXRhYmxlIHZvaWQqIG1fZGF0YTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16261</attachid>
            <date>2007-09-11 13:56:22 -0700</date>
            <delta_ts>2007-10-03 01:54:20 -0700</delta_ts>
            <desc>Cairo canvas support</desc>
            <filename>canvas-2.patch</filename>
            <type>text/plain</type>
            <size>10209</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNTQ4OSkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgVHJvbGx0ZWNoIEFTQQorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBU
b2tlciA8YWxwLnRva2VyQGNvbGxhYm9yYS5jby51az4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDksNiArNTAsOSBAQAogI2luY2x1ZGUgPFFQYWludGVyPgogI2luY2x1ZGUg
PFFQaXhtYXA+CiAjaW5jbHVkZSA8UVBhaW50ZXJQYXRoPgorI2VsaWYgUExBVEZPUk0oQ0FJUk8p
CisjaW5jbHVkZSAiQ2Fpcm9QYXRoLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NzMsNiArNDc3LDIwIEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAg
ICAgICAgcC0+ZmlsbFBhdGgoKnBhdGgsIHAtPmJydXNoKCkpOwogICAgIH0KKyNlbGlmIFBMQVRG
T1JNKENBSVJPKQorICAgIGNhaXJvX3QqIHBhdGhDciA9IHN0YXRlKCkubV9wYXRoLnBsYXRmb3Jt
UGF0aCgpLT5tX2NyOworICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgY2Fpcm9fc2F2ZShjcik7CisgICAgd2lsbERyYXcoc3RhdGUoKS5tX3BhdGguYm91bmRpbmdS
ZWN0KCkpOworICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLT5ncmFkaWVudCgpKSB7CisgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCku
bV9maWxsU3R5bGUtPnBhdHRlcm4oKSkKKyAgICAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4oKTsK
KyAgICAgICAgYy0+YWRkUGF0aChzdGF0ZSgpLm1fcGF0aCk7CisgICAgICAgIGNhaXJvX2ZpbGwo
Y3IpOworICAgIH0KKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKICNlbmRpZgogCiAgICAgY2xlYXJQ
YXRoRm9yRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpOwpAQCAtNTE4LDYgKzUz
NiwyMCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkKICAgICAgICAg
ICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgICAgICBwLT5zdHJva2VQYXRoKCpwYXRoLCBw
LT5wZW4oKSk7CiAgICAgfQorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgY2Fpcm9fdCogcGF0
aENyID0gc3RhdGUoKS5tX3BhdGgucGxhdGZvcm1QYXRoKCktPm1fY3I7CisgICAgY2Fpcm9fdCog
Y3IgPSBjLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb19zYXZlKGNyKTsKKyAgICB3aWxs
RHJhdyhzdGF0ZSgpLm1fcGF0aC5ib3VuZGluZ1JlY3QoKSk7CisgICAgaWYgKHN0YXRlKCkubV9z
dHJva2VTdHlsZS0+Z3JhZGllbnQoKSkgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUtPnBhdHRlcm4oKSkK
KyAgICAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVybigpOworICAgICAgICBjLT5hZGRQYXRoKHN0
YXRlKCkubV9wYXRoKTsKKyAgICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKKyAgICB9CisgICAgY2Fp
cm9fcmVzdG9yZShjcik7CiAjZW5kaWYKIAogICAgIGNsZWFyUGF0aEZvckRhc2hib2FyZEJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUoKTsKQEAgLTU4Nyw2ICs2MTksMTMgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxSZWN0KAogICAgICAgICAgICAgYXBwbHlGaWxsUGF0dGVy
bigpOwogICAgICAgICBwLT5maWxsUmVjdChyZWN0LCBwLT5icnVzaCgpKTsKICAgICB9CisjZWxp
ZiBQTEFURk9STShDQUlSTykKKyAgICBjYWlyb190KiBjciA9IGMtPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIGNhaXJvX3NhdmUoY3IpOworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeCwgeSwgd2lk
dGgsIGhlaWdodCk7CisgICAgLy9UT0RPOiBhcHBseUZpbGxQYXR0ZXJuKCkgZXF1aXZhbGVudAor
ICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogI2VuZGlmCiB9CiAK
QEAgLTkxMiw2ICs5NTEsMTcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZQogICAgIHdpbGxEcmF3KGRzdFJlY3QpOwogICAgIFFQYWludGVyKiBwYWludGVyID0gc3Rh
dGljX2Nhc3Q8UVBhaW50ZXIqPihjLT5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcGFpbnRlci0+
ZHJhd1BpeG1hcChkc3RSZWN0LCBweCwgc3JjUmVjdCk7CisjZWxpZiBQTEFURk9STShDQUlSTykK
KyAgICAvL0ZJWE1FOiB0aGlzIGlzIGEgYml0IG1lc3N5CisgICAgY2Fpcm9fc3VyZmFjZV90KiBp
bWFnZSA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpOworICAgIHdpbGxEcmF3KGRzdFJl
Y3QpOworICAgIGNhaXJvX3QqIGNyID0gYy0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9f
c2F2ZShjcik7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBpbWFnZSwgc3JjUmVj
dC54KCksIHNyY1JlY3QueSgpKTsKKyAgICAvL2NhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFnZSk7
CisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJl
Y3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fZmlsbChjcik7CisgICAg
Y2Fpcm9fcmVzdG9yZShjcik7CiAjZW5kaWYKIH0KIApAQCAtMTAzOCw2ICsxMDg4LDggQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U3RybwogICAgIHN0YXRlKCkubV9zdHJv
a2VTdHlsZVBhdHRlcm5UcmFuc2Zvcm0gPSBtOwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgZnBy
aW50ZihzdGRlcnIsICJGSVhNRTogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVN0cm9r
ZVBhdHRlcm5cbiIpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgbm90SW1wbGVtZW50ZWQo
KTsKICNlbmRpZgogICAgIHN0YXRlKCkubV9hcHBsaWVkU3Ryb2tlUGF0dGVybiA9IHRydWU7CiB9
CkBAIC0xMDczLDcgKzExMjUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBw
bHlGaWxsCiAKICAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlUGF0dGVyblRyYW5zZm9ybSA9IG07CiAj
ZWxpZiBQTEFURk9STShRVCkKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmFwcGx5U3Ryb2tlUGF0dGVyblxuIik7CisgICAgZnByaW50ZihzdGRl
cnIsICJGSVhNRTogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseUZpbGxQYXR0ZXJuXG4i
KTsKICNlbmRpZgogICAgIHN0YXRlKCkubV9hcHBsaWVkRmlsbFBhdHRlcm4gPSB0cnVlOwogfQpJ
bmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lvbiAyNTQ4OSkKKysrIFdlYkNvcmUvaHRtbC9D
YW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3IFRyb2xsdGVjaCBBU0EKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM5LDggQEAKICNpbmNsdWRlIDxRQnJ1c2g+CiAj
aW5jbHVkZSA8UVBlbj4KICNpbmNsdWRlIDxRQ29sb3I+CisjZWxpZiBQTEFURk9STShDQUlSTykK
KyNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4
LDYgKzkxLDggQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaAogICAg
ICAgICByZXR1cm47CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUVBhaW50ZXIqIHAgPSBzdGF0aWNf
Y2FzdDxRUGFpbnRlcio+KGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyNlbGlmIFBMQVRG
T1JNKENBSVJPKQorICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
CiAjZW5kaWYKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENvbG9yU3RyaW5n
OiB7CkBAIC0xMDEsNiArMTA2LDEzIEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29s
b3IoR3JhcGgKICAgICAgICAgICAgICAgICAoKGNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMjU1LjBm
KTsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgcC0+c2V0UGVuKFFQZW4oUUNvbG9y
KFFSZ2IoY29sb3IpKSkpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgICAgICAgICAvLyBG
SVhNRTogZmlsbCBhbmQgc3Ryb2tlIGNvbG9yIHNob3VsZCBiZSBkZWFsdCB3aXRoIHNlcGFyYXRl
bHkKKyAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjciwKKyAgICAgICAgICAgICAg
ICAoKGNvbG9yID4+IDE2KSAmIDB4RkYpIC8gMjU1LjBmLAorICAgICAgICAgICAgICAgICgoY29s
b3IgPj4gOCkgJiAweEZGKSAvIDI1NS4wZiwKKyAgICAgICAgICAgICAgICAoY29sb3IgJiAweEZG
KSAvIDI1NS4wZiwKKyAgICAgICAgICAgICAgICAoKGNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMjU1
LjBmKTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTExNyw2ICsx
MjksMTMgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaAogICAgICAg
ICAgICAgUUNvbG9yIGNsciA9IFFDb2xvcihRUmdiKGNvbG9yKSk7CiAgICAgICAgICAgICBjbHIu
c2V0QWxwaGFGKG1fYWxwaGEpOwogICAgICAgICAgICAgcC0+c2V0UGVuKGNscik7CisjZWxpZiBQ
TEFURk9STShDQUlSTykKKyAgICAgICAgICAgIC8vIEZJWE1FOiBmaWxsIGFuZCBzdHJva2UgY29s
b3Igc2hvdWxkIGJlIGRlYWx0IHdpdGggc2VwYXJhdGVseQorICAgICAgICAgICAgY2Fpcm9fc2V0
X3NvdXJjZV9yZ2JhKGNyLAorICAgICAgICAgICAgICAgICgoY29sb3IgPj4gMTYpICYgMHhGRikg
LyAyNTUuMGYsCisgICAgICAgICAgICAgICAgKChjb2xvciA+PiA4KSAmIDB4RkYpIC8gMjU1LjBm
LAorICAgICAgICAgICAgICAgIChjb2xvciAmIDB4RkYpIC8gMjU1LjBmLAorICAgICAgICAgICAg
ICAgICgoY29sb3IgPj4gMjQpICYgMHhGRikgLyAyNTUuMGYpOwogI2VuZGlmCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTM4LDYgKzE1Nyw5IEBAIHZvaWQgQ2FudmFzU3R5bGU6
OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGgKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAg
UUNvbG9yIGNscjsgY2xyLnNldFJnYkYobV9yZWQsIG1fZ3JlZW4sIG1fYmx1ZSwgbV9hbHBoYSk7
CiAgICAgICAgICAgICBwLT5zZXRQZW4oY2xyKTsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAg
ICAgICAgICAgLy8gRklYTUU6IGZpbGwgYW5kIHN0cm9rZSBjb2xvciBzaG91bGQgYmUgZGVhbHQg
d2l0aCBzZXBhcmF0ZWx5CisgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIG1f
cmVkLCBtX2dyZWVuLCBtX2JsdWUsIG1fYWxwaGEpOwogI2VuZGlmCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyNTQ4OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQ0LDggQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNs
dWRlIDxRUGFpbnRlcj4KICNpbmNsdWRlIDxRUGl4bWFwPgorI2VsaWYgUExBVEZPUk0oQ0FJUk8p
CisjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
OSw2ICs4Miw5IEBAIEhUTUxDYW52YXNFbGVtZW50Ojp+SFRNTENhbnZhc0VsZW1lbnQoKQogI2Vs
aWYgUExBVEZPUk0oUVQpCiAgICAgZGVsZXRlIG1fcGFpbnRlcjsKICAgICBkZWxldGUgbV9kYXRh
OworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc3Vy
ZmFjZSk7CisgICAgZmFzdEZyZWUobV9kYXRhKTsKICNlbmRpZgogICAgIGRlbGV0ZSBtX2RyYXdp
bmdDb250ZXh0OwogfQpAQCAtMTcyLDYgKzE3OCw4IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6
OnJlc2V0KCkKICAgICBkZWxldGUgbV9wYWludGVyOwogICAgIG1fcGFpbnRlciA9IDA7CiAgICAg
ZGVsZXRlIG1fZGF0YTsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIGZhc3RGcmVlKG1fZGF0
YSk7CiAjZW5kaWYKICAgICBtX2RhdGEgPSAwOwogICAgIGRlbGV0ZSBtX2RyYXdpbmdDb250ZXh0
OwpAQCAtMjAzLDYgKzIxMSwxNiBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFw
aGljc0NvCiAgICAgICAgICAgICBtX3BhaW50ZXItPmVuZCgpOwogICAgICAgICBzdGF0aWNfY2Fz
dDxRUGFpbnRlcio+KHAtPnBsYXRmb3JtQ29udGV4dCgpKS0+ZHJhd1BpeG1hcChyLCAqbV9kYXRh
KTsKICAgICB9CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBpZiAobV9kYXRhKSB7CisgICAg
ICAgIGNhaXJvX3QqIGNyID0gcC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgIGNhaXJvX3Nh
dmUoY3IpOworICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHIueCgpLCByLnkoKSk7CisgICAg
ICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgbV9zdXJmYWNlLCAwLCAwKTsKKyAgICAg
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOworICAg
ICAgICBjYWlyb19maWxsKGNyKTsKKyAgICAgICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgfQog
I2VuZGlmCiB9CiAKQEAgLTI0NSw2ICsyNjMsMjIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6
Y3JlYXRlRHJhd2luZ0NvbgogICAgIG1fZGF0YS0+ZmlsbChRdDo6d2hpdGUpOwogICAgIG1fcGFp
bnRlciA9IG5ldyBRUGFpbnRlcihtX2RhdGEpOwogICAgIG1fZHJhd2luZ0NvbnRleHQgPSBuZXcg
R3JhcGhpY3NDb250ZXh0KG1fcGFpbnRlcik7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICAv
L0ZJWE1FOiB0aGlzIGJpdCBpcyBjb3BpZWQKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSB3ICog
NDsKKyAgICBpZiAoYnl0ZXNQZXJSb3cgLyA0ICE9IHcpIC8vIGNoZWNrIGZvciBvdmVyZmxvdwor
ICAgICAgICByZXR1cm47CisgICAgbV9kYXRhID0gZmFzdENhbGxvYyhoLCBieXRlc1BlclJvdyk7
CisgICAgaWYgKCFtX2RhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIC8vY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoKHVuc2ln
bmVkIGNoYXIqKW1fZGF0YSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgdywgaCwgdyk7CisgICAgbV9z
dXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNo
YXIqKW1fZGF0YSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgdywgaCwgYnl0ZXNQZXJSb3cpOworICAg
IGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG1fc3VyZmFjZSk7CisgICAgLy9jYWlyb19zY2Fs
ZShjciwgdyAvIHVuc2NhbGVkV2lkdGgsIGggLyB1bnNjYWxlZEhlaWdodCk7CisgICAgLy9jYWly
b19zdXJmYWNlX2Rlc3Ryb3kobV9zdXJmYWNlKTsKKyAgICBtX2RyYXdpbmdDb250ZXh0ID0gbmV3
IEdyYXBoaWNzQ29udGV4dChjcik7CisgICAgY2Fpcm9fZGVzdHJveShjcik7CiAjZW5kaWYKIH0K
IApAQCAtMjgxLDYgKzMxNSwxMyBAQCBRUGl4bWFwIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVQ
bGF0Zm9yCiAgICAgcmV0dXJuIFFQaXhtYXAoKTsKIH0KIAorI2VsaWYgUExBVEZPUk0oQ0FJUk8p
CitjYWlyb19zdXJmYWNlX3QqIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVQbGF0Zm9ybUltYWdl
KCkgY29uc3QKK3sKKyAgICAvL0ZJWE1FCisgICAgcmV0dXJuIG1fc3VyZmFjZTsKK30KKwogI2Vu
ZGlmCiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCShyZXZpc2lvbiAyNTQ4OSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAg
VG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFn
ZVJlZjsKICNlbGlmIFBMQVRGT1JNKFFUKQogY2xhc3MgUVBpeG1hcDsKIGNsYXNzIFFQYWludGVy
OworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCit0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBj
YWlyb19zdXJmYWNlX3Q7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzUsNiAr
NzgsOCBAQCBwdWJsaWM6CiAgICAgQ0dJbWFnZVJlZiBjcmVhdGVQbGF0Zm9ybUltYWdlKCkgY29u
c3Q7CiAjZWxpZiBQTEFURk9STShRVCkKICAgICBRUGl4bWFwIGNyZWF0ZVBsYXRmb3JtSW1hZ2Uo
KSBjb25zdDsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIGNhaXJvX3N1cmZhY2VfdCogY3Jl
YXRlUGxhdGZvcm1JbWFnZSgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC05NSw2ICsx
MDAsOSBAQCBwcml2YXRlOgogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgbXV0YWJsZSBRUGl4bWFw
KiBtX2RhdGE7CiAgICAgbXV0YWJsZSBRUGFpbnRlciogbV9wYWludGVyOworI2VsaWYgUExBVEZP
Uk0oQ0FJUk8pCisgICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7CisgICAgbXV0YWJsZSBjYWlyb19z
dXJmYWNlX3QqIG1fc3VyZmFjZTsKICNlbHNlCiAgICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7CiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16514</attachid>
            <date>2007-10-03 01:54:20 -0700</date>
            <delta_ts>2007-10-03 09:46:34 -0700</delta_ts>
            <desc>Cairo canvas support</desc>
            <filename>canvas-5.patch</filename>
            <type>text/plain</type>
            <size>14595</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmNwcAkocmV2aXNpb24gMjU5NTgpCisrKyBXZWJDb3Jl
L2h0bWwvQ2FudmFzR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMyw4IEBACiAj
aW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjZWxp
ZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRR3JhZGllbnQ+CisjZWxpZiBQTEFURk9STShDQUlS
TykKKyNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQyLDYgKzQ1LDggQEAgQ2FudmFzR3JhZGllbnQ6OkNhbnZhc0dyYWRpZW50KGNvbnN0IEZsbwog
ICAgICwgbV9zaGFkaW5nKDApCiAjZWxpZiBQTEFURk9STShRVCkKICAgICAsIG1fc2hhZGluZygw
KQorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgLCBtX3NoYWRpbmcoMCkKICNlbmRpZgogewog
fQpAQCAtNTIsNiArNTcsOCBAQCBDYW52YXNHcmFkaWVudDo6Q2FudmFzR3JhZGllbnQoY29uc3Qg
RmxvCiAgICAgLCBtX3NoYWRpbmcoMCkKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgICwgbV9zaGFk
aW5nKDApCisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICAsIG1fc2hhZGluZygwKQogI2VuZGlm
CiB7CiB9CkBAIC02Miw2ICs2OSw4IEBAIENhbnZhc0dyYWRpZW50Ojp+Q2FudmFzR3JhZGllbnQo
KQogICAgIENHU2hhZGluZ1JlbGVhc2UobV9zaGFkaW5nKTsKICNlbGlmIFBMQVRGT1JNKFFUKQog
ICAgIGRlbGV0ZSBtX3NoYWRpbmc7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBjYWlyb19w
YXR0ZXJuX2Rlc3Ryb3kobV9zaGFkaW5nKTsKICNlbmRpZgogfQogCkBAIC04Miw2ICs5MSw5IEBA
IHZvaWQgQ2FudmFzR3JhZGllbnQ6OmFkZENvbG9yU3RvcChmbG9hdCAKICNlbGlmIFBMQVRGT1JN
KFFUKQogICAgIGRlbGV0ZSBtX3NoYWRpbmc7CiAgICAgbV9zaGFkaW5nID0gMDsKKyNlbGlmIFBM
QVRGT1JNKENBSVJPKQorICAgIGNhaXJvX3BhdHRlcm5fZGVzdHJveShtX3NoYWRpbmcpOworICAg
IG1fc2hhZGluZyA9IDA7CiAjZW5kaWYKIH0KIApAQCAtMTQyLDYgKzE1NCwyNyBAQCBRR3JhZGll
bnQqIENhbnZhc0dyYWRpZW50OjpwbGF0Zm9ybVNoYWRpCiAgICAgcmV0dXJuIG1fc2hhZGluZzsK
IH0KIAorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisKK2NhaXJvX3BhdHRlcm5fdCogQ2FudmFzR3Jh
ZGllbnQ6OnBsYXRmb3JtU2hhZGluZygpCit7CisgICAgaWYgKG1fc2hhZGluZykKKyAgICAgICAg
cmV0dXJuIG1fc2hhZGluZzsKKworICAgIGlmIChtX3JhZGlhbCkKKyAgICAgICAgbV9zaGFkaW5n
ID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfcmFkaWFsKG1fcDAueCgpLCBtX3AwLnkoKSwgbV9yMCwg
bV9wMS54KCksIG1fcDEueSgpLCBtX3IxKTsKKyAgICBlbHNlCisgICAgICAgIG1fc2hhZGluZyA9
IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2xpbmVhcihtX3AwLngoKSwgbV9wMC55KCksIG1fcDEueCgp
LCBtX3AxLnkoKSk7CisKKyAgICBWZWN0b3I8Q29sb3JTdG9wPjo6aXRlcmF0b3Igc3RvcEl0ZXJh
dG9yID0gbV9zdG9wcy5iZWdpbigpOworICAgIHdoaWxlIChzdG9wSXRlcmF0b3IgIT0gbV9zdG9w
cy5lbmQoKSkgeworICAgICAgICBjYWlyb19wYXR0ZXJuX2FkZF9jb2xvcl9zdG9wX3JnYmEobV9z
aGFkaW5nLCBzdG9wSXRlcmF0b3ItPnN0b3AsIHN0b3BJdGVyYXRvci0+cmVkLCBzdG9wSXRlcmF0
b3ItPmdyZWVuLCBzdG9wSXRlcmF0b3ItPmJsdWUsIHN0b3BJdGVyYXRvci0+YWxwaGEpOworICAg
ICAgICArK3N0b3BJdGVyYXRvcjsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zaGFkaW5nOworfQor
CiAjZW5kaWYKIAogc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVTdG9wcyhjb25zdCBDYW52YXNH
cmFkaWVudDo6Q29sb3JTdG9wICZhLCBjb25zdCBDYW52YXNHcmFkaWVudDo6Q29sb3JTdG9wICZi
KQpJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0NhbnZhc0dyYWRpZW50LmgJKHJldmlzaW9uIDI1OTU4KQorKysgV2ViQ29yZS9o
dG1sL0NhbnZhc0dyYWRpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDYgKzM1LDggQEAKIHR5cGVk
ZWYgc3RydWN0IENHU2hhZGluZyogQ0dTaGFkaW5nUmVmOwogI2VsaWYgUExBVEZPUk0oUVQpCiBj
bGFzcyBRR3JhZGllbnQ7CisjZWxpZiBQTEFURk9STShDQUlSTykKK3R5cGVkZWYgc3RydWN0IF9j
YWlyb19wYXR0ZXJuIGNhaXJvX3BhdHRlcm5fdDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01NCw2ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ0dTaGFk
aW5nUmVmIHBsYXRmb3JtU2hhZGluZygpOwogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFH
cmFkaWVudCAqcGxhdGZvcm1TaGFkaW5nKCk7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICAg
ICAgY2Fpcm9fcGF0dGVybl90KiBwbGF0Zm9ybVNoYWRpbmcoKTsKICNlbmRpZgogCiAgICAgICAg
IHN0cnVjdCBDb2xvclN0b3AgewpAQCAtODEsNiArODYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIENHU2hhZGluZ1JlZiBtX3NoYWRpbmc7CiAjZWxpZiBQTEFURk9STShRVCkKICAg
ICAgICAgUUdyYWRpZW50ICptX3NoYWRpbmc7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICAg
ICAgY2Fpcm9fcGF0dGVybl90KiBtX3NoYWRpbmc7CiAjZW5kaWYKICAgICB9OwogCkluZGV4OiBX
ZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjU5NTgp
CisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA3IFRyb2xsdGVjaCBBU0EKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFs
cEBhdG9rZXIuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw2ICs1
MCw5IEBACiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UVBpeG1hcD4KICNpbmNsdWRl
IDxRUGFpbnRlclBhdGg+CisjZWxpZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlICJDYWlyb1Bh
dGguaCIKKyNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEzNSw3ICsxMzksMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZp
bGxTdAogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYg
KCFjKQogICAgICAgICByZXR1cm47CisvLyBGSVhNRTogaGFjayB0byByZWR1Y2UgY29kZSBkdXBs
aWNhdGlvbiBpbiBDYW52YXNTdHlsZS5jcHAKKyNpZiBQTEFURk9STShDQUlSTykKKyAgICBzdGF0
ZSgpLm1fZmlsbFN0eWxlLT5hcHBseVN0cm9rZUNvbG9yKGMpOworI2Vsc2UKICAgICBzdGF0ZSgp
Lm1fZmlsbFN0eWxlLT5hcHBseUZpbGxDb2xvcihjKTsKKyNlbmRpZgogICAgIHN0YXRlKCkubV9h
cHBsaWVkRmlsbFBhdHRlcm4gPSBmYWxzZTsKIH0KIApAQCAtNDczLDYgKzQ4MiwyMyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCgpCiAgICAgICAgICAgICBhcHBseUZpbGxQ
YXR0ZXJuKCk7CiAgICAgICAgIHAtPmZpbGxQYXRoKCpwYXRoLCBwLT5icnVzaCgpKTsKICAgICB9
CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBjYWlyb190KiBwYXRoQ3IgPSBzdGF0ZSgpLm1f
cGF0aC5wbGF0Zm9ybVBhdGgoKS0+bV9jcjsKKyAgICBjYWlyb190KiBjciA9IGMtPnBsYXRmb3Jt
Q29udGV4dCgpOworICAgIGNhaXJvX3NhdmUoY3IpOworICAgIHdpbGxEcmF3KHN0YXRlKCkubV9w
YXRoLmJvdW5kaW5nUmVjdCgpKTsKKyAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS0+Z3JhZGll
bnQoKSkgeworICAgICAgICAvLyBUT0RPOiBjbGVhbnVwLCBtYXliZSBtb3ZlIHRvIGFwcGx5Rmls
bFBhdHRlcm4oKQorICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBzdGF0ZSgpLm1fZmlsbFN0
eWxlLT5ncmFkaWVudCgpLT5wbGF0Zm9ybVNoYWRpbmcoKSk7CisgICAgICAgIGMtPmFkZFBhdGgo
c3RhdGUoKS5tX3BhdGgpOworICAgICAgICBjYWlyb19maWxsKGNyKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS0+cGF0dGVybigpKQorICAgICAgICAgICAg
YXBwbHlGaWxsUGF0dGVybigpOworICAgICAgICBjLT5hZGRQYXRoKHN0YXRlKCkubV9wYXRoKTsK
KyAgICAgICAgY2Fpcm9fZmlsbChjcik7CisgICAgfQorICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
I2VuZGlmCiAKICAgICBjbGVhclBhdGhGb3JEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlN
b2RlKCk7CkBAIC01MjEsNiArNTQ3LDI0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzdHJva2UoKQogICAgICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgICAgIHAt
PnN0cm9rZVBhdGgoKnBhdGgsIHAtPnBlbigpKTsKICAgICB9CisjZWxpZiBQTEFURk9STShDQUlS
TykKKyAgICBjYWlyb190KiBwYXRoQ3IgPSBzdGF0ZSgpLm1fcGF0aC5wbGF0Zm9ybVBhdGgoKS0+
bV9jcjsKKyAgICBjYWlyb190KiBjciA9IGMtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJv
X3NhdmUoY3IpOworICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbnNldCwgYXMgaW4gQ0cKKyAgICB3
aWxsRHJhdyhzdGF0ZSgpLm1fcGF0aC5ib3VuZGluZ1JlY3QoKSk7CisgICAgaWYgKHN0YXRlKCku
bV9zdHJva2VTdHlsZS0+Z3JhZGllbnQoKSkgeworICAgICAgICAvLyBGSVhNRTogY2xlYW4gdXAg
dGhpcyBpZi9lbHNlIGFuZCB0aGUgb3RoZXJzCisgICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3Is
IHN0YXRlKCkubV9zdHJva2VTdHlsZS0+Z3JhZGllbnQoKS0+cGxhdGZvcm1TaGFkaW5nKCkpOwor
ICAgICAgICBjLT5hZGRQYXRoKHN0YXRlKCkubV9wYXRoKTsKKyAgICAgICAgY2Fpcm9fc3Ryb2tl
KGNyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5w
YXR0ZXJuKCkpCisgICAgICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKKyAgICAgICAgYy0+
YWRkUGF0aChzdGF0ZSgpLm1fcGF0aCk7CisgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CisgICAg
fQorICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogI2VuZGlmCiAKICAgICBjbGVhclBhdGhGb3JEYXNo
Ym9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CkBAIC01OTAsNiArNjM0LDIxIEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsUmVjdCgKICAgICAgICAgICAgIGFwcGx5
RmlsbFBhdHRlcm4oKTsKICAgICAgICAgcC0+ZmlsbFJlY3QocmVjdCwgcC0+YnJ1c2goKSk7CiAg
ICAgfQorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgRmxvYXRSZWN0IHJlY3QoeCwgeSwgd2lk
dGgsIGhlaWdodCk7CisgICAgd2lsbERyYXcocmVjdCk7CisgICAgY2Fpcm9fdCogY3IgPSBjLT5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb19zYXZlKGNyKTsKKyAgICBpZiAoc3RhdGUoKS5t
X2ZpbGxTdHlsZS0+Z3JhZGllbnQoKSkgeworICAgICAgICAvL1RPRE86IGNsZWFudXAsIG1heWJl
IG1vdmUgdG8gYXBwbHlGaWxsUGF0dGVybigpCisgICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3Is
IHN0YXRlKCkubV9maWxsU3R5bGUtPmdyYWRpZW50KCktPnBsYXRmb3JtU2hhZGluZygpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS0+cGF0dGVybigpKQor
ICAgICAgICAgICAgYXBwbHlGaWxsUGF0dGVybigpOworICAgIH0KKyAgICBjYWlyb19yZWN0YW5n
bGUoY3IsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogI2VuZGlmCiB9CiAKQEAgLTkxNSw2ICs5NzQsMTYgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZQogICAgIHdpbGxEcmF3KGRzdFJlY3Qp
OwogICAgIFFQYWludGVyKiBwYWludGVyID0gc3RhdGljX2Nhc3Q8UVBhaW50ZXIqPihjLT5wbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKGRzdFJlY3QsIHB4LCBzcmNS
ZWN0KTsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgYml0
IG1lc3N5CisgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IGNhbnZhcy0+Y3JlYXRlUGxhdGZv
cm1JbWFnZSgpOworICAgIHdpbGxEcmF3KGRzdFJlY3QpOworICAgIGNhaXJvX3QqIGNyID0gYy0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNyLCBpbWFnZSwgc3JjUmVjdC54KCksIHNyY1JlY3QueSgpKTsKKyAgICBj
YWlyb19yZWN0YW5nbGUoY3IsIGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSwgZHN0UmVjdC53aWR0
aCgpLCBkc3RSZWN0LmhlaWdodCgpKTsKKyAgICBjYWlyb19maWxsKGNyKTsKKyAgICBjYWlyb19y
ZXN0b3JlKGNyKTsKICNlbmRpZgogfQogCkBAIC0xMDQxLDYgKzExMTAsOCBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTdHJvCiAgICAgc3RhdGUoKS5tX3N0cm9rZVN0eWxl
UGF0dGVyblRyYW5zZm9ybSA9IG07CiAjZWxpZiBQTEFURk9STShRVCkKICAgICBmcHJpbnRmKHN0
ZGVyciwgIkZJWE1FOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U3Ryb2tlUGF0dGVy
blxuIik7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vu
ZGlmCiAgICAgc3RhdGUoKS5tX2FwcGxpZWRTdHJva2VQYXR0ZXJuID0gdHJ1ZTsKIH0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9DYW52YXNTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0NhbnZhc1N0eWxlLmNwcAkocmV2aXNpb24gMjU5NTgpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFz
U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNyBUcm9sbHRlY2ggQVNBCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzgsNiArMzksOCBAQAogI2luY2x1ZGUgPFFCcnVzaD4KICNpbmNsdWRlIDxRUGVuPgog
I2luY2x1ZGUgPFFDb2xvcj4KKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorI2luY2x1ZGUgPGNhaXJv
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsNiArOTEsOCBAQCB2b2lk
IENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoCiAgICAgICAgIHJldHVybjsKICNp
ZiBQTEFURk9STShRVCkKICAgICBRUGFpbnRlciogcCA9IHN0YXRpY19jYXN0PFFQYWludGVyKj4o
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAg
Y2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICNlbmRpZgogICAgIHN3
aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgQ29sb3JTdHJpbmc6IHsKQEAgLTEwMyw2ICsx
MDgsMTMgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaAogICAgICAg
ICAgICAgUVBlbiBjdXJyZW50UGVuID0gcC0+cGVuKCk7CiAgICAgICAgICAgICBjdXJyZW50UGVu
LnNldENvbG9yKChRQ29sb3IoUVJnYihjb2xvcikpKSk7CiAgICAgICAgICAgICBwLT5zZXRQZW4o
Y3VycmVudFBlbik7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBmaWxsIGFuZCBzdHJva2UgY29sb3Igc2hvdWxkIGJlIGRlYWx0IHdpdGggc2VwYXJhdGVseQor
ICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNyLAorICAgICAgICAgICAgICAgICgo
Y29sb3IgPj4gMTYpICYgMHhGRikgLyAyNTUuMGYsCisgICAgICAgICAgICAgICAgKChjb2xvciA+
PiA4KSAmIDB4RkYpIC8gMjU1LjBmLAorICAgICAgICAgICAgICAgIChjb2xvciAmIDB4RkYpIC8g
MjU1LjBmLAorICAgICAgICAgICAgICAgICgoY29sb3IgPj4gMjQpICYgMHhGRikgLyAyNTUuMGYp
OwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTIxLDYgKzEzMywx
MyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoCiAgICAgICAgICAg
ICBjbHIuc2V0QWxwaGFGKG1fYWxwaGEpOwogICAgICAgICAgICAgY3VycmVudFBlbi5zZXRDb2xv
cihjbHIpOwogICAgICAgICAgICAgcC0+c2V0UGVuKGN1cnJlbnRQZW4pOworI2VsaWYgUExBVEZP
Uk0oQ0FJUk8pCisgICAgICAgICAgICAvLyBGSVhNRTogZmlsbCBhbmQgc3Ryb2tlIGNvbG9yIHNo
b3VsZCBiZSBkZWFsdCB3aXRoIHNlcGFyYXRlbHkKKyAgICAgICAgICAgIGNhaXJvX3NldF9zb3Vy
Y2VfcmdiYShjciwKKyAgICAgICAgICAgICAgICAoKGNvbG9yID4+IDE2KSAmIDB4RkYpIC8gMjU1
LjBmLAorICAgICAgICAgICAgICAgICgoY29sb3IgPj4gOCkgJiAweEZGKSAvIDI1NS4wZiwKKyAg
ICAgICAgICAgICAgICAoY29sb3IgJiAweEZGKSAvIDI1NS4wZiwKKyAgICAgICAgICAgICAgICAo
KGNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMjU1LjBmKTsKICNlbmRpZgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTEzNCw2ICsxNTMsOCBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBs
eVN0cm9rZUNvbG9yKEdyYXBoCiAgICAgICAgICAgICBjbHIuc2V0UmdiRihtX2dyYXlMZXZlbCwg
bV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2FscGhhKTsKICAgICAgICAgICAgIGN1cnJlbnRQ
ZW4uc2V0Q29sb3IoY2xyKTsKICAgICAgICAgICAgIHAtPnNldFBlbihjdXJyZW50UGVuKTsKKyNl
bGlmIFBMQVRGT1JNKENBSVJPKQorICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNy
LCBtX2dyYXlMZXZlbCwgbV9ncmF5TGV2ZWwsIG1fZ3JheUxldmVsLCBtX2FscGhhKTsKICNlbmRp
ZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0Nyw2ICsxNjgsOSBAQCB2b2lk
IENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoCiAgICAgICAgICAgICBjbHIuc2V0
UmdiRihtX3JlZCwgbV9ncmVlbiwgbV9ibHVlLCBtX2FscGhhKTsKICAgICAgICAgICAgIGN1cnJl
bnRQZW4uc2V0Q29sb3IoY2xyKTsKICAgICAgICAgICAgIHAtPnNldFBlbihjdXJyZW50UGVuKTsK
KyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgICAgICAgICAgLy8gRklYTUU6IGZpbGwgYW5kIHN0
cm9rZSBjb2xvciBzaG91bGQgYmUgZGVhbHQgd2l0aCBzZXBhcmF0ZWx5CisgICAgICAgICAgICBj
YWlyb19zZXRfc291cmNlX3JnYmEoY3IsIG1fcmVkLCBtX2dyZWVuLCBtX2JsdWUsIG1fYWxwaGEp
OwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTk1OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0NCw4IEBACiAjaWYgUExB
VEZPUk0oUVQpCiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UVBpeG1hcD4KKyNlbGlm
IFBMQVRGT1JNKENBSVJPKQorI2luY2x1ZGUgPGNhaXJvLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzksNiArODIsOSBAQCBIVE1MQ2FudmFzRWxlbWVudDo6fkhUTUxDYW52
YXNFbGVtZW50KCkKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIGRlbGV0ZSBtX3BhaW50ZXI7CiAg
ICAgZGVsZXRlIG1fZGF0YTsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIGNhaXJvX3N1cmZh
Y2VfZGVzdHJveShtX3N1cmZhY2UpOworICAgIGZhc3RGcmVlKG1fZGF0YSk7CiAjZW5kaWYKICAg
ICBkZWxldGUgbV9kcmF3aW5nQ29udGV4dDsKIH0KQEAgLTE3Miw2ICsxNzgsOCBAQCB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpyZXNldCgpCiAgICAgZGVsZXRlIG1fcGFpbnRlcjsKICAgICBtX3Bh
aW50ZXIgPSAwOwogICAgIGRlbGV0ZSBtX2RhdGE7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAg
ICBmYXN0RnJlZShtX2RhdGEpOwogI2VuZGlmCiAgICAgbV9kYXRhID0gMDsKICAgICBkZWxldGUg
bV9kcmF3aW5nQ29udGV4dDsKQEAgLTIxMiw2ICsyMjAsMTYgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDbwogICAgICAgICBtX3BhaW50ZXItPnNldE9wYWNpdHkoY3Vy
cmVudE9wYWNpdHkpOwogICAgICAgICBtX3BhaW50ZXItPnNldEJhY2tncm91bmQoY3VycmVudEJh
Y2tncm91bmQpOwogICAgIH0KKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIGlmIChtX2RhdGEp
IHsKKyAgICAgICAgY2Fpcm9fdCogY3IgPSBwLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAg
Y2Fpcm9fc2F2ZShjcik7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgci54KCksIHIueSgp
KTsKKyAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBtX3N1cmZhY2UsIDAsIDAp
OworICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIDAsIDAsIHIud2lkdGgoKSwgci5oZWlnaHQo
KSk7CisgICAgICAgIGNhaXJvX2ZpbGwoY3IpOworICAgICAgICBjYWlyb19yZXN0b3JlKGNyKTsK
KyAgICB9CiAjZW5kaWYKIH0KIApAQCAtMjU1LDYgKzI3MywyMCBAQCB2b2lkIEhUTUxDYW52YXNF
bGVtZW50OjpjcmVhdGVEcmF3aW5nQ29uCiAgICAgbV9wYWludGVyLT5zZXRCYWNrZ3JvdW5kKFFC
cnVzaChRdDo6dHJhbnNwYXJlbnQpKTsKICAgICBtX3BhaW50ZXItPmZpbGxSZWN0KDAsIDAsIHcs
IGgsIFFDb2xvcihRdDo6dHJhbnNwYXJlbnQpKTsKICAgICBtX2RyYXdpbmdDb250ZXh0ID0gbmV3
IEdyYXBoaWNzQ29udGV4dChtX3BhaW50ZXIpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAg
Ly8gRklYTUU6IHRoaXMgYml0IGlzIG5vdCBjb21wbGV0ZQorICAgIHNpemVfdCBieXRlc1BlclJv
dyA9IHcgKiA0OworICAgIGlmIChieXRlc1BlclJvdyAvIDQgIT0gdykgLy8gY2hlY2sgZm9yIG92
ZXJmbG93CisgICAgICAgIHJldHVybjsKKyAgICBtX2RhdGEgPSBmYXN0Q2FsbG9jKGgsIGJ5dGVz
UGVyUm93KTsKKyAgICBpZiAoIW1fZGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdXJm
YWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNoYXIq
KW1fZGF0YSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgdywgaCwgYnl0ZXNQZXJSb3cpOworICAgIGNh
aXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG1fc3VyZmFjZSk7CisgICAgY2Fpcm9fc2NhbGUoY3Is
IHcgLyB1bnNjYWxlZFdpZHRoLCBoIC8gdW5zY2FsZWRIZWlnaHQpOworICAgIG1fZHJhd2luZ0Nv
bnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0KGNyKTsKKyAgICBjYWlyb19kZXN0cm95KGNyKTsK
ICNlbmRpZgogfQogCkBAIC0yOTEsNiArMzIzLDEzIEBAIFFJbWFnZSBIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlUGxhdGZvcm0KICAgICByZXR1cm4gUUltYWdlKCk7CiB9CiAKKyNlbGlmIFBMQVRG
T1JNKENBSVJPKQorY2Fpcm9fc3VyZmFjZV90KiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlUGxh
dGZvcm1JbWFnZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUUKKyAgICByZXR1cm4gbV9zdXJmYWNl
OworfQorCiAjZW5kaWYKIAogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHJldmlz
aW9uIDI1OTU4KQorKysgV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFn
ZVJlZjsKICNlbGlmIFBMQVRGT1JNKFFUKQogY2xhc3MgUUltYWdlOwogY2xhc3MgUVBhaW50ZXI7
CisjZWxpZiBQTEFURk9STShDQUlSTykKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNh
aXJvX3N1cmZhY2VfdDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NSw2ICs3
OCw4IEBAIHB1YmxpYzoKICAgICBDR0ltYWdlUmVmIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSBjb25z
dDsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIFFJbWFnZSBjcmVhdGVQbGF0Zm9ybUltYWdlKCkg
Y29uc3Q7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBjYWlyb19zdXJmYWNlX3QqIGNyZWF0
ZVBsYXRmb3JtSW1hZ2UoKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtOTUsNiArMTAw
LDkgQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIG11dGFibGUgUUltYWdlKiBt
X2RhdGE7CiAgICAgbXV0YWJsZSBRUGFpbnRlciogbV9wYWludGVyOworI2VsaWYgUExBVEZPUk0o
Q0FJUk8pCisgICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7CisgICAgbXV0YWJsZSBjYWlyb19zdXJm
YWNlX3QqIG1fc3VyZmFjZTsKICNlbHNlCiAgICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7CiAjZW5k
aWYK
</data>
<flag name="review"
          id="6964"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>