<?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>90174</bug_id>
          
          <creation_ts>2012-06-28 06:48:52 -0700</creation_ts>
          <short_desc>Optimize Dromaeo/dom-attr.html by speeding up Element::getAttribute()</short_desc>
          <delta_ts>2012-06-28 10:07:31 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659466</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 06:48:52 -0700</bug_when>
    <thetext>By changing the type of &apos;name&apos; of Element::getAttribute(String&amp; name) from String to AtomicString, we can improve the performance of Element::getAttribute(). This optimization is based on the observation that AtomicString(String&amp;) is faster than operatior==(String&amp;, AtomicString&amp;). More detailed explanation will be appeared in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659473</commentid>
    <comment_count>1</comment_count>
      <attachid>149944</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 06:57:23 -0700</bug_when>
    <thetext>Created attachment 149944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659475</commentid>
    <comment_count>2</comment_count>
      <attachid>149945</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 07:00:40 -0700</bug_when>
    <thetext>Created attachment 149945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659512</commentid>
    <comment_count>3</comment_count>
      <attachid>149945</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-28 08:24:12 -0700</bug_when>
    <thetext>Comment on attachment 149945
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=149945&amp;action=review

&gt; Source/WebCore/dom/Element.h:146
&gt;      const AtomicString&amp; getAttributeNS(const String&amp; namespaceURI, const String&amp; localName) const;

Should we do the same for getAttributeNS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659517</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 08:30:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/dom/Element.h:146
&gt; &gt;      const AtomicString&amp; getAttributeNS(const String&amp; namespaceURI, const String&amp; localName) const;
&gt; 
&gt; Should we do the same for getAttributeNS?

Let me do it in a follow-up patch. getAttributeNode() would be another place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659575</commentid>
    <comment_count>5</comment_count>
      <attachid>149945</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 10:07:22 -0700</bug_when>
    <thetext>Comment on attachment 149945
Patch

Clearing flags on attachment: 149945

Committed r121439: &lt;http://trac.webkit.org/changeset/121439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659576</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 10:07:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149944</attachid>
            <date>2012-06-28 06:57:23 -0700</date>
            <delta_ts>2012-06-28 07:00:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90174-20120628225723.patch</filename>
            <type>text/plain</type>
            <size>10694</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFiZTIzNTI2YmM2YTY1
