<?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>29031</bug_id>
          
          <creation_ts>2009-09-08 07:35:02 -0700</creation_ts>
          <short_desc>[v8] speed up access to windows impl from various methods</short_desc>
          <delta_ts>2009-10-07 09:59:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="anton muhin">antonm</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ager</cc>
    
    <cc>christian.plesner.hansen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>vitalyr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>145337</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-09-08 07:35:02 -0700</bug_when>
    <thetext>Currently we use lookupDOMWrapper to find out a proper JS wrapper which allows access to window C++ counterpart and stuff.  Let&apos;s access it immediately from holder (but that requires some duplication)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145339</commentid>
    <comment_count>1</comment_count>
      <attachid>39183</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-09-08 07:40:09 -0700</bug_when>
    <thetext>Created attachment 39183
First pass

Guys, I&apos;d esp. ask to review security-related changes as my knowledge of this domain is limited.

And sorry if svn-preparePatch put wrong paths---I&apos;ll fix it in a next round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145340</commentid>
    <comment_count>2</comment_count>
      <attachid>39184</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-09-08 07:42:31 -0700</bug_when>
    <thetext>Created attachment 39184
ChangeLog fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145349</commentid>
    <comment_count>3</comment_count>
      <attachid>39184</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-08 07:57:06 -0700</bug_when>
    <thetext>Comment on attachment 39184
ChangeLog fixed

I think this is ok.  The dangerous piece is in installDOMWindow, but that should run before any evil JS has had a chance to screw up the jsWindow&apos;s prototype chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145352</commentid>
    <comment_count>4</comment_count>
      <attachid>39184</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-08 07:59:43 -0700</bug_when>
    <thetext>Comment on attachment 39184
ChangeLog fixed

Actually, I lied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145355</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-08 08:02:51 -0700</bug_when>
    <thetext>Can you add the following test case:

Evil window creates an iframe to honest domain.  Evil window then sets its __proto__ to the iframe&apos;s window object.  Now, try to access properties that are normally on the WindowPrototype and see if you get the wrong answers w.r.t. security.

It might be ok.  I&apos;ll have to think about it more, but we should have the test case in any event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147317</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-15 10:23:35 -0700</bug_when>
    <thetext>I went over this this patch in detail with Anton.  Everything looks fine except for the NAMED and INDEX access checks function.  It&apos;s unclear whether |host| is always the same object as |holder|.  If the objects are different, we might be access checking one object and operating on another object.  He&apos;s going to investigate and write some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148700</commentid>
    <comment_count>7</comment_count>
      <attachid>39853</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-09-21 08:53:57 -0700</bug_when>
    <thetext>Created attachment 39853
Second iteration

Another pass.  It passes newly added layout tests.

The major difference is lookupDOMWrapper is restored in accessors checks.  I believe the reason is not security, but some technical details (if you&apos;re curious: the way v8 is implemented it installs security callback on global object proxy and I don&apos;t want to put pointers to window impl on it).  I&apos;ll address those issues with a separate CL.

IMPORTANT NOTE (sorry for the case): please, do not land this patch: if it passes a review, I&apos;d have to add a helper method to public V8 API (to lookup real named property).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149502</commentid>
    <comment_count>8</comment_count>
      <attachid>39853</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-23 14:18:09 -0700</bug_when>
    <thetext>Comment on attachment 39853
Second iteration

This looks great.  Much easier to understand than the last round.  One question:

+namespace v8 {
+Handle&lt;Value&gt; GetRealNamedProperty(
+      Handle&lt;Object&gt; object,
+      Handle&lt;String&gt; key);
+}

Shouldn&apos;t this be in a v8 header file?  As written, it looks like it&apos;s grabbing at some random symbol in V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149508</commentid>
    <comment_count>9</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-09-23 14:28:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 39853 [details])
&gt; This looks great.  Much easier to understand than the last round.  One
&gt; question:
&gt; 
&gt; +namespace v8 {
&gt; +Handle&lt;Value&gt; GetRealNamedProperty(
&gt; +      Handle&lt;Object&gt; object,
&gt; +      Handle&lt;String&gt; key);
&gt; +}
&gt; 
&gt; Shouldn&apos;t this be in a v8 header file?  As written, it looks like it&apos;s grabbing
&gt; at some random symbol in V8.

You&apos;re right, Adam---I just didn&apos;t want to touch v8&apos;s header, but still have something compilable.  And exactly for same reason I asked not to land this patch as I want to add this function into public V8 API.

So I&apos;ll ask for another round when this lookup goes into v8.

Thanks a lot for review, Adam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151904</commentid>
    <comment_count>10</comment_count>
      <attachid>40534</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-10-02 11:11:16 -0700</bug_when>
    <thetext>Created attachment 40534
Another iteration: now we have necessary method in V8 public API

Guys,

that&apos;s exactly the same patch, but now with the resolved dep on public V8 API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151967</commentid>
    <comment_count>11</comment_count>
      <attachid>40534</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-02 14:09:24 -0700</bug_when>
    <thetext>Comment on attachment 40534
Another iteration: now we have necessary method in V8 public API

I just saw your committer paperwork go by, so you can either land this one yourself, or we can put it though commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152263</commentid>
    <comment_count>12</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-10-05 04:41:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 40534 [details])
&gt; I just saw your committer paperwork go by, so you can either land this one
&gt; yourself, or we can put it though commit queue.

If you please, put it into commit queue---paper travels very slow over the ocean :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152307</commentid>
    <comment_count>13</comment_count>
      <attachid>40534</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-05 08:48:50 -0700</bug_when>
    <thetext>Comment on attachment 40534
Another iteration: now we have necessary method in V8 public API

Rejecting patch 40534 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=40534 from bug 29031 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152369</commentid>
    <comment_count>14</comment_count>
      <attachid>39853</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-05 11:03:53 -0700</bug_when>
    <thetext>Comment on attachment 39853
Second iteration

Obsoleting an older revision of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152370</commentid>
    <comment_count>15</comment_count>
      <attachid>40534</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-05 11:04:30 -0700</bug_when>
    <thetext>Comment on attachment 40534
Another iteration: now we have necessary method in V8 public API

IIRC the CodeGeneratorV8.pm diff failed to apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152697</commentid>
    <comment_count>16</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-10-06 06:14:48 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 40534 [details])
&gt; IIRC the CodeGeneratorV8.pm diff failed to apply.

