<?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>33466</bug_id>
          
          <creation_ts>2010-01-11 04:06:18 -0800</creation_ts>
          <short_desc>[Qt] WebCore::Path allocates QPainterPath unnecessarily on the heap</short_desc>
          <delta_ts>2010-01-12 03:28:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>179323</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 04:06:18 -0800</bug_when>
    <thetext>[Qt] WebCore::Path allocates QPainterPath unnecessarily on the heap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179324</commentid>
    <comment_count>1</comment_count>
      <attachid>46267</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 04:08:45 -0800</bug_when>
    <thetext>Created attachment 46267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179334</commentid>
    <comment_count>2</comment_count>
      <attachid>46267</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 04:46:47 -0800</bug_when>
    <thetext>Comment on attachment 46267
Patch

Clearning review, the patch regresses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179378</commentid>
    <comment_count>3</comment_count>
      <attachid>46279</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-11 08:45:18 -0800</bug_when>
    <thetext>Created attachment 46279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179749</commentid>
    <comment_count>4</comment_count>
      <attachid>46279</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-01-12 02:11:11 -0800</bug_when>
    <thetext>Comment on attachment 46279
Patch

Let&apos;s try it on the bot :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179772</commentid>
    <comment_count>5</comment_count>
      <attachid>46279</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-12 03:28:28 -0800</bug_when>
    <thetext>Comment on attachment 46279
Patch

Clearing flags on attachment: 46279

Committed r53131: &lt;http://trac.webkit.org/changeset/53131&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179773</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-12 03:28:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46267</attachid>
            <date>2010-01-11 04:08:45 -0800</date>
            <delta_ts>2010-01-11 08:45:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33466-20100111130843.patch</filename>
            <type>text/plain</type>
            <size>14220</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWExMDgxMS4uMmY5ZmVkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wMS0xMSAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBXZWJDb3JlOjpQYXRoIGFsbG9jYXRlcyBRUGFp