YWFjMjc1MTFiNzY0MzZlYWY3YWU4OWE4My4uYjEwYWE5ZTE0MDM4YzY2MTMwODQyYTI5ZjJhMWVi
OTA5MDAwODEyZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTA2LTI4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBEcm9t
YWVvL2RvbS1hdHRyLmh0bWwgYnkgc3BlZWRpbmcgdXAgRWxlbWVudDo6Z2V0QXR0cmlidXRlKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbXByb3ZlcyBwZXJmb3JtYW5jZSBvZiBEcm9tYWVvL2RvbS1hdHRyLmh0bWwgYnkgNC4wJS4K
KworICAgICAgICBXaXRob3V0IHRoZSBwYXRjaCBpbiBDaHJvbWl1bS9MaW51eCAocnVucy9zKQor
ICAgICAgICA3Njc5LjQsIDc3MzkuNywgNzYzNC4wLCA3NzI2LjQsIDc2NjMuOQorCisgICAgICAg
IFdpdGggdGhlIHBhdGNoIGluIENocm9taXVtL0xpbnV4IChydW5zL3MpCisgICAgICAgIDc5Nzcu
NywgODAzMi4yLCA4MTEyLjgsIDc5NDguMSwgNzkyNC41CisKKyAgICAgICAgVGhpcyBwYXRjaCBq
dXN0IGNoYW5nZXMgYSB0eXBlIG9mICduYW1lJyBvZiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoU3Ry
aW5nJiBuYW1lKQorICAgICAgICBmcm9tIFN0cmluZyYgdG8gQXRvbWljU3RyaW5nJi4KKworICAg
ICAgICBUaGUga2V5IG9ic2VydmF0aW9uIGlzIHRoYXQgQXRvbWljU3RyaW5nKFN0cmluZyYgeCkg
aXMgZmFzdGVyIHRoYW4KKyAgICAgICAgb3BlcmF0b3I9PShTdHJpbmcmIHgsIEF0b21pY1N0cmlu
ZyYgeSkuIEF0b21pY1N0cmluZyhTdHJpbmcmIHgpIGNhbGN1bGF0ZXMKKyAgICAgICAgYSBoYXNo
IG9mIGEgZ2l2ZW4gU3RyaW5nIGFuZCBhZGRzIGl0IHRvIGEgaGFzaCB0YWJsZS4gVGhlIGNhbGN1
bGF0aW9uCisgICAgICAgIGNvbXBsZXhpdHkgaXMgTyh0aGUgbGVuZ3RoIG9mIHgpLiBPbiB0aGUg
b3RoZXIgaGFuZCwKKyAgICAgICAgb3BlcmF0b3I9PShTdHJpbmcmIHgsIEF0b21pY1N0cmluZyYg
eSkgY29tcGFyZXMgYSBTdHJpbmcgYW5kIGFuIEF0b21pY1N0cmluZyBieQorICAgICAgICBTdHJp
bmdJbXBsOjplcXVhbChTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopLCB0aGUgY2FsY3VsYXRpb24g
Y29tcGxleGl0eSBvZgorICAgICAgICB3aGljaCBpcyBPKDIgKiBtaW4odGhlIGxlbmd0aCBvZiB4
LCB0aGUgbGVuZ3RoIG9mIHkpKS4KKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBjb21wYXJpc29u
IGxvZ2ljIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGUgbG9naWMKKyAgICAgICAgb2YgY2Fs
Y3VsYXRpbmcgdGhlIGhhc2guIENvbnNlcXVlbnRseSwgQXRvbWljU3RyaW5nKFN0cmluZyYgeCkg
aXMKKyAgICAgICAgZmFzdGVyIHRoYW4gb3BlcmF0b3I9PShTdHJpbmcmIHgsIEF0b21pY1N0cmlu
ZyYgeSkuCisKKyAgICAgICAgS2VlcGluZyB0aGF0IGluIG1pbmQsIGxldCdzIGVzdGltYXRlIHRo
ZSBwZXJmb3JtYW5jZSBvZgorICAgICAgICBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoImNsYXNzIikg
Zm9yIDxkaXYgaWQ9IkEiIGxhbmc9IkIiIHRpdGxlPSJDIiBjbGFzcz0iRCIgZGlyPSJFIj4uCisg
ICAgICAgIEhlcmUgImlkIiwgImxhbmciLCAidGl0bGUiLCAiY2xhc3MiIGFuZCAiZGlyIiBhcmUg
c3RvcmVkIGFzIEF0b21pY1N0cmluZ3MKKyAgICAgICAgaW4gUXVhbGlmaWVkTmFtZTo6bG9jYWxO
YW1lKCkuIEluaXRpYWxseSwgImNsYXNzIiBpbiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoImNsYXNz
IikKKyAgICAgICAgaXMgYSBTdHJpbmcuCisKKyAgICAgICAgSWYgd2UgdXNlIEVsZW1lbnQ6Omdl
dEF0dHJpYnV0ZShTdHJpbmcmIG5hbWUpIChpLmUuIHdpdGhvdXQgdGhlIHBhdGNoKSwKKyAgICAg
ICAgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleCgpIGV4ZWN1dGVz
IGZvdXIKKyAgICAgICAgb3BlcmF0b3I9PShTdHJpbmcmLCBBdG9taWNTdHJpbmcmKSBieSB0aGUg
dGltZSBpdCBmaW5kcyB0aGUgImNsYXNzIiBhdHRyaWJ1dGU6CisKKyAgICAgICAgKDEpIGlmICgi
Y2xhc3MiID09ICJpZCIpICAgICAgIC8vIG9wZXJhdG9yPT0oU3RyaW5nJiwgQXRvbWljU3RyaW5n
JikKKyAgICAgICAgKDIpIGlmICgiY2xhc3MiID09ICJsYW5nIikgICAgIC8vIG9wZXJhdG9yPT0o
U3RyaW5nJiwgQXRvbWljU3RyaW5nJikKKyAgICAgICAgKDMpIGlmICgiY2xhc3MiID09ICJ0aXRs
ZSIpICAgIC8vIG9wZXJhdG9yPT0oU3RyaW5nJiwgQXRvbWljU3RyaW5nJikKKyAgICAgICAgKDQp
IGlmICgiY2xhc3MiID09ICJjbGFzcyIpICAgIC8vIG9wZXJhdG9yPT0oU3RyaW5nJiwgQXRvbWlj
U3RyaW5nJikKKworICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgd2UgdXNlIEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZShBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgICAgIChpLmUuIHdpdGggdGhl
IHBhdGNoKSwgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleCgpCisg
ICAgICAgIGV4ZWN1dGVzIG9uZSBBdG9taWNTdHJpbmcoU3RyaW5nJikgYW5kIGZvdXIgb3BlcmF0
b3I9PShBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcmKQorICAgICAgICBieSB0aGUgdGltZSBp
dCBmaW5kcyB0aGUgImNsYXNzIiBhdHRyaWJ1dGU6CisKKyAgICAgICAgKDEpIEF0b21pY1N0cmlu
ZygiY2xhc3MiKSAgICAgIC8vIEF0b21pY1N0cmluZyhTdHJpbmcmKQorICAgICAgICAoMikgaWYg
KCJjbGFzcyIgPT0gImlkIikgICAgICAgLy8gb3BlcmF0b3I9PShBdG9taWNTdHJpbmcmLCBBdG9t
aWNTdHJpbmcmKQorICAgICAgICAoMykgaWYgKCJjbGFzcyIgPT0gImxhbmciKSAgICAgLy8gb3Bl
cmF0b3I9PShBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcmKQorICAgICAgICAoNCkgaWYgKCJj
bGFzcyIgPT0gInRpdGxlIikgICAgLy8gb3BlcmF0b3I9PShBdG9taWNTdHJpbmcmLCBBdG9taWNT
dHJpbmcmKQorICAgICAgICAoNSkgaWYgKCJjbGFzcyIgPT0gImNsYXNzIikgICAgLy8gb3BlcmF0
b3I9PShBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcmKQorCisgICAgICAgIENvbnNpZGVyaW5n
IHRoYXQgdGhlIG92ZXJoZWFkIG9mIG9wZXJhdG9yPT0oQXRvbWljU3RyaW5nJiwgQXRvbWljU3Ry
aW5nJikgaXMgY2xvc2UKKyAgICAgICAgdG8gMCBzaW5jZSBpdCBpcyBqdXN0IGEgcG9pbnRlciBj
b21wYXJpc29uLCB0aGUgbGF0dGVyIGFwcHJvYWNoIGlzIGZhc3RlciB0aGFuCisgICAgICAgIHRo
ZSBmb3JtZXIgYXBwcm9hY2guCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgd2ls
bCBiZSBsYXJnZSBmb3IgZWxlbWVudHMgdGhhdCBoYXZlIG11bHRpcGxlIGF0dHJpYnV0ZXMsCisg
ICAgICAgIGJ1dCBpdCBpcyBmYXN0ZXIgZXZlbiBmb3IgZWxlbWVudHMgdGhhdCBoYXZlIG9ubHkg
b25lIGF0dHJpYnV0ZS4KKyAgICAgICAgRm9yIGV4bWFwbGUsIERyb21hZW8vZG9tLWF0dHIuaHRt
bCB0ZXN0cyBnZXRBdHRyaWJ1dGUoKSBmb3IgYW4gZWxlbWVudCB0aGF0IGhhcworICAgICAgICBv
bmx5IG9uZSBhdHRyaWJ1dGUsIHRoZSByZXN1bHQgc2hvd3MgNC4wJSBpbXByb3ZlbWVudC4KKwor
ICAgICAgICBBbm90aGVyIGV4YW1wbGUgb3B0aW1pemVkIGJ5IHRoaXMgcGF0Y2ggaXMgJ2Rpdi5m
b28gPSAxMjMnLCB3aGVyZSBmb28gaXMgbm90CisgICAgICAgIGFuIGF0dHJpYnV0ZSBvZiBkaXYu
IEluIHRoaXMgY2FzZSwgYmVmb3JlIDEyMyBpcyBzZXQsIEphdmFTY3JpcHQgY2FsbHMgYmFjawor
ICAgICAgICBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoKSB0byBjaGVjayB3aGV0aGVyICdmb28nIGlz
IGRlZmluZWQgb24gZGl2IGJ5CisgICAgICAgIHNjYW5uaW5nIGFsbCB0aGUgYXR0cmlidXRlcyBv
ZiBkaXYuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0
dHJpYnV0ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KToKKyAgICAg
ICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dDYXNlKToKKyAgICAg
ICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRBdHRyaWJ1
dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRy
aWJ1dGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRB
dHRyaWJ1dGVJdGVtSW5kZXgpOgorCiAyMDEyLTA2LTI3ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBjcmFzaCBpbiBGcmFtZTo6bm9kZUltYWdlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDA3ZjBmOWUzMWU1MjVlYmViMTk1MDc0ZmEzZjk3Nzlk
YmI0YzdiOWQuLmViYzBjOWI1M2QzNWJiYzBkZmQ1ODk1ZTUyMWQwMDkyYWMyYTM5ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTYwNywxMCArNjA3LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUpCiAgICAgcmV0dXJu
IGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50
KCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBib29sIGlnbm9y
ZUNhc2UgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpOwotICAgIAorCiAgICAgLy8g
VXBkYXRlIHRoZSAnc3R5bGUnIGF0dHJpYnV0ZSBpZiBpdCdzIGludmFsaWQgYW5kIGJlaW5nIHJl
cXVlc3RlZDoKICAgICBpZiAoIWlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpICYmIGVxdWFsUG9zc2li
bHlJZ25vcmluZ0Nhc2UobmFtZSwgc3R5bGVBdHRyLmxvY2FsTmFtZSgpLCBpZ25vcmVDYXNlKSkK
ICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDIw
ZjFjNmQ2MmYzNjE1MWMyMjBmOWZjZDRjY2RmYWRkOTJjMzQ5NzEuLmU0ZjcwY2ZhYjhiYWZkOGI1
MzhiNWNlZmUyMmY5ODliYjIzZTU5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTQyLDcgKzE0
Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0OwogICAgIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VV
UkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKIAotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAKICAgICB2b2lk
IHNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6CiAg
ICAgQXR0cmlidXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBB
dHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Owog
ICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QgeyByZXR1cm4gYXR0cmlidXRlRGF0YSgpLT5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgo
bmFtZSk7IH0KLSAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdCB7IHJldHVybiBhdHRy
aWJ1dGVEYXRhKCktPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lLCBzaG91bGRJZ25vcmVBdHRy
aWJ1dGVDYXNlKTsgfQorICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0IHsg
cmV0dXJuIGF0dHJpYnV0ZURhdGEoKS0+Z2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUsIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UpOyB9CiAKICAgICB2b2lkIHNjcm9sbEludG9WaWV3KGJvb2wg
YWxpZ25Ub1RvcCA9IHRydWUpOwogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29s
IGNlbnRlcklmTmVlZGVkID0gdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmNwcAppbmRleCAwNzIyY2M4Mzg2NGM3MjllMzBhNTFkYmZiZmM3YzJlZmQyNDVj
MzRjLi5hYjI3NjhlNjY1ZjgyOGM5M2U1NTE3YmQ3MWZiZGMxMDdlYjA2ZTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKQEAgLTIzMCw3ICsyMzAsNyBA
QCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpkZXRhY2hBdHRyT2JqZWN0c0Zyb21FbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNBdHRyTGlzdCgpKTsK
IH0KIAotc2l6ZV90IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXhT
bG93Q2FzZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSkgY29uc3QKK3NpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4U2xvd0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0
dHJpYnV0ZUNhc2UpIGNvbnN0CiB7CiAgICAgLy8gQ29udGludWUgdG8gY2hlY2tpbmcgY2FzZS1p
bnNlbnNpdGl2ZWx5IGFuZC9vciBmdWxsIG5hbWVzcGFjZWQgbmFtZXMgaWYgbmVjZXNzYXJ5Ogog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXggOTBmMWI5MWRm
MGY1NTQ3MGY2NzFkNDQ0NjQ0MDYzMjMxZGY4NTk3Ni4uYTEzZDRkMjU4ZWJmZWU2ZmQ5NDdjZjQz
NzJmODgwYWViZmM4ZDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
dHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIEF0dHJpYnV0ZSogYXR0cmlidXRl
SXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gJmNvbnN0X2Nhc3Q8RWxlbWVudEF0
dHJpYnV0ZURhdGEqPih0aGlzKS0+bV9hdHRyaWJ1dGVzW2luZGV4XTsgfQogICAgIEF0dHJpYnV0
ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IHJl
dHVybiBmaW5kQXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBuYW1lKTsgfQogICAgIHNp
emVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Owot
ICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0OworICAgIHNpemVfdCBnZXRBdHRyaWJ1
dGVJdGVtSW5kZXgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0
dHJpYnV0ZUNhc2UpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGRvIG5vIGVycm9y
IGNoZWNraW5nLgogICAgIHZvaWQgYWRkQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIEVsZW1l
bnQqLCBFSW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSA9IE5vdEluVXBkYXRlU3R5bGVBdHRyaWJ1dGUp
OwpAQCAtMTIyLDggKzEyMiw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gY2xv
bmVkQXR0cmlidXRlVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAKICAg
ICB2b2lkIGRldGFjaEF0dHJPYmplY3RzRnJvbUVsZW1lbnQoRWxlbWVudCopOwotICAgIEF0dHJp
YnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdu
b3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7Ci0gICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRl
eFNsb3dDYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVD
YXNlKSBjb25zdDsKKyAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0OworICAg
IHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAgICAgdm9pZCBj
bG9uZURhdGFGcm9tKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhJiBzb3VyY2VEYXRhLCBjb25z
dCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBFbGVtZW50JiB0YXJnZXRFbGVtZW50KTsKICAgICB2
b2lkIGNsZWFyQXR0cmlidXRlcyhFbGVtZW50Kik7CiAgICAgdm9pZCByZXBsYWNlQXR0cmlidXRl
KHNpemVfdCBpbmRleCwgY29uc3QgQXR0cmlidXRlJiwgRWxlbWVudCopOwpAQCAtMTQ1LDcgKzE0
NSw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRWxlCiAgICAgcmV0dXJuOwogfQogCi1pbmxpbmUg
QXR0cmlidXRlKiBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKK2lubGlu
ZSBBdHRyaWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25z
dAogewogICAgIHNpemVfdCBpbmRleCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lLCBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKTsKICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCkBAIC0x
NjQsNyArMTY0LDcgQEAgaW5saW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0
cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG4KIAogLy8gV2UgdXNlIGEgYm9v
bGVhbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBjYWxsaW5nIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNh
c2Ugc28gdGhhdCB0aGUgY2FsbGVyCiAvLyBjYW4gdHVuZSB0aGUgYmVoYXZpb3IgKGhhc0F0dHJp
YnV0ZSBpcyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0dHJpYnV0ZSBpcyBub3QpLgotaW5s
aW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAor
aW5saW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNl
KSBjb25zdAogewogICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aCgpOwogICAgIGJvb2wgZG9TbG93
Q2hlY2sgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149945</attachid>
            <date>2012-06-28 07:00:40 -0700</date>
            <delta_ts>2012-06-28 10:07:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90174-20120628230040.patch</filename>
            <type>text/plain</type>
            <size>10959</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFiZTIzNTI2YmM2YTY1
