<?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>31518</bug_id>
          
          <creation_ts>2009-11-15 10:04:52 -0800</creation_ts>
          <short_desc>[GTK] Support pixel tests</short_desc>
          <delta_ts>2010-07-12 15:22:43 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          <dependson>41779</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>krit</cc>
    
    <cc>mrobinson</cc>
    
    <cc>otte</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>163756</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-11-15 10:04:52 -0800</bug_when>
    <thetext>This bug oversees the implementation of pixel dumping for the Gtk port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163757</commentid>
    <comment_count>1</comment_count>
      <attachid>43250</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-11-15 10:12:40 -0800</bug_when>
    <thetext>Created attachment 43250
Work-In-Progress of implementing pixel dumping support

This patch is work-in-progress and has some issues:
MD5 hashing should be reworked and tested to work on both Windows and Gtk port (we share this hashing part of the code with Windows port). This problem is better commented between the code. Also, MD5.h and MD5.cpp that Windows port possesses should be brought into the build rules for Gtk port. Currently, include of &lt;openssl/md5.h&gt;is used, but should be removed.
The diffing algorithm should be checked - it was rewritten from the Qt port and seems to work, but a check wouldn&apos;t harm.
The diff image creation should be looked upon - I didn&apos;t get onto any examples of what the diff image should actually look like, so I didn&apos;t finish that off completely.

More comments, suggestions etc. between the lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247649</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-07 11:14:09 -0700</bug_when>
    <thetext>As I begin implementation of this patch, I&apos;m splitting out different parts into different bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248220</commentid>
    <comment_count>3</comment_count>
      <attachid>60887</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-08 08:33:23 -0700</bug_when>
    <thetext>Created attachment 60887
Convert PixelDumpSupportCairo.cpp to use NL line endings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248529</commentid>
    <comment_count>4</comment_count>
      <attachid>60887</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-07-08 14:11:14 -0700</bug_when>
    <thetext>Comment on attachment 60887
Convert PixelDumpSupportCairo.cpp to use NL line endings

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248545</commentid>
    <comment_count>5</comment_count>
      <attachid>60887</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-08 14:23:43 -0700</bug_when>
    <thetext>Comment on attachment 60887
Convert PixelDumpSupportCairo.cpp to use NL line endings

Clearing flags on attachment: 60887

Committed r62839: &lt;http://trac.webkit.org/changeset/62839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248574</commentid>
    <comment_count>6</comment_count>
      <attachid>60968</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-08 15:06:27 -0700</bug_when>
    <thetext>Created attachment 60968
Pixel test support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248576</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 15:08:52 -0700</bug_when>
    <thetext>Attachment 60968 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:32:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249553</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-10 14:20:23 -0700</bug_when>
    <thetext>Once again, I think this may be a false positive. This file is a platform-specific specialization implementation of an already platform-specific implementation. This means it doesn&apos;t have a header associated with it of the same name. Moving the PixelDumpSupportCairo.h include under config.h did not satisfy the style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249947</commentid>
    <comment_count>9</comment_count>
      <attachid>60968</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-12 12:02:48 -0700</bug_when>
    <thetext>Comment on attachment 60968
Pixel test support

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250094</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-12 15:22:43 -0700</bug_when>
    <thetext>Committed r63130: &lt;http://trac.webkit.org/changeset/63130&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43250</attachid>
            <date>2009-11-15 10:12:40 -0800</date>
            <delta_ts>2010-07-08 08:33:20 -0700</delta_ts>
            <desc>Work-In-Progress of implementing pixel dumping support</desc>
            <filename>pd-15112009.diff</filename>
            <type>text/plain</type>
            <size>20632</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAKaW5k
