<?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>77158</bug_id>
          
          <creation_ts>2012-01-26 15:55:32 -0800</creation_ts>
          <short_desc>Speed up the prefix matching of cssPropertyName()</short_desc>
          <delta_ts>2014-04-24 16:45:26 -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>JavaScriptCore</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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543608</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-26 15:55:32 -0800</bug_when>
    <thetext>The function cssPropertyName() shows up in some benchmarks.

Fix the prefix matching before doing https://bugs.webkit.org/show_bug.cgi?id=74782</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543631</commentid>
    <comment_count>1</comment_count>
      <attachid>124207</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-26 16:19:53 -0800</bug_when>
    <thetext>Created attachment 124207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544278</commentid>
    <comment_count>2</comment_count>
      <attachid>124207</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-01-27 12:53:13 -0800</bug_when>
    <thetext>Comment on attachment 124207
Patch

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

r=me

&gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:72
&gt; +static inline bool matchesCSSPropertyNamePrefixEnding(const StringImpl&amp; propertyName, const char (&amp;prefix)[prefixCStringLength])

The word &quot;Ending&quot; in this function name confused me. I think it would be better without it: &quot;matchesCSSPropertyNamePrefix&quot;.

&gt; Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp:101
&gt; +static PropertyNamePrefix getCSSPropertyNamePrefix(const StringImpl&amp; propertyName)

Your patch does one switch in getCSSPropertyNamePrefix(), then feeds the result into a second switch in cssPropertyName(). It would be more efficient to merge getCSSPropertyNamePrefix() into cssPropertyName(), so you only have to switch once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544290</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-27 12:57:50 -0800</bug_when>
    <thetext>&gt; The word &quot;Ending&quot; in this function name confused me. I think it would be better without it: &quot;matchesCSSPropertyNamePrefix&quot;.

Good point, that is confusing.

&gt; Your patch does one switch in getCSSPropertyNamePrefix(), then feeds the result into a second switch in cssPropertyName(). It would be more efficient to merge getCSSPropertyNamePrefix() into cssPropertyName(), so you only have to switch once.

I did the two switch() for readability. I&apos;ll remove it.

Thanks for the review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544393</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-27 14:47:54 -0800</bug_when>
    <thetext>Committed r106154: &lt;http://trac.webkit.org/changeset/106154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003860</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-24 16:45:26 -0700</bug_when>
    <thetext>Moving all JavaScriptGlue bugs to JavaScriptCore. The JavaScriptGlue framework itself is long gone. And most of the more recent bugs put in this component were put there by people who thought this was for some other aspect of “JavaScript glue” and have nothing to do with the actual original reason for the existence of this component, which was an OS-X-only framework named JavaScriptGlue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124207</attachid>
            <date>2012-01-26 16:19:53 -0800</date>
            <delta_ts>2012-01-27 12:53:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77158-20120126161951.patch</filename>
            <type>text/plain</type>
            <size>7187</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI0NTlhZjZmYjZhN2Ji