Eric, anything I can help with?  I synced to 49163 and svn up&apos;ed it all fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153076</commentid>
    <comment_count>17</comment_count>
      <attachid>40796</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-10-07 09:37:17 -0700</bug_when>
    <thetext>Created attachment 40796
And another attempt, for WebKit@49221

Adam, Eric,

that&apos;s just successfully compiled (on Mac) version of the same patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153081</commentid>
    <comment_count>18</comment_count>
      <attachid>40796</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 09:39:40 -0700</bug_when>
    <thetext>Comment on attachment 40796
And another attempt, for WebKit@49221

Let&apos;s give it a spin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153092</commentid>
    <comment_count>19</comment_count>
      <attachid>40796</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-07 09:59:16 -0700</bug_when>
    <thetext>Comment on attachment 40796
And another attempt, for WebKit@49221

Clearing flags on attachment: 40796

Committed r49248: &lt;http://trac.webkit.org/changeset/49248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153093</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-07 09:59:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39183</attachid>
            <date>2009-09-08 07:40:09 -0700</date>
            <delta_ts>2009-09-08 07:42:31 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>WebCore.patch</filename>
            <type>text/plain</type>
            <size>10601</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ4MTUz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDkt
MDggIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24g
YW5kIGJ1ZyBVUkwgKE9PUFMhKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjkwMzEKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBw
ZXI6OmdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmNyZWF0ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhQcm94eTo6aW5zdGFsbERPTVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09S
X0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAo
V2ViQ29yZTo6SU5ERVhFRF9QUk9QRVJUWV9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6TkFN
RURfUFJPUEVSVFlfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6Ok5BTUVEX0FDQ0VTU19DSEVD
Syk6CisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX0FDQ0VTU19DSEVDSyk6CisKIDIwMDktMDkt
MDggIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KSW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCShyZXZpc2lvbiA0ODA5OCkKKysrIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC01MTksMTEgKzUxOSwxNyBAQCBFTkQKICAg
ICAgICAgfQogCiAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsidjhPblByb3RvIn0gfHwgJGF0dHJF
eHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7CisgICAgICBpZiAoJGNsYXNzSW5kZXggZXEg
IkRPTVdJTkRPVyIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKK0VORAor
ICAgICAgfSBlbHNlIHsKICAgICAgICAgIyBwZXJmb3JtIGxvb2t1cCBmaXJzdAogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4Ojok
Y2xhc3NJbmRleCwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogRU5ECisgICAgICB9CiAgICAgICAgIEhvbGRlclRvTmF0aXZl
KCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsICRjbGFzc0luZGV4KTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CkBAIC02OTEsMTEgKzY5Nywx
NyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9ICZpbXBfaW5zdGFuY2U7XG4iKTsK
IAogICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9KSB7CisgICAgICBpZiAoJGNs
YXNzSW5kZXggZXEgIkRPTVdJTkRPVyIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgPDxFTkQpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xk
ZXIoKTsKK0VORAorICAgICAgfSBlbHNlIHsKICAgICAgICAgIyBwZXJmb3JtIGxvb2t1cCBmaXJz
dAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhD
bGFzc0luZGV4OjokY2xhc3NJbmRleCwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNF
bXB0eSgpKSByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogRU5ECisgICAgICB9CiAgICAgICAgIEhv
bGRlclRvTmF0aXZlKCRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsICRjbGFzc0luZGV4KTsKICAg
ICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CkluZGV4
OiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDQ4MDk4KQorKysgYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwLDYgKzM0MCw3IEBAIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEQKIAogICAgICAgICBkZXNjcmlwdG9yLT5Qcm90
b3R5cGVUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVS
VFlfR0VUVEVSKERPTVdpbmRvdykpOwogICAgICAgICBkZXNjcmlwdG9yLT5Qcm90b3R5cGVUZW1w
bGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVydHlIYW5kbGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZX0dF
VFRFUihET01XaW5kb3cpKTsKKyAgICAgICAgZGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUo
KS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprRE9NV2luZG93SW50ZXJuYWxGaWVs
ZENvdW50KTsKIAogICAgICAgICBkZXNjcmlwdG9yLT5TZXRIaWRkZW5Qcm90b3R5cGUodHJ1ZSk7
CiAKSW5kZXg6IGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA0ODA5OCkKKysrIGJpbmRpbmdzL3Y4L1Y4UHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTcsNiArODk3LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
OkNvbnRleHQ+IFY4UHJveHk6OmNyZQogCiAgICAgLy8gSW5zdGFsbCBhIHNlY3VyaXR5IGhhbmRs
ZXIgd2l0aCBWOC4KICAgICBnbG9iYWxUZW1wbGF0ZS0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3Mo
VjhDdXN0b206OnY4RE9NV2luZG93TmFtZWRTZWN1cml0eUNoZWNrLCBWOEN1c3RvbTo6djhET01X
aW5kb3dJbmRleGVkU2VjdXJpdHlDaGVjaywgdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6
OkRPTVdJTkRPVykpOworICAgIGdsb2JhbFRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQo
VjhDdXN0b206OmtET01XaW5kb3dJbnRlcm5hbEZpZWxkQ291bnQpOwogCiAgICAgLy8gRHluYW1p
Y2FsbHkgdGVsbCB2OCBhYm91dCBvdXIgZXh0ZW5zaW9ucyBub3cuCiAgICAgT3duQXJyYXlQdHI8
Y29uc3QgY2hhcio+IGV4dGVuc2lvbk5hbWVzKG5ldyBjb25zdCBjaGFyKlttX2V4dGVuc2lvbnMu
c2l6ZSgpXSk7CkBAIC05MzQsMTIgKzkzNSwxNCBAQCBib29sIFY4UHJveHk6Omluc3RhbGxET01X
aW5kb3codjg6OkhhbmRsCiAKICAgICAvLyBXcmFwIHRoZSB3aW5kb3cuCiAgICAgVjhET01XcmFw
cGVyOjpzZXRET01XcmFwcGVyKGpzV2luZG93LCBWOENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJ
bmRleDo6RE9NV0lORE9XKSwgd2luZG93KTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChqc1dpbmRvdy0+R2V0UHJvdG90eXBlKCkp
LCBWOENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XKSwgd2luZG93KTsK
IAogICAgIHdpbmRvdy0+cmVmKCk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JE
T01PYmplY3Qod2luZG93LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGpzV2luZG93
KSk7CiAKICAgICAvLyBJbnNlcnQgdGhlIHdpbmRvdyBpbnN0YW5jZSBhcyB0aGUgcHJvdG90eXBl
IG9mIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhHbG9i
YWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OEdsb2JhbC0+R2V0UHJvdG90eXBlKCkpLCBW
OENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XKSwgd2luZG93KTsKICAg
ICB2OEdsb2JhbC0+U2V0KGltcGxpY2l0UHJvdG9TdHJpbmcsIGpzV2luZG93KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cAkocmV2aXNpb24gNDgwOTgpCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsMTEgKzE1Miw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29udmVydEJhc2UKIAogQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0V2
ZW50KQogewotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVy
Ojpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7
Ci0gICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob2xkZXIpLT5mcmFtZSgp
OworICAgIEZyYW1lKiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkpLT5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUgfHwgIVY4UHJveHk6OmNhbkFjY2Vzc0ZyYW1lKGZyYW1lLCB0
cnVlKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAtMTcwLDExICsxNjYs
NyBAQCBBQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93RXZlbnQpCiAKIEFDQ0VTU09SX1NFVFRFUihE
T01XaW5kb3dFdmVudCkKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4
RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5m
by5UaGlzKCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBGcmFtZSogZnJhbWUgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxE
T01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob2xkZXIpLT5mcmFtZSgpOworICAg
IEZyYW1lKiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdp
bmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkpLT5mcmFtZSgpOwog
ICAgIGlmICghZnJhbWUgfHwgIVY4UHJveHk6OmNhbkFjY2Vzc0ZyYW1lKGZyYW1lLCB0cnVlKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTEsMTEgKzE4Myw3IEBAIEFDQ0VTU09SX0dFVFRFUihE
T01XaW5kb3dDcnlwdG8pCiAKIEFDQ0VTU09SX1NFVFRFUihET01XaW5kb3dMb2NhdGlvbikKIHsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3Vw
RE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5UaGlzKCkpOwotICAgIGlm
IChob2xkZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBET01XaW5kb3cqIGlt
cCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFz
c0luZGV4OjpET01XSU5ET1csIGhvbGRlcik7CisgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdy
YXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9N
V0lORE9XLCBpbmZvLkhvbGRlcigpKTsKICAgICBXaW5kb3dTZXRMb2NhdGlvbihpbXAsIHRvV2Vi
Q29yZVN0cmluZyh2YWx1ZSkpOwogfQogCkBAIC0zOTksMTEgKzM4Nyw3IEBAIHN0YXRpYyBTdHJp
bmcgZXZlbnROYW1lRnJvbUF0dHJpYnV0ZU5hbWUKIAogQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRv
d0V2ZW50SGFuZGxlcikKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4
RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5m
by5UaGlzKCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGhvbGRlcik7CisgICAgRE9NV2lu
ZG93KiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+
KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLkhvbGRlcigpKTsKICAgICBpZiAoIWltcC0+
ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MzAsMTEgKzQxNCw3IEBAIEFDQ0VTU09S
X1NFVFRFUihET01XaW5kb3dFdmVudEhhbmRsZXIpCiAKIEFDQ0VTU09SX0dFVFRFUihET01XaW5k
b3dFdmVudEhhbmRsZXIpCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBW
OERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGlu
Zm8uVGhpcygpKTsKLSAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLQotICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9s
ZGVyKTsKKyAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZl
T2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkp
OwogICAgIGlmICghaW1wLT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogCkBAIC03ODMsMTEgKzc2Myw4IEBAIENBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dPcGVu
KQogSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoRE9NV2luZG93KQogewogICAgIElOQ19TVEFUUygi
RE9NLkRPTVdpbmRvdy5JbmRleGVkUHJvcGVydHlHZXR0ZXIiKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNz
SW5kZXg6OkRPTVdJTkRPVywgaW5mby5UaGlzKCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIAotICAgIERPTVdp
bmRvdyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2lu
ZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9sZGVyKTsKKyAgICBET01XaW5kb3cqIHdp
bmRvdyA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhD
bGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkpOwogICAgIGlmICghd2luZG93KQog
ICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIApAQCAtODA3LDExICs3
ODQsOCBAQCBOQU1FRF9QUk9QRVJUWV9HRVRURVIoRE9NV2luZG93KQogewogICAgIElOQ19TVEFU
UygiRE9NLkRPTVdpbmRvdy5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAKLSAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENs
YXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5UaGlzKCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLQotICAgIERP
TVdpbmRvdyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9N
V2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9sZGVyKTsKKyAgICAvLyBUT0RPKGFu
dG9ubSk6IGludmVzdGlnYXRlIHdoYXQgY29udmVydFRvTmF0aXZlT2JqZWN0IGRvZXMgZm9yIHRo
ZSBjYXNlIG9mIERPTVdJTkRPVy4KKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5E
T1csIGluZm8uSG9sZGVyKCkpOwogICAgIGlmICghd2luZG93KQogICAgICAgICByZXR1cm4gbm90
SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIApAQCAtODI3LDcgKzgwMSw3IEBAIE5BTUVEX1BST1BF
UlRZX0dFVFRFUihET01XaW5kb3cpCiAgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBjaGlsZC0+ZG9tV2luZG93KCkp
OwogCiAgICAgLy8gU2VhcmNoIElETCBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgcHJvdG90eXBl
Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGhvbGRlci0+R2V0UmVhbE5hbWVk
UHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZXN1bHQgPSBpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBl
Q2hhaW4obmFtZSk7CiAgICAgaWYgKCFyZXN1bHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwogCkBAIC05MDYsMTIgKzg4MCw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChET01XaW5k
b3dDbGVhckludGVydmEKIAogTkFNRURfQUNDRVNTX0NIRUNLKERPTVdpbmRvdykKIHsKLSAgICBB
U1NFUlQoVjhDbGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMyVmFsdWUoKSkgPT0gVjhDbGFz
c0luZGV4OjpET01XSU5ET1cpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0g
VjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBo
b3N0KTsKLSAgICBpZiAod2luZG93LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOyAg
Ly8gdGhlIGZyYW1lIGlzIGdvbmUuCi0KLSAgICBET01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4
OjpET01XSU5ET1csIHdpbmRvdyk7CisgICAgRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6
RE9NV0lORE9XLCBob3N0KTsKIAogICAgIEFTU0VSVCh0YXJnZXRXaW5kb3cpOwogCkBAIC05MzIs
MTIgKzkwMSw3IEBAIE5BTUVEX0FDQ0VTU19DSEVDSyhET01XaW5kb3cpCiAKIElOREVYRURfQUND
RVNTX0NIRUNLKERPTVdpbmRvdykKIHsKLSAgICBBU1NFUlQoVjhDbGFzc0luZGV4OjpGcm9tSW50
KGRhdGEtPkludDMyVmFsdWUoKSkgPT0gVjhDbGFzc0luZGV4OjpET01XSU5ET1cpOwotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFw
cGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob3N0KTsKLSAgICBpZiAod2luZG93LklzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRE9NV2luZG93KiB0YXJnZXRXaW5k
b3cgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xh
c3NJbmRleDo6RE9NV0lORE9XLCB3aW5kb3cpOworICAgIERPTVdpbmRvdyogdGFyZ2V0V2luZG93
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNz
SW5kZXg6OkRPTVdJTkRPVywgaG9zdCk7CiAKICAgICBBU1NFUlQodGFyZ2V0V2luZG93KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39184</attachid>
            <date>2009-09-08 07:42:31 -0700</date>
            <delta_ts>2009-09-21 08:53:57 -0700</delta_ts>
            <desc>ChangeLog fixed</desc>
            <filename>WebCore.patch</filename>
            <type>text/plain</type>
            <size>10651</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ4MTUz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDktMDkt
MDggIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGZXRjaCBwb2ludGVycyB0byBDKysgRE9N
IHdpbmRvdyBpbW1lZGlhdGVseSBmcm9tIGhvbGRlcgorICAgICAgICBvYmplY3QgKGRvIG5vdCBz
ZWFyY2ggcHJvdG90eXBlIGNoYWdlIGZvciBwcm9wZXIgSlMgd3JhcHBlcikuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTAzMQorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhQcm94eTo6Y3JlYXRlTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpW
OFByb3h5OjppbnN0YWxsRE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVS
KToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgIChXZWJDb3Jl
OjpJTkRFWEVEX1BST1BFUlRZX0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpOQU1FRF9QUk9Q
RVJUWV9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6TkFNRURfQUNDRVNTX0NIRUNLKToKKyAg
ICAgICAgKFdlYkNvcmU6OklOREVYRURfQUNDRVNTX0NIRUNLKToKKwogMjAwOS0wOS0wOCAgQW5k
cmFzIEJlY3NpICA8YmVjc2kuYW5kcmFzQHN0dWQudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0JKHJldmlzaW9uIDQ4MDk4KQorKysgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTUxOSwxMSArNTE5LDE3IEBAIEVORAogICAgICAgICB9
CiAKICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSB8fCAkYXR0ckV4dC0+eyJW
OERpc2FsbG93U2hhZG93aW5nIn0pIHsKKyAgICAgIGlmICgkY2xhc3NJbmRleCBlcSAiRE9NV0lO
RE9XIikgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOworRU5ECisgICAgICB9
IGVsc2UgewogICAgICAgICAjIHBlcmZvcm0gbG9va3VwIGZpcnN0CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OiRjbGFzc0lu
ZGV4LCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiBFTkQKKyAgICAgIH0KICAgICAgICAgSG9sZGVyVG9OYXRpdmUoJGRhdGFO
b2RlLCAkaW1wbENsYXNzTmFtZSwgJGNsYXNzSW5kZXgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKQEAgLTY5MSwxMSArNjk3LDE3IEBAIHN1
YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gJmltcF9pbnN0YW5jZTtcbiIpOwogCiAgICAg
fSBlbHNpZiAoJGF0dHJFeHQtPnsidjhPblByb3RvIn0pIHsKKyAgICAgIGlmICgkY2xhc3NJbmRl
eCBlcSAiRE9NV0lORE9XIikgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVO
RCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwor
RU5ECisgICAgICB9IGVsc2UgewogICAgICAgICAjIHBlcmZvcm0gbG9va3VwIGZpcnN0CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5k
ZXg6OiRjbGFzc0luZGV4LCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiBFTkQKKyAgICAgIH0KICAgICAgICAgSG9sZGVyVG9O
YXRpdmUoJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSwgJGNsYXNzSW5kZXgpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKSW5kZXg6IGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAkocmV2aXNpb24gNDgwOTgpCisrKyBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsNiArMzQwLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RAogCiAgICAgICAgIGRlc2NyaXB0b3ItPlByb3RvdHlwZVRl
bXBsYXRlKCktPlNldE5hbWVkUHJvcGVydHlIYW5kbGVyKFVTRV9OQU1FRF9QUk9QRVJUWV9HRVRU
RVIoRE9NV2luZG93KSk7CiAgICAgICAgIGRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCkt
PlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERP
TVdpbmRvdykpOworICAgICAgICBkZXNjcmlwdG9yLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLT5TZXRJ
bnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtET01XaW5kb3dJbnRlcm5hbEZpZWxkQ291bnQp
OwogCiAgICAgICAgIGRlc2NyaXB0b3ItPlNldEhpZGRlblByb3RvdHlwZSh0cnVlKTsKIApJbmRl
eDogYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHAJKHJldmlzaW9uIDQ4MDk4KQorKysgYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg5Nyw2ICs4OTcsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4
dD4gVjhQcm94eTo6Y3JlCiAKICAgICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFuZGxlciB3aXRo
IFY4LgogICAgIGdsb2JhbFRlbXBsYXRlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOEN1c3Rv
bTo6djhET01XaW5kb3dOYW1lZFNlY3VyaXR5Q2hlY2ssIFY4Q3VzdG9tOjp2OERPTVdpbmRvd0lu
ZGV4ZWRTZWN1cml0eUNoZWNrLCB2ODo6SW50ZWdlcjo6TmV3KFY4Q2xhc3NJbmRleDo6RE9NV0lO
RE9XKSk7CisgICAgZ2xvYmFsVGVtcGxhdGUtPlNldEludGVybmFsRmllbGRDb3VudChWOEN1c3Rv
bTo6a0RPTVdpbmRvd0ludGVybmFsRmllbGRDb3VudCk7CiAKICAgICAvLyBEeW5hbWljYWxseSB0
ZWxsIHY4IGFib3V0IG91ciBleHRlbnNpb25zIG5vdy4KICAgICBPd25BcnJheVB0cjxjb25zdCBj
aGFyKj4gZXh0ZW5zaW9uTmFtZXMobmV3IGNvbnN0IGNoYXIqW21fZXh0ZW5zaW9ucy5zaXplKCld
KTsKQEAgLTkzNCwxMiArOTM1LDE0IEBAIGJvb2wgVjhQcm94eTo6aW5zdGFsbERPTVdpbmRvdyh2
ODo6SGFuZGwKIAogICAgIC8vIFdyYXAgdGhlIHdpbmRvdy4KICAgICBWOERPTVdyYXBwZXI6OnNl
dERPTVdyYXBwZXIoanNXaW5kb3csIFY4Q2xhc3NJbmRleDo6VG9JbnQoVjhDbGFzc0luZGV4OjpE
T01XSU5ET1cpLCB3aW5kb3cpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGpzV2luZG93LT5HZXRQcm90b3R5cGUoKSksIFY4Q2xh
c3NJbmRleDo6VG9JbnQoVjhDbGFzc0luZGV4OjpET01XSU5ET1cpLCB3aW5kb3cpOwogCiAgICAg
d2luZG93LT5yZWYoKTsKICAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVj
dCh3aW5kb3csIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoanNXaW5kb3cpKTsKIAog
ICAgIC8vIEluc2VydCB0aGUgd2luZG93IGluc3RhbmNlIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhl
IHNoYWRvdyBvYmplY3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OEdsb2JhbCA9IGNv
bnRleHQtPkdsb2JhbCgpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4R2xvYmFsLT5HZXRQcm90b3R5cGUoKSksIFY4Q2xhc3NJ
bmRleDo6VG9JbnQoVjhDbGFzc0luZGV4OjpET01XSU5ET1cpLCB3aW5kb3cpOwogICAgIHY4R2xv
YmFsLT5TZXQoaW1wbGljaXRQcm90b1N0cmluZywganNXaW5kb3cpOwogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZp
c2lvbiA0ODA5OCkKKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMSArMTUyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb252ZXJ0QmFzZQogCiBBQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93RXZlbnQpCiB7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1
cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uVGhpcygpKTsKLSAgICBp
ZiAoaG9sZGVyLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQot
ICAgIEZyYW1lKiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERP
TVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGhvbGRlciktPmZyYW1lKCk7CisgICAg
RnJhbWUqIGZyYW1lID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2lu
ZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSktPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSB8fCAhVjhQcm94eTo6Y2FuQWNjZXNzRnJhbWUoZnJhbWUsIHRydWUpKQog
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xNzAsMTEgKzE2Niw3IEBAIEFD
Q0VTU09SX0dFVFRFUihET01XaW5kb3dFdmVudCkKIAogQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRv
d0V2ZW50KQogewotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFw
cGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMo
KSk7Ci0gICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZy
YW1lKiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRv
dz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGhvbGRlciktPmZyYW1lKCk7CisgICAgRnJhbWUq
IGZyYW1lID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihW
OENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSktPmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSB8fCAhVjhQcm94eTo6Y2FuQWNjZXNzRnJhbWUoZnJhbWUsIHRydWUpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTE5MSwxMSArMTgzLDcgQEAgQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRv
d0NyeXB0bykKIAogQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRvd0xvY2F0aW9uKQogewotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFw
cGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7Ci0gICAgaWYgKGhvbGRl
ci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIERPTVdpbmRvdyogaW1wID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6
OkRPTVdJTkRPVywgaG9sZGVyKTsKKyAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1cs
IGluZm8uSG9sZGVyKCkpOwogICAgIFdpbmRvd1NldExvY2F0aW9uKGltcCwgdG9XZWJDb3JlU3Ry
aW5nKHZhbHVlKSk7CiB9CiAKQEAgLTM5OSwxMSArMzg3LDcgQEAgc3RhdGljIFN0cmluZyBldmVu
dE5hbWVGcm9tQXR0cmlidXRlTmFtZQogCiBBQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93RXZlbnRI
YW5kbGVyKQogewotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFw
cGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMo
KSk7Ci0gICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIERP
TVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2lu
ZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9sZGVyKTsKKyAgICBET01XaW5kb3cqIGlt
cCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFz
c0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkpOwogICAgIGlmICghaW1wLT5mcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTQzMCwxMSArNDE0LDcgQEAgQUNDRVNTT1JfU0VUVEVS
KERPTVdpbmRvd0V2ZW50SGFuZGxlcikKIAogQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0V2ZW50
SGFuZGxlcikKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3Jh
cHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5UaGlz
KCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwotCi0gICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05h
dGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob2xkZXIpOwor
ICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAgICAg
aWYgKCFpbXAtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAg
LTc4MywxMSArNzYzLDggQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd09wZW4pCiBJTkRF
WEVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9N
V2luZG93LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6
RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7Ci0gICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCi0gICAgRE9NV2luZG93KiB3
aW5kb3cgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4
Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob2xkZXIpOworICAgIERPTVdpbmRvdyogd2luZG93ID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5k
ZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAg
IHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCkBAIC04MDcsMTEgKzc4NCw4IEBA
IE5BTUVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
RE9NV2luZG93Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRl
eDo6RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7Ci0gICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwotCi0gICAgRE9NV2luZG93
KiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+
KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob2xkZXIpOworICAgIC8vIFRPRE8oYW50b25tKTog
aW52ZXN0aWdhdGUgd2hhdCBjb252ZXJ0VG9OYXRpdmVPYmplY3QgZG9lcyBmb3IgdGhlIGNhc2Ug
b2YgRE9NV0lORE9XLgorICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5m
by5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybiBub3RIYW5kbGVk
QnlJbnRlcmNlcHRvcigpOwogCkBAIC04MjcsNyArODAxLDcgQEAgTkFNRURfUFJPUEVSVFlfR0VU
VEVSKERPTVdpbmRvdykKICAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhP
YmplY3QoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGNoaWxkLT5kb21XaW5kb3coKSk7CiAKICAg
ICAvLyBTZWFyY2ggSURMIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBwcm90b3R5cGUKLSAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gaG9sZGVyLT5HZXRSZWFsTmFtZWRQcm9wZXJ0
eUluUHJvdG90eXBlQ2hhaW4obmFtZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3Vs
dCA9IGluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihu
YW1lKTsKICAgICBpZiAoIXJlc3VsdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAKQEAgLTkwNiwxMiArODgwLDcgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd0NsZWFy
SW50ZXJ2YQogCiBOQU1FRF9BQ0NFU1NfQ0hFQ0soRE9NV2luZG93KQogewotICAgIEFTU0VSVChW
OENsYXNzSW5kZXg6OkZyb21JbnQoZGF0YS0+SW50MzJWYWx1ZSgpKSA9PSBWOENsYXNzSW5kZXg6
OkRPTVdJTkRPVyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdy
YXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGhvc3QpOwot
ICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0aGUg
ZnJhbWUgaXMgZ29uZS4KLQotICAgIERPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJ
TkRPVywgd2luZG93KTsKKyAgICBET01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5E
T1csIGhvc3QpOwogCiAgICAgQVNTRVJUKHRhcmdldFdpbmRvdyk7CiAKQEAgLTkzMiwxMiArOTAx
LDcgQEAgTkFNRURfQUNDRVNTX0NIRUNLKERPTVdpbmRvdykKIAogSU5ERVhFRF9BQ0NFU1NfQ0hF
Q0soRE9NV2luZG93KQogewotICAgIEFTU0VSVChWOENsYXNzSW5kZXg6OkZyb21JbnQoZGF0YS0+
SW50MzJWYWx1ZSgpKSA9PSBWOENsYXNzSW5kZXg6OkRPTVdJTkRPVyk7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhD
bGFzc0luZGV4OjpET01XSU5ET1csIGhvc3QpOwotICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBET01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4
OjpET01XSU5ET1csIHdpbmRvdyk7CisgICAgRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6
RE9NV0lORE9XLCBob3N0KTsKIAogICAgIEFTU0VSVCh0YXJnZXRXaW5kb3cpOwogCg==
</data>
<flag name="review"
          id="20242"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39853</attachid>
            <date>2009-09-21 08:53:57 -0700</date>
            <delta_ts>2009-10-05 11:03:53 -0700</delta_ts>
            <desc>Second iteration</desc>
            <filename>WebCore.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64"></data>