bnRlclBhdGggdW5uZWNlc3NhcmlseSBvbiB0aGUgaGVhcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0NjYKKworICAgICAgICBXZWJDb3JlOjpQYXRo
IGlzIGEgcG9pbnRlciB0byBhIFBsYXRmb3JtUGF0aC4gSW4gY2FzZSBvZiBRdCB0aGF0J3MgYQor
ICAgICAgICBRUGFpbnRlclBhdGgsIHdoaWNoIGl0c2VsZiBpcyBhIHBvaW50ZXIgdG8gdGhlIGVs
ZW1lbnRzIChRVmVjdG9yKS4KKyAgICAgICAgVGhhdCBjcmVhdGVzIHVuZWNlc3NhcnkgYWxsb2Nh
dGlvbnMgaW4gUGF0aFF0LmNwcC4KKworICAgICAgICBSZXBsYWNlZCB0aGUgIlBsYXRmb3JtUGF0
aCogbV9wYXRoOyIgd2l0aCBhIFBsYXRmb3JtUGF0aFB0ciwgd2hpY2gKKyAgICAgICAgaXMgYSBw
bGFpbiBRUGFpbnRlclBhdGguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpwbGF0Zm9ybVBhdGgpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRyYXdGaWxsZWRTaGFkb3dQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L1BhdGhRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjp+UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXRoOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6
Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ryb2tlQ29udGFpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0aDo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6
OmJvdW5kaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpzdHJva2VCb3VuZGluZ1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhdGg6OmFkZExpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRRdWFkQ3VydmVU
byk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRCZXppZXJDdXJ2ZVRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhdGg6OmFkZEFyY1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmNsb3Nl
U3VicGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRBcmMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0aDo6YWRkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRFbGxpcHNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
dGg6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6ZGVidWdTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0aDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJh
bnNmb3JtKToKKwogMjAxMC0wMS0xMSAgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21v
dm9rLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKaW5kZXggYmY0Y2Q5ZC4uNzlkNmNjNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmgKQEAgLTM0LDEwICszNCw3IEBACiAjaWYgUExBVEZPUk0oQ0cpCiB0eXBlZGVmIHN0
cnVjdCBDR1BhdGggUGxhdGZvcm1QYXRoOwogI2VsaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8
cWdsb2JhbC5oPgotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRUGFpbnRlclBhdGg7Ci1RVF9F
TkRfTkFNRVNQQUNFCisjaW5jbHVkZSA8cXBhaW50ZXJwYXRoLmg+CiB0eXBlZGVmIFFQYWludGVy
UGF0aCBQbGF0Zm9ybVBhdGg7CiAjZWxpZiBQTEFURk9STShXWCkgJiYgVVNFKFdYR0MpCiBjbGFz
cyB3eEdyYXBoaWNzUGF0aDsKQEAgLTYxLDYgKzU4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHR5cGVkZWYgdm9pZCBQbGF0Zm9ybVBhdGg7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQor
LyogUVBhaW50ZXJQYXRoIGlzIHZhbHVlZCBiYXNlZCAqLwordHlwZWRlZiBQbGF0Zm9ybVBhdGgg
UGxhdGZvcm1QYXRoUHRyOworI2Vsc2UKK3R5cGVkZWYgUGxhdGZvcm1QYXRoKiBQbGF0Zm9ybVBh
dGhQdHI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRmxvYXRQ
b2ludDsKQEAgLTEzMSw3ICsxMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
U3RyaW5nIGRlYnVnU3RyaW5nKCkgY29uc3Q7CiAKLSAgICAgICAgUGxhdGZvcm1QYXRoKiBwbGF0
Zm9ybVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KKyAgICAgICAgUGxhdGZvcm1QYXRo
UHRyIHBsYXRmb3JtUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCiAgICAgICAgIHN0
YXRpYyBQYXRoIGNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRTaXplJiByb3VuZGluZ1JhZGlpKTsKICAgICAgICAgc3RhdGljIFBhdGggY3JlYXRlUm91
bmRlZFJlY3RhbmdsZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYg
Ym90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cyk7CkBA
IC0xNDQsNyArMTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUGxhdGZvcm1QYXRoKiBtX3BhdGg7CisgICAgICAgIFBsYXRmb3JtUGF0aFB0ciBtX3BhdGg7
CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcAppbmRleCBhZTMxZDRjLi45ZjFiNzcyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNjE4LDE0
ICs2MTgsMTQgQEAgUVBlbiBHcmFwaGljc0NvbnRleHQ6OnBlbigpCiAgICAgcmV0dXJuIHAtPnBl
bigpOwogfQogCi1zdGF0aWMgdm9pZCBpbmxpbmUgZHJhd0ZpbGxlZFNoYWRvd1BhdGgoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBRUGFpbnRlciogcCwgY29uc3QgUVBhaW50ZXJQYXRoICpwYXRo
KQorc3RhdGljIHZvaWQgaW5saW5lIGRyYXdGaWxsZWRTaGFkb3dQYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgUVBhaW50ZXIqIHAsIGNvbnN0IFFQYWludGVyUGF0aCYgcGF0aCkKIHsKICAg
ICBJbnRTaXplIHNoYWRvd1NpemU7CiAgICAgaW50IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7CiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd1NpemUud2lk
dGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHAtPmZpbGxQYXRoKCpwYXRoLCBR
QnJ1c2goc2hhZG93Q29sb3IpKTsKKyAgICAgICAgcC0+ZmlsbFBhdGgocGF0aCwgUUJydXNoKHNo
YWRvd0NvbG9yKSk7CiAgICAgICAgIHAtPnRyYW5zbGF0ZSgtc2hhZG93U2l6ZS53aWR0aCgpLCAt
c2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAgICAgfQogfQpAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCgpCiAgICAgcGF0aC5zZXRGaWxsUnVsZSh0b1F0Rmls
bFJ1bGUoZmlsbFJ1bGUoKSkpOwogCiAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVy
biB8fCBtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50IHx8IGZpbGxDb2xvcigpLmFscGhhKCkp
IHsKLSAgICAgICAgZHJhd0ZpbGxlZFNoYWRvd1BhdGgodGhpcywgcCwgJnBhdGgpOworICAgICAg
ICBkcmF3RmlsbGVkU2hhZG93UGF0aCh0aGlzLCBwLCBwYXRoKTsKICAgICAgICAgaWYgKG1fY29t
bW9uLT5zdGF0ZS5maWxsUGF0dGVybikgewogICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggYWZmaW5lOwogICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aCwgUUJydXNoKG1fY29tbW9u
LT5zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGFmZmluZSkpKTsKQEAg
LTc1MSw3ICs3NTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFBhdGggcGF0aCA9
IFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwog
ICAgIGRyYXdGaWxsZWRTaGFkb3dQYXRoKHRoaXMsIHAsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwot
ICAgIHAtPmZpbGxQYXRoKCpwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKKyAg
ICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGF0aCgpCkBAIC03NjIsNyArNzYyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGF0aCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRk
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogewogICAgIFFQYWludGVyUGF0aCBuZXdQYXRoID0gbV9k
YXRhLT5jdXJyZW50UGF0aDsKLSAgICBuZXdQYXRoLmFkZFBhdGgoKihwYXRoLnBsYXRmb3JtUGF0
aCgpKSk7CisgICAgbmV3UGF0aC5hZGRQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgIG1f
ZGF0YS0+Y3VycmVudFBhdGggPSBuZXdQYXRoOwogfQogCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+cCgpLT5zZXRD
bGlwUGF0aCgqcGF0aC5wbGF0Zm9ybVBhdGgoKSwgUXQ6OkludGVyc2VjdENsaXApOworICAgIG1f
ZGF0YS0+cCgpLT5zZXRDbGlwUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRdDo6SW50ZXJzZWN0
Q2xpcCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYW52YXNDbGlwKGNvbnN0IFBhdGgm
IHBhdGgpCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91
dChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAgICBRUGFpbnRlciogcCA9
IG1fZGF0YS0+cCgpOwotICAgIFFQYWludGVyUGF0aCBjbGlwcGVkT3V0ID0gKnBhdGgucGxhdGZv
cm1QYXRoKCk7CisgICAgUVBhaW50ZXJQYXRoIGNsaXBwZWRPdXQgPSBwYXRoLnBsYXRmb3JtUGF0
aCgpOwogICAgIFFQYWludGVyUGF0aCBuZXdDbGlwOwogICAgIG5ld0NsaXAuc2V0RmlsbFJ1bGUo
UXQ6Ok9kZEV2ZW5GaWxsKTsKICAgICBpZiAocC0+aGFzQ2xpcHBpbmcoKSkgewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCmluZGV4IGU1Y2VjYzguLmE0YjI4ZDIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAKQEAgLTUxLDM4ICs1MSwzMSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXRoOjpQYXRoKCkKLSAgICA6IG1fcGF0aChuZXcgUVBh
aW50ZXJQYXRoKCkpCiB7CiB9CiAKIFBhdGg6On5QYXRoKCkKIHsKLSAgICBkZWxldGUgbV9wYXRo
OwogfQogCiBQYXRoOjpQYXRoKGNvbnN0IFBhdGgmIG90aGVyKQotICAgIDogbV9wYXRoKG5ldyBR
UGFpbnRlclBhdGgoKm90aGVyLnBsYXRmb3JtUGF0aCgpKSkKIHsKIH0KIAogUGF0aCYgUGF0aDo6
b3BlcmF0b3I9KGNvbnN0IFBhdGgmIG90aGVyKQogewotICAgIGlmICgmb3RoZXIgIT0gdGhpcykg
ewotICAgICAgICBkZWxldGUgbV9wYXRoOwotICAgICAgICBtX3BhdGggPSBuZXcgUVBhaW50ZXJQ
YXRoKCpvdGhlci5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgfQotCisgICAgKnRoaXMgPSBvdGhlcjsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIFdpbmRSdWxlIHJ1bGUpIGNvbnN0CiB7Ci0gICAgUXQ6OkZpbGxSdWxlIHNh
dmVkUnVsZSA9IG1fcGF0aC0+ZmlsbFJ1bGUoKTsKLSAgICBtX3BhdGgtPnNldEZpbGxSdWxlKHJ1
bGUgPT0gUlVMRV9FVkVOT0REID8gUXQ6Ok9kZEV2ZW5GaWxsIDogUXQ6OldpbmRpbmdGaWxsKTsK
KyAgICBRdDo6RmlsbFJ1bGUgc2F2ZWRSdWxlID0gbV9wYXRoLmZpbGxSdWxlKCk7CisgICAgY29u
c3RfY2FzdDxRUGFpbnRlclBhdGgqPigmbV9wYXRoKS0+c2V0RmlsbFJ1bGUocnVsZSA9PSBSVUxF
X0VWRU5PREQgPyBRdDo6T2RkRXZlbkZpbGwgOiBRdDo6V2luZGluZ0ZpbGwpOwogCi0gICAgYm9v
bCBjb250YWlucyA9IG1fcGF0aC0+Y29udGFpbnMocG9pbnQpOworICAgIGJvb2wgY29udGFpbnMg
PSBtX3BhdGguY29udGFpbnMocG9pbnQpOwogCi0gICAgbV9wYXRoLT5zZXRGaWxsUnVsZShzYXZl
ZFJ1bGUpOworICAgIGNvbnN0X2Nhc3Q8UVBhaW50ZXJQYXRoKj4oJm1fcGF0aCktPnNldEZpbGxS
dWxlKHNhdmVkUnVsZSk7CiAgICAgcmV0dXJuIGNvbnRhaW5zOwogfQogCkBAIC0xMDUsMTkgKzk4
LDE5IEBAIGJvb2wgUGF0aDo6c3Ryb2tlQ29udGFpbnMoU3Ryb2tlU3R5bGVBcHBsaWVyKiBhcHBs
aWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKICAgICBzdHJva2Uuc2V0RGFzaFBhdHRlcm4o
cGVuLmRhc2hQYXR0ZXJuKCkpOwogICAgIHN0cm9rZS5zZXREYXNoT2Zmc2V0KHBlbi5kYXNoT2Zm
c2V0KCkpOwogCi0gICAgcmV0dXJuIChzdHJva2UuY3JlYXRlU3Ryb2tlKCpwbGF0Zm9ybVBhdGgo
KSkpLmNvbnRhaW5zKHBvaW50KTsKKyAgICByZXR1cm4gc3Ryb2tlLmNyZWF0ZVN0cm9rZShtX3Bh
dGgpLmNvbnRhaW5zKHBvaW50KTsKIH0KIAogdm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQogewogICAgIFFUcmFuc2Zvcm0gbWF0cml4OwogICAgIG1hdHJpeC50cmFu
c2xhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICAqbV9wYXRoID0gKCptX3Bh
dGgpICogbWF0cml4OworICAgIG1fcGF0aCA9IG1fcGF0aCAqIG1hdHJpeDsKIH0KIAogRmxvYXRS
ZWN0IFBhdGg6OmJvdW5kaW5nUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGF0aC0+Ym91
bmRpbmdSZWN0KCk7CisgICAgcmV0dXJuIG1fcGF0aC5ib3VuZGluZ1JlY3QoKTsKIH0KIAogRmxv
YXRSZWN0IFBhdGg6OnN0cm9rZUJvdW5kaW5nUmVjdChTdHJva2VTdHlsZUFwcGxpZXIqIGFwcGxp
ZXIpCkBAIC0xMzgsMzUgKzEzMSwzNSBAQCBGbG9hdFJlY3QgUGF0aDo6c3Ryb2tlQm91bmRpbmdS
ZWN0KFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllcikKICAgICAgICAgc3Ryb2tlLnNldERhc2hQ
YXR0ZXJuKHBlbi5kYXNoUGF0dGVybigpKTsKICAgICAgICAgc3Ryb2tlLnNldERhc2hPZmZzZXQo
cGVuLmRhc2hPZmZzZXQoKSk7CiAgICAgfQotICAgIHJldHVybiAoc3Ryb2tlLmNyZWF0ZVN0cm9r
ZSgqcGxhdGZvcm1QYXRoKCkpKS5ib3VuZGluZ1JlY3QoKTsKKyAgICByZXR1cm4gc3Ryb2tlLmNy
ZWF0ZVN0cm9rZShtX3BhdGgpLmJvdW5kaW5nUmVjdCgpOwogfQogCiB2b2lkIFBhdGg6Om1vdmVU
byhjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHsKLSAgICBtX3BhdGgtPm1vdmVUbyhwb2ludCk7
CisgICAgbV9wYXRoLm1vdmVUbyhwb2ludCk7CiB9CiAKIHZvaWQgUGF0aDo6YWRkTGluZVRvKGNv
bnN0IEZsb2F0UG9pbnQmIHApCiB7Ci0gICAgbV9wYXRoLT5saW5lVG8ocCk7CisgICAgbV9wYXRo
LmxpbmVUbyhwKTsKIH0KIAogdm9pZCBQYXRoOjphZGRRdWFkQ3VydmVUbyhjb25zdCBGbG9hdFBv
aW50JiBjcCwgY29uc3QgRmxvYXRQb2ludCYgcCkKIHsKLSAgICBtX3BhdGgtPnF1YWRUbyhjcCwg
cCk7CisgICAgbV9wYXRoLnF1YWRUbyhjcCwgcCk7CiB9CiAKIHZvaWQgUGF0aDo6YWRkQmV6aWVy
Q3VydmVUbyhjb25zdCBGbG9hdFBvaW50JiBjcDEsIGNvbnN0IEZsb2F0UG9pbnQmIGNwMiwgY29u
c3QgRmxvYXRQb2ludCYgcCkKIHsKLSAgICBtX3BhdGgtPmN1YmljVG8oY3AxLCBjcDIsIHApOwor
ICAgIG1fcGF0aC5jdWJpY1RvKGNwMSwgY3AyLCBwKTsKIH0KIAogdm9pZCBQYXRoOjphZGRBcmNU
byhjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHJhZGl1
cykKIHsKLSAgICBGbG9hdFBvaW50IHAwKG1fcGF0aC0+Y3VycmVudFBvc2l0aW9uKCkpOworICAg
IEZsb2F0UG9pbnQgcDAobV9wYXRoLmN1cnJlbnRQb3NpdGlvbigpKTsKIAogICAgIGlmICgocDEu
eCgpID09IHAwLngoKSAmJiBwMS55KCkgPT0gcDAueSgpKSB8fCAocDEueCgpID09IHAyLngoKSAm
JiBwMS55KCkgPT0gcDIueSgpKSB8fCByYWRpdXMgPT0gMC5mKSB7Ci0gICAgICAgIG1fcGF0aC0+
bGluZVRvKHAxKTsKKyAgICAgICAgbV9wYXRoLmxpbmVUbyhwMSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTE3OCw3ICsxNzEsNyBAQCB2b2lkIFBhdGg6OmFkZEFyY1RvKGNvbnN0IEZs
b2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBwMiwgZmxvYXQgcmFkaXVzKQogICAgIGRv
dWJsZSBjb3NfcGhpID0gKHAxcDAueCgpICogcDFwMi54KCkgKyBwMXAwLnkoKSAqIHAxcDIueSgp
KSAvIChwMXAwX2xlbmd0aCAqIHAxcDJfbGVuZ3RoKTsKICAgICAvLyBhbGwgcG9pbnRzIG9uIGEg
bGluZSBsb2dpYwogICAgIGlmIChjb3NfcGhpID09IC0xKSB7Ci0gICAgICAgIG1fcGF0aC0+bGlu
ZVRvKHAxKTsKKyAgICAgICAgbV9wYXRoLmxpbmVUbyhwMSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKGNvc19waGkgPT0gMSkgewpAQCAtMTg2LDcgKzE3OSw3IEBAIHZvaWQgUGF0
aDo6YWRkQXJjVG8oY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBm
bG9hdCByYWRpdXMpCiAgICAgICAgIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoID0gNjU1MzU7CiAg
ICAgICAgIGRvdWJsZSBmYWN0b3JfbWF4ID0gbWF4X2xlbmd0aCAvIHAxcDBfbGVuZ3RoOwogICAg
ICAgICBGbG9hdFBvaW50IGVwKChwMC54KCkgKyBmYWN0b3JfbWF4ICogcDFwMC54KCkpLCAocDAu
eSgpICsgZmFjdG9yX21heCAqIHAxcDAueSgpKSk7Ci0gICAgICAgIG1fcGF0aC0+bGluZVRvKGVw
KTsKKyAgICAgICAgbV9wYXRoLmxpbmVUbyhlcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIyNiwxNCArMjE5LDE0IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxvYXRQb2lu
dCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRpdXMpCiAgICAgaWYgKChzYSA8
IGVhKSAmJiAoKGVhIC0gc2EpID4gcGlEb3VibGUpKQogICAgICAgICBhbnRpY2xvY2t3aXNlID0g
dHJ1ZTsKIAotICAgIG1fcGF0aC0+bGluZVRvKHRfcDFwMCk7CisgICAgbV9wYXRoLmxpbmVUbyh0
X3AxcDApOwogCiAgICAgYWRkQXJjKHAsIHJhZGl1cywgc2EsIGVhLCBhbnRpY2xvY2t3aXNlKTsK
IH0KIAogdm9pZCBQYXRoOjpjbG9zZVN1YnBhdGgoKQogewotICAgIG1fcGF0aC0+Y2xvc2VTdWJw
YXRoKCk7CisgICAgbV9wYXRoLmNsb3NlU3VicGF0aCgpOwogfQogCiAjZGVmaW5lIERFR1JFRVMo
dCkgKCh0KSAqIDE4MC4wIC8gTV9QSSkKQEAgLTI3NSwzMiArMjY4LDMyIEBAIHZvaWQgUGF0aDo6
YWRkQXJjKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGZsb2F0IHIsIGZsb2F0IHNhciwgZmxvYXQgZWFy
LCBib29sIGFudGljCiAgICAgICAgIHNwYW4gKz0gZWEgLSBzYTsKICAgICB9CiAKLSAgICBtX3Bh
dGgtPm1vdmVUbyhRUG9pbnRGKHhjICsgcmFkaXVzICAqIGNvcyhzYXIpLAorICAgIG1fcGF0aC5t
b3ZlVG8oUVBvaW50Rih4YyArIHJhZGl1cyAgKiBjb3Moc2FyKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeWMgLSByYWRpdXMgICogc2luKHNhcikpKTsKIAotICAgIG1fcGF0aC0+YXJjVG8o
eHMsIHlzLCB3aWR0aCwgaGVpZ2h0LCBzYSwgc3Bhbik7CisgICAgbV9wYXRoLmFyY1RvKHhzLCB5
cywgd2lkdGgsIGhlaWdodCwgc2EsIHNwYW4pOwogfQogCiB2b2lkIFBhdGg6OmFkZFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByKQogewotICAgIG1fcGF0aC0+YWRkUmVjdChyLngoKSwgci55KCksIHIu
d2lkdGgoKSwgci5oZWlnaHQoKSk7CisgICAgbV9wYXRoLmFkZFJlY3Qoci54KCksIHIueSgpLCBy
LndpZHRoKCksIHIuaGVpZ2h0KCkpOwogfQogCiB2b2lkIFBhdGg6OmFkZEVsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JiByKQogewotICAgIG1fcGF0aC0+YWRkRWxsaXBzZShyLngoKSwgci55KCksIHIu
d2lkdGgoKSwgci5oZWlnaHQoKSk7CisgICAgbV9wYXRoLmFkZEVsbGlwc2Uoci54KCksIHIueSgp
LCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOwogfQogCiB2b2lkIFBhdGg6OmNsZWFyKCkKIHsKLSAg
ICAqbV9wYXRoID0gUVBhaW50ZXJQYXRoKCk7CisgICAgbV9wYXRoID0gUVBhaW50ZXJQYXRoKCk7
CiB9CiAKIGJvb2wgUGF0aDo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgLy8gRG9uJ3QgdXNlIFFQ
YWludGVyUGF0aDo6aXNFbXB0eSgpLCBhcyB0aGF0IGFsc28gcmV0dXJucyB0cnVlIGlmIHRoZXJl
J3Mgb25seQogICAgIC8vIG9uZSBpbml0aWFsIE1vdmVUbyBlbGVtZW50IGluIHRoZSBwYXRoLgot
ICAgIHJldHVybiAhbV9wYXRoLT5lbGVtZW50Q291bnQoKTsKKyAgICByZXR1cm4gIW1fcGF0aC5l
bGVtZW50Q291bnQoKTsKIH0KIAogYm9vbCBQYXRoOjpoYXNDdXJyZW50UG9pbnQoKSBjb25zdApA
QCAtMzExLDggKzMwNCw4IEBAIGJvb2wgUGF0aDo6aGFzQ3VycmVudFBvaW50KCkgY29uc3QKIFN0
cmluZyBQYXRoOjpkZWJ1Z1N0cmluZygpIGNvbnN0CiB7CiAgICAgUVN0cmluZyByZXQ7Ci0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtX3BhdGgtPmVsZW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAg
ICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjdXIgPSBtX3BhdGgtPmVsZW1lbnRBdChp
KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcGF0aC5lbGVtZW50Q291bnQoKTsgKytpKSB7
CisgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmY3VyID0gbV9wYXRoLmVsZW1l
bnRBdChpKTsKIAogICAgICAgICBzd2l0Y2ggKGN1ci50eXBlKSB7CiAgICAgICAgICAgICBjYXNl
IFFQYWludGVyUGF0aDo6TW92ZVRvRWxlbWVudDoKQEAgLTMyMyw4ICszMTYsOCBAQCBTdHJpbmcg
UGF0aDo6ZGVidWdTdHJpbmcoKSBjb25zdAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkN1cnZlVG9FbGVtZW50OgogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCAmYzEgPSBtX3BhdGgt
PmVsZW1lbnRBdChpICsgMSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpF
bGVtZW50ICZjMiA9IG1fcGF0aC0+ZWxlbWVudEF0KGkgKyAyKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBRUGFpbnRlclBhdGg6OkVsZW1lbnQgJmMxID0gbV9wYXRoLmVsZW1lbnRBdChpICsgMSk7
CisgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjMiA9IG1fcGF0
aC5lbGVtZW50QXQoaSArIDIpOwogCiAgICAgICAgICAgICAgICAgUV9BU1NFUlQoYzEudHlwZSA9
PSBRUGFpbnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgUV9B
U1NFUlQoYzIudHlwZSA9PSBRUGFpbnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudCk7CkBAIC0z
NDgsOCArMzQxLDggQEAgdm9pZCBQYXRoOjphcHBseSh2b2lkKiBpbmZvLCBQYXRoQXBwbGllckZ1
bmN0aW9uIGZ1bmN0aW9uKSBjb25zdAogICAgIFBhdGhFbGVtZW50IHBlbGVtZW50OwogICAgIEZs
b2F0UG9pbnQgcG9pbnRzWzNdOwogICAgIHBlbGVtZW50LnBvaW50cyA9IHBvaW50czsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1fcGF0aC0+ZWxlbWVudENvdW50KCk7ICsraSkgewotICAgICAg
ICBjb25zdCBRUGFpbnRlclBhdGg6OkVsZW1lbnQmIGN1ciA9IG1fcGF0aC0+ZWxlbWVudEF0KGkp
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9wYXRoLmVsZW1lbnRDb3VudCgpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50JiBjdXIgPSBtX3BhdGguZWxlbWVu
dEF0KGkpOwogCiAgICAgICAgIHN3aXRjaCAoY3VyLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2Ug
UVBhaW50ZXJQYXRoOjpNb3ZlVG9FbGVtZW50OgpAQCAtMzY0LDggKzM1Nyw4IEBAIHZvaWQgUGF0
aDo6YXBwbHkodm9pZCogaW5mbywgUGF0aEFwcGxpZXJGdW5jdGlvbiBmdW5jdGlvbikgY29uc3QK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpD
dXJ2ZVRvRWxlbWVudDoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBRUGFp
bnRlclBhdGg6OkVsZW1lbnQmIGMxID0gbV9wYXRoLT5lbGVtZW50QXQoaSArIDEpOwotICAgICAg
ICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCYgYzIgPSBtX3BhdGgtPmVsZW1l
bnRBdChpICsgMik7CisgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50
JiBjMSA9IG1fcGF0aC5lbGVtZW50QXQoaSArIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IFFQ
YWludGVyUGF0aDo6RWxlbWVudCYgYzIgPSBtX3BhdGguZWxlbWVudEF0KGkgKyAyKTsKIAogICAg
ICAgICAgICAgICAgIFFfQVNTRVJUKGMxLnR5cGUgPT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0
YUVsZW1lbnQpOwogICAgICAgICAgICAgICAgIFFfQVNTRVJUKGMyLnR5cGUgPT0gUVBhaW50ZXJQ
YXRoOjpDdXJ2ZVRvRGF0YUVsZW1lbnQpOwpAQCAtMzg3LDEyICszODAsOCBAQCB2b2lkIFBhdGg6
OmFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyRnVuY3Rpb24gZnVuY3Rpb24pIGNvbnN0CiAK
IHZvaWQgUGF0aDo6dHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0pCiB7Ci0gICAgaWYgKG1fcGF0aCkgewotICAgICAgICBRVHJhbnNmb3JtIG1hdCA9IHRyYW5z
Zm9ybTsKLSAgICAgICAgUVBhaW50ZXJQYXRoIHRlbXAgPSBtYXQubWFwKCptX3BhdGgpOwotICAg
ICAgICBkZWxldGUgbV9wYXRoOwotICAgICAgICBtX3BhdGggPSBuZXcgUVBhaW50ZXJQYXRoKHRl
bXApOwotICAgIH0KKyAgICBRVHJhbnNmb3JtIG1hdCA9IHRyYW5zZm9ybTsKKyAgICBtX3BhdGgg
PSBtYXQubWFwKG1fcGF0aCk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46279</attachid>
            <date>2010-01-11 08:45:18 -0800</date>
            <delta_ts>2010-01-12 03:28:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33466-20100111174515.patch</filename>
            <type>text/plain</type>
            <size>14241</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWExMDgxMS4uMmY5ZmVkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wMS0xMSAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBXZWJDb3JlOjpQYXRoIGFsbG9jYXRlcyBRUGFp