ODRlNTNlY2FjZDUzNjFiNjNhYzRmNzQ2My4uMGY3YWIyYmU1YWY3Yzk1NzMzN2E3NWNiMWEyYWZl
ZDEzNTJhZWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTI2ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFNwZWVkIHVwIHRo
ZSBwcmVmaXggbWF0Y2hpbmcgb2YgY3NzUHJvcGVydHlOYW1lKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgcGVy
Zm9ybWFuY2UgYnk6CisgICAgICAgIC1ub3QgY2hlY2tpbmcgdGhlIFByb3BlcnR5TmFtZSB3aXRo
IGFsbCA3IHByZWZpeAorICAgICAgICAgKG5vdywgaW4gdGhlIHdvcnNlIGNhc2UsIDIgcHJlZml4
ZXMgYXJlIGNoZWNrZWQpCisgICAgICAgIC1hdm9pZGluZyB0aGUgY29udmVyc2lvbiA4Yml0cy0+
MTZiaXRzIGJ5IHVzaW5nIFN0cmluZzo6b3BlcmF0b3JbXQorICAgICAgICAgaW5zdGVhZCBvZiA6
OmNoYXJhY3RlcnMoKQorCisgICAgICAgIFRvIGF2b2lkIGNoZWNraW5nIGV2ZXJ5IHByZWZpeCwg
dGhlIGNvZGUgYnJhbmNoIGJhc2VkIG9uIHRoZSBmaXJzdAorICAgICAgICBjaGFyYWN0ZXJzIG9m
IHRoZSBwcm9wZXJ0eU5hbWUuCisgICAgICAgIFRoZSByZW1haW5pbmcgb2YgdGhlIHByZWZpeCBp
cyBjaGVja2VkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXJzIGxpa2UgYmVmb3JlLgorCisgICAgICAg
IFdoZW4gYWNjZXNzaW5nIENTUyBwcm9wZXJ0eSwgdGhpcyBnaXZlcyBhIDEzJSBpbXByb3ZlbWVu
dCB3aGVuIHRoZXJlIGlzIG5vIHByZWZpeC4KKyAgICAgICAgVGhlcmUgaXMgbm8gcGVyZm9ybWFu
Y2UgcmVncmVzc2lvbiBmb3IgdGhlIG1hdGNoaW5nIG9mIHByZWZpeCwgaW5jbHVkaW5nIGZvciB0
aGUgZmlyc3Qgb25lCisgICAgICAgIG9mIHRoZSBwcmV2aW91cyBtYXRjaGluZyBjb2RlICgiY3Nz
IikuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNDU1NQcm9wZXJ0eU5h
bWVQcmVmaXhFbmRpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRDU1NQcm9wZXJ0eU5hbWVQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlO
YW1lKToKKwogMjAxMi0wMS0yNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEdldCByaWQgb2YgU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXI6OmVuZFNj
cm9sbEdlc3R1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggMWZhYjI0MmViODA2MzA3ZjM1
MTM0MDk0YWVhMmM0MWNlM2RlMWQxYi4uNTdmNGU1ODMwOTJhYzliOWIxNWViZjhlZmUwYmI0YzUy
YWEzYWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC01NiwzMSArNTYsODUgQEAgdm9pZCBK
U0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh0aGlzT2JqZWN0
LT5pbXBsKCkpKTsKIH0KIAotLy8gQ2hlY2sgZm9yIGEgQ1NTIHByZWZpeC4KLS8vIFBhc3NlZCBw
cmVmaXggaXMgYWxsIGxvd2VyY2FzZS4KLS8vIEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcHJlZml4
IHdpdGhpbiB0aGUgcHJvcGVydHkgbmFtZSBtYXkgYmUgdXBwZXIgb3IgbG93ZXJjYXNlLgotLy8g
T3RoZXIgY2hhcmFjdGVycyBpbiB0aGUgcHJlZml4IHdpdGhpbiB0aGUgcHJvcGVydHkgbmFtZSBt
dXN0IGJlIGxvd2VyY2FzZS4KLS8vIFRoZSBwcmVmaXggd2l0aGluIHRoZSBwcm9wZXJ0eSBuYW1l
IG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjYXBpdGFsIGxldHRlci4KLXN0YXRpYyBib29sIGhhc0NT
U1Byb3BlcnR5TmFtZVByZWZpeChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0
IGNoYXIqIHByZWZpeCkKK2VudW0gUHJvcGVydHlOYW1lUHJlZml4CiB7CisgICAgUHJvcGVydHlO
YW1lUHJlZml4Tm9uZSwKKyAgICBQcm9wZXJ0eU5hbWVQcmVmaXhDU1MsCisgICAgUHJvcGVydHlO
YW1lUHJlZml4UGl4ZWwsCisgICAgUHJvcGVydHlOYW1lUHJlZml4UG9zLAorICAgIFByb3BlcnR5
TmFtZVByZWZpeEFwcGxlLAorICAgIFByb3BlcnR5TmFtZVByZWZpeEVwdWIsCisgICAgUHJvcGVy
dHlOYW1lUHJlZml4S0hUTUwsCisgICAgUHJvcGVydHlOYW1lUHJlZml4V2ViS2l0Cit9OworCit0
ZW1wbGF0ZTxzaXplX3QgcHJlZml4Q1N0cmluZ0xlbmd0aD4KK3N0YXRpYyBpbmxpbmUgYm9vbCBt
YXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4RW5kaW5nKGNvbnN0IFN0cmluZ0ltcGwmIHByb3Bl
cnR5TmFtZSwgY29uc3QgY2hhciAoJnByZWZpeClbcHJlZml4Q1N0cmluZ0xlbmd0aF0pCit7Cisg
ICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHByZWZpeENTdHJpbmdMZW5ndGggLSAxOworCisgICAg
QVNTRVJUKHRvQVNDSUlMb3dlcihwcm9wZXJ0eU5hbWVbMF0pID09IHByZWZpeFswXSk7CisgICAg
Y29uc3Qgc2l6ZV90IG9mZnNldCA9IDE7CisKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKCpw
cmVmaXgpOwotICAgIGZvciAoY29uc3QgY2hhciogcCA9IHByZWZpeDsgKnA7ICsrcCkKLSAgICAg
ICAgQVNTRVJUKGlzQVNDSUlMb3dlcigqcCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cHJlZml4TGVuZ3RoOyArK2kpCisgICAgICAgIEFTU0VSVChpc0FTQ0lJTG93ZXIocHJlZml4W2ld
KSk7CisgICAgQVNTRVJUKCFwcmVmaXhbcHJlZml4TGVuZ3RoXSk7CiAgICAgQVNTRVJUKHByb3Bl
cnR5TmFtZS5sZW5ndGgoKSk7CiAjZW5kaWYKIAotICAgIGlmICh0b0FTQ0lJTG93ZXIocHJvcGVy
dHlOYW1lLmNoYXJhY3RlcnMoKVswXSkgIT0gcHJlZml4WzBdKQorICAgIC8vIFRoZSBwcmVmaXgg
d2l0aGluIHRoZSBwcm9wZXJ0eSBuYW1lIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjYXBpdGFsIGxl
dHRlci4KKyAgICAvLyBPdGhlciBjaGFyYWN0ZXJzIGluIHRoZSBwcmVmaXggd2l0aGluIHRoZSBw
cm9wZXJ0eSBuYW1lIG11c3QgYmUgbG93ZXJjYXNlLgorICAgIGlmIChwcm9wZXJ0eU5hbWUubGVu
Z3RoKCkgPCAocHJlZml4TGVuZ3RoICsgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFtZS5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFwcmVmaXhbaV0pCi0g
ICAgICAgICAgICByZXR1cm4gaXNBU0NJSVVwcGVyKHByb3BlcnR5TmFtZS5jaGFyYWN0ZXJzKClb
aV0pOwotICAgICAgICBpZiAocHJvcGVydHlOYW1lLmNoYXJhY3RlcnMoKVtpXSAhPSBwcmVmaXhb
aV0pCisgICAgZm9yIChzaXplX3QgaSA9IG9mZnNldDsgaSA8IHByZWZpeExlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVbaV0gIT0gcHJlZml4W2ldKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzQVND
SUlVcHBlcihwcm9wZXJ0eU5hbWVbcHJlZml4TGVuZ3RoXSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBnZXRD
U1NQcm9wZXJ0eU5hbWVQcmVmaXgoY29uc3QgU3RyaW5nSW1wbCYgcHJvcGVydHlOYW1lKQorewor
ICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUubGVuZ3RoKCkpOworCisgICAgLy8gRmlyc3QgY2hhcmFj
dGVyIG9mIHRoZSBwcmVmaXggd2l0aGluIHRoZSBwcm9wZXJ0eSBuYW1lIG1heSBiZSB1cHBlciBv
ciBsb3dlcmNhc2UuCisgICAgVUNoYXIgZmlyc3RDaGFyID0gdG9BU0NJSUxvd2VyKHByb3BlcnR5
TmFtZVswXSk7CisgICAgc3dpdGNoIChmaXJzdENoYXIpIHsKKyAgICBjYXNlICdhJzoKKyAgICAg
ICAgaWYgKG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXhFbmRpbmcocHJvcGVydHlOYW1lLCAi
YXBwbGUiKSkKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBsZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAnYyc6CisgICAgICAgIGlmIChtYXRjaGVzQ1NTUHJvcGVy
dHlOYW1lUHJlZml4RW5kaW5nKHByb3BlcnR5TmFtZSwgImNzcyIpKQorICAgICAgICAgICAgcmV0
dXJuIFByb3BlcnR5TmFtZVByZWZpeENTUzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnayc6
CisgICAgICAgIGlmIChtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4RW5kaW5nKHByb3BlcnR5
TmFtZSwgImtodG1sIikpCisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4S0hU
TUw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ2UnOgorICAgICAgICBpZiAobWF0Y2hlc0NT
U1Byb3BlcnR5TmFtZVByZWZpeEVuZGluZyhwcm9wZXJ0eU5hbWUsICJlcHViIikpCisgICAgICAg
ICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4RXB1YjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAncCc6CisgICAgICAgIGlmIChtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4RW5kaW5n
KHByb3BlcnR5TmFtZSwgInBvcyIpKQorICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVBy
ZWZpeFBvczsKKyAgICAgICAgaWYgKG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXhFbmRpbmco
cHJvcGVydHlOYW1lLCAicGl4ZWwiKSkKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQ
cmVmaXhQaXhlbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAndyc6CisgICAgICAgIGlmICht
YXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4RW5kaW5nKHByb3BlcnR5TmFtZSwgIndlYmtpdCIp
KQorICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeFdlYktpdDsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBQ
cm9wZXJ0eU5hbWVQcmVmaXhOb25lOwogfQogCiBzdGF0aWMgU3RyaW5nIGNzc1Byb3BlcnR5TmFt
ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvb2wqIGhhZFBpeGVsT3JQb3NQcmVm
aXggPSAwKQpAQCAtOTUsMjYgKzE0OSwzMSBAQCBzdGF0aWMgU3RyaW5nIGNzc1Byb3BlcnR5TmFt
ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvb2wqIGhhZFBpeGVsT3JQbwogICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5n
dGgpOwogCisgICAgY29uc3QgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lU3RyaW5nID0gcHJvcGVy
dHlOYW1lLmltcGwoKTsKICAgICB1bnNpZ25lZCBpID0gMDsKLQotICAgIGlmIChoYXNDU1NQcm9w
ZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAiY3NzIikpCisgICAgc3dpdGNoIChnZXRDU1NQ
cm9wZXJ0eU5hbWVQcmVmaXgoKnByb3BlcnR5TmFtZVN0cmluZykpIHsKKyAgICBjYXNlIFByb3Bl
cnR5TmFtZVByZWZpeE5vbmU6CisgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoKCpwcm9wZXJ0eU5h
bWVTdHJpbmcpWzBdKSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhDU1M6CiAgICAgICAgIGkgKz0gMzsKLSAg
ICBlbHNlIGlmIChoYXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAicGl4ZWwi
KSkgeworICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeFBpeGVsOgog
ICAgICAgICBpICs9IDU7CiAgICAgICAgIGlmIChoYWRQaXhlbE9yUG9zUHJlZml4KQogICAgICAg
ICAgICAgKmhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoaGFzQ1NT
UHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgInBvcyIpKSB7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4UG9zOgogICAgICAgICBpICs9IDM7CiAgICAg
ICAgIGlmIChoYWRQaXhlbE9yUG9zUHJlZml4KQogICAgICAgICAgICAgKmhhZFBpeGVsT3JQb3NQ
cmVmaXggPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoaGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHBy
b3BlcnR5TmFtZSwgIndlYmtpdCIpCi0gICAgICAgICAgICB8fCBoYXNDU1NQcm9wZXJ0eU5hbWVQ
cmVmaXgocHJvcGVydHlOYW1lLCAia2h0bWwiKQotICAgICAgICAgICAgfHwgaGFzQ1NTUHJvcGVy
dHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikKLSAgICAgICAgICAgIHx8IGhhc0NT
U1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJlcHViIikpCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4QXBwbGU6CisgICAgY2FzZSBQcm9wZXJ0eU5h
bWVQcmVmaXhFcHViOgorICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4S0hUTUw6CisgICAgY2Fz
ZSBQcm9wZXJ0eU5hbWVQcmVmaXhXZWJLaXQ6CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJVXBwZXIocHJvcGVydHlOYW1lLmNoYXJh
Y3RlcnMoKVswXSkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCiAgICAg
YnVpbGRlci5hcHBlbmQodG9BU0NJSUxvd2VyKHByb3BlcnR5TmFtZS5jaGFyYWN0ZXJzKClbaSsr
XSkpOwo=
</data>
<flag name="review"
          id="125407"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>