<flag name="commit-queue"
          id="21170"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40534</attachid>
            <date>2009-10-02 11:11:16 -0700</date>
            <delta_ts>2009-10-07 09:37:17 -0700</delta_ts>
            <desc>Another iteration: now we have necessary method in V8 public API</desc>
            <filename>WebCore.patch</filename>
            <type>text/plain</type>
            <size>7052</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODk3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDktMDktMDggIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
ZXRjaCBwb2ludGVycyB0byBDKysgRE9NIHdpbmRvdyBpbW1lZGlhdGVseSBmcm9tIGhvbGRlcgor
ICAgICAgICBvYmplY3QgKGRvIG5vdCBzZWFyY2ggcHJvdG90eXBlIGNoYWluIGZvciBwcm9wZXIg
SlMgd3JhcHBlcikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yOTAzMQorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6Y3JlYXRlTmV3Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjppbnN0YWxsRE9NV2luZG93KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NF
VFRFUik6CisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX1BST1BFUlRZX0dFVFRFUik6CisgICAg
ICAgIChXZWJDb3JlOjpOQU1FRF9QUk9QRVJUWV9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6
TkFNRURfQUNDRVNTX0NIRUNLKToKKyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfQUNDRVNTX0NI
RUNLKToKKwogMjAwOS0xMC0wMSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAbm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDQ4OTc2
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTAwLDExICs1MDAsMTcgQEAKICAgICAgICAgfQogCiAgICAgfSBlbHNpZiAo
JGF0dHJFeHQtPnsidjhPblByb3RvIn0gfHwgJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2lu
ZyJ9KSB7CisgICAgICBpZiAoJGNsYXNzSW5kZXggZXEgIkRPTVdJTkRPVyIpIHsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKK0VORAorICAgICAgfSBlbHNlIHsKICAgICAgICAg
IyBwZXJmb3JtIGxvb2t1cCBmaXJzdAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8
PEVORCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6
Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjokY2xhc3NJbmRleCwgaW5mby5UaGlzKCkp
OwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogRU5E
CisgICAgICB9CiAgICAgICAgIEhvbGRlclRvTmF0aXZlKCRkYXRhTm9kZSwgJGltcGxDbGFzc05h
bWUsICRjbGFzc0luZGV4KTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCA8PEVORCk7CkBAIC02NzIsMTEgKzY3OCwxNyBAQAogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSAmaW1wX2luc3RhbmNlO1xu
Iik7CiAKICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSkgeworICAgICAgaWYg
KCRjbGFzc0luZGV4IGVxICJET01XSU5ET1ciKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsIDw8RU5EKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
SG9sZGVyKCk7CitFTkQKKyAgICAgIH0gZWxzZSB7CiAgICAgICAgICMgcGVyZm9ybSBsb29rdXAg
Zmlyc3QKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVy
KFY4Q2xhc3NJbmRleDo6JGNsYXNzSW5kZXgsIGluZm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVy
LklzRW1wdHkoKSkgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIEVORAorICAgICAgfQogICAgICAg
ICBIb2xkZXJUb05hdGl2ZSgkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkY2xhc3NJbmRleCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2aXNpb24gNDg5NzYpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0MCw2ICszNDAsNyBAQAogCiAgICAgICAgIGRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRl
KCktPlNldE5hbWVkUHJvcGVydHlIYW5kbGVyKFVTRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRE9N
V2luZG93KSk7CiAgICAgICAgIGRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCktPlNldElu
ZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERPTVdpbmRv
dykpOworICAgICAgICBkZXNjcmlwdG9yLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLT5TZXRJbnRlcm5h
bEZpZWxkQ291bnQoVjhDdXN0b206OmtET01XaW5kb3dJbnRlcm5hbEZpZWxkQ291bnQpOwogCiAg
ICAgICAgIGRlc2NyaXB0b3ItPlNldEhpZGRlblByb3RvdHlwZSh0cnVlKTsKIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA0ODk3NikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNCw2ICs5MDQsNyBAQAogCiAgICAg
Ly8gSW5zdGFsbCBhIHNlY3VyaXR5IGhhbmRsZXIgd2l0aCBWOC4KICAgICBnbG9iYWxUZW1wbGF0
ZS0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3MoVjhDdXN0b206OnY4RE9NV2luZG93TmFtZWRTZWN1
cml0eUNoZWNrLCBWOEN1c3RvbTo6djhET01XaW5kb3dJbmRleGVkU2VjdXJpdHlDaGVjaywgdjg6
OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6OkRPTVdJTkRPVykpOworICAgIGdsb2JhbFRlbXBs
YXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtET01XaW5kb3dJbnRlcm5hbEZp
ZWxkQ291bnQpOwogCiAgICAgLy8gVXNlZCB0byBhdm9pZCBzbGVlcCBjYWxscyBpbiB1bmxvYWQg
aGFuZGxlcnMuCiAgICAgaWYgKCFyZWdpc3RlcmVkRXh0ZW5zaW9uV2l0aFY4KERhdGVFeHRlbnNp
b246OmdldCgpKSkKQEAgLTk0NSwxMiArOTQ2LDE0IEBACiAKICAgICAvLyBXcmFwIHRoZSB3aW5k
b3cuCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGpzV2luZG93LCBWOENsYXNzSW5k
ZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XKSwgd2luZG93KTsKKyAgICBWOERPTVdy
YXBwZXI6OnNldERPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChqc1dpbmRv
dy0+R2V0UHJvdG90eXBlKCkpLCBWOENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6RE9N
V0lORE9XKSwgd2luZG93KTsKIAogICAgIHdpbmRvdy0+cmVmKCk7CiAgICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qod2luZG93LCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KGpzV2luZG93KSk7CiAKICAgICAvLyBJbnNlcnQgdGhlIHdpbmRvdyBpbnN0YW5j
ZSBhcyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gdjhHbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKKyAgICBWOERPTVdyYXBw
ZXI6OnNldERPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OEdsb2JhbC0+
R2V0UHJvdG90eXBlKCkpLCBWOENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6RE9NV0lO
RE9XKSwgd2luZG93KTsKICAgICB2OEdsb2JhbC0+U2V0KGltcGxpY2l0UHJvdG9TdHJpbmcsIGpz
V2luZG93KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDQ4OTc2KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTcsMTEgKzE5Nyw3IEBACiAKIEFDQ0VTU09SX1NFVFRFUihET01XaW5kb3dM
b2NhdGlvbikKIHsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3Jh
cHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5UaGlz
KCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBE
T01XaW5kb3cqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdp
bmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGhvbGRlcik7CisgICAgRE9NV2luZG93KiBp
bXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xh
c3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLkhvbGRlcigpKTsKICAgICBXaW5kb3dTZXRMb2NhdGlv
bihpbXAsIHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOwogfQogCkBAIC04MTQsMTEgKzgxMCw4IEBA
CiBJTkRFWEVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uRE9NV2luZG93LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJ
bmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7Ci0gICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCi0gICAgRE9NV2lu
ZG93KiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5k
b3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBob2xkZXIpOworICAgIERPTVdpbmRvdyogd2lu
ZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENs
YXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3aW5kb3cpCiAg
ICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCkBAIC04MzgsMTEgKzgz
MSw4IEBACiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93Lk5hbWVkUHJvcGVydHlHZXR0
ZXIiKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVy
Ojpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7
Ci0gICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOwotCi0gICAgRE9NV2luZG93KiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6OmNv
bnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBo
b2xkZXIpOworICAgIC8vIFRPRE8oYW50b25tKTogaW52ZXN0aWdhdGUgd2hhdCBjb252ZXJ0VG9O
YXRpdmVPYmplY3QgZG9lcyBmb3IgdGhlIGNhc2Ugb2YgRE9NV0lORE9XLgorICAgIERPTVdpbmRv
dyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93
PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3aW5k
b3cpCiAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCkBAIC04NTgs
NyArODQ4LDcgQEAKICAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmpl
Y3QoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGNoaWxkLT5kb21XaW5kb3coKSk7CiAKICAgICAv
LyBTZWFyY2ggSURMIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBwcm90b3R5cGUKLSAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gaG9sZGVyLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUlu
UHJvdG90eXBlQ2hhaW4obmFtZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9
IGluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5KG5hbWUpOwogICAgIGlmICghcmVz
dWx0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAo=
</data>
<flag name="review"
          id="21774"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="21877"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40796</attachid>
            <date>2009-10-07 09:37:17 -0700</date>
            <delta_ts>2009-10-07 09:59:15 -0700</delta_ts>
            <desc>And another attempt, for WebKit@49221</desc>
            <filename>DOMWindow.patch</filename>
            <type>text/plain</type>
            <size>7029</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTIyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDktMDggIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