ZXggZTM4YjJkNC4uNDJmOWE2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
UGl4ZWxEdW1wU3VwcG9ydC5jcHAKQEAgLTMyLDcgKzMyLDExIEBACiAjaW5jbHVkZSAiUGl4ZWxE
dW1wU3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5Q
dHIuaD4KKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3Vw
cG9ydENHLmgiCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jYWlyby9Q
aXhlbER1bXBTdXBwb3J0Q2Fpcm8uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2Fp
cm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmNwcAppbmRleCA4ODliN2IzLi5jMmMxNzI4IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jYWlyby9QaXhlbER1bXBTdXBwb3J0
Q2Fpcm8uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVt
cFN1cHBvcnRDYWlyby5jcHAKQEAgLTM2LDExICszNiwxOSBAQAogI2luY2x1ZGUgPGN0eXBlLmg+
DQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4N
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPg0KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFz
Lmg+DQorI2lmIFBMQVRGT1JNKFdJTikNCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPg0KKyNl
bGlmIFBMQVRGT1JNKEdUSykNCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIu
aD4NCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KKyNlbmRpZg0KIA0KICNpZiBQTEFURk9STShX
SU4pDQogI2luY2x1ZGUgIk1ENS5oIg0KKyNlbGlmIFBMQVRGT1JNKEdUSykNCisvLyB1cmdoLiBT
aGFyZSBNRDUgZmlsZXMgd2l0aCBXaW5kb3dzIHBvcnQhDQorI2luY2x1ZGUgPG9wZW5zc2wvbWQ1
Lmg+DQogI2VuZGlmDQogDQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCkBAIC03Myw3ICs4MSwxMCBA
QCB2b2lkIGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4dChCaXRtYXBDb250ZXh0
KiBjb250ZXh0LCBjaGFyIGhhc2hTdHJpbgogDQogICAgIHNpemVfdCBwaXhlbHNIaWdoID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOw0KICAgICBzaXplX3QgcGl4ZWxz
V2lkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOw0KLSAgICBzaXpl
X3QgYnl0ZXNQZXJSb3cgPSBwaXhlbHNXaWRlICogY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKHN1cmZhY2UpOw0KKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7DQorLy8gIFdoeSBpcyBXaW5kb3dzIG11bHRpcGx5aW5n
IHN0cmlkZSBhbmQgd2lkdGg/IFVzaW5nIHN0cmlkZSBvbmx5IHdvcmtzIGZvciB1cyAuLi4NCisv
LyAgSWYgZXZlcnl0aGluZyBlbHNlIGZhaWxzLCB0aGVyZSBzaG91bGQgYmUgI2lmcyBoZXJlLg0K
Ky8vICAgIHNpemVfdCBieXRlc1BlclJvdyA9IHBpeGVsc1dpZGUgKiBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7DQogDQogICAgIE1ENV9DVFggbWQ1Q29udGV4dDsNCiAg
ICAgTUQ1X0luaXQoJm1kNUNvbnRleHQpOw0KQEAgLTg1LDkgKzk2LDE4IEBAIHZvaWQgY29tcHV0
ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNo
YXIgaGFzaFN0cmluCiAgICAgdW5zaWduZWQgY2hhciBoYXNoWzE2XTsNCiAgICAgTUQ1X0ZpbmFs
KGhhc2gsICZtZDVDb250ZXh0KTsNCiANCisgICAgY2hhciBiSGFzaFszM107DQogICAgIGhhc2hT
dHJpbmdbMF0gPSAnXDAnOw0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyBpKyspDQotICAg
ICAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywgIiVzJTAyeCIsIGhhc2hTdHJpbmcsIGhhc2hb
aV0pOw0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyBpKyspIHsNCisvLyAgICAgIFdpbmRv
d3MgcG9ydCdzIHRlY2huaXF1ZSBkaWRuJ3Qgd29yaywgb25seSBwcmludGVkIHRoZSBsYXN0IGhh
c2ggY2hhciB0byB0aGUgc3RyaW5nIChldmVyeSB0aW1lKS4NCisvLyAgICAgID0+IGVuZGVkIHdp
dGggYSBoYXNoIGxpa2UgIjdlIg0KKy8vICAgICAgSGFkIHRvIGNyZWF0ZSBhIGJhY2t1cCBoYXNo
IGFycmF5LiBUaGF0IHNob3VsZCBiZSBmcmVlZCwgYXQgbGVhc3QuDQorLy8gICAgICBCdXQgdGhl
cmUgaXMgYSBzbW9vdGhlciwgYmV0dGVyIGFuZCB0aGUgcmlnaHQgd2F5IG9mIGRvaW5nIHRoaXMu
DQorLy8gICAgICAgIHNucHJpbnRmKGhhc2hTdHJpbmcsIDMzLCAiJXMlMDJ4IiwgaGFzaFN0cmlu
ZywgaGFzaFtpXSk7DQorDQorICAgICAgICBzbnByaW50ZihiSGFzaCwgMzMsICIlcyIsIGhhc2hT
dHJpbmcpOw0KKyAgICAgICAgc25wcmludGYoaGFzaFN0cmluZywgMzMsICIlcyUwMngiLCBiSGFz
aCwgaGFzaFtpXSk7DQorICAgIH0NCiB9DQogDQogdm9pZCBkdW1wQml0bWFwKEJpdG1hcENvbnRl
eHQqIGNvbnRleHQpDQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2Fp
cm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
YWlyby9QaXhlbER1bXBTdXBwb3J0Q2Fpcm8uaAppbmRleCBkMWEwYzNmLi45M2QwNDM4IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jYWlyby9QaXhlbER1bXBTdXBwb3J0
Q2Fpcm8uaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jYWlyby9QaXhlbER1bXBT
dXBwb3J0Q2Fpcm8uaApAQCAtMzYsMTAgKzM2LDE1IEBACiAjaWYgUExBVEZPUk0oV0lOKQogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxjYWlyby13aW4zMi5oPgorI2VsaWYgUExBVEZP
Uk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIEhCSVRNQVAgUGxhdGZvcm1CaXRtYXBCdWZm
ZXI7CisjZWxpZiBQTEFURk9STShHVEspCit0eXBlZGVmIEdka1BpeGJ1ZiogUGxhdGZvcm1CaXRt
YXBCdWZmZXI7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUJpdG1hcEJ1ZmZlcjsKICNl
bmRpZgpAQCAtNTYsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2J1ZmZlcikKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgICAgICAgICBEZWxldGVPYmplY3QobV9idWZmZXIpOworI2Vs
aWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYobV9idWZmZXIpOwog
I2Vsc2UKICAgICAgICAgICAgIGZyZWUobV9idWZmZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCA1NDA4YmEx
Li42YTk1Y2RkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudFNlbmRlci5o
IgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgogI2luY2x1ZGUgIldvcmtRdWV1
ZS5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKIApAQCAtMzkzLDkgKzM5NCw5IEBAIHZv
aWQgZHVtcCgpCiAgICAgfQogCiAgICAgaWYgKGR1bXBQaXhlbHMpIHsKLSAgICAgICAgaWYgKCFn
TGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSAmJiAhZ0xheW91dFRlc3RDb250cm9s
bGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVt
cFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIGR1bXBpbmcgcGl4ZWxzCi0gICAgICAgIH0KKyAgICAgICAgaWYgKCFnTGF5b3V0VGVz
dENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSAmJiAhZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
RE9NQXNXZWJBcmNoaXZlKCkgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFNvdXJjZUFz
V2ViQXJjaGl2ZSgpKQorICAgICAgICAgICAgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVX
aXRoRXhwZWN0ZWQoZ0xheW91dFRlc3RDb250cm9sbGVyLT5leHBlY3RlZFBpeGVsSGFzaCgpKTsK
KyAgICAgICAgLy8gRklYTUU6IEFkZGVkIHN1cHBvcnQgZm9yIGR1bXBpbmcgcGl4ZWxzPwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBjYWxsIGRpc3BsYXlXZWJWaWV3IGhlcmUgd2hlbiB3ZSBzdXBw
b3J0IC0tcGFpbnQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9J
bWFnZURpZmYuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0ltYWdlRGlmZi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRkMzcyZAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9JbWFnZURpZmYuY3BwCkBA
IC0wLDAgKzEsMTc5IEBACisvKgorICAgIExpY2Vuc2UgaGVhZGVyCisqLworCisjaW5jbHVkZSA8
Z2RrL2dkay5oPgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPG1hdGguaD4KKyNp
bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJn
dltdKQoreworICAgIGdka19pbml0KCZhcmdjLCAmYXJndik7CisgICAgRklMRSogaWQgPSBmb3Bl
bigiL3RtcC9pZCIsICJ3Iik7CisvLyAgV3JpdGluZyBwcm9ncmVzcyB0byBhIGZpbGUgaGVscHMg
d2hlbiBjcmFzaGVzIG9jY3VyKGVkKS4gV2hlbiBpbWFnZSBkaWZmaW5nIGlzIGRvbmUsIHJ1bi13
ZWJraXQtdGVzdHMKKy8vICBkb2VzIG5vdCBhY2NlcHQgb3V0cHV0IGFueW1vcmUsIHNvIHdlIGRv
bid0IGtub3cgd2hlcmUgYW55dGhpbmcgYWN0dWFsbHkgb2NjdXJlZC4gSGVscGZ1bCwgdG8gbWUg
YXQgbGVhc3QuCisKKy8vICBXb3JrcyBzdXJwcmlzaW5nbHkgY29ycmVjdGx5LiBMb2FkaW5nIHBp
eGJ1ZnMgZnJvbSBpbnB1dCwgdGhhdCBpcy4gVGhlIG9uZSB0aGluZyBJIGRpZG4ndCBnZXQgdG8g
d29yayBpcworLy8gIGNyZWF0aW5nIGEgZGlmZiBpbWFnZS4gRGlkbid0IGV4YWN0bHkga25vdyB3
aGF0IHRoZSBkaWZmIGltYWdlIHNob3VsZCBsb29rIGxpa2UsIHNvIGl0IHdhcyBwdXQgb24gYSBo
b2xkCisvLyAgYW5kIHNob3VsZCBiZSBjb21wbGV0ZWQgYmVjYXVzZSBvZiB1c2FiaWxpdHkuCisK
Ky8vICBUaGUgc3RydWN0dXJlIGlzIGJhc2VkIG9uIHRoZSBRdCdzIEltYWdlRGlmZiwgYWxvbmcg
d2l0aCBpbWFnZSBzaXplIGFuZCBkYXRhIHJlYWRpbmcgYW5kIHRoZSBkaWZmIGFsZ29yaXRobS4K
KworICAgIC8vIEZJWE1FOiBnZXQgdG9sZXJhbmNlIGZyb20gYXJndW1lbnQKKyAgICBnZG91Ymxl
IHRvbGVyYW5jZSA9IDAuMDsKKworICAgIGNoYXIgYnVmZmVyWzIwNDhdOworICAgIEdka1BpeGJ1
ZiogYWN0dWFsSW1hZ2UgPSBOVUxMOworICAgIEdka1BpeGJ1ZiogYmFzZWxpbmVJbWFnZSA9IE5V
TEw7CisKKyAgICB3aGlsZSAoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgc3RkaW4pKSB7
CisgICAgICAgIC8vIHJlbW92ZSB0aGUgQ1IKKyAgICAgICAgY2hhciogbmV3TGluZUNoYXJhY3Rl
ciA9IHN0cmNocihidWZmZXIsICdcbicpOworICAgICAgICBpZiAobmV3TGluZUNoYXJhY3RlcikK
KyAgICAgICAgICAgICpuZXdMaW5lQ2hhcmFjdGVyID0gJ1wwJzsKKworICAgICAgICBpZiAoIXN0
cm5jbXAoIkNvbnRlbnQtTGVuZ3RoOiAiLCBidWZmZXIsIDE2KSkgeworICAgICAgICAgICAgc3Ry
dG9rKGJ1ZmZlciwgIiAiKTsKKyAgICAgICAgICAgIGludCBpbWFnZVNpemUgPSBzdHJ0b2woc3Ry
dG9rKDAsICIgIiksIDAsIDEwKTsKKyAgICAgICAgICAgIGZwcmludGYoaWQsICJnb3QgaW1hZ2Ug
c2l6ZSAlZFxuIiwgaW1hZ2VTaXplKTsKKworICAgICAgICAgICAgaWYgKGltYWdlU2l6ZSA8PSAw
KSB7CisgICAgICAgICAgICAgICAgZnB1dHMoImVycm9yLCBpbWFnZSBzaXplIG11c3QgYmUgc3Bl
Y2lmaWVkLlxuIiwgc3Rkb3V0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBpbWFnZUJ1ZmZlclsyMDQ4XTsKKyAgICAgICAgICAgICAgICBHZGtQ
aXhidWZMb2FkZXIqIGxvYWRlciA9IGdka19waXhidWZfbG9hZGVyX25ld193aXRoX3R5cGUoInBu
ZyIsIE5VTEwpOworCisgICAgICAgICAgICAgICAgR0Vycm9yKiBlcnJvciA9IE5VTEw7CisgICAg
ICAgICAgICAgICAgd2hpbGUgKGltYWdlU2l6ZSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGJ5dGVzVG9SZWFkID0gbWluKGltYWdlU2l6ZSwgMjA0OCk7CisgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBieXRlc1JlYWQgPSBmcmVhZChpbWFnZUJ1ZmZlciwgMSwgYnl0ZXNUb1Jl
YWQsIHN0ZGluKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWdka19waXhidWZfbG9hZGVy
X3dyaXRlKGxvYWRlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihpbWFnZUJ1ZmZl
ciksIGJ5dGVzUmVhZCwgJmVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50
ZihpZCwgIkVycm9yIHdoaWxlIHdyaXRpbmcgdG8gR2RrUGl4YnVmTG9hZGVyOiAlZDogJXNcbiIs
IGVycm9yLT5jb2RlLCBlcnJvci0+bWVzc2FnZSk7IGZmbHVzaChpZCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAg
Z2RrX3BpeGJ1Zl9sb2FkZXJfY2xvc2UobG9hZGVyLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdfb2JqZWN0X3VucmVmKGxvYWRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBl
eGl0KDEpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaW1h
Z2VTaXplIC09IHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBnZGtfcGl4YnVmX2xvYWRlcl9jbG9zZShsb2FkZXIsIE5VTEwp
OworCisgICAgICAgICAgICAgICAgR2RrUGl4YnVmKiBkZWNvZGVkSW1hZ2UgPSBnZGtfcGl4YnVm
X2xvYWRlcl9nZXRfcGl4YnVmKGxvYWRlcik7CisgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVk
SW1hZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihpZCwgIkdka1BpeGJ1ZiBjb3Vs
ZCBub3QgYmUgbG9hZGVkIGZyb20gR2RrUGl4YnVmTG9hZGVyXG4iKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZ19vYmplY3RfcmVmKGRlY29kZWRJbWFnZSk7CisgICAgICAg
ICAgICAgICAgZ19vYmplY3RfdW5yZWYobG9hZGVyKTsKKworICAgICAgICAgICAgICAgIC8vIFBs
YWNlIGl0IGluIHRoZSByaWdodCBwbGFjZQorICAgICAgICAgICAgICAgIGlmICghYWN0dWFsSW1h
Z2UpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbEltYWdlID0gZGVjb2RlZEltYWdlOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVJbWFnZSA9IGRl
Y29kZWRJbWFnZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChhY3R1
YWxJbWFnZSAmJiBiYXNlbGluZUltYWdlKSB7CisgICAgICAgICAgICBmcHJpbnRmKGlkLCAiZ290
IGJvdGggaW1hZ2VzXG4iKTsKKyAgICAgICAgICAgIGdka19waXhidWZfc2F2ZShhY3R1YWxJbWFn
ZSwgIi90bXAvYWN0dWFsSW1hZ2UucG5nIiwgInBuZyIsIE5VTEwsIE5VTEwpOworICAgICAgICAg
ICAgZ2RrX3BpeGJ1Zl9zYXZlKGJhc2VsaW5lSW1hZ2UsICIvdG1wL2Jhc2VsaW5lSW1hZ2UucG5n
IiwgInBuZyIsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgaWYgKChnZGtfcGl4YnVmX2dldF93
aWR0aChhY3R1YWxJbWFnZSkgIT0gZ2RrX3BpeGJ1Zl9nZXRfd2lkdGgoYmFzZWxpbmVJbWFnZSkp
CisgICAgICAgICAgICAgICAgfHwgKGdka19waXhidWZfZ2V0X2hlaWdodChhY3R1YWxJbWFnZSkg
IT0gZ2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0KGJhc2VsaW5lSW1hZ2UpKSkgeworICAgICAgICAgICAg
ICAgIGZwcmludGYoaWQsICJlcnJvciwgdGVzdCBhbmQgcmVmZXJlbmNlIGltYWdlIGhhdmUgZGlm
ZmVyZW50IHByb3BlcnRpZXMuXG4iKTsgZmZsdXNoKGlkKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZnByaW50ZihpZCwgIlx0RElGRiBNRSBVUCBKT0hOTllcbiIpOyBm
Zmx1c2goaWQpOworCisgICAgICAgICAgICAgICAgaW50IHdpZHRoID0gZ2RrX3BpeGJ1Zl9nZXRf
d2lkdGgoYWN0dWFsSW1hZ2UpOworICAgICAgICAgICAgICAgIGludCBoZWlnaHQgPSBnZGtfcGl4
YnVmX2dldF9oZWlnaHQoYWN0dWFsSW1hZ2UpOworICAgICAgICAgICAgICAgIGludCByb3dzdHJp
ZGUgPSBnZGtfcGl4YnVmX2dldF9yb3dzdHJpZGUoYWN0dWFsSW1hZ2UpOworICAgICAgICAgICAg
ICAgIGludCBuX2NoYW5uZWxzID0gZ2RrX3BpeGJ1Zl9nZXRfbl9jaGFubmVscyhhY3R1YWxJbWFn
ZSk7CisKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBhY3R1YWxQaXhlbHM7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogYmFzZVBpeGVsczsKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyKiBkaWZmUGl4ZWxzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdf
bWFsbG9jKGhlaWdodCAqIHdpZHRoKSk7CisgICAgICAgICAgICAgICAgYWN0dWFsUGl4ZWxzID0g
Z2RrX3BpeGJ1Zl9nZXRfcGl4ZWxzKGFjdHVhbEltYWdlKTsKKyAgICAgICAgICAgICAgICBiYXNl
UGl4ZWxzID0gZ2RrX3BpeGJ1Zl9nZXRfcGl4ZWxzKGJhc2VsaW5lSW1hZ2UpOworCisgICAgICAg
ICAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBmbG9hdCBzdW0gPSAwOwor
ICAgICAgICAgICAgICAgIGZsb2F0IG1heERpc3RhbmNlID0gMDsKKworICAgICAgICAgICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyKiBhUGl4ZWwgPSBhY3R1YWxQaXhlbHMgKyB5ICogcm93c3RyaWRlICsg
eCAqIG5fY2hhbm5lbHM7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBi
UGl4ZWwgPSBiYXNlUGl4ZWxzICsgeSAqIHJvd3N0cmlkZSArIHggKiBuX2NoYW5uZWxzOworICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZFBpeGVsID0gZGlmZlBpeGVscyAr
IHkgKiByb3dzdHJpZGUgKyB4ICogbl9jaGFubmVsczsKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgZnByaW50ZihpZCwgIlx0XHRwaXhlbCglZCwgJWQsICVkLCAlZClcbiIsIGFQaXhlbFswXSwg
YVBpeGVsWzFdLCBhUGl4ZWxbMl0sIGFQaXhlbFszXSk7IGZmbHVzaChpZCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHJlZCA9IChhUGl4ZWxbMF0gLSBiUGl4ZWxbMF0pIC8gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1heCgyNTUgLSBiUGl4ZWxbMF0sIGludChiUGl4ZWxbMF0pKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBncmVlbiA9IChhUGl4ZWxbMV0gLSBiUGl4ZWxb
MV0pIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heCgyNTUgLSBiUGl4ZWxbMV0sIGludChiUGl4ZWxb
MV0pKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBibHVlID0gKGFQaXhlbFsyXSAt
IGJQaXhlbFsyXSkgLyBzdGF0aWNfY2FzdDxmbG9hdD4obWF4KDI1NSAtIGJQaXhlbFsyXSwgaW50
KGJQaXhlbFsyXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGFscGhhID0gKGFQ
aXhlbFszXSAtIGJQaXhlbFszXSkgLyBzdGF0aWNfY2FzdDxmbG9hdD4obWF4KDI1NSAtIGJQaXhl
bFszXSwgaW50KGJQaXhlbFszXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRp
c3RhbmNlID0gc3FydChyZWQgKiByZWQgKyBncmVlbiAqIGdyZWVuICsgYmx1ZSAqIGJsdWUgKyBh
bHBoYSAqIGFscGhhKSAvIDIuMGY7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBncmF5
ID0gZGlzdGFuY2UgKiBmbG9hdCgyNTUpOworICAgICAgICAgICAgICAgICAgICAgICAgZFBpeGVs
WzBdID0gZ3JheTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRQaXhlbFsxXSA9IGdyYXk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkUGl4ZWxbMl0gPSBncmF5OworICAgICAgICAgICAgICAg
ICAgICAgICAgZFBpeGVsWzNdID0gMjU1OworLy8gICAgICAgICAgICAgICAgICAgICAgICBkaWZm
SW1hZ2Uuc2V0UGl4ZWwoeCwgeSwgcVJnYihncmF5LCBncmF5LCBncmF5KSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPj0gMSAvIGZsb2F0KDI1NSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1bSArPSBkaXN0YW5jZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhEaXN0YW5j
ZSA9IG1heChtYXhEaXN0YW5jZSwgZGlzdGFuY2UpOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgZmxvYXQgZGlmZmVyZW5jZSA9IDA7CisgICAgICAgICAgICAgICAgaWYgKGNvdW50KQor
ICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlID0gMTAwICogc3VtIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHdpZHRoICogaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8
PSB0b2xlcmFuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZSA9IDA7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZSA9IHJv
dW5kKGRpZmZlcmVuY2UgKiAxMDApIC8gMTAwOworICAgICAgICAgICAgICAgICAgICBkaWZmZXJl
bmNlID0gbWF4KGRpZmZlcmVuY2UsIGZsb2F0KDAuMDEpKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAoIWNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmlu
dGYoc3Rkb3V0LCAiZGlmZjogJTAxLjJmJSUgcGFzc2VkXG4iLCBkaWZmZXJlbmNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgZnByaW50ZihpZCwgImRpZmY6ICUwMS4yZiUlIHBhc3NlZFxuIiwgZGlm
ZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKy8qCisgICAgICAgICAgICAgICAg
ICAgIGludCB3aWR0aCA9IGdka19waXhidWZfZ2V0X3dpZHRoKGFjdHVhbEltYWdlKTsKKyAgICAg
ICAgICAgICAgICAgICAgaW50IGhlaWdodCA9IGdka19waXhidWZfZ2V0X2hlaWdodChhY3R1YWxJ
bWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGludCByb3dzdHJpZGUgPSBnZGtfcGl4YnVmX2dl
dF9yb3dzdHJpZGUoYWN0dWFsSW1hZ2UpOworKi8KKyAgICAgICAgICAgICAgICAgICAgR2RrUGl4
YnVmKiBkaWZmSW1hZ2UgPSBnZGtfcGl4YnVmX25ld19mcm9tX2RhdGEoZGlmZlBpeGVscywgR0RL
X0NPTE9SU1BBQ0VfUkdCLCBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCB3aWR0aCwgaGVpZ2h0LCByb3dz
dHJpZGUsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBnZGtfcGl4YnVmX3NhdmUo
ZGlmZkltYWdlLCAiL3RtcC9kaWZmSW1hZ2UucG5nIiwgInBuZyIsIE5VTEwsIE5VTEwpOworICAg
ICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gaGVpZ2h0ICogd2lkdGg7CisgICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVsdVxuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4obGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIGZ3cml0ZShnZGtfcGl4
YnVmX2dldF9waXhlbHMoZGlmZkltYWdlKSwgMSwgbGVuZ3RoLCBzdGRvdXQpOworCisgICAgICAg
ICAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiZGlmZjogJTAxLjJmJSUgZmFpbGVkXG4iLCBk
aWZmZXJlbmNlKTsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihpZCwgImRpZmY6ICUwMS4y
ZiUlIGZhaWxlZFxuIiwgZGlmZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgICAgICAgICB9CisgICAgICAgIGZwcmludGYo
aWQsICJ1bnJlZmZpbmdcbiIpOyBmZmx1c2goaWQpOworICAgICAgICBnX29iamVjdF91bnJlZihh
Y3R1YWxJbWFnZSk7CisgICAgICAgIGFjdHVhbEltYWdlID0gTlVMTDsKKyAgICAgICAgZ19vYmpl
Y3RfdW5yZWYoYmFzZWxpbmVJbWFnZSk7CisgICAgICAgIGJhc2VsaW5lSW1hZ2UgPSBOVUxMOwor
ICAgICAgICB9CisgICAgfQorICAgIGZjbG9zZShpZCk7CisKKyAgICByZXR1cm4gMDsKK30KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9QaXhlbER1bXBTdXBwb3J0
R3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9QaXhlbER1bXBTdXBwb3J0
R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTY5ZjM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1BpeGVsRHVtcFN1
cHBvcnRHdGsuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogTGljZW5zZSBoZWFkZXIuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnRDYWly
by5oIgorCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKworI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KKworLy8gVGFrZW4gZnJvbSBnZGsvZ2RrY2Fpcm8uYyBm
aWxlIGZyb20gdGhlIGd0aysgcHJvamVjdC4KKy8vIGdka19jYWlyb19zZXRfc291cmNlX3BpeGJ1
ZiB1c2VzIHRoaXMgY29kZSwgbWF5YmUgYWxsIHRoaXMgaXMgdG8gbm8gYXZhaWwKKy8vIGFuZCB3
ZSBzaG91bGQganVzdCB1c2UgdGhhdC4KKworLy8gQlVUIC0gYmUgc3VyZSBjb250ZXh0IGhhcyBp
bWFnZSBzdXJmYWNlIHNldCBhcyBhIHRhcmdldCEgZ2RrX2NhaXJvX3NldF9zb3VyY2VfcGl4bWFw
CisvLyBzZXRzIGEgeGxpYiBzdXJmYWNlIGFzIGNvbnRleHQncyB0YXJnZXQsIGJ1dCB3ZSB3YW50
IHRvIHJlbWFpbiBpbiBzeW5jIHdpdGggdGhlIFdpbmRvd3MgcG9ydCwKKy8vIHdoaWNoIHVzZXMg
aW1hZ2Ugc3VyZmFjZXMgZm9yIGdldHRpbmcgdGhlIGRhdGEgZm9yIGhhc2hpbmcuIFdlIHdhbnQg
dG8gc2hhcmUgdGhlIGNvZGUgaW4KKy8vIFdLVG9vbHMvRHVtcFJlbmRlclRyZWUvY2Fpcm8vUGl4
ZWxEdW1wU3VwcG9ydENhaXJvLmNwcCB3aXRoIHRoZW0uCisKK2NhaXJvX3N1cmZhY2VfdCogZ2Rr
UGl4YnVmVG9DYWlyb1N1cmZhY2UoR2RrUGl4YnVmKiBwaXhidWYpIHsKKyAgZ2ludCB3aWR0aCA9
IGdka19waXhidWZfZ2V0X3dpZHRoIChwaXhidWYpOworICBnaW50IGhlaWdodCA9IGdka19waXhi
dWZfZ2V0X2hlaWdodCAocGl4YnVmKTsKKyAgZ3VjaGFyICpnZGtfcGl4ZWxzID0gZ2RrX3BpeGJ1
Zl9nZXRfcGl4ZWxzIChwaXhidWYpOworICBpbnQgZ2RrX3Jvd3N0cmlkZSA9IGdka19waXhidWZf
Z2V0X3Jvd3N0cmlkZSAocGl4YnVmKTsKKyAgaW50IG5fY2hhbm5lbHMgPSBnZGtfcGl4YnVmX2dl
dF9uX2NoYW5uZWxzIChwaXhidWYpOworICBpbnQgY2Fpcm9fc3RyaWRlOworICBndWNoYXIgKmNh
aXJvX3BpeGVsczsKKyAgY2Fpcm9fZm9ybWF0X3QgZm9ybWF0OworICBjYWlyb19zdXJmYWNlX3Qg
KnN1cmZhY2U7CisgIHN0YXRpYyBjb25zdCBjYWlyb191c2VyX2RhdGFfa2V5X3Qga2V5ID0gezAs
fTsKKyAgaW50IGo7CisKKyAgaWYgKG5fY2hhbm5lbHMgPT0gMykKKyAgICBmb3JtYXQgPSBDQUlS
T19GT1JNQVRfUkdCMjQ7CisgIGVsc2UKKyAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMy
OworCisgIGNhaXJvX3N0cmlkZSA9IGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoIChmb3Jt
YXQsIHdpZHRoKTsKKyAgY2Fpcm9fcGl4ZWxzID0gKGd1Y2hhciopZ19tYWxsb2MgKGhlaWdodCAq
IGNhaXJvX3N0cmlkZSk7CisgIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9m
b3JfZGF0YSAoKHVuc2lnbmVkIGNoYXIgKiljYWlyb19waXhlbHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGNhaXJvX3N0
cmlkZSk7CisKKyAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhIChzdXJmYWNlLCAma2V5LAor
CQkJICAgICAgIGNhaXJvX3BpeGVscywgKGNhaXJvX2Rlc3Ryb3lfZnVuY190KWdfZnJlZSk7CisK
KyAgZm9yIChqID0gaGVpZ2h0OyBqOyBqLS0pCisgICAgeworICAgICAgZ3VjaGFyICpwID0gZ2Rr
X3BpeGVsczsKKyAgICAgIGd1Y2hhciAqcSA9IGNhaXJvX3BpeGVsczsKKworICAgICAgaWYgKG5f
Y2hhbm5lbHMgPT0gMykKKwl7CisJICBndWNoYXIgKmVuZCA9IHAgKyAzICogd2lkdGg7CisJICAK
KwkgIHdoaWxlIChwIDwgZW5kKQorCSAgICB7CisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExF
X0VORElBTgorCSAgICAgIHFbMF0gPSBwWzJdOworCSAgICAgIHFbMV0gPSBwWzFdOworCSAgICAg
IHFbMl0gPSBwWzBdOworI2Vsc2UJICAKKwkgICAgICBxWzFdID0gcFswXTsKKwkgICAgICBxWzJd
ID0gcFsxXTsKKwkgICAgICBxWzNdID0gcFsyXTsKKyNlbmRpZgorCSAgICAgIHAgKz0gMzsKKwkg
ICAgICBxICs9IDQ7CisJICAgIH0KKwl9CisgICAgICBlbHNlCisJeworCSAgZ3VjaGFyICplbmQg
PSBwICsgNCAqIHdpZHRoOworCSAgZ3VpbnQgdDEsdDIsdDM7CisJICAgIAorI2RlZmluZSBNVUxU
KGQsYyxhLHQpIEdfU1RNVF9TVEFSVCB7IHQgPSBjICogYSArIDB4N2Y7IGQgPSAoKHQgPj4gOCkg
KyB0KSA+PiA4OyB9IEdfU1RNVF9FTkQKKworCSAgd2hpbGUgKHAgPCBlbmQpCisJICAgIHsKKyNp
ZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVfRU5ESUFOCisJICAgICAgTVVMVChxWzBdLCBwWzJd
LCBwWzNdLCB0MSk7CisJICAgICAgTVVMVChxWzFdLCBwWzFdLCBwWzNdLCB0Mik7CisJICAgICAg
TVVMVChxWzJdLCBwWzBdLCBwWzNdLCB0Myk7CisJICAgICAgcVszXSA9IHBbM107CisjZWxzZQkg
IAorCSAgICAgIHFbMF0gPSBwWzNdOworCSAgICAgIE1VTFQocVsxXSwgcFswXSwgcFszXSwgdDEp
OworCSAgICAgIE1VTFQocVsyXSwgcFsxXSwgcFszXSwgdDIpOworCSAgICAgIE1VTFQocVszXSwg
cFsyXSwgcFszXSwgdDMpOworI2VuZGlmCisJICAgICAgCisJICAgICAgcCArPSA0OworCSAgICAg
IHEgKz0gNDsKKwkgICAgfQorCSAgCisjdW5kZWYgTVVMVAorCX0KKworICAgICAgZ2RrX3BpeGVs
cyArPSBnZGtfcm93c3RyaWRlOworICAgICAgY2Fpcm9fcGl4ZWxzICs9IGNhaXJvX3N0cmlkZTsK
KyAgICB9CisKKyAgICByZXR1cm4gc3VyZmFjZTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBDb250
ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2Vi
X3ZpZXcobWFpbkZyYW1lKTsKKyAgICBHZGtQaXhtYXAqIHBpeG1hcCA9IGd0a193aWRnZXRfZ2V0
X3NuYXBzaG90KEdUS19XSURHRVQodmlldyksIE5VTEwpOworCisgICAgZ2ludCB3aWR0aCwgaGVp
Z2h0OworICAgIGdka19kcmF3YWJsZV9nZXRfc2l6ZShHREtfRFJBV0FCTEUocGl4bWFwKSwgJndp
ZHRoLCAmaGVpZ2h0KTsKKyAgICBHZGtQaXhidWYqIHBpeGJ1ZiA9IGdka19waXhidWZfZ2V0X2Zy
b21fZHJhd2FibGUoTlVMTCwgR0RLX0RSQVdBQkxFKHBpeG1hcCksIGdka19jb2xvcm1hcF9nZXRf
c3lzdGVtKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOworCisKKy8vICAqTWlnaHQqIGJlIGFu
IGVhc2llciB3YXkgb2YgZG9pbmcgaXQsIGJ1dCBnb3QgaXQgd29ya2luZyB0aGlzIHdheS4KKyAg
ICBjYWlyb190KiBjb250ZXh0ID0gY2Fpcm9fY3JlYXRlKGdka1BpeGJ1ZlRvQ2Fpcm9TdXJmYWNl
KHBpeGJ1ZikpOworICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFkb3B0aW5nQml0
bWFwQW5kQ29udGV4dChwaXhidWYsIGNvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvR05VbWFrZWZpbGUuYW0gYi9XZWJLaXRUb29scy9HTlVtYWtlZmlsZS5hbQppbmRleCBjMjAy
OWYzLi4wZGZhMzA3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9HTlVtYWtlZmlsZS5hbQorKysg
Yi9XZWJLaXRUb29scy9HTlVtYWtlZmlsZS5hbQpAQCAtMSw2ICsxLDcgQEAKIG5vaW5zdF9QUk9H
UkFNUyArPSBcCiAJUHJvZ3JhbXMvR3RrTGF1bmNoZXIgXAotCVByb2dyYW1zL0R1bXBSZW5kZXJU
cmVlCisJUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUgXAorCVByb2dyYW1zL0ltYWdlRGlmZgogCiAj
IEd0a0xhdW5jaGVyCiBQcm9ncmFtc19HdGtMYXVuY2hlcl9DUFBGTEFHUyA9IFwKQEAgLTMxLDYg
KzMyLDcgQEAgUHJvZ3JhbXNfR3RrTGF1bmNoZXJfTERGTEFHUyA9IFwKICMgRHVtcFJlbmRlclRy
ZWUKIGR1bXByZW5kZXJ0cmVlX2NwcGZsYWdzIDo9IFwKIAktSSQoc3JjZGlyKS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZSBcCisJLUkkKHNyY2RpcikvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2Fpcm8gXAogCS1JJChzcmNkaXIpL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ayBc
CiAJLUkkKHNyY2RpcikvV2ViS2l0L2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvV2ViS2l0L2d0
ayBcCkBAIC01MSwxMSArNTMsMTQgQEAgUHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfU09VUkNFUyA9
IFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmggXAog
CVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBcCiAJ
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBcCisJV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAgXAogCVdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaCBcCiAJV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvV29ya1F1ZXVlLmNwcCBcCiAJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
V29ya1F1ZXVlLmggXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1ZUl0ZW0u
aCBcCiAJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmggXAorCVdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5jcHAgXAorCVdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5oIFwKIAlX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsu
Y3BwIFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEd0ay5jcHAgXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVy
VHJlZS5jcHAgXApAQCAtNjQsNiArNjksNyBAQCBQcm9ncmFtc19EdW1wUmVuZGVyVHJlZV9TT1VS
Q0VTID0gXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAg
XAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJHdGsuY3BwIFwK
IAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwIFwKKwlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvUGl4ZWxEdW1wU3VwcG9ydEd0
ay5jcHAgXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3Rr
LmNwcAogCiBQcm9ncmFtc19EdW1wUmVuZGVyVHJlZV9DWFhGTEFHUyA9IFwKQEAgLTgzLDYgKzg5
LDggQEAgUHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfQ0ZMQUdTID0gXAogUHJvZ3JhbXNfRHVtcFJl
bmRlclRyZWVfTERBREQgPSBcCiAJbGlid2Via2l0LTEuMC5sYSBcCiAJbGliSmF2YVNjcmlwdENv
cmUubGEgXAorCS1sc3NsIFwKKwktbGNyeXB0byBcCiAJJChHTE9CQUxERVBTX0xJQlMpIFwKIAkk
KENBSVJPX0xJQlMpIFwKIAkkKEdUS19MSUJTKSBcCkBAIC05NCwxMCArMTAyLDQwIEBAIFByb2dy
YW1zX0R1bXBSZW5kZXJUcmVlX0xERkxBR1MgPSBcCiAJLW5vLWZhc3QtaW5zdGFsbCBcCiAJLW5v
LWluc3RhbGwKIAorIyBJbWFnZURpZmYKK2ltYWdlZGlmZl9jcHBmbGFncyA6PSBcCisJJChnbG9i
YWxfY3BwZmxhZ3MpIFwKKwkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKQorCitQcm9ncmFtc19J
bWFnZURpZmZfQ1BQRkxBR1MgPSAkKGR1bXByZW5kZXJ0cmVlX2NwcGZsYWdzKQorCitQcm9ncmFt
c19JbWFnZURpZmZfU09VUkNFUyA9IFwKKwlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
SW1hZ2VEaWZmLmNwcAorCitQcm9ncmFtc19JbWFnZURpZmZfQ1hYRkxBR1MgPSBcCisJJChnbG9i
YWxfY3h4ZmxhZ3MpIFwKKwkkKGltYWdlZGlmZl9jcHBmbGFncykgXAorCSQoUHJvZ3JhbXNfSW1h
Z2VEaWZmX0NGTEFHUykKKworUHJvZ3JhbXNfSW1hZ2VEaWZmX0NGTEFHUyA9IFwKKwktZm5vLXN0
cmljdC1hbGlhc2luZyBcCisJJChpbWFnZWRpZmZfY3BwZmxhZ3MpIFwKKwkkKGdsb2JhbF9jZmxh
Z3MpIFwKKwkkKEdMT0JBTERFUFNfQ0ZMQUdTKSBcCisJJChHVEtfQ0ZMQUdTKQorCitQcm9ncmFt
c19JbWFnZURpZmZfTERBREQgPSBcCisJJChHVEtfTElCUykKKworUHJvZ3JhbXNfSW1hZ2VEaWZm
X0xERkxBR1MgPSBcCisJLW5vLWZhc3QtaW5zdGFsbCBcCisJLW5vLWluc3RhbGwKKwogIyBjbGVh
biB0YXJnZXQKIENMRUFORklMRVMgKz0gXAogCVByb2dyYW1zL0d0a0xhdW5jaGVyIFwKLQlQcm9n
cmFtcy9EdW1wUmVuZGVyVHJlZQorCVByb2dyYW1zL0R1bXBSZW5kZXJUcmVlIFwKKwlQcm9ncmFt
cy9JbWFnZURpZmYKIAogCiBpZiBUQVJHRVRfWDExCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMKaW5kZXggZTQ1YzJkYi4uY2MzMjQwMCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9ydW4td2Via2l0LXRlc3RzCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtp
dC10ZXN0cwpAQCAtMTIwMCw2ICsxMjAwLDEwIEBAIHN1YiBvcGVuRGlmZlRvb2woKQogICAgIHJl
dHVybiBpZiAkaXNEaWZmVG9vbE9wZW47CiAgICAgcmV0dXJuIGlmICEkcGl4ZWxUZXN0czsKIAor
ICAgIGlmIChpc0d0aygpKSB7CisgICAgICAgICMgR2RrLCBvZiB3aGljaCBwYXJ0cyBhcmUgdXNl
ZCBpbiBJbWFnZURpZmYgcHJvZ3JhbSwgbXVzdCBoYXZlIHRoZSBkaXNwbGF5IGVudiBzZXQuCisg
ICAgICAgIHB1c2ggQGRpZmZUb29sQXJncywgIi0tZGlzcGxheT0kRU5WeydESVNQTEFZJ30iOwor
ICAgIH0KICAgICBsb2NhbCAlRU5WOwogICAgICRFTlZ7TWFsbG9jU3RhY2tMb2dnaW5nfSA9IDEg
aWYgJHNob3VsZENoZWNrTGVha3M7CiAgICAgJGltYWdlRGlmZlRvb2xQSUQgPSBvcGVuMihcKkRJ
RkZJTiwgXCpESUZGT1VULCAkaW1hZ2VEaWZmVG9vbCwgbGF1bmNoV2l0aEN1cnJlbnRFbnYoQGRp
ZmZUb29sQXJncykpIG9yIGRpZSAidW5hYmxlIHRvIG9wZW4gJGltYWdlRGlmZlRvb2xcbiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60887</attachid>
            <date>2010-07-08 08:33:23 -0700</date>
            <delta_ts>2010-07-08 15:06:24 -0700</delta_ts>
            <desc>Convert PixelDumpSupportCairo.cpp to use NL line endings</desc>
            <filename>bug-31518-20100708083322.patch</filename>
            <type>text/plain</type>
            <size>8918</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MzgyY2ZmMTE5MzAyMDIzZmQzNWZiNDNkOTYyYjQwMTZkMWFlNjIyLi5jZTQ4NzE4
