<?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>35873</bug_id>
          
          <creation_ts>2010-03-08 10:52:18 -0800</creation_ts>
          <short_desc>[Qt] New API scrollRecursively has several problems.</short_desc>
          <delta_ts>2010-11-18 09:17:10 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Ligman">joseph.ligman</reporter>
          <assigned_to name="Joseph Ligman">joseph.ligman</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>kevin.simons</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>197233</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2010-03-08 10:52:18 -0800</bug_when>
    <thetext>The proposed scrollRecursively API has the following issues.
1.) Dependency on last mouse move position is error prone
2.) The name is confusing
3.) The documentation doesn&apos;t say what the return values signifies
4.) The test case doesn&apos;t test the negative scrolling case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197248</commentid>
    <comment_count>1</comment_count>
      <attachid>50236</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2010-03-08 11:17:31 -0800</bug_when>
    <thetext>Created attachment 50236
Proposed patch.

Proposed patch attempting to address some of the issues with the new Qt 4.7 ScrollRecursively API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199712</commentid>
    <comment_count>2</comment_count>
      <attachid>50236</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-03-15 10:28:24 -0700</bug_when>
    <thetext>Comment on attachment 50236
Proposed patch.

&gt; +void QWebFrame::scrollFrameWithParent(int dx, int dy, const QPoint&amp; overflowHitTestPos)
&gt; +{
&gt; +    if (!d-&gt;scrollOverflow(dx, dy, overflowHitTestPos)) {

I would change the name of the variable in the signature to pos instead of overflowHitTestPos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200436</commentid>
    <comment_count>3</comment_count>
      <attachid>50838</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2010-03-16 14:23:59 -0700</bug_when>
    <thetext>Created attachment 50838
Proposed patch

This patch would remove the scrollRecursively method from the API and make it an internal method only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200453</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2010-03-16 14:48:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=50838) [details]
&gt; Proposed patch
&gt; 
&gt; This patch would remove the scrollRecursively method from the API and make it
&gt; an internal method only.

I will post another patch to remove the test case from tst_qwebframe.cpp and the call to sendScrollEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201350</commentid>
    <comment_count>5</comment_count>
      <attachid>51038</attachid>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2010-03-18 09:49:48 -0700</bug_when>
    <thetext>Created attachment 51038
Bug 35873 patch

Since there was no response on the mailing list regarding this API it seems like there is no interest or reason to keep it for Qt 4.7. I propose to remove it from the publick API and make it an internal qt_unstable API for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201697</commentid>
    <comment_count>6</comment_count>
      <attachid>51038</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-18 21:51:40 -0700</bug_when>
    <thetext>Comment on attachment 51038
Bug 35873 patch

Clearing flags on attachment: 51038

Committed r56208: &lt;http://trac.webkit.org/changeset/56208&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201698</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-18 21:51:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204079</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-25 08:49:34 -0700</bug_when>
    <thetext>Cherry-picked into qtwebkit-4.6 with commit 70ed003c946ad2fe327c08999a72375f2df98ca6 and 8b75e509d033d2df08b0fd0c80a5941cc7083731</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206039</commentid>
    <comment_count>9</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-03-30 09:12:39 -0700</bug_when>
    <thetext>Would it make sense to keep the test case for this (internal) api around ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206059</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-30 10:24:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Would it make sense to keep the test case for this (internal) api around ?

I would think so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210817</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Ligman">joseph.ligman</who>
    <bug_when>2010-04-09 11:08:36 -0700</bug_when>
    <thetext>Laszlo, can we close this bug? ScrollRecursively is no longer part of the API.

https://bugs.webkit.org/show_bug.cgi?id=36674 addresses some issues for the internal scroll recursively method so any comments can be resolved over there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255897</commentid>
    <comment_count>12</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-07-25 21:37:09 -0700</bug_when>
    <thetext>
(In reply to comment #11)
&gt; Laszlo, can we close this bug? ScrollRecursively is no longer part of the API.

Well, bug description says the following issues:

&gt;The proposed scrollRecursively API has the following issues.
&gt;1.) Dependency on last mouse move position is error prone

That seems fixed, since POS is passed as parameter.

&gt; 2.) The name is confusing
&gt; 3.) The documentation doesn&apos;t say what the return values signifies

bug 40569 seems about these two issues, right?

&gt; 4.) The test case doesn&apos;t test the negative scrolling case.

This should be easily fixable. 

If you want to close this one, please file follow up bugs for the missing bits, and link them here for the record.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255898</commentid>
    <comment_count>13</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-07-25 21:41:48 -0700</bug_when>
    <thetext>Main point for me are:

* is any one working on this? If not, I can ...

* why these method bodies are not using EventHandler::scrollRecursively which should work for any overflowed content, incluing inner frames and block elements (e.g. div)?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50236</attachid>
            <date>2010-03-08 11:17:31 -0800</date>
            <delta_ts>2010-03-16 14:23:59 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>bug35873.patch</filename>
            <type>text/plain</type>
            <size>9673</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTU2NzEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDMtMDggIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIE5ldyBBUEkgc2Nyb2xsUmVjdXJzaXZlbHkgaGFzIHNldmVyYWwgcHJvYmxl
bXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg3
MworCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIHNvbWUgb2YgdGhlIGlzc3VlcyBpbiB0
aGUgc2Nyb2xsUmVjdXJzaXZlbHkgQVBJLgorICAgICAgICBGaXggdGhlIGRlcGVuZGVuY3kgb24g
bGFzdCBtb3VzZSBtb3ZlIHBvc2l0aW9uIGJ5IHBhc3NpbmcgaW4gdGhlIGhpdCB0ZXN0IHBvc2l0
aW9uLiAKKyAgICAgICAgQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIGJldHRlciBuYW1lIGNhbGxlZCBz
Y3JvbGxGcmFtZVdpdGhQYXJlbnQuCisgICAgICAgIFJlbW92ZWQgdGhlIGJvb2xlYW4gcmV0dXJu
IHZhbHVlIGFzIGl0J3Mgbm90IG5lY2Vzc2FyeSBhbmQgbm9uZSBvZiB0aGUgb3RoZXIgc2Nyb2xs
aW5nCisgICAgICAgIG1ldGhvZHMgaW4gdGhlIGNsYXNzIHJldHVybiBib29sZWFuLgorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpzY3Jv
bGxPdmVyZmxvdyk6CisgICAgICAgIChRV2ViRnJhbWU6OnNjcm9sbEZyYW1lV2l0aFBhcmVudCk6
CisgICAgICAgIChxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxGcmFtZVdpdGhQYXJlbnQpOgorICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAg
ICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKIDIwMTAtMDMtMDgg
IEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDU1NjcwKQorKysg
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTUgKzQy
MSwxMiBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vCiAgICAgfQog
fQogCi1ib29sIFFXZWJGcmFtZVByaXZhdGU6OnNjcm9sbE92ZXJmbG93KGludCBkeCwgaW50IGR5
KQorYm9vbCBRV2ViRnJhbWVQcml2YXRlOjpzY3JvbGxPdmVyZmxvdyhpbnQgZHgsIGludCBkeSwg
Y29uc3QgUVBvaW50JiBvdmVyZmxvd0hpdFRlc3RQb3MpCiB7CiAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT5ldmVudEhhbmRsZXIoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgTm9kZSogbm9kZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2Vk
Tm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgbm9kZSA9IGZyYW1lLT5kb2N1bWVudCgp
LT5lbGVtZW50RnJvbVBvaW50KGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y3VycmVudE1vdXNlUG9z
aXRpb24oKS54KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkueSgp
KTsKKyAgICBOb2RlKiBub2RlID0gZnJhbWUtPmRvY3VtZW50KCktPmVsZW1lbnRGcm9tUG9pbnQo
b3ZlcmZsb3dIaXRUZXN0UG9zLngoKSwgb3ZlcmZsb3dIaXRUZXN0UG9zLnkoKSk7CiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExMDIsNDkgKzEwOTksNDcgQEAg
dm9pZCBRV2ViRnJhbWU6OnNjcm9sbChpbnQgZHgsIGludCBkeSkKICAgXHNpbmNlIDQuNwogICBT
Y3JvbGxzIG5lc3RlZCBmcmFtZXMgc3RhcnRpbmcgYXQgdGhpcyBmcmFtZSwgXGEgZHggcGl4ZWxz
IHRvIHRoZSByaWdodCAKICAgYW5kIFxhIGR5IHBpeGVscyBkb3dud2FyZC4gQm90aCBcYSBkeCBh
bmQgXGEgZHkgbWF5IGJlIG5lZ2F0aXZlLiBGaXJzdCBhdHRlbXB0cwotICB0byBzY3JvbGwgZWxl
bWVudHMgd2l0aCBDU1Mgb3ZlcmZsb3cgZm9sbG93ZWQgYnkgdGhpcyBmcmFtZS4gSWYgdGhpcyAK
LSAgZnJhbWUgZG9lc24ndCBzY3JvbGwsIGF0dGVtcHRzIHRvIHNjcm9sbCB0aGUgcGFyZW50Cisg
IHRvIHNjcm9sbCBlbGVtZW50cyB3aXRoIENTUyBvdmVyZmxvdyBhdCB0aGUgZ2l2ZW4gcG9zaXRp
b24sIGZvbGxvd2VkIGJ5IHRoaXMgZnJhbWUuIAorICBJZiB0aGlzIGZyYW1lIGRvZXNuJ3Qgc2Ny
b2xsLCBhdHRlbXB0cyB0byBzY3JvbGwgdGhlIHBhcmVudAogCiAgIFxzYSBRV2ViRnJhbWU6OnNj
cm9sbAogKi8KLWJvb2wgUVdlYkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseShpbnQgZHgsIGludCBk
eSkKLXsKLSAgICBib29sIHNjcm9sbGVkSG9yaXpvbnRhbCA9IGZhbHNlOwotICAgIGJvb2wgc2Ny
b2xsZWRWZXJ0aWNhbCA9IGZhbHNlOwotICAgIGJvb2wgc2Nyb2xsZWRPdmVyZmxvdyA9IGQtPnNj
cm9sbE92ZXJmbG93KGR4LCBkeSk7CiAKLSAgICBpZiAoIXNjcm9sbGVkT3ZlcmZsb3cpIHsKK3Zv
aWQgUVdlYkZyYW1lOjpzY3JvbGxGcmFtZVdpdGhQYXJlbnQoaW50IGR4LCBpbnQgZHksIGNvbnN0
IFFQb2ludCYgb3ZlcmZsb3dIaXRUZXN0UG9zKQoreworICAgIGlmICghZC0+c2Nyb2xsT3ZlcmZs
b3coZHgsIGR5LCBvdmVyZmxvd0hpdFRlc3RQb3MpKSB7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9
IGQtPmZyYW1lOwogICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGJvb2wg
c2Nyb2xsSG9yaXpvbnRhbCA9IGZhbHNlOworICAgICAgICBib29sIHNjcm9sbFZlcnRpY2FsID0g
ZmFsc2U7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0g
ZnJhbWUtPnZpZXcoKS0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgICAgICAgICBJbnRQb2ludCBtYXhT
Y3JvbGxPZmZzZXQgPSBmcmFtZS0+dmlldygpLT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKIAog
ICAgICAgICAgICAgaWYgKGR4ID4gMCkgLy8gc2Nyb2xsIHJpZ2h0Ci0gICAgICAgICAgICAgICAg
c2Nyb2xsZWRIb3Jpem9udGFsID0gc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPCBtYXhTY3JvbGxPZmZz
ZXQueCgpOworICAgICAgICAgICAgICAgIHNjcm9sbEhvcml6b250YWwgPSBzY3JvbGxPZmZzZXQu
d2lkdGgoKSA8IG1heFNjcm9sbE9mZnNldC54KCk7CiAgICAgICAgICAgICBlbHNlIGlmIChkeCA8
IDApIC8vIHNjcm9sbCBsZWZ0Ci0gICAgICAgICAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0g
c2Nyb2xsT2Zmc2V0LndpZHRoKCkgPiAwOworICAgICAgICAgICAgICAgIHNjcm9sbEhvcml6b250
YWwgPSBzY3JvbGxPZmZzZXQud2lkdGgoKSA+IDA7CiAKICAgICAgICAgICAgIGlmIChkeSA+IDAp
IC8vIHNjcm9sbCBkb3duCi0gICAgICAgICAgICAgICAgc2Nyb2xsZWRWZXJ0aWNhbCA9IHNjcm9s
bE9mZnNldC5oZWlnaHQoKSA8IG1heFNjcm9sbE9mZnNldC55KCk7CisgICAgICAgICAgICAgICAg
c2Nyb2xsVmVydGljYWwgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCBtYXhTY3JvbGxPZmZzZXQu
eSgpOwogICAgICAgICAgICAgZWxzZSBpZiAoZHkgPCAwKSAvL3Njcm9sbCB1cAotICAgICAgICAg
ICAgICAgIHNjcm9sbGVkVmVydGljYWwgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPiAwOworICAg
ICAgICAgICAgICAgIHNjcm9sbFZlcnRpY2FsID0gc2Nyb2xsT2Zmc2V0LmhlaWdodCgpID4gMDsK
IAotICAgICAgICAgICAgaWYgKHNjcm9sbGVkSG9yaXpvbnRhbCB8fCBzY3JvbGxlZFZlcnRpY2Fs
KSB7CisgICAgICAgICAgICBpZiAoc2Nyb2xsSG9yaXpvbnRhbCB8fCBzY3JvbGxWZXJ0aWNhbCkg
ewogICAgICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbEJ5KEludFNpemUoZHgsIGR5
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKTsgCiAgICAgICAgIH0gd2hpbGUgKGZyYW1lICYmIGZyYW1lLT52aWV3KCkpOwogICAgIH0K
LSAgICByZXR1cm4gKHNjcm9sbGVkSG9yaXpvbnRhbCB8fCBzY3JvbGxlZFZlcnRpY2FsIHx8IHNj
cm9sbGVkT3ZlcmZsb3cpOwogfQogCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0d2Via2l0X3dlYmZy
YW1lX3Njcm9sbFJlY3Vyc2l2ZWx5KFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgZHgsIGludCBkeSkK
K3ZvaWQgUVdFQktJVF9FWFBPUlQgcXR3ZWJraXRfd2ViZnJhbWVfc2Nyb2xsRnJhbWVXaXRoUGFy
ZW50KFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgZHgsIGludCBkeSwgY29uc3QgUVBvaW50JiBvdmVy
Zmxvd0hpdFRlc3RQb3MpCiB7Ci0gICAgcmV0dXJuIHFGcmFtZS0+c2Nyb2xsUmVjdXJzaXZlbHko
ZHgsIGR5KTsKKyAgICBxRnJhbWUtPnNjcm9sbEZyYW1lV2l0aFBhcmVudChkeCwgZHksIG92ZXJm
bG93SGl0VGVzdFBvcyk7CiB9CiAKIC8qIQpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCShyZXZpc2lvbiA1NTY3
MCkKKysrIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3
ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgUVJlY3Qgc2Nyb2xsQmFyR2VvbWV0cnkoUXQ6Ok9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdDsKIAogICAgIHZvaWQgc2Nyb2xsKGludCwgaW50KTsK
LSAgICBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5KGludCwgaW50KTsKKyAgICB2b2lkIHNjcm9sbEZy
YW1lV2l0aFBhcmVudChpbnQsIGludCwgY29uc3QgUVBvaW50JiBvdmVyZmxvd0hpdFRlc3RQb3Mp
OwogICAgIFFQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgUVBvaW50ICZwb3MpOwogCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJm
cmFtZV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCShyZXZp
c2lvbiA1NTY3MCkKKysrIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAkod29ya2luZyBjb3B5
KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW5kZXJSZWxhdGl2ZUNvb3Jk
cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBRV2ViRnJhbWU6OlJlbmRlckxheWVyLCBjb25z
dCBRUmVnaW9uJiBjbGlwKTsKICAgICB2b2lkIHJlbmRlckNvbnRlbnRzTGF5ZXJBYnNvbHV0ZUNv
b3JkcyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBRUmVnaW9uJiBjbGlwKTsKIAot
ICAgIGJvb2wgc2Nyb2xsT3ZlcmZsb3coaW50IGR4LCBpbnQgZHkpOworICAgIGJvb2wgc2Nyb2xs
T3ZlcmZsb3coaW50IGR4LCBpbnQgZHksIGNvbnN0IFFQb2ludCYgb3ZlcmZsb3dIaXRUZXN0UG9z
KTsKIAogICAgIFFXZWJGcmFtZSAqcTsKICAgICBRdDo6U2Nyb2xsQmFyUG9saWN5IGhvcml6b250
YWxTY3JvbGxCYXJQb2xpY3k7CkluZGV4OiBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9x
d2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0
X3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDU1NjcwKQorKysgV2ViS2l0L3F0L3Rlc3RzL3F3ZWJm
cmFtZS90c3RfcXdlYmZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg3LDcgKzU4Nyw3IEBA
IHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzY3JvbGxUb0FuY2hvcigpOwogICAgIHZvaWQgZXZh
bHVhdGVXaWxsQ2F1c2VSZXBhaW50KCk7CiAgICAgdm9pZCBxT2JqZWN0V3JhcHBlcldpdGhTYW1l
SWRlbnRpdHkoKTsKLSAgICB2b2lkIHNjcm9sbFJlY3Vyc2l2ZWx5KCk7CisgICAgdm9pZCBzY3Jv
bGxGcmFtZVdpdGhQYXJlbnQoKTsKICAgICB2b2lkIGludHJvc3BlY3RRdE1ldGhvZHNfZGF0YSgp
OwogICAgIHZvaWQgaW50cm9zcGVjdFF0TWV0aG9kcygpOwogCkBAIC0yODU1LDcgKzI4NTUsNyBA
QCB2b2lkIHRzdF9RV2ViRnJhbWU6OnFPYmplY3RXcmFwcGVyV2l0aFNhCiAgICAgUUNPTVBBUkUo
bWFpbkZyYW1lLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJ0ZXN0MiIpKTsKIH0KIAotdm9pZCB0
c3RfUVdlYkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseSgpCit2b2lkIHRzdF9RV2ViRnJhbWU6OnNj
cm9sbEZyYW1lV2l0aFBhcmVudCgpCiB7CiAgICAgLy8gVGhlIHRlc3QgY29udGVudCBpcyAKICAg
ICAvLyBhIG5lc3RlZCBmcmFtZSBzZXQKQEAgLTI4NzQsNDcgKzI4NzQsNDUgQEAgdm9pZCB0c3Rf
UVdlYkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseSgpCiAgICAgUVZFUklGWShjaGlsZHJlbi5jb3Vu
dCgpID09IDEpOwogCiAgICAgLy8gMXN0IHRlc3QKLSAgICAvLyBjYWxsIHNjcm9sbFJlY3Vyc2l2
ZWx5IG92ZXIgbWFpbmZyYW1lCisgICAgLy8gY2FsbCBzY3JvbGxGcmFtZVdpdGhQYXJlbnQgb3Zl
ciBtYWluZnJhbWUKICAgICAvLyB2ZXJpZnkgc2Nyb2xsZWQKICAgICAvLyB2ZXJpZnkgc2Nyb2xs
IHBvc3Rpb24gY2hhbmdlZAogICAgIFFQb2ludCBzY3JvbGxQb3NpdGlvbih3ZWJQYWdlLT5tYWlu
RnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgUVZFUklGWSh3ZWJQYWdlLT5tYWluRnJh
bWUoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoMTAsIDEwKSk7CisgICAgd2ViUGFnZS0+bWFpbkZyYW1l
KCktPnNjcm9sbEZyYW1lV2l0aFBhcmVudCgxMCwgMTAsIFFQb2ludCgwLCAwKSk7CiAgICAgUVZF
UklGWShzY3JvbGxQb3NpdGlvbiAhPSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRp
b24oKSk7CiAKICAgICAvLyAybmQgdGVzdAotICAgIC8vIGNhbGwgc2Nyb2xsUmVjdXJzaXZlbHkg
b3ZlciBjaGlsZCBpZnJhbWUKKyAgICAvLyBjYWxsIHNjcm9sbEZyYW1lV2l0aFBhcmVudCBvdmVy
IGNoaWxkIGlmcmFtZQogICAgIC8vIHZlcmlmeSBzY3JvbGxlZAogICAgIC8vIHZlcmlmeSBjaGls
ZCBzY3JvbGwgcG9zaXRpb24gY2hhbmdlZAogICAgIC8vIHZlcmlmeSBwYXJlbnQncyBzY3JvbGwg
cG9zaXRpb24gZGlkIG5vdCBjaGFuZ2UKICAgICBzY3JvbGxQb3NpdGlvbiA9IHdlYlBhZ2UtPm1h
aW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgIFFQb2ludCBjaGlsZFNjcm9sbFBvc2l0
aW9uID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgUVZFUklGWShjaGls
ZHJlbi5hdCgwKS0+c2Nyb2xsUmVjdXJzaXZlbHkoMTAsIDEwKSk7CisgICAgY2hpbGRyZW4uYXQo
MCktPnNjcm9sbEZyYW1lV2l0aFBhcmVudCgxMCwgMTAsIFFQb2ludCgwLCAwKSk7CiAgICAgUVZF
UklGWShzY3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRp
b24oKSk7CiAgICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uICE9IGNoaWxkcmVuLmF0KDAp
LT5zY3JvbGxQb3NpdGlvbigpKTsKIAogICAgIC8vIDNyZCB0ZXN0Ci0gICAgLy8gY2FsbCBzY3Jv
bGxSZWN1cnNpdmVseSBvdmVyIGRpdiBvdmVyZmxvdworICAgIC8vIGNhbGwgc2Nyb2xsRnJhbWVX
aXRoUGFyZW50IG92ZXIgZGl2IG92ZXJmbG93CiAgICAgLy8gdmVyaWZ5IHNjcm9sbGVkID09IHRy
dWUKICAgICAvLyB2ZXJpZnkgcGFyZW50IGFuZCBjaGlsZCBmcmFtZSdzIHNjcm9sbCBwb3N0aW9u
IGRpZCBub3QgY2hhbmdlCiAgICAgUVdlYkVsZW1lbnQgZGl2ID0gd2ViUGFnZS0+bWFpbkZyYW1l
KCktPmRvY3VtZW50RWxlbWVudCgpLmZpbmRGaXJzdCgiI2NvbnRlbnQxIik7Ci0gICAgUU1vdXNl
RXZlbnQgZXZwcmVzKFFFdmVudDo6TW91c2VNb3ZlLCBkaXYuZ2VvbWV0cnkoKS5jZW50ZXIoKSwg
UXQ6Ok5vQnV0dG9uLCBRdDo6Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKLSAgICB3ZWJQYWdl
LT5ldmVudCgmZXZwcmVzKTsKICAgICBzY3JvbGxQb3NpdGlvbiA9IHdlYlBhZ2UtPm1haW5GcmFt
ZSgpLT5zY3JvbGxQb3NpdGlvbigpOwogICAgIGNoaWxkU2Nyb2xsUG9zaXRpb24gPSBjaGlsZHJl
bi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICBRVkVSSUZZKHdlYlBhZ2UtPm1haW5GcmFt
ZSgpLT5zY3JvbGxSZWN1cnNpdmVseSg1LCA1KSk7CisgICAgd2ViUGFnZS0+bWFpbkZyYW1lKCkt
PnNjcm9sbEZyYW1lV2l0aFBhcmVudCg1LCA1LCBkaXYuZ2VvbWV0cnkoKS5jZW50ZXIoKSk7CiAg
ICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uID09IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQ
b3NpdGlvbigpKTsKICAgICBRVkVSSUZZKHNjcm9sbFBvc2l0aW9uID09IHdlYlBhZ2UtPm1haW5G
cmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKIAogICAgIC8vIDR0aCB0ZXN0Ci0gICAgLy8gY2Fs
bCBzY3JvbGxSZWN1cnNpdmVseSB0d2ljZSBvdmVyIGNoaWxkcyBpZnJhbWUKKyAgICAvLyBjYWxs
IHNjcm9sbEZyYW1lV2l0aFBhcmVudCB0d2ljZSBvdmVyIGNoaWxkcyBpZnJhbWUKICAgICAvLyB2
ZXJpZnkgc2Nyb2xsZWQgPT0gdHJ1ZSBmaXJzdCB0aW1lCiAgICAgLy8gdmVyaWZ5IHBhcmVudCdz
IHNjcm9sbCA9PSB0cnVlIHNlY29uZCB0aW1lCiAgICAgLy8gdmVyaWZ5IHBhcmVudCBhbmQgY2hp
bGRzIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkCiAgICAgY2hpbGRTY3JvbGxQb3NpdGlvbiA9IGNo
aWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIFFWRVJJRlkoY2hpbGRyZW4uYXQo
MCktPnNjcm9sbFJlY3Vyc2l2ZWx5KC0xMCwgLTEwKSk7CisgICAgY2hpbGRyZW4uYXQoMCktPnNj
cm9sbEZyYW1lV2l0aFBhcmVudCgtMTAsIC0xMCwgUVBvaW50KDAsIDApKTsKICAgICBRVkVSSUZZ
KGNoaWxkU2Nyb2xsUG9zaXRpb24gIT0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCkp
OwogICAgIHNjcm9sbFBvc2l0aW9uID0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0
aW9uKCk7Ci0gICAgUVZFUklGWShjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUmVjdXJzaXZlbHkoLTEw
LCAtMTApKTsKKyAgICBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsRnJhbWVXaXRoUGFyZW50KC0xMCwg
LTEwLCBRUG9pbnQoMCwgMCkpOwogICAgIFFWRVJJRlkoc2Nyb2xsUG9zaXRpb24gIT0gd2ViUGFn
ZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkpOwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50838</attachid>
            <date>2010-03-16 14:23:59 -0700</date>
            <delta_ts>2010-03-18 09:49:48 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug35873b.patch</filename>
            <type>text/plain</type>
            <size>11567</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTYwNzcpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMtMTYgIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIE5ldyBBUEkgc2Nyb2xsUmVjdXJzaXZlbHkgaGFzIHNldmVyYWwgcHJvYmxl
bXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg3
MworCisgICAgICAgIFJlbW92ZSBzY3JvbGxSZWN1cnNpdmVseSBmcm9tIHRoZSBRdCA0LjcgQVBJ
CisgICAgICAgIFVwZGF0ZSB0aGUgaW50ZXJuYWwgQVBJIHRvIGFjY2VwdCBhIGhpdCB0ZXN0IHBv
c2l0aW9uIAorICAgICAgICBmb3IgbmVzdGVkIHNjcm9sbGluZworCisgICAgICAgICogQXBpL3F3
ZWJmcmFtZS5jcHA6CisgICAgICAgICh3ZWJmcmFtZV9zY3JvbGxPdmVyZmxvdyk6CisgICAgICAg
IChxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxGcmFtZVdpdGhQYXJlbnQpOgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5j
cHA6CisKIDIwMTAtMDMtMTUgIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZpPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAko
cmV2aXNpb24gNTYwNzIpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2Niw2ICsyNjYsODkgQEAgdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9kcnRfZXZh
bHVhdGVTY3JpcAogICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgp
LT5leGVjdXRlU2NyaXB0SW5Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0LCB0
cnVlKS5qc1ZhbHVlKCk7CiB9CiAKK3N0YXRpYyBib29sIHdlYmZyYW1lX3Njcm9sbE92ZXJmbG93
KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSwgaW50IGR4LCBpbnQgZHksIGNvbnN0IFFQb2ludCYgcG9z
KQoreworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZl
bnRIYW5kbGVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5vZGUqIG5vZGUgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2ludChwb3MueCgpLCBwb3MueSgpKTsKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChyZW5kZXJlci0+aXNMaXN0Qm94KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IHJlbmRlcmVy
LT5lbmNsb3NpbmdMYXllcigpOworICAgIGlmICghcmVuZGVyTGF5ZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGJvb2wgc2Nyb2xsZWRIb3Jpem9udGFsID0gZmFsc2U7CisgICAgYm9v
bCBzY3JvbGxlZFZlcnRpY2FsID0gZmFsc2U7CisKKyAgICBpZiAoZHggPiAwKQorICAgICAgICBz
Y3JvbGxlZEhvcml6b250YWwgPSByZW5kZXJMYXllci0+c2Nyb2xsKFNjcm9sbFJpZ2h0LCBTY3Jv
bGxCeVBpeGVsLCBkeCk7CisgICAgZWxzZSBpZiAoZHggPCAwKQorICAgICAgICBzY3JvbGxlZEhv
cml6b250YWwgPSByZW5kZXJMYXllci0+c2Nyb2xsKFNjcm9sbExlZnQsIFNjcm9sbEJ5UGl4ZWws
IHFBYnMoZHgpKTsKKworICAgIGlmIChkeSA+IDApCisgICAgICAgIHNjcm9sbGVkVmVydGljYWwg
PSByZW5kZXJMYXllci0+c2Nyb2xsKFNjcm9sbERvd24sIFNjcm9sbEJ5UGl4ZWwsIGR5KTsKKyAg
ICBlbHNlIGlmIChkeSA8IDApCisgICAgICAgIHNjcm9sbGVkVmVydGljYWwgPSByZW5kZXJMYXll
ci0+c2Nyb2xsKFNjcm9sbFVwLCBTY3JvbGxCeVBpeGVsLCBxQWJzKGR5KSk7CisKKyAgICBpZiAo
c2Nyb2xsZWRIb3Jpem9udGFsIHx8IHNjcm9sbGVkVmVydGljYWwpCisgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2VuZFNjcm9sbEV2ZW50KCk7CisgICAgICAgIAorICAgIHJldHVybiAo
c2Nyb2xsZWRIb3Jpem9udGFsIHx8IHNjcm9sbGVkVmVydGljYWwpOworfQorCisvKiEKKyAgXGlu
dGVybmFsCisgIFNjcm9sbHMgbmVzdGVkIGZyYW1lcyBzdGFydGluZyBhdCB0aGlzIGZyYW1lLCBc
YSBkeCBwaXhlbHMgdG8gdGhlIHJpZ2h0IAorICBhbmQgXGEgZHkgcGl4ZWxzIGRvd253YXJkLiBC
b3RoIFxhIGR4IGFuZCBcYSBkeSBtYXkgYmUgbmVnYXRpdmUuIEZpcnN0IGF0dGVtcHRzCisgIHRv
IHNjcm9sbCBlbGVtZW50cyB3aXRoIENTUyBvdmVyZmxvdyBmb2xsb3dlZCBieSB0aGlzIGZyYW1l
LiBJZiB0aGlzIAorICBmcmFtZSBkb2Vzbid0IHNjcm9sbCwgYXR0ZW1wdHMgdG8gc2Nyb2xsIHRo
ZSBwYXJlbnQKKyovCit2b2lkIFFXRUJLSVRfRVhQT1JUIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9s
bEZyYW1lV2l0aFBhcmVudChRV2ViRnJhbWUqIHFGcmFtZSwgaW50IGR4LCBpbnQgZHksIGNvbnN0
IFFQb2ludCYgcG9zKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNv
cmUocUZyYW1lKTsKKworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT52aWV3KCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBpZiAoIXdlYmZyYW1lX3Njcm9sbE92ZXJmbG93KGZyYW1lLCBk
eCwgZHksIHBvcykpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYm9vbCBzY3JvbGxlZEhv
cml6b250YWwgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgc2Nyb2xsZWRWZXJ0aWNhbCA9IGZh
bHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IGZy
YW1lLT52aWV3KCktPnNjcm9sbE9mZnNldCgpOworICAgICAgICAgICAgSW50UG9pbnQgbWF4U2Ny
b2xsT2Zmc2V0ID0gZnJhbWUtPnZpZXcoKS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7CisKKyAg
ICAgICAgICAgIGlmIChkeCA+IDApIC8vIHNjcm9sbCByaWdodAorICAgICAgICAgICAgICAgIHNj
cm9sbGVkSG9yaXpvbnRhbCA9IHNjcm9sbE9mZnNldC53aWR0aCgpIDwgbWF4U2Nyb2xsT2Zmc2V0
LngoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGR4IDwgMCkgLy8gc2Nyb2xsIGxlZnQKKyAgICAg
ICAgICAgICAgICBzY3JvbGxlZEhvcml6b250YWwgPSBzY3JvbGxPZmZzZXQud2lkdGgoKSA+IDA7
CisKKyAgICAgICAgICAgIGlmIChkeSA+IDApIC8vIHNjcm9sbCBkb3duCisgICAgICAgICAgICAg
ICAgc2Nyb2xsZWRWZXJ0aWNhbCA9IHNjcm9sbE9mZnNldC5oZWlnaHQoKSA8IG1heFNjcm9sbE9m
ZnNldC55KCk7CisgICAgICAgICAgICBlbHNlIGlmIChkeSA8IDApIC8vc2Nyb2xsIHVwCisgICAg
ICAgICAgICAgICAgc2Nyb2xsZWRWZXJ0aWNhbCA9IHNjcm9sbE9mZnNldC5oZWlnaHQoKSA+IDA7
CisKKyAgICAgICAgICAgIGlmIChzY3JvbGxlZEhvcml6b250YWwgfHwgc2Nyb2xsZWRWZXJ0aWNh
bCkgeworICAgICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnNjcm9sbEJ5KEludFNpemUoZHgs
IGR5KSk7CisgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kU2Nyb2xs
RXZlbnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7IAorICAg
ICAgICB9IHdoaWxlIChmcmFtZSAmJiBmcmFtZS0+dmlldygpKTsKKyAgICB9CisgICAgICAgICAg
ICAKK30KKwogUVdlYkZyYW1lRGF0YTo6UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJl
bnRQYWdlLCBXZWJDb3JlOjpGcmFtZSogcGFyZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
ZnJhbWVOYW1lKQpAQCAtNDI3LDQ1ICs1MTAsNiBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OnJl
bmRlclJlbGF0aXZlQ29vCiAgICAgfQogfQogCi1ib29sIFFXZWJGcmFtZVByaXZhdGU6OnNjcm9s
bE92ZXJmbG93KGludCBkeCwgaW50IGR5KQotewotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5k
b2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZlbnRIYW5kbGVyKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsK
LSAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVu
dEZyb21Qb2ludChmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCku
eCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5jdXJyZW50TW91c2VQb3NpdGlvbigpLnkoKSk7Ci0gICAg
aWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocmVuZGVyZXItPmlzTGlzdEJveCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSByZW5kZXJlci0+
ZW5jbG9zaW5nTGF5ZXIoKTsKLSAgICBpZiAoIXJlbmRlckxheWVyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBib29sIHNjcm9sbGVkSG9yaXpvbnRhbCA9IGZhbHNlOwotICAgIGJvb2wg
c2Nyb2xsZWRWZXJ0aWNhbCA9IGZhbHNlOwotCi0gICAgaWYgKGR4ID4gMCkKLSAgICAgICAgc2Ny
b2xsZWRIb3Jpem9udGFsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxSaWdodCwgU2Nyb2xs
QnlQaXhlbCwgZHgpOwotICAgIGVsc2UgaWYgKGR4IDwgMCkKLSAgICAgICAgc2Nyb2xsZWRIb3Jp
em9udGFsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxMZWZ0LCBTY3JvbGxCeVBpeGVsLCBx
QWJzKGR4KSk7Ci0KLSAgICBpZiAoZHkgPiAwKQotICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0g
cmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxEb3duLCBTY3JvbGxCeVBpeGVsLCBkeSk7Ci0gICAg
ZWxzZSBpZiAoZHkgPCAwKQotICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gcmVuZGVyTGF5ZXIt
PnNjcm9sbChTY3JvbGxVcCwgU2Nyb2xsQnlQaXhlbCwgcUFicyhkeSkpOwotCi0gICAgcmV0dXJu
IChzY3JvbGxlZEhvcml6b250YWwgfHwgc2Nyb2xsZWRWZXJ0aWNhbCk7Ci19Ci0KIC8qIQogICAg
IFxjbGFzcyBRV2ViRnJhbWUKICAgICBcc2luY2UgNC40CkBAIC0xMTA1LDU1ICsxMTQ5LDYgQEAg
dm9pZCBRV2ViRnJhbWU6OnNjcm9sbChpbnQgZHgsIGludCBkeSkKIH0KIAogLyohCi0gIFxzaW5j
ZSA0LjcKLSAgU2Nyb2xscyBuZXN0ZWQgZnJhbWVzIHN0YXJ0aW5nIGF0IHRoaXMgZnJhbWUsIFxh
IGR4IHBpeGVscyB0byB0aGUgcmlnaHQgCi0gIGFuZCBcYSBkeSBwaXhlbHMgZG93bndhcmQuIEJv
dGggXGEgZHggYW5kIFxhIGR5IG1heSBiZSBuZWdhdGl2ZS4gRmlyc3QgYXR0ZW1wdHMKLSAgdG8g
c2Nyb2xsIGVsZW1lbnRzIHdpdGggQ1NTIG92ZXJmbG93IGZvbGxvd2VkIGJ5IHRoaXMgZnJhbWUu
IElmIHRoaXMgCi0gIGZyYW1lIGRvZXNuJ3Qgc2Nyb2xsLCBhdHRlbXB0cyB0byBzY3JvbGwgdGhl
IHBhcmVudAotCi0gIFxzYSBRV2ViRnJhbWU6OnNjcm9sbAotKi8KLWJvb2wgUVdlYkZyYW1lOjpz
Y3JvbGxSZWN1cnNpdmVseShpbnQgZHgsIGludCBkeSkKLXsKLSAgICBib29sIHNjcm9sbGVkSG9y
aXpvbnRhbCA9IGZhbHNlOwotICAgIGJvb2wgc2Nyb2xsZWRWZXJ0aWNhbCA9IGZhbHNlOwotICAg
IGJvb2wgc2Nyb2xsZWRPdmVyZmxvdyA9IGQtPnNjcm9sbE92ZXJmbG93KGR4LCBkeSk7Ci0KLSAg
ICBpZiAoIXNjcm9sbGVkT3ZlcmZsb3cpIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gZC0+ZnJh
bWU7Ci0gICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgSW50U2l6ZSBzY3JvbGxP
ZmZzZXQgPSBmcmFtZS0+dmlldygpLT5zY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgICAgIEludFBv
aW50IG1heFNjcm9sbE9mZnNldCA9IGZyYW1lLT52aWV3KCktPm1heGltdW1TY3JvbGxQb3NpdGlv
bigpOwotCi0gICAgICAgICAgICBpZiAoZHggPiAwKSAvLyBzY3JvbGwgcmlnaHQKLSAgICAgICAg
ICAgICAgICBzY3JvbGxlZEhvcml6b250YWwgPSBzY3JvbGxPZmZzZXQud2lkdGgoKSA8IG1heFNj
cm9sbE9mZnNldC54KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChkeCA8IDApIC8vIHNjcm9sbCBs
ZWZ0Ci0gICAgICAgICAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0gc2Nyb2xsT2Zmc2V0Lndp
ZHRoKCkgPiAwOwotCi0gICAgICAgICAgICBpZiAoZHkgPiAwKSAvLyBzY3JvbGwgZG93bgotICAg
ICAgICAgICAgICAgIHNjcm9sbGVkVmVydGljYWwgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCBt
YXhTY3JvbGxPZmZzZXQueSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoZHkgPCAwKSAvL3Njcm9s
bCB1cAotICAgICAgICAgICAgICAgIHNjcm9sbGVkVmVydGljYWwgPSBzY3JvbGxPZmZzZXQuaGVp
Z2h0KCkgPiAwOwotCi0gICAgICAgICAgICBpZiAoc2Nyb2xsZWRIb3Jpem9udGFsIHx8IHNjcm9s
bGVkVmVydGljYWwpIHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+dmlldygpLT5zY3JvbGxCeShJ
bnRTaXplKGR4LCBkeSkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsgCi0gICAg
ICAgIH0gd2hpbGUgKGZyYW1lICYmIGZyYW1lLT52aWV3KCkpOwotICAgIH0KLSAgICByZXR1cm4g
KHNjcm9sbGVkSG9yaXpvbnRhbCB8fCBzY3JvbGxlZFZlcnRpY2FsIHx8IHNjcm9sbGVkT3ZlcmZs
b3cpOwotfQotCi1ib29sIFFXRUJLSVRfRVhQT1JUIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbFJl
Y3Vyc2l2ZWx5KFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgZHgsIGludCBkeSkKLXsKLSAgICByZXR1
cm4gcUZyYW1lLT5zY3JvbGxSZWN1cnNpdmVseShkeCwgZHkpOwotfQotCi0vKiEKICAgXHByb3Bl
cnR5IFFXZWJGcmFtZTo6c2Nyb2xsUG9zaXRpb24KICAgXHNpbmNlIDQuNQogICBcYnJpZWYgdGhl
IHBvc2l0aW9uIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgc2Nyb2xsZWQgdG8uCkluZGV4OiBXZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmgJKHJldmlzaW9uIDU2MDcyKQorKysgV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw2IEBAIHB1YmxpYzoKICAgICBRUmVjdCBzY3JvbGxC
YXJHZW9tZXRyeShRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0OwogCiAgICAgdm9p
ZCBzY3JvbGwoaW50LCBpbnQpOwotICAgIGJvb2wgc2Nyb2xsUmVjdXJzaXZlbHkoaW50LCBpbnQp
OwogICAgIFFQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgUVBvaW50ICZwb3MpOwogCkluZGV4OiBXZWJLaXQvcXQvdGVzdHMvcXdl
YmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9x
d2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDU2MDcyKQorKysgV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg3
LDcgKzU4Nyw3IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzY3JvbGxUb0FuY2hvcigpOwog
ICAgIHZvaWQgZXZhbHVhdGVXaWxsQ2F1c2VSZXBhaW50KCk7CiAgICAgdm9pZCBxT2JqZWN0V3Jh
cHBlcldpdGhTYW1lSWRlbnRpdHkoKTsKLSAgICB2b2lkIHNjcm9sbFJlY3Vyc2l2ZWx5KCk7Cisg
ICAgdm9pZCBzY3JvbGxGcmFtZVdpdGhQYXJlbnQoKTsKICAgICB2b2lkIGludHJvc3BlY3RRdE1l
dGhvZHNfZGF0YSgpOwogICAgIHZvaWQgaW50cm9zcGVjdFF0TWV0aG9kcygpOwogCkBAIC0yODU1
LDcgKzI4NTUsOSBAQCB2b2lkIHRzdF9RV2ViRnJhbWU6OnFPYmplY3RXcmFwcGVyV2l0aFNhCiAg
ICAgUUNPTVBBUkUobWFpbkZyYW1lLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJ0ZXN0MiIpKTsK
IH0KIAotdm9pZCB0c3RfUVdlYkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseSgpCit2b2lkIFFXRUJL
SVRfRVhQT1JUIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbEZyYW1lV2l0aFBhcmVudChRV2ViRnJh
bWUqIHFGcmFtZSwgaW50IGR4LCBpbnQgZHksIGNvbnN0IFFQb2ludCYgcG9zKTsKKwordm9pZCB0
c3RfUVdlYkZyYW1lOjpzY3JvbGxGcmFtZVdpdGhQYXJlbnQoKQogewogICAgIC8vIFRoZSB0ZXN0
IGNvbnRlbnQgaXMgCiAgICAgLy8gYSBuZXN0ZWQgZnJhbWUgc2V0CkBAIC0yODc4LDcgKzI4ODAs
NyBAQCB2b2lkIHRzdF9RV2ViRnJhbWU6OnNjcm9sbFJlY3Vyc2l2ZWx5KCkKICAgICAvLyB2ZXJp
Znkgc2Nyb2xsZWQKICAgICAvLyB2ZXJpZnkgc2Nyb2xsIHBvc3Rpb24gY2hhbmdlZAogICAgIFFQ
b2ludCBzY3JvbGxQb3NpdGlvbih3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24o
KSk7Ci0gICAgUVZFUklGWSh3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUmVjdXJzaXZlbHko
MTAsIDEwKSk7CisgICAgcXR3ZWJraXRfd2ViZnJhbWVfc2Nyb2xsRnJhbWVXaXRoUGFyZW50KHdl
YlBhZ2UtPm1haW5GcmFtZSgpLCAxMCwgMTAsIFFQb2ludCgwLDApKTsKICAgICBRVkVSSUZZKHNj
cm9sbFBvc2l0aW9uICE9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsK
IAogICAgIC8vIDJuZCB0ZXN0CkBAIC0yODg4LDcgKzI4OTAsNyBAQCB2b2lkIHRzdF9RV2ViRnJh
bWU6OnNjcm9sbFJlY3Vyc2l2ZWx5KCkKICAgICAvLyB2ZXJpZnkgcGFyZW50J3Mgc2Nyb2xsIHBv
c2l0aW9uIGRpZCBub3QgY2hhbmdlCiAgICAgc2Nyb2xsUG9zaXRpb24gPSB3ZWJQYWdlLT5tYWlu
RnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICBRUG9pbnQgY2hpbGRTY3JvbGxQb3NpdGlv
biA9IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIFFWRVJJRlkoY2hpbGRy
ZW4uYXQoMCktPnNjcm9sbFJlY3Vyc2l2ZWx5KDEwLCAxMCkpOworICAgIHF0d2Via2l0X3dlYmZy
YW1lX3Njcm9sbEZyYW1lV2l0aFBhcmVudChjaGlsZHJlbi5hdCgwKSwgMTAsIDEwLCBRUG9pbnQo
MCwwKSk7CiAgICAgUVZFUklGWShzY3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdlLT5tYWluRnJhbWUo
KS0+c2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uICE9
IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpKTsKIApAQCAtMjg5NywxMSArMjg5OSw5
IEBAIHZvaWQgdHN0X1FXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkoKQogICAgIC8vIHZlcmlm
eSBzY3JvbGxlZCA9PSB0cnVlCiAgICAgLy8gdmVyaWZ5IHBhcmVudCBhbmQgY2hpbGQgZnJhbWUn
cyBzY3JvbGwgcG9zdGlvbiBkaWQgbm90IGNoYW5nZQogICAgIFFXZWJFbGVtZW50IGRpdiA9IHdl
YlBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kRmlyc3QoIiNjb250ZW50
MSIpOwotICAgIFFNb3VzZUV2ZW50IGV2cHJlcyhRRXZlbnQ6Ok1vdXNlTW92ZSwgZGl2Lmdlb21l
dHJ5KCkuY2VudGVyKCksIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vQnV0dG9uLCBRdDo6Tm9Nb2RpZmll
cik7Ci0gICAgd2ViUGFnZS0+ZXZlbnQoJmV2cHJlcyk7CiAgICAgc2Nyb2xsUG9zaXRpb24gPSB3
ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICBjaGlsZFNjcm9sbFBv
c2l0aW9uID0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgUVZFUklGWSh3
ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoNSwgNSkpOworICAgIHF0d2Vi
a2l0X3dlYmZyYW1lX3Njcm9sbEZyYW1lV2l0aFBhcmVudCh3ZWJQYWdlLT5tYWluRnJhbWUoKSwg
NSwgNSwgZGl2Lmdlb21ldHJ5KCkuY2VudGVyKCkpOwogICAgIFFWRVJJRlkoY2hpbGRTY3JvbGxQ
b3NpdGlvbiA9PSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgUVZFUklG
WShzY3JvbGxQb3NpdGlvbiA9PSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24o
KSk7CiAKQEAgLTI5MTEsMTAgKzI5MTEsMTAgQEAgdm9pZCB0c3RfUVdlYkZyYW1lOjpzY3JvbGxS
ZWN1cnNpdmVseSgpCiAgICAgLy8gdmVyaWZ5IHBhcmVudCdzIHNjcm9sbCA9PSB0cnVlIHNlY29u
ZCB0aW1lCiAgICAgLy8gdmVyaWZ5IHBhcmVudCBhbmQgY2hpbGRzIHNjcm9sbCBwb3NpdGlvbiBj
aGFuZ2VkCiAgICAgY2hpbGRTY3JvbGxQb3NpdGlvbiA9IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQ
b3NpdGlvbigpOwotICAgIFFWRVJJRlkoY2hpbGRyZW4uYXQoMCktPnNjcm9sbFJlY3Vyc2l2ZWx5
KC0xMCwgLTEwKSk7CisgICAgcXR3ZWJraXRfd2ViZnJhbWVfc2Nyb2xsRnJhbWVXaXRoUGFyZW50
KGNoaWxkcmVuLmF0KDApLCAtMTAsIC0xMCwgUVBvaW50KDAsMCkpOwogICAgIFFWRVJJRlkoY2hp
bGRTY3JvbGxQb3NpdGlvbiAhPSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24oKSk7CiAg
ICAgc2Nyb2xsUG9zaXRpb24gPSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24o
KTsKLSAgICBRVkVSSUZZKGNoaWxkcmVuLmF0KDApLT5zY3JvbGxSZWN1cnNpdmVseSgtMTAsIC0x
MCkpOworICAgIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbEZyYW1lV2l0aFBhcmVudChjaGlsZHJl
bi5hdCgwKSwgLTEwLCAtMTAsIFFQb2ludCgwLDApKTsKICAgICBRVkVSSUZZKHNjcm9sbFBvc2l0
aW9uICE9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51038</attachid>
            <date>2010-03-18 09:49:48 -0700</date>
            <delta_ts>2010-06-11 10:45:42 -0700</delta_ts>
            <desc>Bug 35873 patch</desc>
            <filename>bug35873c.patch</filename>
            <type>text/plain</type>
            <size>11976</size>
            <attacher name="Joseph Ligman">joseph.ligman</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTYxNjYpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMTggIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIE5ldyBBUEkgc2Nyb2xsUmVjdXJzaXZlbHkgaGFzIHNldmVyYWwgcHJvYmxl
bXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTg3
MworCisgICAgICAgIFJlbW92ZSBzY3JvbGxSZWN1cnNpdmVseSBmcm9tIHRoZSBRdCA0LjcgQVBJ
CisgICAgICAgIFVwZGF0ZSB0aGUgaW50ZXJuYWwgQVBJIHRvIGFjY2VwdCBhIGhpdCB0ZXN0IHBv
c2l0aW9uIAorICAgICAgICBmb3IgbmVzdGVkIHNjcm9sbGluZworCisgICAgICAgICogQXBpL3F3
ZWJmcmFtZS5jcHA6CisgICAgICAgICh3ZWJmcmFtZV9zY3JvbGxPdmVyZmxvdyk6CisgICAgICAg
IChxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgICogQXBpL3F3
ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIHRlc3Rz
L3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKwogMjAxMC0wMy0xNyAgQW50dGkgS29pdmlz
dG8gIDxrb2l2aXN0b0Bpa2kuZmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDU2MTYwKQorKysgV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDg2IEBAIHZv
aWQgUVdFQktJVF9FWFBPUlQgcXRfZHJ0X2V2YWx1YXRlU2NyaXAKICAgICAgICAgSlNDOjpKU1Zh
bHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOwogfQogCitzdGF0aWMg
Ym9vbCB3ZWJmcmFtZV9zY3JvbGxPdmVyZmxvdyhXZWJDb3JlOjpGcmFtZSogZnJhbWUsIGludCBk
eCwgaW50IGR5LCBjb25zdCBRUG9pbnQmIHBvcykKK3sKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPmV2ZW50SGFuZGxlcigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBOb2RlKiBub2RlID0gZnJhbWUtPmRvY3VtZW50KCktPmVsZW1lbnRGcm9t
UG9pbnQocG9zLngoKSwgcG9zLnkoKSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAocmVu
ZGVyZXItPmlzTGlzdEJveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJM
YXllciogcmVuZGVyTGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAo
IXJlbmRlckxheWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHNjcm9sbGVk
SG9yaXpvbnRhbCA9IGZhbHNlOworICAgIGJvb2wgc2Nyb2xsZWRWZXJ0aWNhbCA9IGZhbHNlOwor
CisgICAgaWYgKGR4ID4gMCkKKyAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0gcmVuZGVyTGF5
ZXItPnNjcm9sbChTY3JvbGxSaWdodCwgU2Nyb2xsQnlQaXhlbCwgZHgpOworICAgIGVsc2UgaWYg
KGR4IDwgMCkKKyAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0gcmVuZGVyTGF5ZXItPnNjcm9s
bChTY3JvbGxMZWZ0LCBTY3JvbGxCeVBpeGVsLCBxQWJzKGR4KSk7CisKKyAgICBpZiAoZHkgPiAw
KQorICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxE
b3duLCBTY3JvbGxCeVBpeGVsLCBkeSk7CisgICAgZWxzZSBpZiAoZHkgPCAwKQorICAgICAgICBz
Y3JvbGxlZFZlcnRpY2FsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxVcCwgU2Nyb2xsQnlQ
aXhlbCwgcUFicyhkeSkpOworCisgICAgcmV0dXJuIChzY3JvbGxlZEhvcml6b250YWwgfHwgc2Ny
b2xsZWRWZXJ0aWNhbCk7Cit9CisKKworLyohCisgIFxpbnRlcm5hbAorICBTY3JvbGxzIG5lc3Rl
ZCBmcmFtZXMgc3RhcnRpbmcgYXQgdGhpcyBmcmFtZSwgXGEgZHggcGl4ZWxzIHRvIHRoZSByaWdo
dCAKKyAgYW5kIFxhIGR5IHBpeGVscyBkb3dud2FyZC4gQm90aCBcYSBkeCBhbmQgXGEgZHkgbWF5
IGJlIG5lZ2F0aXZlLiBGaXJzdCBhdHRlbXB0cworICB0byBzY3JvbGwgZWxlbWVudHMgd2l0aCBD
U1Mgb3ZlcmZsb3cgYXQgcG9zaXRpb24gcG9zLCBmb2xsb3dlZCBieSB0aGlzIGZyYW1lLiBJZiB0
aGlzIAorICBmcmFtZSBkb2Vzbid0IHNjcm9sbCwgYXR0ZW1wdHMgdG8gc2Nyb2xsIHRoZSBwYXJl
bnQKKyovCit2b2lkIFFXRUJLSVRfRVhQT1JUIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbFJlY3Vy
c2l2ZWx5KFFXZWJGcmFtZSogcUZyYW1lLCBpbnQgZHgsIGludCBkeSwgY29uc3QgUVBvaW50JiBw
b3MpCit7CisgICAgRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShxRnJhbWUp
OworCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIGlmICghd2ViZnJhbWVfc2Nyb2xsT3ZlcmZsb3coZnJhbWUsIGR4LCBkeSwgcG9z
KSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBib29sIHNjcm9sbGVkSG9yaXpvbnRhbCA9
IGZhbHNlOworICAgICAgICAgICAgYm9vbCBzY3JvbGxlZFZlcnRpY2FsID0gZmFsc2U7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gZnJhbWUtPnZpZXco
KS0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgICAgICBJbnRQb2ludCBtYXhTY3JvbGxPZmZzZXQg
PSBmcmFtZS0+dmlldygpLT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKKworICAgICAgICAgICAg
aWYgKGR4ID4gMCkgLy8gc2Nyb2xsIHJpZ2h0CisgICAgICAgICAgICAgICAgc2Nyb2xsZWRIb3Jp
em9udGFsID0gc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPCBtYXhTY3JvbGxPZmZzZXQueCgpOworICAg
ICAgICAgICAgZWxzZSBpZiAoZHggPCAwKSAvLyBzY3JvbGwgbGVmdAorICAgICAgICAgICAgICAg
IHNjcm9sbGVkSG9yaXpvbnRhbCA9IHNjcm9sbE9mZnNldC53aWR0aCgpID4gMDsKKworICAgICAg
ICAgICAgaWYgKGR5ID4gMCkgLy8gc2Nyb2xsIGRvd24KKyAgICAgICAgICAgICAgICBzY3JvbGxl
ZFZlcnRpY2FsID0gc2Nyb2xsT2Zmc2V0LmhlaWdodCgpIDwgbWF4U2Nyb2xsT2Zmc2V0LnkoKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGR5IDwgMCkgLy9zY3JvbGwgdXAKKyAgICAgICAgICAgICAg
ICBzY3JvbGxlZFZlcnRpY2FsID0gc2Nyb2xsT2Zmc2V0LmhlaWdodCgpID4gMDsKKworICAgICAg
ICAgICAgaWYgKHNjcm9sbGVkSG9yaXpvbnRhbCB8fCBzY3JvbGxlZFZlcnRpY2FsKSB7CisgICAg
ICAgICAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2Nyb2xsQnkoSW50U2l6ZShkeCwgZHkpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7IAorICAgICAgICB9IHdoaWxl
IChmcmFtZSAmJiBmcmFtZS0+dmlldygpKTsKKyAgICB9Cit9CisKKwogUVdlYkZyYW1lRGF0YTo6
UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdlLCBXZWJDb3JlOjpGcmFtZSog
cGFyZW50RnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJGcmFtZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZnJhbWVOYW1lKQpAQCAtNDI5LDQ1ICs1
MDksNiBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vCiAgICAgfQog
fQogCi1ib29sIFFXZWJGcmFtZVByaXZhdGU6OnNjcm9sbE92ZXJmbG93KGludCBkeCwgaW50IGR5
KQotewotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+ZXZl
bnRIYW5kbGVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE5vZGUqIG5vZGUgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAg
IG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2ludChmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmN1cnJlbnRNb3VzZVBvc2l0aW9uKCkueCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5j
dXJyZW50TW91c2VQb3NpdGlvbigpLnkoKSk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
cmVuZGVyZXItPmlzTGlzdEJveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIgPSByZW5kZXJlci0+ZW5jbG9zaW5nTGF5ZXIoKTsKLSAgICBp
ZiAoIXJlbmRlckxheWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHNjcm9s
bGVkSG9yaXpvbnRhbCA9IGZhbHNlOwotICAgIGJvb2wgc2Nyb2xsZWRWZXJ0aWNhbCA9IGZhbHNl
OwotCi0gICAgaWYgKGR4ID4gMCkKLSAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0gcmVuZGVy
TGF5ZXItPnNjcm9sbChTY3JvbGxSaWdodCwgU2Nyb2xsQnlQaXhlbCwgZHgpOwotICAgIGVsc2Ug
aWYgKGR4IDwgMCkKLSAgICAgICAgc2Nyb2xsZWRIb3Jpem9udGFsID0gcmVuZGVyTGF5ZXItPnNj
cm9sbChTY3JvbGxMZWZ0LCBTY3JvbGxCeVBpeGVsLCBxQWJzKGR4KSk7Ci0KLSAgICBpZiAoZHkg
PiAwKQotICAgICAgICBzY3JvbGxlZFZlcnRpY2FsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3Jv
bGxEb3duLCBTY3JvbGxCeVBpeGVsLCBkeSk7Ci0gICAgZWxzZSBpZiAoZHkgPCAwKQotICAgICAg
ICBzY3JvbGxlZFZlcnRpY2FsID0gcmVuZGVyTGF5ZXItPnNjcm9sbChTY3JvbGxVcCwgU2Nyb2xs
QnlQaXhlbCwgcUFicyhkeSkpOwotCi0gICAgcmV0dXJuIChzY3JvbGxlZEhvcml6b250YWwgfHwg
c2Nyb2xsZWRWZXJ0aWNhbCk7Ci19Ci0KIC8qIQogICAgIFxjbGFzcyBRV2ViRnJhbWUKICAgICBc
c2luY2UgNC40CkBAIC0xMTA3LDU1ICsxMTQ4LDYgQEAgdm9pZCBRV2ViRnJhbWU6OnNjcm9sbChp
bnQgZHgsIGludCBkeSkKIH0KIAogLyohCi0gIFxzaW5jZSA0LjcKLSAgU2Nyb2xscyBuZXN0ZWQg
ZnJhbWVzIHN0YXJ0aW5nIGF0IHRoaXMgZnJhbWUsIFxhIGR4IHBpeGVscyB0byB0aGUgcmlnaHQg
Ci0gIGFuZCBcYSBkeSBwaXhlbHMgZG93bndhcmQuIEJvdGggXGEgZHggYW5kIFxhIGR5IG1heSBi
ZSBuZWdhdGl2ZS4gRmlyc3QgYXR0ZW1wdHMKLSAgdG8gc2Nyb2xsIGVsZW1lbnRzIHdpdGggQ1NT
IG92ZXJmbG93IGZvbGxvd2VkIGJ5IHRoaXMgZnJhbWUuIElmIHRoaXMgCi0gIGZyYW1lIGRvZXNu
J3Qgc2Nyb2xsLCBhdHRlbXB0cyB0byBzY3JvbGwgdGhlIHBhcmVudAotCi0gIFxzYSBRV2ViRnJh
bWU6OnNjcm9sbAotKi8KLWJvb2wgUVdlYkZyYW1lOjpzY3JvbGxSZWN1cnNpdmVseShpbnQgZHgs
IGludCBkeSkKLXsKLSAgICBib29sIHNjcm9sbGVkSG9yaXpvbnRhbCA9IGZhbHNlOwotICAgIGJv
b2wgc2Nyb2xsZWRWZXJ0aWNhbCA9IGZhbHNlOwotICAgIGJvb2wgc2Nyb2xsZWRPdmVyZmxvdyA9
IGQtPnNjcm9sbE92ZXJmbG93KGR4LCBkeSk7Ci0KLSAgICBpZiAoIXNjcm9sbGVkT3ZlcmZsb3cp
IHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gZC0+ZnJhbWU7Ci0gICAgICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBmcmFtZS0+dmlldygpLT5z
Y3JvbGxPZmZzZXQoKTsKLSAgICAgICAgICAgIEludFBvaW50IG1heFNjcm9sbE9mZnNldCA9IGZy
YW1lLT52aWV3KCktPm1heGltdW1TY3JvbGxQb3NpdGlvbigpOwotCi0gICAgICAgICAgICBpZiAo
ZHggPiAwKSAvLyBzY3JvbGwgcmlnaHQKLSAgICAgICAgICAgICAgICBzY3JvbGxlZEhvcml6b250
YWwgPSBzY3JvbGxPZmZzZXQud2lkdGgoKSA8IG1heFNjcm9sbE9mZnNldC54KCk7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChkeCA8IDApIC8vIHNjcm9sbCBsZWZ0Ci0gICAgICAgICAgICAgICAgc2Ny
b2xsZWRIb3Jpem9udGFsID0gc2Nyb2xsT2Zmc2V0LndpZHRoKCkgPiAwOwotCi0gICAgICAgICAg
ICBpZiAoZHkgPiAwKSAvLyBzY3JvbGwgZG93bgotICAgICAgICAgICAgICAgIHNjcm9sbGVkVmVy
dGljYWwgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCBtYXhTY3JvbGxPZmZzZXQueSgpOwotICAg
ICAgICAgICAgZWxzZSBpZiAoZHkgPCAwKSAvL3Njcm9sbCB1cAotICAgICAgICAgICAgICAgIHNj
cm9sbGVkVmVydGljYWwgPSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPiAwOwotCi0gICAgICAgICAg
ICBpZiAoc2Nyb2xsZWRIb3Jpem9udGFsIHx8IHNjcm9sbGVkVmVydGljYWwpIHsKLSAgICAgICAg
ICAgICAgICBmcmFtZS0+dmlldygpLT5zY3JvbGxCeShJbnRTaXplKGR4LCBkeSkpOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsgCi0gICAgICAgIH0gd2hpbGUgKGZyYW1lICYmIGZy
YW1lLT52aWV3KCkpOwotICAgIH0KLSAgICByZXR1cm4gKHNjcm9sbGVkSG9yaXpvbnRhbCB8fCBz
Y3JvbGxlZFZlcnRpY2FsIHx8IHNjcm9sbGVkT3ZlcmZsb3cpOwotfQotCi1ib29sIFFXRUJLSVRf
RVhQT1JUIHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbFJlY3Vyc2l2ZWx5KFFXZWJGcmFtZSogcUZy
YW1lLCBpbnQgZHgsIGludCBkeSkKLXsKLSAgICByZXR1cm4gcUZyYW1lLT5zY3JvbGxSZWN1cnNp
dmVseShkeCwgZHkpOwotfQotCi0vKiEKICAgXHByb3BlcnR5IFFXZWJGcmFtZTo6c2Nyb2xsUG9z
aXRpb24KICAgXHNpbmNlIDQuNQogICBcYnJpZWYgdGhlIHBvc2l0aW9uIHRoZSBmcmFtZSBpcyBj
dXJyZW50bHkgc2Nyb2xsZWQgdG8uCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgJKHJldmlzaW9uIDU2MTYwKQor
KysgV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1
Niw2IEBAIHB1YmxpYzoKICAgICBRUmVjdCBzY3JvbGxCYXJHZW9tZXRyeShRdDo6T3JpZW50YXRp
b24gb3JpZW50YXRpb24pIGNvbnN0OwogCiAgICAgdm9pZCBzY3JvbGwoaW50LCBpbnQpOwotICAg
IGJvb2wgc2Nyb2xsUmVjdXJzaXZlbHkoaW50LCBpbnQpOwogICAgIFFQb2ludCBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgUVBvaW50ICZw
b3MpOwogCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCShyZXZpc2lvbiA1NjE2MCkKKysrIFdlYktpdC9x
dC9BcGkvcXdlYmZyYW1lX3AuaAkod29ya2luZyBjb3B5KQpAQCAtODgsOCArODgsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW5kZXJGcm9tVGlsZWRCYWNraW5nU3RvcmUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgUVJlZ2lvbiYgY2xpcCk7CiAjZW5kaWYKIAotICAgIGJvb2wgc2Ny
b2xsT3ZlcmZsb3coaW50IGR4LCBpbnQgZHkpOwotCiAgICAgUVdlYkZyYW1lICpxOwogICAgIFF0
OjpTY3JvbGxCYXJQb2xpY3kgaG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeTsKICAgICBRdDo6U2Ny
b2xsQmFyUG9saWN5IHZlcnRpY2FsU2Nyb2xsQmFyUG9saWN5OwpJbmRleDogV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
dGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwCShyZXZpc2lvbiA1NjE2MCkKKysrIFdl
YktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4Nyw3ICs1ODcsNiBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgc2Nyb2xsVG9BbmNo
b3IoKTsKICAgICB2b2lkIGV2YWx1YXRlV2lsbENhdXNlUmVwYWludCgpOwogICAgIHZvaWQgcU9i
amVjdFdyYXBwZXJXaXRoU2FtZUlkZW50aXR5KCk7Ci0gICAgdm9pZCBzY3JvbGxSZWN1cnNpdmVs
eSgpOwogICAgIHZvaWQgaW50cm9zcGVjdFF0TWV0aG9kc19kYXRhKCk7CiAgICAgdm9pZCBpbnRy
b3NwZWN0UXRNZXRob2RzKCk7CiAKQEAgLTI4NTUsNzAgKzI4NTQsNiBAQCB2b2lkIHRzdF9RV2Vi
RnJhbWU6OnFPYmplY3RXcmFwcGVyV2l0aFNhCiAgICAgUUNPTVBBUkUobWFpbkZyYW1lLT50b1Bs
YWluVGV4dCgpLCBRU3RyaW5nKCJ0ZXN0MiIpKTsKIH0KIAotdm9pZCB0c3RfUVdlYkZyYW1lOjpz
Y3JvbGxSZWN1cnNpdmVseSgpCi17Ci0gICAgLy8gVGhlIHRlc3QgY29udGVudCBpcyAKLSAgICAv
LyBhIG5lc3RlZCBmcmFtZSBzZXQKLSAgICAvLyBUaGUgbWFpbiBmcmFtZSBzY3JvbGxzCi0gICAg
Ly8gYW5kIGhhcyB0d28gY2hpbGRyZW4KLSAgICAvLyBhbiBpZnJhbWUgYW5kIGEgZGl2IG92ZXJm
bG93Ci0gICAgLy8gYm90aCBzY3JvbGwKLSAgICBRV2ViVmlldyB3ZWJWaWV3OwotICAgIFFXZWJQ
YWdlKiB3ZWJQYWdlID0gd2ViVmlldy5wYWdlKCk7Ci0gICAgUVNpZ25hbFNweSBsb2FkU3B5KHdl
YlBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKLSAgICBRVXJsIHVybCA9IFFVcmwo
InFyYzovLy90ZXN0aWZyYW1lLmh0bWwiKTsKLSAgICB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+bG9h
ZCh1cmwpOwotICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDEpOwotCi0gICAgUUxp
c3Q8UVdlYkZyYW1lKj4gY2hpbGRyZW4gPSAgd2ViUGFnZS0+bWFpbkZyYW1lKCktPmNoaWxkRnJh
bWVzKCk7Ci0gICAgUVZFUklGWShjaGlsZHJlbi5jb3VudCgpID09IDEpOwotCi0gICAgLy8gMXN0
IHRlc3QKLSAgICAvLyBjYWxsIHNjcm9sbFJlY3Vyc2l2ZWx5IG92ZXIgbWFpbmZyYW1lCi0gICAg
Ly8gdmVyaWZ5IHNjcm9sbGVkCi0gICAgLy8gdmVyaWZ5IHNjcm9sbCBwb3N0aW9uIGNoYW5nZWQK
LSAgICBRUG9pbnQgc2Nyb2xsUG9zaXRpb24od2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBv
c2l0aW9uKCkpOwotICAgIFFWRVJJRlkod2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFJlY3Vy
c2l2ZWx5KDEwLCAxMCkpOwotICAgIFFWRVJJRlkoc2Nyb2xsUG9zaXRpb24gIT0gd2ViUGFnZS0+
bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkpOwotCi0gICAgLy8gMm5kIHRlc3QKLSAgICAv
LyBjYWxsIHNjcm9sbFJlY3Vyc2l2ZWx5IG92ZXIgY2hpbGQgaWZyYW1lCi0gICAgLy8gdmVyaWZ5
IHNjcm9sbGVkCi0gICAgLy8gdmVyaWZ5IGNoaWxkIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkCi0g
ICAgLy8gdmVyaWZ5IHBhcmVudCdzIHNjcm9sbCBwb3NpdGlvbiBkaWQgbm90IGNoYW5nZQotICAg
IHNjcm9sbFBvc2l0aW9uID0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCk7
Ci0gICAgUVBvaW50IGNoaWxkU2Nyb2xsUG9zaXRpb24gPSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xs
UG9zaXRpb24oKTsKLSAgICBRVkVSSUZZKGNoaWxkcmVuLmF0KDApLT5zY3JvbGxSZWN1cnNpdmVs
eSgxMCwgMTApKTsKLSAgICBRVkVSSUZZKHNjcm9sbFBvc2l0aW9uID09IHdlYlBhZ2UtPm1haW5G
cmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKLSAgICBRVkVSSUZZKGNoaWxkU2Nyb2xsUG9zaXRp
b24gIT0gY2hpbGRyZW4uYXQoMCktPnNjcm9sbFBvc2l0aW9uKCkpOwotCi0gICAgLy8gM3JkIHRl
c3QKLSAgICAvLyBjYWxsIHNjcm9sbFJlY3Vyc2l2ZWx5IG92ZXIgZGl2IG92ZXJmbG93Ci0gICAg
Ly8gdmVyaWZ5IHNjcm9sbGVkID09IHRydWUKLSAgICAvLyB2ZXJpZnkgcGFyZW50IGFuZCBjaGls
ZCBmcmFtZSdzIHNjcm9sbCBwb3N0aW9uIGRpZCBub3QgY2hhbmdlCi0gICAgUVdlYkVsZW1lbnQg
ZGl2ID0gd2ViUGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50RWxlbWVudCgpLmZpbmRGaXJzdCgi
I2NvbnRlbnQxIik7Ci0gICAgUU1vdXNlRXZlbnQgZXZwcmVzKFFFdmVudDo6TW91c2VNb3ZlLCBk
aXYuZ2VvbWV0cnkoKS5jZW50ZXIoKSwgUXQ6Ok5vQnV0dG9uLCBRdDo6Tm9CdXR0b24sIFF0OjpO
b01vZGlmaWVyKTsKLSAgICB3ZWJQYWdlLT5ldmVudCgmZXZwcmVzKTsKLSAgICBzY3JvbGxQb3Np
dGlvbiA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIGNoaWxk
U2Nyb2xsUG9zaXRpb24gPSBjaGlsZHJlbi5hdCgwKS0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICBR
VkVSSUZZKHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxSZWN1cnNpdmVseSg1LCA1KSk7Ci0g
ICAgUVZFUklGWShjaGlsZFNjcm9sbFBvc2l0aW9uID09IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQ
b3NpdGlvbigpKTsKLSAgICBRVkVSSUZZKHNjcm9sbFBvc2l0aW9uID09IHdlYlBhZ2UtPm1haW5G
cmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpKTsKLQotICAgIC8vIDR0aCB0ZXN0Ci0gICAgLy8gY2Fs
bCBzY3JvbGxSZWN1cnNpdmVseSB0d2ljZSBvdmVyIGNoaWxkcyBpZnJhbWUKLSAgICAvLyB2ZXJp
Znkgc2Nyb2xsZWQgPT0gdHJ1ZSBmaXJzdCB0aW1lCi0gICAgLy8gdmVyaWZ5IHBhcmVudCdzIHNj
cm9sbCA9PSB0cnVlIHNlY29uZCB0aW1lCi0gICAgLy8gdmVyaWZ5IHBhcmVudCBhbmQgY2hpbGRz
IHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkCi0gICAgY2hpbGRTY3JvbGxQb3NpdGlvbiA9IGNoaWxk
cmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIFFWRVJJRlkoY2hpbGRyZW4uYXQoMCkt
PnNjcm9sbFJlY3Vyc2l2ZWx5KC0xMCwgLTEwKSk7Ci0gICAgUVZFUklGWShjaGlsZFNjcm9sbFBv
c2l0aW9uICE9IGNoaWxkcmVuLmF0KDApLT5zY3JvbGxQb3NpdGlvbigpKTsKLSAgICBzY3JvbGxQ
b3NpdGlvbiA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIFFW
RVJJRlkoY2hpbGRyZW4uYXQoMCktPnNjcm9sbFJlY3Vyc2l2ZWx5KC0xMCwgLTEwKSk7Ci0gICAg
UVZFUklGWShzY3JvbGxQb3NpdGlvbiAhPSB3ZWJQYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9z
aXRpb24oKSk7Ci0KLX0KLQogdm9pZCB0c3RfUVdlYkZyYW1lOjppbnRyb3NwZWN0UXRNZXRob2Rz
X2RhdGEoKQogewogICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oIm9iamVjdEV4cHJlc3Np
b24iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>