ZXRjaCBwb2ludGVycyB0byBDKysgRE9NIHdpbmRvdyBpbW1lZGlhdGVseSBmcm9tIGhvbGRlcgor
ICAgICAgICBvYmplY3QgKGRvIG5vdCBzZWFyY2ggcHJvdG90eXBlIGNoYWluIGZvciBwcm9wZXIg
SlMgd3JhcHBlcikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yOTAzMQorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6Y3JlYXRlTmV3Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjppbnN0YWxsRE9NV2luZG93KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NF
VFRFUik6CisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX1BST1BFUlRZX0dFVFRFUik6CisgICAg
ICAgIChXZWJDb3JlOjpOQU1FRF9QUk9QRVJUWV9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6
TkFNRURfQUNDRVNTX0NIRUNLKToKKyAgICAgICAgKFdlYkNvcmU6OklOREVYRURfQUNDRVNTX0NI
RUNLKToKIDIwMDktMTAtMDYgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoYnVpbGQgZml4KS4KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDkyMjEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkp
CkBAIC01MTYsMTEgKzUxNiwxNyBAQAogICAgICAgICB9CiAKICAgICB9IGVsc2lmICgkYXR0ckV4
dC0+eyJ2OE9uUHJvdG8ifSB8fCAkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsK
KyAgICAgIGlmICgkY2xhc3NJbmRleCBlcSAiRE9NV0lORE9XIikgeworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLkhvbGRlcigpOworRU5ECisgICAgICB9IGVsc2UgewogICAgICAgICAjIHBlcmZv
cm0gbG9va3VwIGZpcnN0CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3Vw
RE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OiRjbGFzc0luZGV4LCBpbmZvLlRoaXMoKSk7CiAgICAg
aWYgKGhvbGRlci5Jc0VtcHR5KCkpIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiBFTkQKKyAgICAg
IH0KICAgICAgICAgSG9sZGVyVG9OYXRpdmUoJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSwgJGNs
YXNzSW5kZXgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
IDw8RU5EKTsKQEAgLTY5MiwxMSArNjk4LDE3IEBACiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9ICZpbXBfaW5zdGFuY2U7XG4iKTsKIAog
ICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9KSB7CisgICAgICBpZiAoJGNsYXNz
SW5kZXggZXEgIkRPTVdJTkRPVyIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
PDxFTkQpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIo
KTsKK0VORAorICAgICAgfSBlbHNlIHsKICAgICAgICAgIyBwZXJmb3JtIGxvb2t1cCBmaXJzdAog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFz
c0luZGV4OjokY2xhc3NJbmRleCwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKSByZXR1cm47CiBFTkQKKyAgICAgIH0KICAgICAgICAgSG9sZGVyVG9OYXRpdmUoJGRhdGFO
b2RlLCAkaW1wbENsYXNzTmFtZSwgJGNsYXNzSW5kZXgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDQ5MjIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsNiArMzQxLDcgQEAKIAogICAg
ICAgICBkZXNjcmlwdG9yLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFu
ZGxlcihVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERPTVdpbmRvdykpOwogICAgICAgICBkZXNj
cmlwdG9yLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVydHlIYW5kbGVyKFVT
RV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpKTsKKyAgICAgICAgZGVzY3JpcHRv
ci0+UHJvdG90eXBlVGVtcGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjpr
RE9NV2luZG93SW50ZXJuYWxGaWVsZENvdW50KTsKIAogICAgICAgICBkZXNjcmlwdG9yLT5TZXRI
aWRkZW5Qcm90b3R5cGUodHJ1ZSk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkocmV2
aXNpb24gNDkyMjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MTIsNiArOTEyLDcgQEAKIAogICAgIC8vIEluc3RhbGwgYSBzZWN1cml0eSBo
YW5kbGVyIHdpdGggVjguCiAgICAgZ2xvYmFsVGVtcGxhdGUtPlNldEFjY2Vzc0NoZWNrQ2FsbGJh
Y2tzKFY4Q3VzdG9tOjp2OERPTVdpbmRvd05hbWVkU2VjdXJpdHlDaGVjaywgVjhDdXN0b206OnY4
RE9NV2luZG93SW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0lu
ZGV4OjpET01XSU5ET1cpKTsKKyAgICBnbG9iYWxUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENv
dW50KFY4Q3VzdG9tOjprRE9NV2luZG93SW50ZXJuYWxGaWVsZENvdW50KTsKIAogICAgIC8vIFVz
ZWQgdG8gYXZvaWQgc2xlZXAgY2FsbHMgaW4gdW5sb2FkIGhhbmRsZXJzLgogICAgIGlmICghcmVn
aXN0ZXJlZEV4dGVuc2lvbldpdGhWOChEYXRlRXh0ZW5zaW9uOjpnZXQoKSkpCkBAIC05NTMsMTIg
Kzk1NCwxNCBAQAogCiAgICAgLy8gV3JhcCB0aGUgd2luZG93LgogICAgIFY4RE9NV3JhcHBlcjo6
c2V0RE9NV3JhcHBlcihqc1dpbmRvdywgVjhDbGFzc0luZGV4OjpUb0ludChWOENsYXNzSW5kZXg6
OkRPTVdJTkRPVyksIHdpbmRvdyk7CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoanNXaW5kb3ctPkdldFByb3RvdHlwZSgpKSwgVjhD
bGFzc0luZGV4OjpUb0ludChWOENsYXNzSW5kZXg6OkRPTVdJTkRPVyksIHdpbmRvdyk7CiAKICAg
ICB3aW5kb3ctPnJlZigpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2Jq
ZWN0KHdpbmRvdywgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhqc1dpbmRvdykpOwog
CiAgICAgLy8gSW5zZXJ0IHRoZSB3aW5kb3cgaW5zdGFuY2UgYXMgdGhlIHByb3RvdHlwZSBvZiB0
aGUgc2hhZG93IG9iamVjdC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4R2xvYmFsID0g
Y29udGV4dC0+R2xvYmFsKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhHbG9iYWwtPkdldFByb3RvdHlwZSgpKSwgVjhDbGFz
c0luZGV4OjpUb0ludChWOENsYXNzSW5kZXg6OkRPTVdJTkRPVyksIHdpbmRvdyk7CiAgICAgdjhH
bG9iYWwtPlNldChpbXBsaWNpdFByb3RvU3RyaW5nLCBqc1dpbmRvdyk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwCShyZXZpc2lvbiA0OTIyMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDExICsxOTgs
NyBAQAogCiBBQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93TG9jYXRpb24pCiB7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIo
VjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uVGhpcygpKTsKLSAgICBpZiAoaG9sZGVyLklz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdy
YXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9N
V0lORE9XLCBob2xkZXIpOworICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5m
by5Ib2xkZXIoKSk7CiAgICAgV2luZG93U2V0TG9jYXRpb24oaW1wLCB0b1dlYkNvcmVTdHJpbmco
dmFsdWUpKTsKIH0KIApAQCAtNzQzLDExICs3MzksOCBAQAogSU5ERVhFRF9QUk9QRVJUWV9HRVRU
RVIoRE9NV2luZG93KQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5JbmRleGVkUHJv
cGVydHlHZXR0ZXIiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9N
V3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5U
aGlzKCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIAotICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJ
TkRPVywgaG9sZGVyKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGlu
Zm8uSG9sZGVyKCkpOwogICAgIGlmICghd2luZG93KQogICAgICAgICByZXR1cm4gbm90SGFuZGxl
ZEJ5SW50ZXJjZXB0b3IoKTsKIApAQCAtNzY3LDExICs3NjAsOCBAQAogewogICAgIElOQ19TVEFU
UygiRE9NLkRPTVdpbmRvdy5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAKLSAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENs
YXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5UaGlzKCkpOwotICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKLQotICAgIERP
TVdpbmRvdyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9N
V2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaG9sZGVyKTsKKyAgICAvLyBUT0RPKGFu
dG9ubSk6IGludmVzdGlnYXRlIHdoYXQgY29udmVydFRvTmF0aXZlT2JqZWN0IGRvZXMgZm9yIHRo
ZSBjYXNlIG9mIERPTVdJTkRPVy4KKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5E
T1csIGluZm8uSG9sZGVyKCkpOwogICAgIGlmICghd2luZG93KQogICAgICAgICByZXR1cm4gbm90
SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIApAQCAtNzg3LDcgKzc3Nyw3IEBACiAgICAgICAgIHJl
dHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6RE9NV0lO
RE9XLCBjaGlsZC0+ZG9tV2luZG93KCkpOwogCiAgICAgLy8gU2VhcmNoIElETCBmdW5jdGlvbnMg
ZGVmaW5lZCBpbiB0aGUgcHJvdG90eXBlCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3Vs
dCA9IGhvbGRlci0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpOwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBpbmZvLkhvbGRlcigpLT5HZXRSZWFs
TmFtZWRQcm9wZXJ0eShuYW1lKTsKICAgICBpZiAoIXJlc3VsdC5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>