<?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>172798</bug_id>
          
          <creation_ts>2017-05-31 21:55:53 -0700</creation_ts>
          <short_desc>[JSC] Implement String.prototype.concat in JS builtins</short_desc>
          <delta_ts>2017-06-01 09:54: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>New Bugs</component>
          <version>WebKit 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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1314539</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-31 21:55:53 -0700</bug_when>
    <thetext>[JSC] Implement String.prototype.concat in JS builtins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314540</commentid>
    <comment_count>1</comment_count>
      <attachid>311683</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-31 21:58:03 -0700</bug_when>
    <thetext>Created attachment 311683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314541</commentid>
    <comment_count>2</comment_count>
      <attachid>311683</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-31 22:05:00 -0700</bug_when>
    <thetext>Comment on attachment 311683
Patch

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

&gt; Source/JavaScriptCore/builtins/StringPrototype.js:311
&gt; +function stringConcatSlowPath()
&gt; +{
&gt; +    &quot;use strict&quot;;

Is using arguments faster than using rest parameters? (I asked Saam recently and he was on the fence I think, or maybe just hadn&apos;t benchmarked it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314542</commentid>
    <comment_count>3</comment_count>
      <attachid>311683</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-31 22:15:19 -0700</bug_when>
    <thetext>Comment on attachment 311683
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/builtins/StringPrototype.js:311
&gt;&gt; +    &quot;use strict&quot;;
&gt; 
&gt; Is using arguments faster than using rest parameters? (I asked Saam recently and he was on the fence I think, or maybe just hadn&apos;t benchmarked it).

One stupid problem is that our builtin JS system currently cannot accept default and rest parameters :(
We should extend our builtin JS generators (python scripts) to accept these forms.
It should be easy &amp; simple task.

But, even if we do that, for builtin JS, I think we can introduce &amp; use much better one: extending `@argument()` to accept arbitrary runtime integers instead of constant integers.
By doing so, we can avoid allocation for arguments / rest parameter arrays completely for builtin JS code.
So, personally, rather than extending builtin JS generators, I think we should do this thing.

So, I think we do not need to use rest parameters &amp; arguments in JS builtin code when we do the above optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314543</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-31 22:18:33 -0700</bug_when>
    <thetext>Committed r217648: &lt;http://trac.webkit.org/changeset/217648&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314551</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-31 23:52:02 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; Committed r217648: &lt;http://trac.webkit.org/changeset/217648&gt;

Need to rebaseline error messages. WIP...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314555</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-01 00:27:14 -0700</bug_when>
    <thetext>Committed r217649: &lt;http://trac.webkit.org/changeset/217649&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314657</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-06-01 09:47:03 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Comment on attachment 311683 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311683&amp;action=review
&gt; 
&gt; Thanks!
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/builtins/StringPrototype.js:311
&gt; &gt;&gt; +    &quot;use strict&quot;;
&gt; &gt; 
&gt; &gt; Is using arguments faster than using rest parameters? (I asked Saam recently and he was on the fence I think, or maybe just hadn&apos;t benchmarked it).
&gt; 
&gt; One stupid problem is that our builtin JS system currently cannot accept
&gt; default and rest parameters :(
&gt; We should extend our builtin JS generators (python scripts) to accept these
&gt; forms.
&gt; It should be easy &amp; simple task.
Out of curiosity, why does this break the script? Does it try to validate syntax somehow?

&gt; 
&gt; But, even if we do that, for builtin JS, I think we can introduce &amp; use much
&gt; better one: extending `@argument()` to accept arbitrary runtime integers
&gt; instead of constant integers.
&gt; By doing so, we can avoid allocation for arguments / rest parameter arrays
&gt; completely for builtin JS code.
&gt; So, personally, rather than extending builtin JS generators, I think we
&gt; should do this thing.
I agree.

&gt; 
&gt; So, I think we do not need to use rest parameters &amp; arguments in JS builtin
&gt; code when we do the above optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314663</commentid>
    <comment_count>8</comment_count>
      <attachid>311683</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-01 09:54:26 -0700</bug_when>
    <thetext>Comment on attachment 311683
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/builtins/StringPrototype.js:311
&gt;&gt;&gt;&gt; +    &quot;use strict&quot;;
&gt;&gt;&gt; 
&gt;&gt;&gt; Is using arguments faster than using rest parameters? (I asked Saam recently and he was on the fence I think, or maybe just hadn&apos;t benchmarked it).
&gt;&gt; 
&gt;&gt; One stupid problem is that our builtin JS system currently cannot accept default and rest parameters :(
&gt;&gt; We should extend our builtin JS generators (python scripts) to accept these forms.
&gt;&gt; It should be easy &amp; simple task.
&gt;&gt; 
&gt;&gt; But, even if we do that, for builtin JS, I think we can introduce &amp; use much better one: extending `@argument()` to accept arbitrary runtime integers instead of constant integers.
&gt;&gt; By doing so, we can avoid allocation for arguments / rest parameter arrays completely for builtin JS code.
&gt;&gt; So, personally, rather than extending builtin JS generators, I think we should do this thing.
&gt;&gt; 
&gt;&gt; So, I think we do not need to use rest parameters &amp; arguments in JS builtin code when we do the above optimization.
&gt; 
&gt; Out of curiosity, why does this break the script? Does it try to validate syntax somehow?

It&apos;s just a missing regexp in builtin generator python. We should extend the existing regexp to accept parameters including default and rest params.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311683</attachid>
            <date>2017-05-31 21:58:03 -0700</date>
            <delta_ts>2017-05-31 22:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172798-20170601135802.patch</filename>
            <type>text/plain</type>
            <size>8776</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YmNjN2VjMmMzMzJhYjdhZTY1MTUwOGRmYjMwMWYzNjczYTIyNzMxLi5hOTdkM2NmMjIzNzc4NmI3
NzQ1OWMxMTM4N2RiZWFkZTBlY2U0ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0wNS0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgU3RyaW5nLnByb3RvdHlwZS5jb25jYXQg
aW4gSlMgYnVpbHRpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3Mjc5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNpbmNlIHdlIGhhdmUgaGlnaGx5IGVmZmVjdGl2ZSArIG9wZXJhdGlvbiBmb3Igc3Ry
aW5ncywKKyAgICAgICAgaW1wbGVtZW50aW5nIFN0cmluZy5wcm90b3R5cGUuY29uY2F0IGluIEpT
IHNpbXBsaWZpZXMgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIGFuZCBpbXByb3ZlcyBwZXJm
b3JtYW5jZSBieSB1c2luZyBzcGVjdWxhdGVkCisgICAgICAgIHR5cGVzLgorCisgICAgICAgIEFk
ZGVkIG1pY3JvYmVuY2htYXJrcyBzaG93IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LgorCisgICAg
ICAgIHN0cmluZy1jb25jYXQtbG9uZy1jb252ZXJ0ICAgICAxMDYzLjI3ODcrLTEyLjkxMDEgICAg
XiAgICAxMDkuMDg1NSstMi44MDgzICAgICAgICBeIGRlZmluaXRlbHkgOS43NDcyeCBmYXN0ZXIK
KyAgICAgICAgc3RyaW5nLWNvbmNhdC1jb252ZXJ0ICAgICAgICAgIDExMTEuMTM2NistMTIuMjM2
MyAgICBeICAgICA5OS4zNDAyKy0xLjk4NzQgICAgICAgIF4gZGVmaW5pdGVseSAxMS4xODUyeCBm
YXN0ZXIKKyAgICAgICAgc3RyaW5nLWNvbmNhdCAgICAgICAgICAgICAgICAgICAxMzEuNzM3Nyst
My44MzU5ICAgICBeICAgICA1NC4zOTQ5Ky0wLjk1ODAgICAgICAgIF4gZGVmaW5pdGVseSAyLjQy
MTl4IGZhc3RlcgorICAgICAgICBzdHJpbmctY29uY2F0LWxvbmcgICAgICAgICAgICAgICA3OS40
NzI2Ky0xLjk2NDQgICAgIF4gICAgIDY0LjYzMDErLTEuNDk0MSAgICAgICAgXiBkZWZpbml0ZWx5
IDEuMjI5N3ggZmFzdGVyCisKKyAgICAgICAgKiBidWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLnN0cmluZ0NvbmNhdFNsb3dQYXRoKToKKyAgICAgICAg
KGNvbmNhdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jQ29uY2F0KTogRGVsZXRlZC4KKwogMjAxNy0wNS0zMSAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG92ZXJyaWRlcyBvZiB2aXNp
dENoaWxkcmVuKCkgdGhhdCBkbyBub3QgYWRkIGFueSBmdW5jdGlvbmFsaXR5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKaW5kZXggMTQ0
ZWQxYTVkN2MxYTQ2YjM4ZDA4YWQ3OWYzZWQ3MjNjMzljNzI4Ni4uNjhkNjM3NmEzYTk4N2ViYjkx
N2I1Y2RhN2QxMGRjNTEyODVlODlkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCkBAIC0zMDYsNiArMzA2LDI5IEBAIGZ1bmN0aW9u
IHNwbGl0KHNlcGFyYXRvciwgbGltaXQpCiB9CiAKIEBnbG9iYWxQcml2YXRlCitmdW5jdGlvbiBz
dHJpbmdDb25jYXRTbG93UGF0aCgpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJl
c3VsdCA9IEB0b1N0cmluZyh0aGlzKTsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gYXJn
dW1lbnRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHQgKz0gQHRvU3Ry
aW5nKGFyZ3VtZW50c1tpXSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gY29u
Y2F0KGFyZyAvKiAuLi4gKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMg
PT0gbnVsbCkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLmNvbmNh
dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAg
IGlmIChAYXJndW1lbnRDb3VudCgpID09PSAxKQorICAgICAgICByZXR1cm4gQHRvU3RyaW5nKHRo
aXMpICsgQHRvU3RyaW5nKGFyZyk7CisgICAgcmV0dXJuIEB0YWlsQ2FsbEZvcndhcmRBcmd1bWVu
dHMoQHN0cmluZ0NvbmNhdFNsb3dQYXRoLCB0aGlzKTsKK30KKworQGdsb2JhbFByaXZhdGUKIGZ1
bmN0aW9uIGNyZWF0ZUhUTUwoZnVuYywgc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpCiB7
CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNDZiNTZhMmNlZTRkNjhjY2I3YWJiMDRhMWU5NmY3
YTkzYWY5OTNlZi4uNWFiNGFhNzYxOTUzZTEzMjI5NzRmMTliZTlmZWYzYjUzN2VlNDdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CkBAIC02Myw3ICs2Myw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0NoYXJBdChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvbmNhdChF
eGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
SW5kZXhPZihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cChFeGVjU3RhdGUqKTsKQEAg
LTk1LDYgKzk0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvID0g
eyAiU3RyaW5nIiwgJlN0cmluZ09iamVjdDo6c19pbmZvLCAmc3QKIAogLyogU291cmNlIGZvciBT
dHJpbmdDb25zdHJ1Y3Rvci5sdXQuaAogQGJlZ2luIHN0cmluZ1Byb3RvdHlwZVRhYmxlCisgICAg
Y29uY2F0ICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgbWF0Y2ggICAg
IEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcGFkU3RhcnQgIEpTQnVpbHRp
biAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcGFkRW5kICAgIEpTQnVpbHRpbiAgICBEb250
RW51bXxGdW5jdGlvbiAxCkBAIC0xMzQsNyArMTM0LDYgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNT
dHIKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
ImNoYXJBdCIsIHN0cmluZ1Byb3RvRnVuY0NoYXJBdCwgRG9udEVudW0sIDEsIENoYXJBdEludHJp
bnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKCJjaGFyQ29kZUF0Iiwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwgRG9udEVudW0sIDEs
IENoYXJDb2RlQXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJjb2RlUG9pbnRBdCIsIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0LCBEb250
RW51bSwgMSk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNv
bmNhdCIsIHN0cmluZ1Byb3RvRnVuY0NvbmNhdCwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmRleE9mIiwgc3RyaW5nUHJvdG9GdW5j
SW5kZXhPZiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIsIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mLCBEb250
RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcGxhY2VVc2luZ1JlZ0V4
cFByaXZhdGVOYW1lKCksIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cCwgRG9udEVu
dW0sIDIsIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VSZWdFeHBJbnRyaW5zaWMpOwpAQCAtOTk0LDI1
ICs5OTMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0Nv
ZGVQb2ludEF0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY0NvbmNhdChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIGlmICh0aGlzVmFsdWUuaXNT
dHJpbmcoKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewotICAgICAgICBKU1N0cmlu
Zyogc3RyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJp
bmcoZXhlYywgYXNTdHJpbmcodGhpc1ZhbHVlKSwgc3RyKSk7Ci0gICAgfQotCi0gICAgaWYgKCFj
aGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmdGcm9tQXJndW1lbnRzKGV4ZWMsIHRoaXNWYWx1ZSkpOwot
fQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2Yo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkwZmM3ODJjNTJm
ODZlZWY0YzY4NjQyNWJhN2VjNDIwNjIyMjU5NzQuLmQyNTM5ZDBmZDYyOTViOGI5MDMyZjA5OThj
NmFmOWE2OTY5NmEyNWUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDUtMzEgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFN0cmlu
Zy5wcm90b3R5cGUuY29uY2F0IGluIEpTIGJ1aWx0aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI3OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0
LWNvbnZlcnQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICogbWljcm9iZW5j
aG1hcmtzL3N0cmluZy1jb25jYXQtbG9uZy1jb252ZXJ0LmpzOiBBZGRlZC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0LWxvbmcuanM6IEFk
ZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3N0cmluZy1j
b25jYXQuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTctMDUtMzEgIE9sZWtzYW5k
ciBTa2FjaGtvdiAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgUm9sbGluZyBvdXQ6
IFByZXZlbnQgYXN5bmMgbWV0aG9kcyBuYW1lZCAnZnVuY3Rpb24nCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0LWNvbnZlcnQuanMgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0LWNvbnZlcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJkNjkw
YjFkZTVkNzRmOWQ3NDQ3NzZhMjEzYjNmNGM0Mjc0ZmRmYQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3N0cmluZy1jb25jYXQtY29udmVydC5qcwpAQCAtMCwwICsx
LDggQEAKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYywgZCwgZSkKK3sKKyAgICByZXR1cm4gYS5jb25j
YXQoYikuY29uY2F0KGMpLmNvbmNhdChkKS5jb25jYXQoZSk7Cit9Citub0lubGluZSh0ZXN0KTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0KG5ldyBTdHJpbmcoIkNv
Y29hIiksIG5ldyBTdHJpbmcoIkNhcHB1Y2Npbm8iKSwgbmV3IFN0cmluZygiTWF0Y2hhIiksIG5l
dyBTdHJpbmcoIlJpemUiKSwgbmV3IFN0cmluZygiS2lsaW1hbmphcm8iKSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0LWxvbmctY29udmVydC5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N0cmluZy1jb25jYXQtbG9uZy1jb252ZXJ0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ0YTljZjhmZDZmNzBjNzM5ZTRmZDQzYjE1ZTg2OGE4ODRmYWQ3OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0LWxvbmct
Y29udmVydC5qcwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYywgZCwgZSkK
K3sKKyAgICByZXR1cm4gYS5jb25jYXQoYiwgYywgZCwgZSk7Cit9Citub0lubGluZSh0ZXN0KTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0KG5ldyBTdHJpbmcoIkNv
Y29hIiksIG5ldyBTdHJpbmcoIkNhcHB1Y2Npbm8iKSwgbmV3IFN0cmluZygiTWF0Y2hhIiksIG5l
dyBTdHJpbmcoIlJpemUiKSwgbmV3IFN0cmluZygiS2lsaW1hbmphcm8iKSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0LWxvbmcuanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9zdHJpbmctY29uY2F0LWxvbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgwNWU5
YmMzODJmNzAyMjhhMWVlMGVkNzdkZWZhMDc5NTQzYTU4OAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3N0cmluZy1jb25jYXQtbG9uZy5qcwpAQCAtMCwwICsxLDgg
QEAKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYywgZCwgZSkKK3sKKyAgICByZXR1cm4gYS5jb25jYXQo
YiwgYywgZCwgZSk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTY7ICsraSkKKyAgICB0ZXN0KCJDb2NvYSIsICJDYXBwdWNjaW5vIiwgIk1hdGNoYSIsICJSaXpl
IiwgIktpbGltYW5qYXJvIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9z
dHJpbmctY29uY2F0LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3RyaW5nLWNvbmNhdC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MjBhYmRiYjg4ZDljOGM5YjBmYzg5ZjYzNzc5NjljMDRmNDQzN2MxCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvc3RyaW5nLWNvbmNhdC5q
cwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHRlc3QoYSwgYiwgYywgZCwgZSkKK3sKKyAgICBy
ZXR1cm4gYS5jb25jYXQoYikuY29uY2F0KGMpLmNvbmNhdChkKS5jb25jYXQoZSk7Cit9Citub0lu
bGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0KCJD
b2NvYSIsICJDYXBwdWNjaW5vIiwgIk1hdGNoYSIsICJSaXplIiwgIktpbGltYW5qYXJvIik7Cg==
</data>
<flag name="review"
          id="332645"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>