bnRlclBhdGggdW5uZWNlc3NhcmlseSBvbiB0aGUgaGVhcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0NjYKKworICAgICAgICBXZWJDb3JlOjpQYXRo
IGlzIGEgcG9pbnRlciB0byBhIFBsYXRmb3JtUGF0aC4gSW4gY2FzZSBvZiBRdCB0aGF0J3MgYQor
ICAgICAgICBRUGFpbnRlclBhdGgsIHdoaWNoIGl0c2VsZiBpcyBhIHBvaW50ZXIgdG8gdGhlIGVs
ZW1lbnRzIChRVmVjdG9yKS4KKyAgICAgICAgVGhhdCBjcmVhdGVzIHVuZWNlc3NhcnkgYWxsb2Nh
dGlvbnMgaW4gUGF0aFF0LmNwcC4KKworICAgICAgICBSZXBsYWNlZCB0aGUgIlBsYXRmb3JtUGF0
aCogbV9wYXRoOyIgd2l0aCBhIFBsYXRmb3JtUGF0aFB0ciwgd2hpY2gKKyAgICAgICAgaXMgYSBw
bGFpbiBRUGFpbnRlclBhdGguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpwbGF0Zm9ybVBhdGgpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRyYXdGaWxsZWRTaGFkb3dQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L1BhdGhRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjp+UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXRoOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6
Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ryb2tlQ29udGFpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0aDo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6
OmJvdW5kaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpzdHJva2VCb3VuZGluZ1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhdGg6OmFkZExpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRRdWFkQ3VydmVU
byk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRCZXppZXJDdXJ2ZVRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhdGg6OmFkZEFyY1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmNsb3Nl
U3VicGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRBcmMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0aDo6YWRkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRFbGxpcHNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
dGg6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6ZGVidWdTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGF0aDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJh
bnNmb3JtKToKKwogMjAxMC0wMS0xMSAgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21v
dm9rLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoLmgKaW5kZXggYmY0Y2Q5ZC4uNzlkNmNjNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmgKQEAgLTM0LDEwICszNCw3IEBACiAjaWYgUExBVEZPUk0oQ0cpCiB0eXBlZGVmIHN0
cnVjdCBDR1BhdGggUGxhdGZvcm1QYXRoOwogI2VsaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8
cWdsb2JhbC5oPgotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRUGFpbnRlclBhdGg7Ci1RVF9F
TkRfTkFNRVNQQUNFCisjaW5jbHVkZSA8cXBhaW50ZXJwYXRoLmg+CiB0eXBlZGVmIFFQYWludGVy
UGF0aCBQbGF0Zm9ybVBhdGg7CiAjZWxpZiBQTEFURk9STShXWCkgJiYgVVNFKFdYR0MpCiBjbGFz
cyB3eEdyYXBoaWNzUGF0aDsKQEAgLTYxLDYgKzU4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHR5cGVkZWYgdm9pZCBQbGF0Zm9ybVBhdGg7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQor
LyogUVBhaW50ZXJQYXRoIGlzIHZhbHVlZCBiYXNlZCAqLwordHlwZWRlZiBQbGF0Zm9ybVBhdGgg
UGxhdGZvcm1QYXRoUHRyOworI2Vsc2UKK3R5cGVkZWYgUGxhdGZvcm1QYXRoKiBQbGF0Zm9ybVBh
dGhQdHI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRmxvYXRQ
b2ludDsKQEAgLTEzMSw3ICsxMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
U3RyaW5nIGRlYnVnU3RyaW5nKCkgY29uc3Q7CiAKLSAgICAgICAgUGxhdGZvcm1QYXRoKiBwbGF0
Zm9ybVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KKyAgICAgICAgUGxhdGZvcm1QYXRo
UHRyIHBsYXRmb3JtUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogCiAgICAgICAgIHN0
YXRpYyBQYXRoIGNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRTaXplJiByb3VuZGluZ1JhZGlpKTsKICAgICAgICAgc3RhdGljIFBhdGggY3JlYXRlUm91
bmRlZFJlY3RhbmdsZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYg
Ym90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cyk7CkBA
IC0xNDQsNyArMTQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUGxhdGZvcm1QYXRoKiBtX3BhdGg7CisgICAgICAgIFBsYXRmb3JtUGF0aFB0ciBtX3BhdGg7
CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcAppbmRleCBhZTMxZDRjLi45ZjFiNzcyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNjE4LDE0
ICs2MTgsMTQgQEAgUVBlbiBHcmFwaGljc0NvbnRleHQ6OnBlbigpCiAgICAgcmV0dXJuIHAtPnBl
bigpOwogfQogCi1zdGF0aWMgdm9pZCBpbmxpbmUgZHJhd0ZpbGxlZFNoYWRvd1BhdGgoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBRUGFpbnRlciogcCwgY29uc3QgUVBhaW50ZXJQYXRoICpwYXRo
KQorc3RhdGljIHZvaWQgaW5saW5lIGRyYXdGaWxsZWRTaGFkb3dQYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgUVBhaW50ZXIqIHAsIGNvbnN0IFFQYWludGVyUGF0aCYgcGF0aCkKIHsKICAg
ICBJbnRTaXplIHNoYWRvd1NpemU7CiAgICAgaW50IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7CiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd1NpemUud2lk
dGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHAtPmZpbGxQYXRoKCpwYXRoLCBR
QnJ1c2goc2hhZG93Q29sb3IpKTsKKyAgICAgICAgcC0+ZmlsbFBhdGgocGF0aCwgUUJydXNoKHNo
YWRvd0NvbG9yKSk7CiAgICAgICAgIHAtPnRyYW5zbGF0ZSgtc2hhZG93U2l6ZS53aWR0aCgpLCAt
c2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAgICAgfQogfQpAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCgpCiAgICAgcGF0aC5zZXRGaWxsUnVsZSh0b1F0Rmls
bFJ1bGUoZmlsbFJ1bGUoKSkpOwogCiAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVy
biB8fCBtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50IHx8IGZpbGxDb2xvcigpLmFscGhhKCkp
IHsKLSAgICAgICAgZHJhd0ZpbGxlZFNoYWRvd1BhdGgodGhpcywgcCwgJnBhdGgpOworICAgICAg
ICBkcmF3RmlsbGVkU2hhZG93UGF0aCh0aGlzLCBwLCBwYXRoKTsKICAgICAgICAgaWYgKG1fY29t
bW9uLT5zdGF0ZS5maWxsUGF0dGVybikgewogICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggYWZmaW5lOwogICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aCwgUUJydXNoKG1fY29tbW9u
LT5zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGFmZmluZSkpKTsKQEAg
LTc1MSw3ICs3NTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFBhdGggcGF0aCA9
IFBhdGg6OmNyZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJv
dHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwog
ICAgIGRyYXdGaWxsZWRTaGFkb3dQYXRoKHRoaXMsIHAsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwot
ICAgIHAtPmZpbGxQYXRoKCpwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKKyAg
ICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGF0aCgpCkBAIC03NjIsNyArNzYyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGF0aCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRk
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogewogICAgIFFQYWludGVyUGF0aCBuZXdQYXRoID0gbV9k
YXRhLT5jdXJyZW50UGF0aDsKLSAgICBuZXdQYXRoLmFkZFBhdGgoKihwYXRoLnBsYXRmb3JtUGF0
aCgpKSk7CisgICAgbmV3UGF0aC5hZGRQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCkpOwogICAgIG1f
ZGF0YS0+Y3VycmVudFBhdGggPSBuZXdQYXRoOwogfQogCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+cCgpLT5zZXRD
bGlwUGF0aCgqcGF0aC5wbGF0Zm9ybVBhdGgoKSwgUXQ6OkludGVyc2VjdENsaXApOworICAgIG1f
ZGF0YS0+cCgpLT5zZXRDbGlwUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRdDo6SW50ZXJzZWN0
Q2xpcCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYW52YXNDbGlwKGNvbnN0IFBhdGgm
IHBhdGgpCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91
dChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAgICBRUGFpbnRlciogcCA9
IG1fZGF0YS0+cCgpOwotICAgIFFQYWludGVyUGF0aCBjbGlwcGVkT3V0ID0gKnBhdGgucGxhdGZv
cm1QYXRoKCk7CisgICAgUVBhaW50ZXJQYXRoIGNsaXBwZWRPdXQgPSBwYXRoLnBsYXRmb3JtUGF0
aCgpOwogICAgIFFQYWludGVyUGF0aCBuZXdDbGlwOwogICAgIG5ld0NsaXAuc2V0RmlsbFJ1bGUo
UXQ6Ok9kZEV2ZW5GaWxsKTsKICAgICBpZiAocC0+aGFzQ2xpcHBpbmcoKSkgewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCmluZGV4IGU1Y2VjYzguLjQ3MTZkMzIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAKQEAgLTUxLDM4ICs1MSwzMiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXRoOjpQYXRoKCkKLSAgICA6IG1fcGF0aChuZXcgUVBh
aW50ZXJQYXRoKCkpCiB7CiB9CiAKIFBhdGg6On5QYXRoKCkKIHsKLSAgICBkZWxldGUgbV9wYXRo
OwogfQogCiBQYXRoOjpQYXRoKGNvbnN0IFBhdGgmIG90aGVyKQotICAgIDogbV9wYXRoKG5ldyBR
UGFpbnRlclBhdGgoKm90aGVyLnBsYXRmb3JtUGF0aCgpKSkKKyAgICA6IG1fcGF0aChvdGhlci5t
X3BhdGgpCiB7CiB9CiAKIFBhdGgmIFBhdGg6Om9wZXJhdG9yPShjb25zdCBQYXRoJiBvdGhlcikK
IHsKLSAgICBpZiAoJm90aGVyICE9IHRoaXMpIHsKLSAgICAgICAgZGVsZXRlIG1fcGF0aDsKLSAg
ICAgICAgbV9wYXRoID0gbmV3IFFQYWludGVyUGF0aCgqb3RoZXIucGxhdGZvcm1QYXRoKCkpOwot
ICAgIH0KLQorICAgIG1fcGF0aCA9IG90aGVyLm1fcGF0aDsKICAgICByZXR1cm4gKnRoaXM7CiB9
CiAKIGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFdpbmRSdWxl
IHJ1bGUpIGNvbnN0CiB7Ci0gICAgUXQ6OkZpbGxSdWxlIHNhdmVkUnVsZSA9IG1fcGF0aC0+Zmls
bFJ1bGUoKTsKLSAgICBtX3BhdGgtPnNldEZpbGxSdWxlKHJ1bGUgPT0gUlVMRV9FVkVOT0REID8g
UXQ6Ok9kZEV2ZW5GaWxsIDogUXQ6OldpbmRpbmdGaWxsKTsKKyAgICBRdDo6RmlsbFJ1bGUgc2F2
ZWRSdWxlID0gbV9wYXRoLmZpbGxSdWxlKCk7CisgICAgY29uc3RfY2FzdDxRUGFpbnRlclBhdGgq
PigmbV9wYXRoKS0+c2V0RmlsbFJ1bGUocnVsZSA9PSBSVUxFX0VWRU5PREQgPyBRdDo6T2RkRXZl
bkZpbGwgOiBRdDo6V2luZGluZ0ZpbGwpOwogCi0gICAgYm9vbCBjb250YWlucyA9IG1fcGF0aC0+
Y29udGFpbnMocG9pbnQpOworICAgIGJvb2wgY29udGFpbnMgPSBtX3BhdGguY29udGFpbnMocG9p
bnQpOwogCi0gICAgbV9wYXRoLT5zZXRGaWxsUnVsZShzYXZlZFJ1bGUpOworICAgIGNvbnN0X2Nh
c3Q8UVBhaW50ZXJQYXRoKj4oJm1fcGF0aCktPnNldEZpbGxSdWxlKHNhdmVkUnVsZSk7CiAgICAg
cmV0dXJuIGNvbnRhaW5zOwogfQogCkBAIC0xMDUsMTkgKzk5LDE5IEBAIGJvb2wgUGF0aDo6c3Ry
b2tlQ29udGFpbnMoU3Ryb2tlU3R5bGVBcHBsaWVyKiBhcHBsaWVyLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCkKICAgICBzdHJva2Uuc2V0RGFzaFBhdHRlcm4ocGVuLmRhc2hQYXR0ZXJuKCkpOwog
ICAgIHN0cm9rZS5zZXREYXNoT2Zmc2V0KHBlbi5kYXNoT2Zmc2V0KCkpOwogCi0gICAgcmV0dXJu
IChzdHJva2UuY3JlYXRlU3Ryb2tlKCpwbGF0Zm9ybVBhdGgoKSkpLmNvbnRhaW5zKHBvaW50KTsK
KyAgICByZXR1cm4gc3Ryb2tlLmNyZWF0ZVN0cm9rZShtX3BhdGgpLmNvbnRhaW5zKHBvaW50KTsK
IH0KIAogdm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAg
IFFUcmFuc2Zvcm0gbWF0cml4OwogICAgIG1hdHJpeC50cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKLSAgICAqbV9wYXRoID0gKCptX3BhdGgpICogbWF0cml4OworICAgIG1f
cGF0aCA9IG1fcGF0aCAqIG1hdHJpeDsKIH0KIAogRmxvYXRSZWN0IFBhdGg6OmJvdW5kaW5nUmVj
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGF0aC0+Ym91bmRpbmdSZWN0KCk7CisgICAgcmV0
dXJuIG1fcGF0aC5ib3VuZGluZ1JlY3QoKTsKIH0KIAogRmxvYXRSZWN0IFBhdGg6OnN0cm9rZUJv
dW5kaW5nUmVjdChTdHJva2VTdHlsZUFwcGxpZXIqIGFwcGxpZXIpCkBAIC0xMzgsMzUgKzEzMiwz
NSBAQCBGbG9hdFJlY3QgUGF0aDo6c3Ryb2tlQm91bmRpbmdSZWN0KFN0cm9rZVN0eWxlQXBwbGll
ciogYXBwbGllcikKICAgICAgICAgc3Ryb2tlLnNldERhc2hQYXR0ZXJuKHBlbi5kYXNoUGF0dGVy
bigpKTsKICAgICAgICAgc3Ryb2tlLnNldERhc2hPZmZzZXQocGVuLmRhc2hPZmZzZXQoKSk7CiAg
ICAgfQotICAgIHJldHVybiAoc3Ryb2tlLmNyZWF0ZVN0cm9rZSgqcGxhdGZvcm1QYXRoKCkpKS5i
b3VuZGluZ1JlY3QoKTsKKyAgICByZXR1cm4gc3Ryb2tlLmNyZWF0ZVN0cm9rZShtX3BhdGgpLmJv
dW5kaW5nUmVjdCgpOwogfQogCiB2b2lkIFBhdGg6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiBw
b2ludCkKIHsKLSAgICBtX3BhdGgtPm1vdmVUbyhwb2ludCk7CisgICAgbV9wYXRoLm1vdmVUbyhw
b2ludCk7CiB9CiAKIHZvaWQgUGF0aDo6YWRkTGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHApCiB7
Ci0gICAgbV9wYXRoLT5saW5lVG8ocCk7CisgICAgbV9wYXRoLmxpbmVUbyhwKTsKIH0KIAogdm9p
ZCBQYXRoOjphZGRRdWFkQ3VydmVUbyhjb25zdCBGbG9hdFBvaW50JiBjcCwgY29uc3QgRmxvYXRQ
b2ludCYgcCkKIHsKLSAgICBtX3BhdGgtPnF1YWRUbyhjcCwgcCk7CisgICAgbV9wYXRoLnF1YWRU
byhjcCwgcCk7CiB9CiAKIHZvaWQgUGF0aDo6YWRkQmV6aWVyQ3VydmVUbyhjb25zdCBGbG9hdFBv
aW50JiBjcDEsIGNvbnN0IEZsb2F0UG9pbnQmIGNwMiwgY29uc3QgRmxvYXRQb2ludCYgcCkKIHsK
LSAgICBtX3BhdGgtPmN1YmljVG8oY3AxLCBjcDIsIHApOworICAgIG1fcGF0aC5jdWJpY1RvKGNw
MSwgY3AyLCBwKTsKIH0KIAogdm9pZCBQYXRoOjphZGRBcmNUbyhjb25zdCBGbG9hdFBvaW50JiBw
MSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHJhZGl1cykKIHsKLSAgICBGbG9hdFBvaW50
IHAwKG1fcGF0aC0+Y3VycmVudFBvc2l0aW9uKCkpOworICAgIEZsb2F0UG9pbnQgcDAobV9wYXRo
LmN1cnJlbnRQb3NpdGlvbigpKTsKIAogICAgIGlmICgocDEueCgpID09IHAwLngoKSAmJiBwMS55
KCkgPT0gcDAueSgpKSB8fCAocDEueCgpID09IHAyLngoKSAmJiBwMS55KCkgPT0gcDIueSgpKSB8
fCByYWRpdXMgPT0gMC5mKSB7Ci0gICAgICAgIG1fcGF0aC0+bGluZVRvKHAxKTsKKyAgICAgICAg
bV9wYXRoLmxpbmVUbyhwMSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3OCw3ICsx
NzIsNyBAQCB2b2lkIFBhdGg6OmFkZEFyY1RvKGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBG
bG9hdFBvaW50JiBwMiwgZmxvYXQgcmFkaXVzKQogICAgIGRvdWJsZSBjb3NfcGhpID0gKHAxcDAu
eCgpICogcDFwMi54KCkgKyBwMXAwLnkoKSAqIHAxcDIueSgpKSAvIChwMXAwX2xlbmd0aCAqIHAx
cDJfbGVuZ3RoKTsKICAgICAvLyBhbGwgcG9pbnRzIG9uIGEgbGluZSBsb2dpYwogICAgIGlmIChj
b3NfcGhpID09IC0xKSB7Ci0gICAgICAgIG1fcGF0aC0+bGluZVRvKHAxKTsKKyAgICAgICAgbV9w
YXRoLmxpbmVUbyhwMSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNvc19waGkg
PT0gMSkgewpAQCAtMTg2LDcgKzE4MCw3IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxv
YXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRpdXMpCiAgICAgICAg
IHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoID0gNjU1MzU7CiAgICAgICAgIGRvdWJsZSBmYWN0b3Jf
bWF4ID0gbWF4X2xlbmd0aCAvIHAxcDBfbGVuZ3RoOwogICAgICAgICBGbG9hdFBvaW50IGVwKChw
MC54KCkgKyBmYWN0b3JfbWF4ICogcDFwMC54KCkpLCAocDAueSgpICsgZmFjdG9yX21heCAqIHAx
cDAueSgpKSk7Ci0gICAgICAgIG1fcGF0aC0+bGluZVRvKGVwKTsKKyAgICAgICAgbV9wYXRoLmxp
bmVUbyhlcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyNiwxNCArMjIwLDE0IEBA
IHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9p
bnQmIHAyLCBmbG9hdCByYWRpdXMpCiAgICAgaWYgKChzYSA8IGVhKSAmJiAoKGVhIC0gc2EpID4g
cGlEb3VibGUpKQogICAgICAgICBhbnRpY2xvY2t3aXNlID0gdHJ1ZTsKIAotICAgIG1fcGF0aC0+
bGluZVRvKHRfcDFwMCk7CisgICAgbV9wYXRoLmxpbmVUbyh0X3AxcDApOwogCiAgICAgYWRkQXJj
KHAsIHJhZGl1cywgc2EsIGVhLCBhbnRpY2xvY2t3aXNlKTsKIH0KIAogdm9pZCBQYXRoOjpjbG9z
ZVN1YnBhdGgoKQogewotICAgIG1fcGF0aC0+Y2xvc2VTdWJwYXRoKCk7CisgICAgbV9wYXRoLmNs
b3NlU3VicGF0aCgpOwogfQogCiAjZGVmaW5lIERFR1JFRVModCkgKCh0KSAqIDE4MC4wIC8gTV9Q
SSkKQEAgLTI3NSwzMiArMjY5LDMyIEBAIHZvaWQgUGF0aDo6YWRkQXJjKGNvbnN0IEZsb2F0UG9p
bnQmIHAsIGZsb2F0IHIsIGZsb2F0IHNhciwgZmxvYXQgZWFyLCBib29sIGFudGljCiAgICAgICAg
IHNwYW4gKz0gZWEgLSBzYTsKICAgICB9CiAKLSAgICBtX3BhdGgtPm1vdmVUbyhRUG9pbnRGKHhj
ICsgcmFkaXVzICAqIGNvcyhzYXIpLAorICAgIG1fcGF0aC5tb3ZlVG8oUVBvaW50Rih4YyArIHJh
ZGl1cyAgKiBjb3Moc2FyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgeWMgLSByYWRpdXMg
ICogc2luKHNhcikpKTsKIAotICAgIG1fcGF0aC0+YXJjVG8oeHMsIHlzLCB3aWR0aCwgaGVpZ2h0
LCBzYSwgc3Bhbik7CisgICAgbV9wYXRoLmFyY1RvKHhzLCB5cywgd2lkdGgsIGhlaWdodCwgc2Es
IHNwYW4pOwogfQogCiB2b2lkIFBhdGg6OmFkZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQogewot
ICAgIG1fcGF0aC0+YWRkUmVjdChyLngoKSwgci55KCksIHIud2lkdGgoKSwgci5oZWlnaHQoKSk7
CisgICAgbV9wYXRoLmFkZFJlY3Qoci54KCksIHIueSgpLCByLndpZHRoKCksIHIuaGVpZ2h0KCkp
OwogfQogCiB2b2lkIFBhdGg6OmFkZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByKQogewotICAg
IG1fcGF0aC0+YWRkRWxsaXBzZShyLngoKSwgci55KCksIHIud2lkdGgoKSwgci5oZWlnaHQoKSk7
CisgICAgbV9wYXRoLmFkZEVsbGlwc2Uoci54KCksIHIueSgpLCByLndpZHRoKCksIHIuaGVpZ2h0
KCkpOwogfQogCiB2b2lkIFBhdGg6OmNsZWFyKCkKIHsKLSAgICAqbV9wYXRoID0gUVBhaW50ZXJQ
YXRoKCk7CisgICAgbV9wYXRoID0gUVBhaW50ZXJQYXRoKCk7CiB9CiAKIGJvb2wgUGF0aDo6aXNF
bXB0eSgpIGNvbnN0CiB7CiAgICAgLy8gRG9uJ3QgdXNlIFFQYWludGVyUGF0aDo6aXNFbXB0eSgp
LCBhcyB0aGF0IGFsc28gcmV0dXJucyB0cnVlIGlmIHRoZXJlJ3Mgb25seQogICAgIC8vIG9uZSBp
bml0aWFsIE1vdmVUbyBlbGVtZW50IGluIHRoZSBwYXRoLgotICAgIHJldHVybiAhbV9wYXRoLT5l
bGVtZW50Q291bnQoKTsKKyAgICByZXR1cm4gIW1fcGF0aC5lbGVtZW50Q291bnQoKTsKIH0KIAog
Ym9vbCBQYXRoOjpoYXNDdXJyZW50UG9pbnQoKSBjb25zdApAQCAtMzExLDggKzMwNSw4IEBAIGJv
b2wgUGF0aDo6aGFzQ3VycmVudFBvaW50KCkgY29uc3QKIFN0cmluZyBQYXRoOjpkZWJ1Z1N0cmlu
ZygpIGNvbnN0CiB7CiAgICAgUVN0cmluZyByZXQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
X3BhdGgtPmVsZW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRo
OjpFbGVtZW50ICZjdXIgPSBtX3BhdGgtPmVsZW1lbnRBdChpKTsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG1fcGF0aC5lbGVtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFFQYWlu
dGVyUGF0aDo6RWxlbWVudCAmY3VyID0gbV9wYXRoLmVsZW1lbnRBdChpKTsKIAogICAgICAgICBz
d2l0Y2ggKGN1ci50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6TW92ZVRv
RWxlbWVudDoKQEAgLTMyMyw4ICszMTcsOCBAQCBTdHJpbmcgUGF0aDo6ZGVidWdTdHJpbmcoKSBj
b25zdAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBRUGFpbnRlclBh
dGg6OkN1cnZlVG9FbGVtZW50OgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0
IFFQYWludGVyUGF0aDo6RWxlbWVudCAmYzEgPSBtX3BhdGgtPmVsZW1lbnRBdChpICsgMSk7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjMiA9IG1fcGF0aC0+
ZWxlbWVudEF0KGkgKyAyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBRUGFpbnRlclBhdGg6OkVs
ZW1lbnQgJmMxID0gbV9wYXRoLmVsZW1lbnRBdChpICsgMSk7CisgICAgICAgICAgICAgICAgY29u
c3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50ICZjMiA9IG1fcGF0aC5lbGVtZW50QXQoaSArIDIpOwog
CiAgICAgICAgICAgICAgICAgUV9BU1NFUlQoYzEudHlwZSA9PSBRUGFpbnRlclBhdGg6OkN1cnZl
VG9EYXRhRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgUV9BU1NFUlQoYzIudHlwZSA9PSBRUGFp
bnRlclBhdGg6OkN1cnZlVG9EYXRhRWxlbWVudCk7CkBAIC0zNDgsOCArMzQyLDggQEAgdm9pZCBQ
YXRoOjphcHBseSh2b2lkKiBpbmZvLCBQYXRoQXBwbGllckZ1bmN0aW9uIGZ1bmN0aW9uKSBjb25z
dAogICAgIFBhdGhFbGVtZW50IHBlbGVtZW50OwogICAgIEZsb2F0UG9pbnQgcG9pbnRzWzNdOwog
ICAgIHBlbGVtZW50LnBvaW50cyA9IHBvaW50czsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1f
cGF0aC0+ZWxlbWVudENvdW50KCk7ICsraSkgewotICAgICAgICBjb25zdCBRUGFpbnRlclBhdGg6
OkVsZW1lbnQmIGN1ciA9IG1fcGF0aC0+ZWxlbWVudEF0KGkpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbV9wYXRoLmVsZW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgUVBhaW50
ZXJQYXRoOjpFbGVtZW50JiBjdXIgPSBtX3BhdGguZWxlbWVudEF0KGkpOwogCiAgICAgICAgIHN3
aXRjaCAoY3VyLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpNb3ZlVG9F
bGVtZW50OgpAQCAtMzY0LDggKzM1OCw4IEBAIHZvaWQgUGF0aDo6YXBwbHkodm9pZCogaW5mbywg
UGF0aEFwcGxpZXJGdW5jdGlvbiBmdW5jdGlvbikgY29uc3QKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRWxlbWVudDoKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBRUGFpbnRlclBhdGg6OkVsZW1lbnQmIGMx
ID0gbV9wYXRoLT5lbGVtZW50QXQoaSArIDEpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFQYWlu
dGVyUGF0aDo6RWxlbWVudCYgYzIgPSBtX3BhdGgtPmVsZW1lbnRBdChpICsgMik7CisgICAgICAg
ICAgICAgICAgY29uc3QgUVBhaW50ZXJQYXRoOjpFbGVtZW50JiBjMSA9IG1fcGF0aC5lbGVtZW50
QXQoaSArIDEpOworICAgICAgICAgICAgICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCYg
YzIgPSBtX3BhdGguZWxlbWVudEF0KGkgKyAyKTsKIAogICAgICAgICAgICAgICAgIFFfQVNTRVJU
KGMxLnR5cGUgPT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0YUVsZW1lbnQpOwogICAgICAgICAg
ICAgICAgIFFfQVNTRVJUKGMyLnR5cGUgPT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0YUVsZW1l
bnQpOwpAQCAtMzg3LDEyICszODEsNyBAQCB2b2lkIFBhdGg6OmFwcGx5KHZvaWQqIGluZm8sIFBh
dGhBcHBsaWVyRnVuY3Rpb24gZnVuY3Rpb24pIGNvbnN0CiAKIHZvaWQgUGF0aDo6dHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7Ci0gICAgaWYgKG1fcGF0
aCkgewotICAgICAgICBRVHJhbnNmb3JtIG1hdCA9IHRyYW5zZm9ybTsKLSAgICAgICAgUVBhaW50
ZXJQYXRoIHRlbXAgPSBtYXQubWFwKCptX3BhdGgpOwotICAgICAgICBkZWxldGUgbV9wYXRoOwot
ICAgICAgICBtX3BhdGggPSBuZXcgUVBhaW50ZXJQYXRoKHRlbXApOwotICAgIH0KKyAgICBtX3Bh
dGggPSBRVHJhbnNmb3JtKHRyYW5zZm9ybSkubWFwKG1fcGF0aCk7CiB9CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>