YWFjMjc1MTFiNzY0MzZlYWY3YWU4OWE4My4uYTU1NTAyMWFkMTI4YTI3NzNhYmQzMjdmZWI0M2Q5
NzdmYzI1NWIwYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA2LTI4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBEcm9t
YWVvL2RvbS1hdHRyLmh0bWwgYnkgc3BlZWRpbmcgdXAgRWxlbWVudDo6Z2V0QXR0cmlidXRlKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbXByb3ZlcyBwZXJmb3JtYW5jZSBvZiBEcm9tYWVvL2RvbS1hdHRyLmh0bWwgYnkgNC4wJS4K
KyAgICAgICAgVGhlIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIGdldEF0dHJpYnV0ZSgp
IGFuZCBKYXZhU2NyaXB0CisgICAgICAgIHByb3BlcnR5IHNldHRlciBmb3IgRE9NIG9iamVjdHMg
KGUuZy4gJ2Rpdi5mb28gPSAxMjMnKS4KKyAgICAgICAgVGhlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGJlY29tZXMgbGFyZ2VyLCBhcyB0aGUgbnVtYmVyIG9mCisgICAgICAgIGF0dHJpYnV0ZXMg
ZGVmaW5lZCBvbiB0aGUgRE9NIG9iamVjdCBpbmNyZWFzZXMuCisKKyAgICAgICAgV2l0aG91dCB0
aGUgcGF0Y2ggaW4gQ2hyb21pdW0vTGludXggKHJ1bnMvcykKKyAgICAgICAgNzY3OS40LCA3NzM5
LjcsIDc2MzQuMCwgNzcyNi40LCA3NjYzLjkKKworICAgICAgICBXaXRoIHRoZSBwYXRjaCBpbiBD
aHJvbWl1bS9MaW51eCAocnVucy9zKQorICAgICAgICA3OTc3LjcsIDgwMzIuMiwgODExMi44LCA3
OTQ4LjEsIDc5MjQuNQorCisgICAgICAgIFRoaXMgcGF0Y2gganVzdCBjaGFuZ2VzIGEgdHlwZSBv
ZiAnbmFtZScgb2YgRWxlbWVudDo6Z2V0QXR0cmlidXRlKFN0cmluZyYgbmFtZSkKKyAgICAgICAg
ZnJvbSBTdHJpbmcmIHRvIEF0b21pY1N0cmluZyYuCisKKyAgICAgICAgVGhlIGtleSBvYnNlcnZh
dGlvbiBpcyB0aGF0IEF0b21pY1N0cmluZyhTdHJpbmcmIHgpIGlzIGZhc3RlciB0aGFuCisgICAg
ICAgIG9wZXJhdG9yPT0oU3RyaW5nJiB4LCBBdG9taWNTdHJpbmcmIHkpLiBBdG9taWNTdHJpbmco
U3RyaW5nJiB4KSBjYWxjdWxhdGVzCisgICAgICAgIGEgaGFzaCBvZiBhIGdpdmVuIFN0cmluZyBh
bmQgYWRkcyBpdCB0byBhIGhhc2ggdGFibGUuIFRoZSBjYWxjdWxhdGlvbgorICAgICAgICBjb21w
bGV4aXR5IGlzIE8odGhlIGxlbmd0aCBvZiB4KS4gT24gdGhlIG90aGVyIGhhbmQsCisgICAgICAg
IG9wZXJhdG9yPT0oU3RyaW5nJiB4LCBBdG9taWNTdHJpbmcmIHkpIGNvbXBhcmVzIGEgU3RyaW5n
IGFuZCBhbiBBdG9taWNTdHJpbmcgYnkKKyAgICAgICAgU3RyaW5nSW1wbDo6ZXF1YWwoU3RyaW5n
SW1wbCosIFN0cmluZ0ltcGwqKSwgdGhlIGNhbGN1bGF0aW9uIGNvbXBsZXhpdHkgb2YKKyAgICAg
ICAgd2hpY2ggaXMgTygyICogbWluKHRoZSBsZW5ndGggb2YgeCwgdGhlIGxlbmd0aCBvZiB5KSku
CisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgY29tcGFyaXNvbiBsb2dpYyBpcyBtb3JlIGNvbXBs
aWNhdGVkIHRoYW4gdGhlIGxvZ2ljCisgICAgICAgIG9mIGNhbGN1bGF0aW5nIHRoZSBoYXNoLiBD
b25zZXF1ZW50bHksIEF0b21pY1N0cmluZyhTdHJpbmcmIHgpIGlzCisgICAgICAgIGZhc3RlciB0
aGFuIG9wZXJhdG9yPT0oU3RyaW5nJiB4LCBBdG9taWNTdHJpbmcmIHkpLgorCisgICAgICAgIEtl
ZXBpbmcgdGhhdCBpbiBtaW5kLCBsZXQncyBlc3RpbWF0ZSB0aGUgcGVyZm9ybWFuY2Ugb2YKKyAg
ICAgICAgRWxlbWVudDo6Z2V0QXR0cmlidXRlKCJjbGFzcyIpIGZvciA8ZGl2IGlkPSJBIiBsYW5n
PSJCIiB0aXRsZT0iQyIgY2xhc3M9IkQiIGRpcj0iRSI+LgorICAgICAgICBIZXJlICJpZCIsICJs
YW5nIiwgInRpdGxlIiwgImNsYXNzIiBhbmQgImRpciIgYXJlIHN0b3JlZCBhcyBBdG9taWNTdHJp
bmdzCisgICAgICAgIGluIFF1YWxpZmllZE5hbWU6OmxvY2FsTmFtZSgpLiBJbml0aWFsbHksICJj
bGFzcyIgaW4gRWxlbWVudDo6Z2V0QXR0cmlidXRlKCJjbGFzcyIpCisgICAgICAgIGlzIGEgU3Ry
aW5nLgorCisgICAgICAgIElmIHdlIHVzZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoU3RyaW5nJiBu
YW1lKSAoaS5lLiB3aXRob3V0IHRoZSBwYXRjaCksCisgICAgICAgIEVsZW1lbnRBdHRyaWJ1dGVE
YXRhOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoKSBleGVjdXRlcyBmb3VyCisgICAgICAgIG9wZXJh
dG9yPT0oU3RyaW5nJiwgQXRvbWljU3RyaW5nJikgYnkgdGhlIHRpbWUgaXQgZmluZHMgdGhlICJj
bGFzcyIgYXR0cmlidXRlOgorCisgICAgICAgICgxKSBpZiAoImNsYXNzIiA9PSAiaWQiKSAgICAg
ICAvLyBvcGVyYXRvcj09KFN0cmluZyYsIEF0b21pY1N0cmluZyYpCisgICAgICAgICgyKSBpZiAo
ImNsYXNzIiA9PSAibGFuZyIpICAgICAvLyBvcGVyYXRvcj09KFN0cmluZyYsIEF0b21pY1N0cmlu
ZyYpCisgICAgICAgICgzKSBpZiAoImNsYXNzIiA9PSAidGl0bGUiKSAgICAvLyBvcGVyYXRvcj09
KFN0cmluZyYsIEF0b21pY1N0cmluZyYpCisgICAgICAgICg0KSBpZiAoImNsYXNzIiA9PSAiY2xh
c3MiKSAgICAvLyBvcGVyYXRvcj09KFN0cmluZyYsIEF0b21pY1N0cmluZyYpCisKKyAgICAgICAg
T24gdGhlIG90aGVyIGhhbmQsIGlmIHdlIHVzZSBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoQXRvbWlj
U3RyaW5nJiBuYW1lKQorICAgICAgICAoaS5lLiB3aXRoIHRoZSBwYXRjaCksIEVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoKQorICAgICAgICBleGVjdXRlcyBvbmUg
QXRvbWljU3RyaW5nKFN0cmluZyYpIGFuZCBmb3VyIG9wZXJhdG9yPT0oQXRvbWljU3RyaW5nJiwg
QXRvbWljU3RyaW5nJikKKyAgICAgICAgYnkgdGhlIHRpbWUgaXQgZmluZHMgdGhlICJjbGFzcyIg
YXR0cmlidXRlOgorCisgICAgICAgICgxKSBBdG9taWNTdHJpbmcoImNsYXNzIikgICAgICAvLyBB
dG9taWNTdHJpbmcoU3RyaW5nJikKKyAgICAgICAgKDIpIGlmICgiY2xhc3MiID09ICJpZCIpICAg
ICAgIC8vIG9wZXJhdG9yPT0oQXRvbWljU3RyaW5nJiwgQXRvbWljU3RyaW5nJikKKyAgICAgICAg
KDMpIGlmICgiY2xhc3MiID09ICJsYW5nIikgICAgIC8vIG9wZXJhdG9yPT0oQXRvbWljU3RyaW5n
JiwgQXRvbWljU3RyaW5nJikKKyAgICAgICAgKDQpIGlmICgiY2xhc3MiID09ICJ0aXRsZSIpICAg
IC8vIG9wZXJhdG9yPT0oQXRvbWljU3RyaW5nJiwgQXRvbWljU3RyaW5nJikKKyAgICAgICAgKDUp
IGlmICgiY2xhc3MiID09ICJjbGFzcyIpICAgIC8vIG9wZXJhdG9yPT0oQXRvbWljU3RyaW5nJiwg
QXRvbWljU3RyaW5nJikKKworICAgICAgICBDb25zaWRlcmluZyB0aGF0IHRoZSBvdmVyaGVhZCBv
ZiBvcGVyYXRvcj09KEF0b21pY1N0cmluZyYsIEF0b21pY1N0cmluZyYpIGlzIGNsb3NlCisgICAg
ICAgIHRvIDAgc2luY2UgaXQgaXMganVzdCBhIHBvaW50ZXIgY29tcGFyaXNvbiwgdGhlIGxhdHRl
ciBhcHByb2FjaCBpcyBmYXN0ZXIgdGhhbgorICAgICAgICB0aGUgZm9ybWVyIGFwcHJvYWNoLgor
CisgICAgICAgIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50IHdpbGwgYmUgbGFyZ2UgZm9yIGVsZW1l
bnRzIHRoYXQgaGF2ZSBtdWx0aXBsZSBhdHRyaWJ1dGVzLAorICAgICAgICBidXQgaXQgaXMgZmFz
dGVyIGV2ZW4gZm9yIGVsZW1lbnRzIHRoYXQgaGF2ZSBvbmx5IG9uZSBhdHRyaWJ1dGUuCisgICAg
ICAgIEZvciBleG1hcGxlLCBEcm9tYWVvL2RvbS1hdHRyLmh0bWwgdGVzdHMgZ2V0QXR0cmlidXRl
KCkgZm9yIGFuIGVsZW1lbnQgdGhhdCBoYXMKKyAgICAgICAgb25seSBvbmUgYXR0cmlidXRlLCB0
aGUgcmVzdWx0IHNob3dzIDQuMCUgaW1wcm92ZW1lbnQuCisKKyAgICAgICAgQW5vdGhlciBleGFt
cGxlIG9wdGltaXplZCBieSB0aGlzIHBhdGNoIGlzICdkaXYuZm9vID0gMTIzJywgd2hlcmUgZm9v
IGlzIG5vdAorICAgICAgICBhbiBhdHRyaWJ1dGUgb2YgZGl2LiBJbiB0aGlzIGNhc2UsIGJlZm9y
ZSAxMjMgaXMgc2V0LCBKYXZhU2NyaXB0IGNhbGxzIGJhY2sKKyAgICAgICAgRWxlbWVudDo6Z2V0
QXR0cmlidXRlKCkgdG8gY2hlY2sgd2hldGhlciAnZm9vJyBpcyBkZWZpbmVkIG9uIGRpdiBieQor
ICAgICAgICBzY2FubmluZyBhbGwgdGhlIGF0dHJpYnV0ZXMgb2YgZGl2LgorCisgICAgICAgIE5v
IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGUpOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleCk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpn
ZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZSk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmg6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KToK
KwogMjAxMi0wNi0yNyAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggaW4gRnJhbWU6Om5vZGVJbWFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCAwN2YwZjllMzFlNTI1ZWJlYjE5NTA3NGZhM2Y5Nzc5ZGJiNGM3YjlkLi5lYmMwYzliNTNk
MzViYmMwZGZkNTg5NWU1MjFkMDA5MmFjMmEzOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBA
IC02MDcsMTAgKzYwNywxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlQ2FzZShjb25zdCBFbGVtZW50KiBlKQogICAgIHJldHVybiBlICYmIGUtPmRvY3VtZW50KCkt
PmlzSFRNTERvY3VtZW50KCkgJiYgZS0+aXNIVE1MRWxlbWVudCgpOwogfQogCi1jb25zdCBBdG9t
aWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0
Citjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgYm9vbCBpZ25vcmVDYXNlID0gc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSh0aGlzKTsKLSAgICAKKwogICAgIC8vIFVwZGF0ZSB0aGUgJ3N0eWxlJyBh
dHRyaWJ1dGUgaWYgaXQncyBpbnZhbGlkIGFuZCBiZWluZyByZXF1ZXN0ZWQ6CiAgICAgaWYgKCFp
c1N0eWxlQXR0cmlidXRlVmFsaWQoKSAmJiBlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKG5hbWUs
IHN0eWxlQXR0ci5sb2NhbE5hbWUoKSwgaWdub3JlQ2FzZSkpCiAgICAgICAgIHVwZGF0ZVN0eWxl
QXR0cmlidXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAyMGYxYzZkNjJmMzYxNTFjMjIwZjlm
Y2Q0Y2NkZmFkZDkyYzM0OTcxLi5lNGY3MGNmYWI4YmFmZDhiNTM4YjVjZWZlMjJmOTg5YmIyM2U1
OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBib29sIGhh
c0F0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxv
Y2FsTmFtZSkgY29uc3Q7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBnZXRBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
U3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25D
b2RlJik7CkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgogICAgIEF0dHJpYnV0ZSogYXR0cmli
dXRlSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1
dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBzaXplX3QgZ2V0QXR0cmli
dXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGF0
dHJpYnV0ZURhdGEoKS0+Z2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOyB9Ci0gICAgc2l6ZV90
IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdu
b3JlQXR0cmlidXRlQ2FzZSkgY29uc3QgeyByZXR1cm4gYXR0cmlidXRlRGF0YSgpLT5nZXRBdHRy
aWJ1dGVJdGVtSW5kZXgobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSk7IH0KKyAgICBz
aXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgYm9v
bCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdCB7IHJldHVybiBhdHRyaWJ1dGVEYXRh
KCktPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNl
KTsgfQogCiAgICAgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3AgPSB0cnVlKTsK
ICAgICB2b2lkIHNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCA9IHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKaW5kZXgg
MDcyMmNjODM4NjRjNzI5ZTMwYTUxZGJmYmZjN2MyZWZkMjQ1YzM0Yy4uYWIyNzY4ZTY2NWY4Mjhj
OTNlNTUxN2JkNzFmYmRjMTA3ZWIwNmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBFbGVtZW50QXR0cmli
dXRlRGF0YTo6ZGV0YWNoQXR0ck9iamVjdHNGcm9tRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQog
ICAgIEFTU0VSVCghZWxlbWVudC0+aGFzQXR0ckxpc3QoKSk7CiB9CiAKLXNpemVfdCBFbGVtZW50
QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4U2xvd0Nhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CitzaXplX3QgRWxl
bWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleFNsb3dDYXNlKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdAog
ewogICAgIC8vIENvbnRpbnVlIHRvIGNoZWNraW5nIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQvb3Ig
ZnVsbCBuYW1lc3BhY2VkIG5hbWVzIGlmIG5lY2Vzc2FyeToKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9hdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDkwZjFiOTFkZjBmNTU0NzBmNjcxZDQ0NDY0NDA2
MzIzMWRmODU5NzYuLmExM2Q0ZDI1OGViZmVlNmZkOTQ3Y2Y0MzcyZjg4MGFlYmZjOGQ0YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuICZjb25zdF9jYXN0PEVsZW1lbnRBdHRyaWJ1dGVEYXRhKj4odGhpcykt
Pm1fYXR0cmlidXRlc1tpbmRleF07IH0KICAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gZmluZEF0dHJpYnV0ZUlu
VmVjdG9yKG1fYXR0cmlidXRlcywgbmFtZSk7IH0KICAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRl
bUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICBzaXplX3QgZ2V0QXR0cmli
dXRlSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKSBjb25zdDsKKyAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsK
IAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBubyBlcnJvciBjaGVja2luZy4KICAgICB2b2lk
IGFkZEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmLCBFbGVtZW50KiwgRUluVXBkYXRlU3R5bGVB
dHRyaWJ1dGUgPSBOb3RJblVwZGF0ZVN0eWxlQXR0cmlidXRlKTsKQEAgLTEyMiw4ICsxMjIsOCBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0ZVZlY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogCiAgICAgdm9pZCBkZXRhY2hBdHRyT2Jq
ZWN0c0Zyb21FbGVtZW50KEVsZW1lbnQqKTsKLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0
ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNv
bnN0OwotICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXhTbG93Q2FzZShjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CisgICAgQXR0
cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBz
aG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKKyAgICBzaXplX3QgZ2V0QXR0cmlidXRl
SXRlbUluZGV4U2xvd0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZEln
bm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0OwogICAgIHZvaWQgY2xvbmVEYXRhRnJvbShjb25zdCBF
bGVtZW50QXR0cmlidXRlRGF0YSYgc291cmNlRGF0YSwgY29uc3QgRWxlbWVudCYgc291cmNlRWxl
bWVudCwgRWxlbWVudCYgdGFyZ2V0RWxlbWVudCk7CiAgICAgdm9pZCBjbGVhckF0dHJpYnV0ZXMo
RWxlbWVudCopOwogICAgIHZvaWQgcmVwbGFjZUF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIGNvbnN0
IEF0dHJpYnV0ZSYsIEVsZW1lbnQqKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBpbmxpbmUgdm9pZCBF
bGVtZW50QXR0cmlidXRlRGF0YTo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIEVsZQogICAgIHJldHVybjsKIH0KIAotaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudEF0
dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIHNo
b3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CitpbmxpbmUgQXR0cmlidXRlKiBFbGVtZW50
QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKIHsKICAgICBzaXplX3QgaW5k
ZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSk7CiAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQpAQCAtMTY0LDcgKzE2NCw3IEBAIGlubGlu
ZSBzaXplX3QgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25z
dCBRdWFsaWZpZWROYW1lJiBuCiAKIC8vIFdlIHVzZSBhIGJvb2xlYW4gcGFyYW1ldGVyIGluc3Rl
YWQgb2YgY2FsbGluZyBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlIHNvIHRoYXQgdGhlIGNhbGxl
cgogLy8gY2FuIHR1bmUgdGhlIGJlaGF2aW9yIChoYXNBdHRyaWJ1dGUgaXMgY2FzZSBzZW5zaXRp
dmUgd2hlcmVhcyBnZXRBdHRyaWJ1dGUgaXMgbm90KS4KLWlubGluZSBzaXplX3QgRWxlbWVudEF0
dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJv
b2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKK2lubGluZSBzaXplX3QgRWxlbWVu
dEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKIHsKICAgICB1bnNp
Z25lZCBsZW4gPSBsZW5ndGgoKTsKICAgICBib29sIGRvU2xvd0NoZWNrID0gc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>