ZDFlZDZmODYwOTFkNTVjODFmYWEzNGQzMTkxNTYzMjkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDctMDggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFN1cHBv
cnQgcGl4ZWwgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMxNTE4CisKKyAgICAgICAgQ29udmVydCB0aGlzIGZpbGUgZnJvbSBDUkxGIHRvIE5M
IGxpbmUgZW5kaW5ncy4gSXQgd2lsbCBzb29uCisgICAgICAgIGJlIHVzZWQgb24gbW9yZSB0aGFu
IGp1c3QgdGhlIFdpbkNhaXJvIHBsYXRmb3JtLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2Fpcm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmNwcDoKKyAgICAgICAgKHdyaXRlRnVuY3Rpb24p
OgorICAgICAgICAocHJpbnRQTkcpOgorICAgICAgICAoY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JC
aXRtYXBDb250ZXh0KToKKyAgICAgICAgKGR1bXBCaXRtYXApOgorCiAyMDEwLTA3LTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2Fpcm8vUGl4ZWxEdW1w
U3VwcG9ydENhaXJvLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVs
RHVtcFN1cHBvcnRDYWlyby5jcHAKaW5kZXggODg5YjdiMzAzMTZhNzQzYzgzMGNkNDRkZWM0YWQ2
Nzc2NGVlMGRjMS4uZmVlNmU4OWQxZWU1YWFkMGNlOWZlOGI0NjY1ZDM2YjU1NmVlODExYiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2Fpcm8vUGl4ZWxEdW1wU3VwcG9y
dENhaXJvLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jYWlyby9QaXhlbER1
bXBTdXBwb3J0Q2Fpcm8uY3BwCkBAIC0xLDk3ICsxLDk3IEBACi0vKg0KLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogICAgICAgICAgIChD
KSAyMDA5IEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5vcmc+DQotICoNCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQNCi0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMNCi0gKiBhcmUgbWV0Og0KLSAqDQotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCi0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLg0KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mDQotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLg0KLSAqDQotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkNCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
DQotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQ0KLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkNCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUw0KLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsNCi0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQN
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVA0KLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
DQotICovDQotDQotI2luY2x1ZGUgImNvbmZpZy5oIg0KLSNpbmNsdWRlICJQaXhlbER1bXBTdXBw
b3J0Q2Fpcm8uaCINCi0NCi0jaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCINCi0jaW5jbHVkZSAi
UGl4ZWxEdW1wU3VwcG9ydC5oIg0KLSNpbmNsdWRlIDxhbGdvcml0aG0+DQotI2luY2x1ZGUgPGN0
eXBlLmg+DQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+DQotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4NCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPg0KLSNpbmNsdWRlIDx3dGYvU3RyaW5n
RXh0cmFzLmg+DQotDQotI2lmIFBMQVRGT1JNKFdJTikNCi0jaW5jbHVkZSAiTUQ1LmgiDQotI2Vu
ZGlmDQotDQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCi0NCi1zdGF0aWMgY2Fpcm9fc3RhdHVzX3Qg
d3JpdGVGdW5jdGlvbih2b2lkKiBjbG9zdXJlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBpbnQgbGVuZ3RoKQ0KLXsNCi0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBpbiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPHVuc2lnbmVkIGNoYXI+Kj4oY2xvc3VyZSk7DQotICAg
IGluLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsNCi0gICAgcmV0dXJuIENBSVJPX1NUQVRVU19TVUND
RVNTOw0KLX0NCi0NCi1zdGF0aWMgdm9pZCBwcmludFBORyhjYWlyb19zdXJmYWNlX3QqIGltYWdl
KQ0KLXsNCi0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHBpeGVsRGF0YTsNCi0gICAgLy8gT25s
eSBQTkcgb3V0cHV0IGlzIHN1cHBvcnRlZCBmb3Igbm93Lg0KLSAgICBjYWlyb19zdXJmYWNlX3dy
aXRlX3RvX3BuZ19zdHJlYW0oaW1hZ2UsIHdyaXRlRnVuY3Rpb24sICZwaXhlbERhdGEpOw0KLQ0K
LSAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aCA9IHBpeGVsRGF0YS5zaXplKCk7DQotICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBwaXhlbERhdGEuZGF0YSgpOw0KLQ0KLSAgICBwcmlu
dFBORyhkYXRhLCBkYXRhTGVuZ3RoKTsNCi19DQotDQotdm9pZCBjb21wdXRlTUQ1SGFzaFN0cmlu
Z0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBoYXNoU3RyaW5n
WzMzXSkNCi17DQotICAgIGNhaXJvX3QqIGJpdG1hcENvbnRleHQgPSBjb250ZXh0LT5jYWlyb0Nv
bnRleHQoKTsNCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fZ2V0X3Rhcmdl
dChiaXRtYXBDb250ZXh0KTsNCi0NCi0gICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X2Zvcm1hdChzdXJmYWNlKSA9PSBDQUlST19GT1JNQVRfQVJHQjMyKTsgLy8gSW1hZ2VEaWZmIGFz
c3VtZXMgMzIgYml0IFJHQkEsIHdlIG11c3QgYXMgd2VsbC4NCi0NCi0gICAgc2l6ZV90IHBpeGVs
c0hpZ2ggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7DQotICAgIHNp
emVfdCBwaXhlbHNXaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7
DQotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IHBpeGVsc1dpZGUgKiBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7DQotDQotICAgIE1ENV9DVFggbWQ1Q29udGV4dDsNCi0g
ICAgTUQ1X0luaXQoJm1kNUNvbnRleHQpOw0KLSAgICB1bnNpZ25lZCBjaGFyKiBiaXRtYXBEYXRh
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Rh
dGEoc3VyZmFjZSkpOw0KLSAgICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hp
Z2g7IHJvdysrKSB7DQotICAgICAgICBNRDVfVXBkYXRlKCZtZDVDb250ZXh0LCBiaXRtYXBEYXRh
LCA0ICogcGl4ZWxzV2lkZSk7DQotICAgICAgICBiaXRtYXBEYXRhICs9IGJ5dGVzUGVyUm93Ow0K
LSAgICB9DQotICAgIHVuc2lnbmVkIGNoYXIgaGFzaFsxNl07DQotICAgIE1ENV9GaW5hbChoYXNo
LCAmbWQ1Q29udGV4dCk7DQotDQotICAgIGhhc2hTdHJpbmdbMF0gPSAnXDAnOw0KLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDE2OyBpKyspDQotICAgICAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAz
MywgIiVzJTAyeCIsIGhhc2hTdHJpbmcsIGhhc2hbaV0pOw0KLX0NCi0NCi12b2lkIGR1bXBCaXRt
YXAoQml0bWFwQ29udGV4dCogY29udGV4dCkNCi17DQotICAgIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSA9IGNhaXJvX2dldF90YXJnZXQoY29udGV4dC0+Y2Fpcm9Db250ZXh0KCkpOw0KLSAgICBw
cmludFBORyhzdXJmYWNlKTsNCi19DQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDkgQnJlbnQgRnVs
Z2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGl4ZWxEdW1wU3VwcG9ydENhaXJvLmgiCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgor
I2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0
cmluZ0V4dHJhcy5oPgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIk1ENS5oIgorI2Vu
ZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK3N0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0
ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGludCBsZW5ndGgpCit7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBpbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VmVjdG9yPHVuc2lnbmVkIGNoYXI+Kj4oY2xvc3VyZSk7CisgICAgaW4tPmFw
cGVuZChkYXRhLCBsZW5ndGgpOworICAgIHJldHVybiBDQUlST19TVEFUVVNfU1VDQ0VTUzsKK30K
Kworc3RhdGljIHZvaWQgcHJpbnRQTkcoY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSkKK3sKKyAgICBW
ZWN0b3I8dW5zaWduZWQgY2hhcj4gcGl4ZWxEYXRhOworICAgIC8vIE9ubHkgUE5HIG91dHB1dCBp
cyBzdXBwb3J0ZWQgZm9yIG5vdy4KKyAgICBjYWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJl
YW0oaW1hZ2UsIHdyaXRlRnVuY3Rpb24sICZwaXhlbERhdGEpOworCisgICAgY29uc3Qgc2l6ZV90
IGRhdGFMZW5ndGggPSBwaXhlbERhdGEuc2l6ZSgpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEgPSBwaXhlbERhdGEuZGF0YSgpOworCisgICAgcHJpbnRQTkcoZGF0YSwgZGF0YUxlbmd0
aCk7Cit9CisKK3ZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1h
cENvbnRleHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmluZ1szM10pCit7CisgICAgY2Fpcm9fdCog
Yml0bWFwQ29udGV4dCA9IGNvbnRleHQtPmNhaXJvQ29udGV4dCgpOworICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSA9IGNhaXJvX2dldF90YXJnZXQoYml0bWFwQ29udGV4dCk7CisKKyAgICBB
U1NFUlQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0KHN1cmZhY2UpID09IENBSVJPX0ZP
Uk1BVF9BUkdCMzIpOyAvLyBJbWFnZURpZmYgYXNzdW1lcyAzMiBiaXQgUkdCQSwgd2UgbXVzdCBh
cyB3ZWxsLgorCisgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZSk7CisgICAgc2l6ZV90IHBpeGVsc1dpZGUgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBwaXhl
bHNXaWRlICogY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworCisgICAg
TUQ1X0NUWCBtZDVDb250ZXh0OworICAgIE1ENV9Jbml0KCZtZDVDb250ZXh0KTsKKyAgICB1bnNp
Z25lZCBjaGFyKiBiaXRtYXBEYXRhID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIGZvciAodW5zaWduZWQgcm93
ID0gMDsgcm93IDwgcGl4ZWxzSGlnaDsgcm93KyspIHsKKyAgICAgICAgTUQ1X1VwZGF0ZSgmbWQ1
Q29udGV4dCwgYml0bWFwRGF0YSwgNCAqIHBpeGVsc1dpZGUpOworICAgICAgICBiaXRtYXBEYXRh
ICs9IGJ5dGVzUGVyUm93OworICAgIH0KKyAgICB1bnNpZ25lZCBjaGFyIGhhc2hbMTZdOworICAg
IE1ENV9GaW5hbChoYXNoLCAmbWQ1Q29udGV4dCk7CisKKyAgICBoYXNoU3RyaW5nWzBdID0gJ1ww
JzsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyBpKyspCisgICAgICAgIHNucHJpbnRmKGhh
c2hTdHJpbmcsIDMzLCAiJXMlMDJ4IiwgaGFzaFN0cmluZywgaGFzaFtpXSk7Cit9CisKK3ZvaWQg
ZHVtcEJpdG1hcChCaXRtYXBDb250ZXh0KiBjb250ZXh0KQoreworICAgIGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSA9IGNhaXJvX2dldF90YXJnZXQoY29udGV4dC0+Y2Fpcm9Db250ZXh0KCkpOwor
ICAgIHByaW50UE5HKHN1cmZhY2UpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60968</attachid>
            <date>2010-07-08 15:06:27 -0700</date>
            <delta_ts>2010-07-12 12:02:48 -0700</delta_ts>
            <desc>Pixel test support</desc>
            <filename>bug-31518-20100708150629.patch</filename>
            <type>text/plain</type>
            <size>11622</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxZTE4YTBjNmFiNDY4NDZkNjA5NWM1NjcyNzRmNjY2ZjRlNDFmODg1Li5jYWZhZjE2
