<?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>145365</bug_id>
          
          <creation_ts>2015-05-25 00:23:28 -0700</creation_ts>
          <short_desc>Array.of should work with other constructors</short_desc>
          <delta_ts>2015-05-27 22:47:33 -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="Jordan Harband">ljharb</reporter>
          <assigned_to name="Jordan Harband">ljharb</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097218</commentid>
    <comment_count>0</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-05-25 00:23:28 -0700</bug_when>
    <thetext>`function Foo(len) { this.length = len; } Array.of.apply(Foo, [1, 2, 3])` should return an instance of  `Foo` with the appropriate array index properties set, including &quot;length&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097219</commentid>
    <comment_count>1</comment_count>
      <attachid>253675</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-05-25 00:24:53 -0700</bug_when>
    <thetext>Created attachment 253675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097295</commentid>
    <comment_count>2</comment_count>
      <attachid>253675</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-26 03:10:54 -0700</bug_when>
    <thetext>Comment on attachment 253675
Patch

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

&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:27
&gt; +  return Array.from.call(this, arguments);

Since Array.from looks up `@@iterator` of the given object, users can observe the spec violation by setting `arguments.__proto__[@@iterator]` getter.
I suggest just implementing the Array.of here instead of reusing Array.from.

And we need to pay attension to the references to the unsafe object (exposed to users).
In the above implementation, we refer `Array` and `Array.from`, `Array.from.call`. Both can be replaced by users so it&apos;s not safe.
(By overwriting `Array` / overwriting `Array.from` / overwriting `Array.from.call`.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097623</commentid>
    <comment_count>3</comment_count>
      <attachid>253789</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-05-27 01:31:00 -0700</bug_when>
    <thetext>Created attachment 253789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097625</commentid>
    <comment_count>4</comment_count>
      <attachid>253789</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-27 02:14:32 -0700</bug_when>
    <thetext>Comment on attachment 253789
Patch

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

Great! Patch looks very nice to me (&amp; nice catch!). Just nits.

&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:26
&gt; +function of(/* items... */) {

Please line break before `{`.

&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:29
&gt; +    var len = arguments.length;

These `len` / `A` / `C` are derived from the spec. But it is a little bit not readable for developers only looking this code.
Renaming more meaningful name is preferable.
`len` =&gt; `length`
`C` =&gt; `constructor`
`A` =&gt; `array`

&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:31
&gt; +    // TODO: Need isConstructor(thisObj) instead of typeof &quot;function&quot; check.

`isConstructor(thisObj)` is needed to fit to here&apos;s variable name.

&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:34
&gt; +    while (k &lt; len) {

We can use for statement here. I know this `while` is corresponding to the sepc description. But for-statement is more readable ;)

for (var k = 0; k &lt; length; ++k)

&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:35
&gt; +        @putByValDirect(A, @String(k), arguments[k])

`@String(k)` is not needed because Number =&gt; String conversion is not observable to users.
Just using `@putByValDirect(array, k, arguments[k])` is ok (and it is more efficient) ;)

&gt; LayoutTests/js/script-tests/array-of.js:30
&gt; +shouldBe(&quot;var foo = Array.of.call(Foo, &apos;a&apos;, &apos;b&apos;, &apos;c&apos;); [foo.length, foo[0], foo[1], foo[2]]&quot;, &quot;[3, &apos;a&apos;, &apos;b&apos;, &apos;c&apos;]&quot;);

Additionally, e would like to test the argument of `Foo`, according to the spec, `length` comes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097640</commentid>
    <comment_count>5</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-05-27 09:31:31 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 253789 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253789&amp;action=review
&gt; 
&gt; Great! Patch looks very nice to me (&amp; nice catch!). Just nits.
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:26
&gt; &gt; +function of(/* items... */) {
&gt; 
&gt; Please line break before `{`.
I&apos;m following the same style as the &quot;from&quot; implementation in the file.

&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:29
&gt; &gt; +    var len = arguments.length;
&gt; 
&gt; These `len` / `A` / `C` are derived from the spec. But it is a little bit
&gt; not readable for developers only looking this code.
&gt; Renaming more meaningful name is preferable.
&gt; `len` =&gt; `length`
&gt; `C` =&gt; `constructor`
&gt; `A` =&gt; `array`
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:31
&gt; &gt; +    // TODO: Need isConstructor(thisObj) instead of typeof &quot;function&quot; check.
&gt; 
&gt; `isConstructor(thisObj)` is needed to fit to here&apos;s variable name.
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:34
&gt; &gt; +    while (k &lt; len) {
&gt; 
&gt; We can use for statement here. I know this `while` is corresponding to the
&gt; sepc description. But for-statement is more readable ;)
&gt; 
&gt; for (var k = 0; k &lt; length; ++k)
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:35
&gt; &gt; +        @putByValDirect(A, @String(k), arguments[k])
&gt; 
&gt; `@String(k)` is not needed because Number =&gt; String conversion is not
&gt; observable to users.
&gt; Just using `@putByValDirect(array, k, arguments[k])` is ok (and it is more
&gt; efficient) ;)
&gt; 
&gt; &gt; LayoutTests/js/script-tests/array-of.js:30
&gt; &gt; +shouldBe(&quot;var foo = Array.of.call(Foo, &apos;a&apos;, &apos;b&apos;, &apos;c&apos;); [foo.length, foo[0], foo[1], foo[2]]&quot;, &quot;[3, &apos;a&apos;, &apos;b&apos;, &apos;c&apos;]&quot;);
&gt; 
&gt; Additionally, e would like to test the argument of `Foo`, according to the
&gt; spec, `length` comes.

All the rest will be updated in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097672</commentid>
    <comment_count>6</comment_count>
      <attachid>253789</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-27 11:25:39 -0700</bug_when>
    <thetext>Comment on attachment 253789
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:26
&gt;&gt;&gt; +function of(/* items... */) {
&gt;&gt; 
&gt;&gt; Please line break before `{`.
&gt; 
&gt; I&apos;m following the same style as the &quot;from&quot; implementation in the file.

Sure, but you shouldn’t do that. Instead you should follow WebKit’s explicitly written style guidelines. We’ll fix that “from” function eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097673</commentid>
    <comment_count>7</comment_count>
      <attachid>253789</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-27 11:26:19 -0700</bug_when>
    <thetext>Comment on attachment 253789
Patch

So when you referred to the “next patch” does that mean there’s a new one coming to replace this one? If so, please clear the review and commit queue flags from this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097827</commentid>
    <comment_count>8</comment_count>
      <attachid>253830</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-05-27 21:27:48 -0700</bug_when>
    <thetext>Created attachment 253830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097833</commentid>
    <comment_count>9</comment_count>
      <attachid>253830</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-05-27 21:58:07 -0700</bug_when>
    <thetext>Comment on attachment 253830
Patch

r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097842</commentid>
    <comment_count>10</comment_count>
      <attachid>253830</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-27 22:47:29 -0700</bug_when>
    <thetext>Comment on attachment 253830
Patch

Clearing flags on attachment: 253830

Committed r184942: &lt;http://trac.webkit.org/changeset/184942&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097843</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-27 22:47:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253675</attachid>
            <date>2015-05-25 00:24:53 -0700</date>
            <delta_ts>2015-05-27 01:30:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145365-20150525002444.patch</filename>
            <type>text/plain</type>
            <size>4866</size>
            <attacher name="Jordan Harband">ljharb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjVjNGE2ZDE2MjNjOTFiYTA5OWM0OTNmNzMzOGY5NjM5MmNhMjQ3Li5lYzQ0ZmU2ODcwMzgxODVk
Y2M5NzY0NmNiNGRiZjhjMDNhZTRmNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNS0wNS0yNSAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29t
PgorCisgICAgICAgIEFycmF5Lm9mIHNob3VsZCB3b3JrIHdpdGggb3RoZXIgY29uc3RydWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUzNjUK
KyAgICAgICAgUGVyIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1k
cmFmdC5odG1sI3NlYy1hcnJheS5vZgorICAgICAgICBzdGVwIDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5Q29uc3RydWN0
b3IuanM6CisgICAgICAgIChvZik6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlDb25zdHJ1Y3Rvck9mKTogRGVsZXRlZC4KKwogMjAx
NS0wNS0yNCAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29tPgogCiAgICAgICAgIEFy
cmF5I2ZpbmRJbmRleC9maW5kIHNob3VsZCBub3Qgc2tpcCBob2xlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwppbmRleCAwZWFlMjE0
MzJmOWUyNDM0NmEzZTFhZGMwMTE2YTU1MDdjOWM0NzQ2Li43Mjg3MGM4ZjVhNDEyMmUyZjk3OTNi
YzQwYzQxMzI3MjdiNGJkMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwpAQCAtMjMsNiArMjMsMTAgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorZnVuY3Rpb24gb2YoLyogaXRlbXMuLi4gKi8pIHsKKyAgcmV0dXJuIEFycmF5
LmZyb20uY2FsbCh0aGlzLCBhcmd1bWVudHMpOworfQorCiBmdW5jdGlvbiBmcm9tKGl0ZW1zIC8q
LCBtYXBGbiwgdGhpc0FyZyAqLykgewogICAgICJ1c2Ugc3RyaWN0IjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCA2MDRk
ZDlhOGM3YzZjOWMxMmY4YTJlN2NjNWJhM2NhYTNkNzY0ZWIwLi4xOTRmOTIxN2MxYzIxODYwMzY5
ZWMwZTRlZTQ0ZDg3Yzk4ODAwODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAtMzcsNyArMzcsNiBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3Ry
dWN0b3JJc0FycmF5KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlDb25zdHJ1Y3Rvck9mKEV4ZWNTdGF0ZSopOwogCiB9CiAKQEAgLTEyOSwxNyAr
MTI4LDQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9ySXNB
cnJheShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNBcnJheTo6aW5mbygpKSkpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JPZihFeGVjU3RhdGUq
IGV4ZWMpCi17Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwotICAgIHNpemVfdCBsZW5ndGggPSBh
cmdzLnNpemUoKTsKLQotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYywgbnVsbHB0ciwgbGVuZ3RoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBpLCBhcmdz
LmF0KGkpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGI2Zjc2MjlhYmE3N2RjODViZGYzYzdlMWEzZWEzZTg1
YTc1ZDBjNi4uNmUxZjgyOWU0ODI3NjI2OGI0OWEwNmE4MjA5MDVmOWJlMTI1YmI2NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE1LTA1LTI1ICBKb3JkYW4gSGFyYmFuZCAgPGxqaGFyYkBnbWFp
bC5jb20+CisKKyAgICAgICAgQXJyYXkub2Ygc2hvdWxkIHdvcmsgd2l0aCBvdGhlciBjb25zdHJ1
Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NTM2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
anMvYXJyYXktb2YtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJh
eS1vZi5qczoKKyAgICAgICAgKEZvbyk6CisKIDIwMTUtMDUtMjQgIEpvcmRhbiBIYXJiYW5kICA8
bGpoYXJiQGdtYWlsLmNvbT4KIAogICAgICAgICBBcnJheSNmaW5kSW5kZXgvZmluZCBzaG91bGQg
bm90IHNraXAgaG9sZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5LW9mLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LW9mLWV4cGVjdGVkLnR4dAppbmRleCAzMGI0
ZDU5OGM3MmZlMTViODdiZTQ1MzZjNTAyYjYwYTYzMGE3YjJhLi5jNGQyNDgyZGRiZTY5ZDYwYjI3
ODBlY2M1OTZiYzUxZDRhZmEwZWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1v
Zi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktb2YtZXhwZWN0ZWQudHh0
CkBAIC0zLDYgKzMsOCBAQCBUZXN0cyBmb3IgQXJyYXkub2YKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCitQQVNTIEFycmF5Lm9mLmxlbmd0aCBpcyAwCitQQVNTIEFycmF5Lm9mLm5hbWUg
aXMgJ29mJwogUEFTUyBBcnJheS5vZigxKSBpcyBbMV0KIFBBU1MgQXJyYXkub2YoMSwgMikgaXMg
WzEsIDJdCiBQQVNTIEFycmF5Lm9mKDEsIDIsIDMpIGlzIFsxLCAyLCAzXQpAQCAtMTUsNiArMTcs
OCBAQCBQQVNTIHhbMF0ubGVuZ3RoIGlzIDMKIFBBU1MgeFsxXS5sZW5ndGggaXMgNQogQ2hlY2sg
dGhhdCBhIHNldHRlciBpc24ndCBjYWxsZWQuCiBQQVNTIEFycmF5Lm9mKDEsIDIsIDMpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBBcnJheS5vZi5jYWxsKEZvbywgJ2EnLCAnYicsICdj
JykgaW5zdGFuY2VvZiBGb28gaXMgdHJ1ZQorUEFTUyB2YXIgZm9vID0gQXJyYXkub2YuY2FsbChG
b28sICdhJywgJ2InLCAnYycpOyBbZm9vLmxlbmd0aCwgZm9vWzBdLCBmb29bMV0sIGZvb1syXV0g
aXMgWzMsICdhJywgJ2InLCAnYyddCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJheS1vZi5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1vZi5qcwppbmRl
eCA4NDcyYmFhMmZlNmQ1ZDVlMjQyOGY3OTNjNzU0YjBlMzVlNjMxYzA4Li5mMjJlY2I4YTVkYzFi
NDdjNjkyYWFlMGM3NTMzY2MwZjFiNDNjZDY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyYXktb2YuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2FycmF5LW9mLmpzCkBAIC0xLDUgKzEsOCBAQAogZGVzY3JpcHRpb24oIlRlc3RzIGZvciBBcnJh
eS5vZiIpOwogCitzaG91bGRCZSgiQXJyYXkub2YubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJB
cnJheS5vZi5uYW1lIiwgIidvZiciKTsKKwogc2hvdWxkQmUoIkFycmF5Lm9mKDEpIiwgIlsxXSIp
Owogc2hvdWxkQmUoIkFycmF5Lm9mKDEsIDIpIiwgIlsxLCAyXSIpOwogc2hvdWxkQmUoIkFycmF5
Lm9mKDEsIDIsIDMpIiwgIlsxLCAyLCAzXSIpOwpAQCAtMjIsMyArMjUsNiBAQCBBcnJheS5wcm90
b3R5cGUuX19kZWZpbmVTZXR0ZXJfXygiMCIsIGZ1bmN0aW9uICh2YWx1ZSkgewogCiBzaG91bGRO
b3RUaHJvdygiQXJyYXkub2YoMSwgMiwgMykiKTsKIAordmFyIEZvbyA9IGZ1bmN0aW9uIEZvb0Jh
cigpIHt9Oworc2hvdWxkQmVUcnVlKCJBcnJheS5vZi5jYWxsKEZvbywgJ2EnLCAnYicsICdjJykg
aW5zdGFuY2VvZiBGb28iKQorc2hvdWxkQmUoInZhciBmb28gPSBBcnJheS5vZi5jYWxsKEZvbywg
J2EnLCAnYicsICdjJyk7IFtmb28ubGVuZ3RoLCBmb29bMF0sIGZvb1sxXSwgZm9vWzJdXSIsICJb
MywgJ2EnLCAnYicsICdjJ10iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253789</attachid>
            <date>2015-05-27 01:31:00 -0700</date>
            <delta_ts>2015-05-27 21:27:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145365-20150527013048.patch</filename>
            <type>text/plain</type>
            <size>5195</size>
            <attacher name="Jordan Harband">ljharb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjVjNGE2ZDE2MjNjOTFiYTA5OWM0OTNmNzMzOGY5NjM5MmNhMjQ3Li5lYzQ0ZmU2ODcwMzgxODVk
Y2M5NzY0NmNiNGRiZjhjMDNhZTRmNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNS0wNS0yNSAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29t
PgorCisgICAgICAgIEFycmF5Lm9mIHNob3VsZCB3b3JrIHdpdGggb3RoZXIgY29uc3RydWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUzNjUK
KyAgICAgICAgUGVyIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1k
cmFmdC5odG1sI3NlYy1hcnJheS5vZgorICAgICAgICBzdGVwIDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5Q29uc3RydWN0
b3IuanM6CisgICAgICAgIChvZik6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlDb25zdHJ1Y3Rvck9mKTogRGVsZXRlZC4KKwogMjAx
NS0wNS0yNCAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29tPgogCiAgICAgICAgIEFy
cmF5I2ZpbmRJbmRleC9maW5kIHNob3VsZCBub3Qgc2tpcCBob2xlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwppbmRleCAwZWFlMjE0
MzJmOWUyNDM0NmEzZTFhZGMwMTE2YTU1MDdjOWM0NzQ2Li4zN2M1NGZiNmYyMDlhYjM5MDhiY2Yw
ZDdlOGNkZGNmMGQ4N2YwNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwpAQCAtMjMsNiArMjMsMjIgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorZnVuY3Rpb24gb2YoLyogaXRlbXMuLi4gKi8pIHsKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgICB2YXIgQyA9IHRoaXM7
CisgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlw
ZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIEEgPSB0eXBlb2YgQyA9PT0gJ2Z1bmN0aW9u
JyA/IG5ldyBDKGxlbikgOiBuZXcgQEFycmF5KGxlbik7CisgICAgdmFyIGsgPSAwOworICAgIHdo
aWxlIChrIDwgbGVuKSB7CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChBLCBAU3RyaW5nKGspLCBh
cmd1bWVudHNba10pCisgICAgICAgIGsgKz0gMTsKKyAgICB9CisgICAgQS5sZW5ndGggPSBsZW47
CisgICAgcmV0dXJuIEE7Cit9CisKIGZ1bmN0aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlz
QXJnICovKSB7CiAgICAgInVzZSBzdHJpY3QiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwNGRkOWE4YzdjNmM5YzEy
ZjhhMmU3Y2M1YmEzY2FhM2Q3NjRlYjAuLjE5NGY5MjE3YzFjMjE4NjAzNjllYzBlNGVlNDRkODdj
OTg4MDA4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXko
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNv
bnN0cnVjdG9yT2YoRXhlY1N0YXRlKik7CiAKIH0KIApAQCAtMTI5LDE3ICsxMjgsNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JJc0FycmF5KEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihleGVjLT5hcmd1
bWVudCgwKS5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3Rvck9mKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAg
ICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IGFyZ3Muc2l6ZSgpOwot
Ci0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRy
LCBsZW5ndGgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQot
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGFyZ3MuYXQoaSkpOwotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBkYjZmNzYyOWFiYTc3ZGM4NWJkZjNjN2UxYTNlYTNlODVhNzVkMGM2Li42ZTFm
ODI5ZTQ4Mjc2MjY4YjQ5YTA2YTgyMDkwNWY5YmUxMjViYjY3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMDUtMjUgIEpvcmRhbiBIYXJiYW5kICA8bGpoYXJiQGdtYWlsLmNvbT4KKworICAg
ICAgICBBcnJheS5vZiBzaG91bGQgd29yayB3aXRoIG90aGVyIGNvbnN0cnVjdG9ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MzY1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJheS1vZi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2FycmF5LW9mLmpzOgorICAg
ICAgICAoRm9vKToKKwogMjAxNS0wNS0yNCAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwu
Y29tPgogCiAgICAgICAgIEFycmF5I2ZpbmRJbmRleC9maW5kIHNob3VsZCBub3Qgc2tpcCBob2xl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktb2YtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvYXJyYXktb2YtZXhwZWN0ZWQudHh0CmluZGV4IDMwYjRkNTk4YzcyZmUxNWI4
N2JlNDUzNmM1MDJiNjBhNjMwYTdiMmEuLmM0ZDI0ODJkZGJlNjlkNjBiMjc4MGVjYzU5NmJjNTFk
NGFmYTBlZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LW9mLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1vZi1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw4
IEBAIFRlc3RzIGZvciBBcnJheS5vZgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BB
U1MgQXJyYXkub2YubGVuZ3RoIGlzIDAKK1BBU1MgQXJyYXkub2YubmFtZSBpcyAnb2YnCiBQQVNT
IEFycmF5Lm9mKDEpIGlzIFsxXQogUEFTUyBBcnJheS5vZigxLCAyKSBpcyBbMSwgMl0KIFBBU1Mg
QXJyYXkub2YoMSwgMiwgMykgaXMgWzEsIDIsIDNdCkBAIC0xNSw2ICsxNyw4IEBAIFBBU1MgeFsw
XS5sZW5ndGggaXMgMwogUEFTUyB4WzFdLmxlbmd0aCBpcyA1CiBDaGVjayB0aGF0IGEgc2V0dGVy
IGlzbid0IGNhbGxlZC4KIFBBU1MgQXJyYXkub2YoMSwgMiwgMykgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIEFycmF5Lm9mLmNhbGwoRm9vLCAnYScsICdiJywgJ2MnKSBpbnN0YW5jZW9m
IEZvbyBpcyB0cnVlCitQQVNTIHZhciBmb28gPSBBcnJheS5vZi5jYWxsKEZvbywgJ2EnLCAnYics
ICdjJyk7IFtmb28ubGVuZ3RoLCBmb29bMF0sIGZvb1sxXSwgZm9vWzJdXSBpcyBbMywgJ2EnLCAn
YicsICdjJ10KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LW9mLmpzIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LW9mLmpzCmluZGV4IDg0NzJiYWEyZmU2
ZDVkNWUyNDI4Zjc5M2M3NTRiMGUzNWU2MzFjMDguLmYyMmVjYjhhNWRjMWI0N2M2OTJhYWUwYzc1
MzNjYzBmMWI0M2NkNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJheS1vZi5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXktb2YuanMK
QEAgLTEsNSArMSw4IEBACiBkZXNjcmlwdGlvbigiVGVzdHMgZm9yIEFycmF5Lm9mIik7CiAKK3No
b3VsZEJlKCJBcnJheS5vZi5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoIkFycmF5Lm9mLm5hbWUi
LCAiJ29mJyIpOworCiBzaG91bGRCZSgiQXJyYXkub2YoMSkiLCAiWzFdIik7CiBzaG91bGRCZSgi
QXJyYXkub2YoMSwgMikiLCAiWzEsIDJdIik7CiBzaG91bGRCZSgiQXJyYXkub2YoMSwgMiwgMyki
LCAiWzEsIDIsIDNdIik7CkBAIC0yMiwzICsyNSw2IEBAIEFycmF5LnByb3RvdHlwZS5fX2RlZmlu
ZVNldHRlcl9fKCIwIiwgZnVuY3Rpb24gKHZhbHVlKSB7CiAKIHNob3VsZE5vdFRocm93KCJBcnJh
eS5vZigxLCAyLCAzKSIpOwogCit2YXIgRm9vID0gZnVuY3Rpb24gRm9vQmFyKCkge307CitzaG91
bGRCZVRydWUoIkFycmF5Lm9mLmNhbGwoRm9vLCAnYScsICdiJywgJ2MnKSBpbnN0YW5jZW9mIEZv
byIpCitzaG91bGRCZSgidmFyIGZvbyA9IEFycmF5Lm9mLmNhbGwoRm9vLCAnYScsICdiJywgJ2Mn
KTsgW2Zvby5sZW5ndGgsIGZvb1swXSwgZm9vWzFdLCBmb29bMl1dIiwgIlszLCAnYScsICdiJywg
J2MnXSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253830</attachid>
            <date>2015-05-27 21:27:48 -0700</date>
            <delta_ts>2015-05-27 22:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145365-20150527212736.patch</filename>
            <type>text/plain</type>
            <size>5331</size>
            <attacher name="Jordan Harband">ljharb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NjVjNGE2ZDE2MjNjOTFiYTA5OWM0OTNmNzMzOGY5NjM5MmNhMjQ3Li5lYzQ0ZmU2ODcwMzgxODVk
Y2M5NzY0NmNiNGRiZjhjMDNhZTRmNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNS0wNS0yNSAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29t
PgorCisgICAgICAgIEFycmF5Lm9mIHNob3VsZCB3b3JrIHdpdGggb3RoZXIgY29uc3RydWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUzNjUK
KyAgICAgICAgUGVyIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1k
cmFmdC5odG1sI3NlYy1hcnJheS5vZgorICAgICAgICBzdGVwIDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5Q29uc3RydWN0
b3IuanM6CisgICAgICAgIChvZik6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlDb25zdHJ1Y3Rvck9mKTogRGVsZXRlZC4KKwogMjAx
NS0wNS0yNCAgSm9yZGFuIEhhcmJhbmQgIDxsamhhcmJAZ21haWwuY29tPgogCiAgICAgICAgIEFy
cmF5I2ZpbmRJbmRleC9maW5kIHNob3VsZCBub3Qgc2tpcCBob2xlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwppbmRleCAwZWFlMjE0
MzJmOWUyNDM0NmEzZTFhZGMwMTE2YTU1MDdjOWM0NzQ2Li5iYjQ5ODFiOTc5YTBiMmE4MWIwMTcw
NTk0ZGEyYWFmYmFlMjJmN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwpAQCAtMjMsNiArMjMsMTkgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAorZnVuY3Rpb24gb2YoLyogaXRlbXMuLi4gKi8pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7CisgICAgLy8gVE9ETzog
TmVlZCBpc0NvbnN0cnVjdG9yKHRoaXMpIGluc3RlYWQgb2YgdHlwZW9mICJmdW5jdGlvbiIgY2hl
Y2suCisgICAgdmFyIGFycmF5ID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyBuZXcgdGhp
cyhsZW5ndGgpIDogbmV3IEBBcnJheShsZW5ndGgpOworICAgIGZvciAodmFyIGsgPSAwOyBrIDwg
bGVuZ3RoOyArK2spCisgICAgICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRz
W2tdKTsKKyAgICBhcnJheS5sZW5ndGggPSBsZW5ndGg7CisgICAgcmV0dXJuIGFycmF5OworfQor
CiBmdW5jdGlvbiBmcm9tKGl0ZW1zIC8qLCBtYXBGbiwgdGhpc0FyZyAqLykgewogICAgICJ1c2Ug
c3RyaWN0IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcAppbmRleCA2MDRkZDlhOGM3YzZjOWMxMmY4YTJlN2NjNWJhM2NhYTNkNzY0
ZWIwLi4xOTRmOTIxN2MxYzIxODYwMzY5ZWMwZTRlZTQ0ZDg3Yzk4ODAwODM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcApAQCAt
MzcsNyArMzcsNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5Q29uc3RydWN0b3JJc0FycmF5KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3Rvck9mKEV4ZWNTdGF0
ZSopOwogCiB9CiAKQEAgLTEyOSwxNyArMTI4LDQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNB
cnJheTo6aW5mbygpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
Q29uc3RydWN0b3JPZihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMp
OwotICAgIHNpemVfdCBsZW5ndGggPSBhcmdzLnNpemUoKTsKLQotICAgIEpTQXJyYXkqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgbGVuZ3RoKTsKLQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCBpLCBhcmdzLmF0KGkpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGI2Zjc2Mjlh
YmE3N2RjODViZGYzYzdlMWEzZWEzZTg1YTc1ZDBjNi4uNmUxZjgyOWU0ODI3NjI2OGI0OWEwNmE4
MjA5MDVmOWJlMTI1YmI2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA1LTI1ICBKb3Jk
YW4gSGFyYmFuZCAgPGxqaGFyYkBnbWFpbC5jb20+CisKKyAgICAgICAgQXJyYXkub2Ygc2hvdWxk
IHdvcmsgd2l0aCBvdGhlciBjb25zdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTM2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICoganMvYXJyYXktb2YtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJheS1vZi5qczoKKyAgICAgICAgKEZvbyk6CisKIDIwMTUt
MDUtMjQgIEpvcmRhbiBIYXJiYW5kICA8bGpoYXJiQGdtYWlsLmNvbT4KIAogICAgICAgICBBcnJh
eSNmaW5kSW5kZXgvZmluZCBzaG91bGQgbm90IHNraXAgaG9sZXMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2FycmF5LW9mLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LW9m
LWV4cGVjdGVkLnR4dAppbmRleCAzMGI0ZDU5OGM3MmZlMTViODdiZTQ1MzZjNTAyYjYwYTYzMGE3
YjJhLi4xNWY3ZWFjODI4YTJkZGNiYjYxOWQ3OTcxMjNmMTE1NWU4ZDc4NzE0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9hcnJheS1vZi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvYXJyYXktb2YtZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsOCBAQCBUZXN0cyBmb3IgQXJyYXku
b2YKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIEFycmF5Lm9mLmxlbmd0aCBp
cyAwCitQQVNTIEFycmF5Lm9mLm5hbWUgaXMgJ29mJwogUEFTUyBBcnJheS5vZigxKSBpcyBbMV0K
IFBBU1MgQXJyYXkub2YoMSwgMikgaXMgWzEsIDJdCiBQQVNTIEFycmF5Lm9mKDEsIDIsIDMpIGlz
IFsxLCAyLCAzXQpAQCAtMTUsNiArMTcsOSBAQCBQQVNTIHhbMF0ubGVuZ3RoIGlzIDMKIFBBU1Mg
eFsxXS5sZW5ndGggaXMgNQogQ2hlY2sgdGhhdCBhIHNldHRlciBpc24ndCBjYWxsZWQuCiBQQVNT
IEFycmF5Lm9mKDEsIDIsIDMpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBBcnJheS5v
Zi5jYWxsKEZvbywgJ2EnLCAnYicsICdjJykgaW5zdGFuY2VvZiBGb28gaXMgdHJ1ZQorUEFTUyBB
cnJheS5vZi5jYWxsKEZvbywgJ2EnLCAnYicsICdjJykuZ2l2ZW5MZW5ndGggaXMgMworUEFTUyB2
YXIgZm9vID0gQXJyYXkub2YuY2FsbChGb28sICdhJywgJ2InLCAnYycpOyBbZm9vLmxlbmd0aCwg
Zm9vWzBdLCBmb29bMV0sIGZvb1syXV0gaXMgWzMsICdhJywgJ2InLCAnYyddCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1vZi5qcyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9hcnJheS1vZi5qcwppbmRleCA4NDcyYmFhMmZlNmQ1ZDVlMjQyOGY3OTNjNzU0YjBl
MzVlNjMxYzA4Li41YmYwODRjMWM0MTdjODM5NDAwZjhjZDI4MTkyY2E1NDQwZGQzZDZjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXktb2YuanMKKysrIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LW9mLmpzCkBAIC0xLDUgKzEsOCBAQAogZGVz
Y3JpcHRpb24oIlRlc3RzIGZvciBBcnJheS5vZiIpOwogCitzaG91bGRCZSgiQXJyYXkub2YubGVu
Z3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJBcnJheS5vZi5uYW1lIiwgIidvZiciKTsKKwogc2hvdWxk
QmUoIkFycmF5Lm9mKDEpIiwgIlsxXSIpOwogc2hvdWxkQmUoIkFycmF5Lm9mKDEsIDIpIiwgIlsx
LCAyXSIpOwogc2hvdWxkQmUoIkFycmF5Lm9mKDEsIDIsIDMpIiwgIlsxLCAyLCAzXSIpOwpAQCAt
MjIsMyArMjUsNyBAQCBBcnJheS5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXygiMCIsIGZ1bmN0
aW9uICh2YWx1ZSkgewogCiBzaG91bGROb3RUaHJvdygiQXJyYXkub2YoMSwgMiwgMykiKTsKIAor
dmFyIEZvbyA9IGZ1bmN0aW9uIEZvb0JhcihsZW5ndGgpIHsgdGhpcy5naXZlbkxlbmd0aCA9IGxl
bmd0aDsgfTsKK3Nob3VsZEJlVHJ1ZSgiQXJyYXkub2YuY2FsbChGb28sICdhJywgJ2InLCAnYycp
IGluc3RhbmNlb2YgRm9vIikKK3Nob3VsZEJlKCJBcnJheS5vZi5jYWxsKEZvbywgJ2EnLCAnYics
ICdjJykuZ2l2ZW5MZW5ndGgiLCAiMyIpOworc2hvdWxkQmUoInZhciBmb28gPSBBcnJheS5vZi5j
YWxsKEZvbywgJ2EnLCAnYicsICdjJyk7IFtmb28ubGVuZ3RoLCBmb29bMF0sIGZvb1sxXSwgZm9v
WzJdXSIsICJbMywgJ2EnLCAnYicsICdjJ10iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>