MTRiMDQ0MmI4ZDZmMjNkYjM3MTI3YTc4NTA3YjQ1NzdjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMgQEAK
IDIwMTAtMDctMDggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFN1cHBv
cnQgcGl4ZWwgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMxNTE4CisKKyAgICAgICAgRmluaXNoIHN1cHBvcnQgZm9yIHBpeGVsIHRlc3RzIG9u
IEdUSysuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNwcDog
UmVtb3ZlIHVuZWNlc3NhcnkgUmV0YWluUHRyIGluY2x1ZGUgKG9ubHkKKyAgICAgICAgd29ya3Mg
b24gQ29yZUZvdW5kYXRpb24gc3lzdGVtcykgYW5kIGFkZCBtaXNzaW5nIGNzdGRpbyBpbmNsdWRl
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5j
cHA6IFN3aXRjaCB0byB1c2luZyB0aGUgTUQ1IHN1cHBvcnQgZm91bmQKKyAgICAgICAgaW4gSlND
IGxpYnJhcnkuIE1ENS5jcHAgYW5kIE1ENS5oIGFyZSBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIFdp
bmRvd3MgYnVpbGQuCisgICAgICAgIChjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRl
eHQpOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHBlciByb3cgc2hvdWxkIGJlIHRoZSByb3cgc3RyaWRl
CisgICAgICAgIG9mIHRoZSBpbWFnZSwgbm90IHRoZSByb3cgc3RyaWRlIG11bHRpcGxpZWQgYnkg
dGhlIHdpZHRoLiBVc2UgSlNDIE1ENSBpbXBsZW1lbnRhdGlvbiB0byBjYWxjdWxhdGUKKyAgICAg
ICAgdGhlIE1ENSBoYXNoIGhlcmUuIEFjY29yZGluZyB0byBnbGliYyBtYW5wYWdlcywgdXNpbmcg
c25wcmludGYgdG8gYnVpbGQgYSBzdHJpbmcgaW4gdW5zdXBwb3J0ZWQKKyAgICAgICAgYnkgdGhl
IEFOU0kgc3RhbmRhcmQgYW5kIHRoaXMgZmFpbHMgb24gTGludXgsIHNvIHVucm9sbCB0aGUgbG9v
cCBoZXJlLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRD
YWlyby5oOiBDb3JyZWN0IHNvbWUgY29uc3RydWN0b3IgbWlzYmVoYXZpb3IuCisgICAgICAgIChC
aXRtYXBDb250ZXh0OjpCaXRtYXBDb250ZXh0KTogVGhlcmUgaXMgbm8gcmVhc29uIHRvIGNoZWNr
IHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgbV9jb250ZXh0IG1lbWJlciBpbiB0aGUgY29uc3Ry
dWN0b3IgYW5kIGl0IGNlcnRhaW5seSBzaG91bGQgbm90IGJlIGZyZWVkLiBJbnN0ZWFkCisgICAg
ICAgIGp1c3QgaW5pdGlhbGl6ZSBpdCB3aXRoIHRoZSBpbmNvbWluZyB2YWx1ZS4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOiBGaXggdGhlIG9yZGVyIG9m
IGluY2x1ZGVzLgorICAgICAgICAoZHVtcCk6IEFjdHVhbGx5IGNhbGwgZHVtcFdlYlZpZXdBc1Bp
eGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQgd2hlbiBpdCBpcyB0aW1lIHRvCisgICAgICAgIGR1
bXAgcGl4ZWxzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9QaXhlbER1bXBTdXBwb3J0
R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcp
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgbmV3IGZpbGVzIHRvIHRoZSBidWlsZC4K
KworMjAxMC0wNy0wOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgogCiAgICAgICAgIFtHVEtdIFN1cHBvcnQg
cGl4ZWwgdGVzdHMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVs
RHVtcFN1cHBvcnQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3Vw
cG9ydC5jcHAKaW5kZXggZTM4YjJkNDU2NmI1OWEwNGEzOTFhYjY4NTEwZDk5Yjk3M2E0NGRmZi4u
ZTM3MjgyNzZlNTE1ZTViNmViZGZiNjUzYjVkZTYwYjk1OTBkZjdkOSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAKQEAgLTMwLDkgKzMwLDkg
QEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgorI2luY2x1ZGUgPGNzdGRp
bz4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShDRykKICNpbmNsdWRl
ICJQaXhlbER1bXBTdXBwb3J0Q0cuaCIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jYWlyby9QaXhlbER1bXBTdXBwb3J0Q2Fpcm8uY3BwCmluZGV4IGZlZTZlODlk
MWVlNWFhZDBjZTlmZThiNDY2NWQzNmI1NTZlZTgxMWIuLjdkZTAxOWRmMGE4NTJmODcxM2QzYTdl
ZDVlYzE0NTkxMDk1ZmFjYjcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2Fpcm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmNwcApAQCAtMSw2ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogICAgICAgICAgIChDKSAyMDA5IEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5v
cmc+CisgKiAgICAgICAgICAgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNSwxNCArMzYsMTAgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9NRDUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKFdJ
TikKLSNpbmNsdWRlICJNRDUuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBz
dGF0aWMgY2Fpcm9fc3RhdHVzX3Qgd3JpdGVGdW5jdGlvbih2b2lkKiBjbG9zdXJlLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQpAQCAtNzMsMjEgKzcwLDIw
IEBAIHZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRl
eHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmluCiAKICAgICBzaXplX3QgcGl4ZWxzSGlnaCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsKICAgICBzaXplX3QgcGl4ZWxz
V2lkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwotICAgIHNpemVf
dCBieXRlc1BlclJvdyA9IHBpeGVsc1dpZGUgKiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJp
ZGUoc3VyZmFjZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogCi0gICAgTUQ1X0NUWCBtZDVDb250ZXh0OwotICAgIE1E
NV9Jbml0KCZtZDVDb250ZXh0KTsKKyAgICBNRDUgbWQ1Q29udGV4dDsKICAgICB1bnNpZ25lZCBj
aGFyKiBiaXRtYXBEYXRhID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsg
cm93IDwgcGl4ZWxzSGlnaDsgcm93KyspIHsKLSAgICAgICAgTUQ1X1VwZGF0ZSgmbWQ1Q29udGV4
dCwgYml0bWFwRGF0YSwgNCAqIHBpeGVsc1dpZGUpOworICAgICAgICBtZDVDb250ZXh0LmFkZEJ5
dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsKICAgICAgICAgYml0bWFwRGF0YSArPSBi
eXRlc1BlclJvdzsKICAgICB9Ci0gICAgdW5zaWduZWQgY2hhciBoYXNoWzE2XTsKLSAgICBNRDVf
RmluYWwoaGFzaCwgJm1kNUNvbnRleHQpOworICAgIFZlY3Rvcjx1aW50OF90LCAxNj4gaGFzaDsK
KyAgICBtZDVDb250ZXh0LmNoZWNrc3VtKGhhc2gpOwogCi0gICAgaGFzaFN0cmluZ1swXSA9ICdc
MCc7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgaSsrKQotICAgICAgICBzbnByaW50Ziho
YXNoU3RyaW5nLCAzMywgIiVzJTAyeCIsIGhhc2hTdHJpbmcsIGhhc2hbaV0pOworICAgIHNucHJp
bnRmKGhhc2hTdHJpbmcsIDMzLCAiJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4
JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCisgICAgICAgIGhhc2hbMF0sIGhhc2hbMV0s
IGhhc2hbMl0sIGhhc2hbM10sIGhhc2hbNF0sIGhhc2hbNV0sIGhhc2hbNl0sIGhhc2hbN10sCisg
ICAgICAgIGhhc2hbOF0sIGhhc2hbOV0sIGhhc2hbMTBdLCBoYXNoWzExXSwgaGFzaFsxMl0sIGhh
c2hbMTNdLCBoYXNoWzE0XSwgaGFzaFsxNV0pOwogfQogCiB2b2lkIGR1bXBCaXRtYXAoQml0bWFw
Q29udGV4dCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2Fpcm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmgKaW5kZXggZDFhMGMzZjA4Zjg1ZWM2NGZh
ODg3MDhhZmUxY2U1NjlhMjE1ZmU2MC4uZmExZjQ4YmZlYzEwYjc1MWY5NjlmMDlmYjJkZjk0NmU3
NTI3ZTRiYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2Fpcm8vUGl4
ZWxEdW1wU3VwcG9ydENhaXJvLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2Fp
cm8vUGl4ZWxEdW1wU3VwcG9ydENhaXJvLmgKQEAgLTM2LDYgKzM2LDggQEAKICNpZiBQTEFURk9S
TShXSU4pCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+Cisj
ZWxpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oV0lOKQpAQCAtNjgsMTYgKzcwLDEyIEBAIHByaXZhdGU6CiAKICAgICBCaXRtYXBDb250
ZXh0KFBsYXRmb3JtQml0bWFwQnVmZmVyIGJ1ZmZlciwgY2Fpcm9fdCogY29udGV4dCkKICAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAg
ewotICAgICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgICAgY2Fpcm9fZGVzdHJveShtX2NvbnRl
eHQpOwotCi0gICAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICB9CiAKICAgICBQbGF0Zm9y
bUJpdG1hcEJ1ZmZlciBtX2J1ZmZlcjsKICAgICBjYWlyb190KiBtX2NvbnRleHQ7Ci0KIH07CiAK
ICNlbmRpZiAvLyBQaXhlbER1bXBTdXBwb3J0Q2Fpcm9faApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggZDc5YWRkZjc1NjE0ZTYw
MmRmMmRkMDAxMmVmOTc2MDQ3YzkxYjhlNi4uZGEwNTgwNDgxNmE1YmU2YmJkNjRmZmMwZWVlNjEz
YTFjODM5OWIyZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC0zNiwyMyArMzYsMjIgQEAKICNpbmNsdWRlICJFdmVudFNlbmRl
ci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgogI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKLQorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHQuaD4KKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNzdGRs
aWI+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxnZXRvcHQuaD4KICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHQuaD4KLQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKICNp
ZiBQTEFURk9STShYMTEpCiAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CiAjZW5k
aWYKIAotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0jaW5jbHVkZSA8
c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
QEAgLTQyMiw3ICs0MjEsNyBAQCB2b2lkIGR1bXAoKQogCiAgICAgaWYgKGR1bXBQaXhlbHMpIHsK
ICAgICAgICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc1RleHQoKSAmJiAhZ0xh
eW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkgJiYgIWdMYXlvdXRUZXN0
Q29udHJvbGxlci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogQWRkIHN1cHBvcnQgZm9yIGR1bXBpbmcgcGl4ZWxzCisgICAgICAgICAgICBkdW1wV2Vi
Vmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmV4cGVjdGVkUGl4ZWxIYXNoKCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvUGl4ZWxEdW1wU3VwcG9ydEd0ay5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvUGl4ZWxEdW1wU3VwcG9ydEd0ay5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjBmNDYxY2E3NTcyNTYzNWJjMjIzZTIwZDE3NzY1MmZmM2I1YzI1ZQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9QaXhlbER1bXBTdXBw
b3J0R3RrLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFph
biBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEw
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRHVtcFJlbmRlclRy
ZWUuaCIKKyNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0Q2Fpcm8uaCIKKyNpbmNsdWRlIDx3ZWJr
aXQvd2Via2l0Lmg+CisKK1Bhc3NSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29u
dGV4dEZyb21XZWJWaWV3KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpCit7CisgICAgV2ViS2l0V2Vi
VmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7Cisg
ICAgR2RrUGl4bWFwKiBwaXhtYXAgPSBndGtfd2lkZ2V0X2dldF9zbmFwc2hvdChHVEtfV0lER0VU
KHZpZXcpLCAwKTsKKyAgICBnaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZ2RrX2RyYXdhYmxlX2dl
dF9zaXplKEdES19EUkFXQUJMRShwaXhtYXApLCAmd2lkdGgsICZoZWlnaHQpOworCisgICAgY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZVN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShD
QUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBjYWlyb190KiBjb250ZXh0
ID0gY2Fpcm9fY3JlYXRlKGltYWdlU3VyZmFjZSk7CisgICAgZ2RrX2NhaXJvX3NldF9zb3VyY2Vf
cGl4bWFwKGNvbnRleHQsIHBpeG1hcCwgMCwgMCk7CisgICAgY2Fpcm9fcGFpbnQoY29udGV4dCk7
CisgICAgZ19vYmplY3RfdW5yZWYocGl4bWFwKTsKKworICAgIHJldHVybiBCaXRtYXBDb250ZXh0
OjpjcmVhdGVCeUFkb3B0aW5nQml0bWFwQW5kQ29udGV4dCgwLCBjb250ZXh0KTsKK30KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0dOVW1ha2VmaWxlLmFtIGIvV2ViS2l0VG9vbHMvR05VbWFrZWZp
bGUuYW0KaW5kZXggMTFjNTE2ZjljNzhkNjIzNjUyNmY3YjhiOWNhZGNiYzUyYzBlOGY2NS4uZWYw
ZDczNTQ5ZDJmMGYxMmM3MDQwZWI3ODIwY2QzM2ZmNDRhMTZiMCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViS2l0VG9vbHMvR05VbWFrZWZpbGUuYW0KQEAg
LTMzLDYgKzMzLDcgQEAgUHJvZ3JhbXNfR3RrTGF1bmNoZXJfTERGTEFHUyA9IFwKICMgRHVtcFJl
bmRlclRyZWUKIGR1bXByZW5kZXJ0cmVlX2NwcGZsYWdzIDo9IFwKIAktSSQoc3JjZGlyKS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZSBcCisJLUkkKHNyY2RpcikvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2Fpcm8gXAogCS1JJChzcmNkaXIpL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ayBcCiAJLUkkKHNyY2RpcikvV2ViS2l0L2d0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvV2Vi
S2l0L2d0ayBcCkBAIC01NCwxMSArNTUsMTQgQEAgUHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfU09V
UkNFUyA9IFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5n
LmggXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cCBcCiAJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBc
CisJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvUGl4ZWxEdW1wU3VwcG9ydC5jcHAgXAogCVdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaCBcCiAJV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVlLmNwcCBcCiAJV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvV29ya1F1ZXVlLmggXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1
ZUl0ZW0uaCBcCiAJV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY29uZmlnLmggXAorCVdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5jcHAgXAor
CVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5o
IFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJHdGsuY3BwIFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEd0ay5jcHAgXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAgXApAQCAtNjcsNiArNzEsNyBAQCBQcm9ncmFtc19EdW1wUmVuZGVyVHJl
ZV9TT1VSQ0VTID0gXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAgXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJHdGsu
Y3BwIFwKIAlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwIFwKKwlXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvUGl4ZWxEdW1wU3Vw
cG9ydEd0ay5jcHAgXAogCVdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJ
dGVtR3RrLmNwcAogCiBQcm9ncmFtc19EdW1wUmVuZGVyVHJlZV9DWFhGTEFHUyA9IFwK
</data>
<flag name="review"
          id="48846"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>