<?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>97794</bug_id>
          
          <creation_ts>2012-09-27 09:17:25 -0700</creation_ts>
          <short_desc>IndexedDB: Optimize encodeString/decodeString</short_desc>
          <delta_ts>2012-10-03 10:01:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>523.x (Safari 3)</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>
          <dependson>97831</dependson>
    
    <dependson>98054</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>hans</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>729589</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 09:17:25 -0700</bug_when>
    <thetext>CPU profiling shows that string encoding/decoding is a hot spot for IDB.

* The backing store encodes strings in UTF-16BE. Most CPUs these days are little-endian, which means byte swapping
* The byte swapping for decode is done into a StringBuilder with append() calls, which have overhead.

Short term, this could be optimized by bypassing StringBuilder and walking memory short by short doing using htons/ntohs c/o arpa/inet.h

Long term it would make sense to switch the backing store encoding to UTF-16LE to save work on most architectures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729675</commentid>
    <comment_count>1</comment_count>
      <attachid>166028</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 10:29:36 -0700</bug_when>
    <thetext>Created attachment 166028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729676</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 10:29:57 -0700</bug_when>
    <thetext>dgrogan@, alecflett@ - please take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729682</commentid>
    <comment_count>3</comment_count>
      <attachid>166028</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-27 10:39:01 -0700</bug_when>
    <thetext>Comment on attachment 166028
Patch

Seems fine - is there any reason to think that using the iterators is better (e.g. safer, future-proof) than using raw buffers and length?

(I guess it seems odd to use Vector&lt;UChar&gt; when we&apos;re really just treating it as UChar[length] )

I&apos;m not sure if Vector&lt;UChar, length&gt; works (it might!) but I&apos;m pretty sure UChar buffer[length] works in modern compilers...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729687</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 10:45:39 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 166028 [details])
&gt; Seems fine - is there any reason to think that using the iterators is better (e.g. safer, future-proof) than using raw buffers and length?

Given the rest of the file, no. :)

&gt; (I guess it seems odd to use Vector&lt;UChar&gt; when we&apos;re really just treating it as UChar[length] )
&gt; 
&gt; I&apos;m not sure if Vector&lt;UChar, length&gt; works (it might!) but I&apos;m pretty sure UChar buffer[length] works in modern compilers...

String::adopt(buffer) is optimized to avoid a copy, and takes a Vector (or StringBuffer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729690</commentid>
    <comment_count>5</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-27 10:46:57 -0700</bug_when>
    <thetext>oh right, I forgot that the buffer got adopted, so stack-based allocation isn&apos;t helpful :)

LGTM then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729700</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 10:53:20 -0700</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729835</commentid>
    <comment_count>7</comment_count>
      <attachid>166028</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-27 14:00:08 -0700</bug_when>
    <thetext>Comment on attachment 166028
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Optimize string encoding/decoding, which showed up as a CPU hot spot during profiling.
&gt; +        The backing store uses big-endian ordering of 16-bit code unit strings, so a memcopy

Nit: It would be nice to include some perf numbers.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp:29
&gt; +// for htons/ntohs

Nit: Capitalize and end with a period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729864</commentid>
    <comment_count>8</comment_count>
      <attachid>166062</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-27 14:27:41 -0700</bug_when>
    <thetext>Created attachment 166062
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729902</commentid>
    <comment_count>9</comment_count>
      <attachid>166062</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 15:03:34 -0700</bug_when>
    <thetext>Comment on attachment 166062
Patch for landing

Clearing flags on attachment: 166062

Committed r129806: &lt;http://trac.webkit.org/changeset/129806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729903</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 15:03:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730025</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 17:03:18 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 97831</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730811</commentid>
    <comment_count>12</comment_count>
      <attachid>166281</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-28 11:03:59 -0700</bug_when>
    <thetext>Created attachment 166281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730816</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-28 11:08:45 -0700</bug_when>
    <thetext>So arpa/inet.h is only available on Unices. Bleah, shoulda seen that coming.

Other places in WebCore that need htons/ntohs use local defines, so I went that route. I loosely followed platform/graphics/WOFFFileFormat.cpp but made the macros call a static inline function so that the argument wouldn&apos;t be evaluated twice (otherwise *dst = htons(*src++) doesn&apos;t do what you&apos;d expect).

(Should possibly add these to a header in platform?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730878</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-28 12:23:13 -0700</bug_when>
    <thetext>tony@ - can you take another look? any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730926</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-28 13:14:00 -0700</bug_when>
    <thetext>Adam suggests making a new file in WTF/wtf for this.  Maybe ByteOrder.h?  It would just include &lt;arpa/inet.h&gt; on unix and define the functions on Windows.  Maybe do that as a patch first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730973</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-28 13:50:17 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Adam suggests making a new file in WTF/wtf for this.  Maybe ByteOrder.h?  It would just include &lt;arpa/inet.h&gt; on unix and define the functions on Windows.  Maybe do that as a patch first?

SGTM. (We don&apos;t have that &quot;add a file to all projects&quot; script yet, do we?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730986</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 14:15:18 -0700</bug_when>
    <thetext>&gt; We don&apos;t have that &quot;add a file to all projects&quot; script yet, do we?

Sadly, we don&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732498</commentid>
    <comment_count>18</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-10-02 04:01:06 -0700</bug_when>
    <thetext>Nice one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733778</commentid>
    <comment_count>19</comment_count>
      <attachid>166911</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-03 09:28:38 -0700</bug_when>
    <thetext>Created attachment 166911
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733805</commentid>
    <comment_count>20</comment_count>
      <attachid>166911</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 10:01:01 -0700</bug_when>
    <thetext>Comment on attachment 166911
Patch for landing

Clearing flags on attachment: 166911

Committed r130299: &lt;http://trac.webkit.org/changeset/130299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733806</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 10:01:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166028</attachid>
            <date>2012-09-27 10:29:36 -0700</date>
            <delta_ts>2012-09-27 14:27:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97794-20120927102854.patch</filename>
            <type>text/plain</type>
            <size>3429</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE0MGJmM2VjOWI4MDMw
NzZmZTcyMzA5YTcwZjFkNWRkYTUwMjliZC4uODM4Mjk5YTI2Y2JkN2ExMzIwMTlmYTliNGEwMTcw
OGE4NTc1MDFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTI3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBlbmNvZGVTdHJpbmcvZGVjb2RlU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE9wdGltaXplIHN0cmluZyBlbmNvZGluZy9kZWNvZGluZywg
d2hpY2ggc2hvd2VkIHVwIGFzIGEgQ1BVIGhvdCBzcG90IGR1cmluZyBwcm9maWxpbmcuCisgICAg
ICAgIFRoZSBiYWNraW5nIHN0b3JlIHVzZXMgYmlnLWVuZGlhbiBvcmRlcmluZyBvZiAxNi1iaXQg
Y29kZSB1bml0IHN0cmluZ3MsIHNvIGEgbWVtY29weQorICAgICAgICBpc24ndCBzdWZmaWNpZW50
LCBidXQgdGhlIGNvZGUgdXNlZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoKSBjaGFyYWN0ZXItYnkt
Y2hhcmFjdGVyCisgICAgICAgIGFuZCBjdXN0b20gYnl0ZS1zd2FwcGluZyB3aGljaCB3YXMgc2xv
dy4KKworICAgICAgICBUZXN0ZWQgYnkgQ2hyb21pdW0ncyB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0
ZXN0X2ZpbHRlcj0nSURCTGV2ZWxEQkNvZGluZ1Rlc3QuKlN0cmluZyonCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6OmVuY29kZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQ29kaW5nOjpkZWNvZGVTdHJpbmcpOgorCiAyMDEyLTA5LTI0ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjM1
MTkwNj4gSGF2ZSBEdW1wUmVuZGVyVHJlZSBhbmQgV2ViS2l0VGVzdFJ1bm5lciBjcmFzaCBsb2dz
IHNob3cgd2hpY2ggdGVzdCBjcmFzaGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IGY0MmE3NzAxOTY5ZDRkZmNj
MGEzOTViYWMxODVjNDhkNjE4MzUxZmEuLjU1M2JkMGFmOWI4NTRkNzAzMDBhNWI1OTUyNGNjZGFj
NWI3NjQxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJDb2RpbmcuY3BwCkBAIC0yNiw2ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSURCTGV2ZWxEQkNvZGluZy5oIgogCisvLyBmb3IgaHRvbnMvbnRvaHMK
KyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
I2lmIFVTRShMRVZFTERCKQogCkBAIC0yODksMzYgKzI5MiwzMyBAQCBjb25zdCBjaGFyKiBkZWNv
ZGVWYXJJbnQoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQsIGludDY0X3QmIGZvdW5k
SW50KQogCiBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYgcykKIHsKLSAg
ICBWZWN0b3I8Y2hhcj4gcmV0KHMubGVuZ3RoKCkgKiAyKTsKKyAgICAvLyBCYWNraW5nIHN0b3Jl
IGlzIFVURi0xNkJFLCBjb252ZXJ0IGZyb20gaG9zdCBlbmRpYW5uZXNzLgorICAgIHNpemVfdCBs
ZW5ndGggPSBzLmxlbmd0aCgpOworICAgIFZlY3RvcjxjaGFyPiByZXQobGVuZ3RoICogc2l6ZW9m
KFVDaGFyKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytp
KSB7Ci0gICAgICAgIFVDaGFyIHUgPSBzW2ldOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGhpID0g
dSA+PiA4OwotICAgICAgICB1bnNpZ25lZCBjaGFyIGxvID0gdTsKLSAgICAgICAgcmV0WzIgKiBp
XSA9IGhpOwotICAgICAgICByZXRbMiAqIGkgKyAxXSA9IGxvOwotICAgIH0KKyAgICBjb25zdCBV
Q2hhciogc3JjID0gcy5jaGFyYWN0ZXJzKCk7CisgICAgVUNoYXIqIGRzdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VUNoYXIqPihyZXQuZGF0YSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCisgICAgICAgICpkc3QrKyA9IGh0b25zKCpzcmMrKyk7CiAKICAgICByZXR1
cm4gcmV0OwogfQogCi1TdHJpbmcgZGVjb2RlU3RyaW5nKGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNo
YXIqIGVuZCkKK1N0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGVuZCkKIHsKLSAgICBBU1NFUlQoZW5kID49IHApOwotICAgIEFTU0VSVCghKChlbmQgLSBw
KSAlIDIpKTsKKyAgICAvLyBCYWNraW5nIHN0b3JlIGlzIFVURi0xNkJFLCBjb252ZXJ0IHRvIGhv
c3QgZW5kaWFubmVzcy4KKyAgICBBU1NFUlQoZW5kID49IHN0YXJ0KTsKKyAgICBBU1NFUlQoISgo
ZW5kIC0gc3RhcnQpICUgc2l6ZW9mKFVDaGFyKSkpOwogCi0gICAgc2l6ZV90IGxlbiA9IChlbmQg
LSBwKSAvIDI7Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVD
YXBhY2l0eShsZW4pOworICAgIHNpemVfdCBsZW5ndGggPSAoZW5kIC0gc3RhcnQpIC8gc2l6ZW9m
KFVDaGFyKTsKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW47ICsraSkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGhpID0g
KnArKzsKLSAgICAgICAgdW5zaWduZWQgY2hhciBsbyA9ICpwKys7Ci0KLSAgICAgICAgcmVzdWx0
LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oKGhpIDw8IDgpIHwgbG8pKTsKLSAgICB9CisgICAg
Y29uc3QgVUNoYXIqIHNyYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGFydCk7
CisgICAgVUNoYXIqIGRzdCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAqZHN0KysgPSBudG9ocygqc3JjKyspOwogCi0g
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1
ZmZlcik7CiB9CiAKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNvbnN0IFN0
cmluZyYgcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166062</attachid>
            <date>2012-09-27 14:27:41 -0700</date>
            <delta_ts>2012-09-28 11:03:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97794-20120927142659.patch</filename>
            <type>text/plain</type>
            <size>3687</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE0MGJmM2VjOWI4MDMw
NzZmZTcyMzA5YTcwZjFkNWRkYTUwMjliZC4uNDRhMDg0MTg5MTZkM2JjNmJiNmIwNTM3MTZkYzk2
NDI4NjhkMDkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTI3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBlbmNvZGVTdHJpbmcvZGVjb2RlU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCisKKyAgICAgICAgT3B0aW1pemUgc3RyaW5nIGVuY29kaW5nL2RlY29kaW5nLCB3aGlj
aCBzaG93ZWQgdXAgYXMgYSBDUFUgaG90IHNwb3QgZHVyaW5nIHByb2ZpbGluZy4KKyAgICAgICAg
VGhlIGJhY2tpbmcgc3RvcmUgdXNlcyBiaWctZW5kaWFuIG9yZGVyaW5nIG9mIDE2LWJpdCBjb2Rl
IHVuaXQgc3RyaW5ncywgc28gYSBtZW1jb3B5CisgICAgICAgIGlzbid0IHN1ZmZpY2llbnQsIGJ1
dCB0aGUgY29kZSB1c2VkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpIGNoYXJhY3Rlci1ieS1jaGFy
YWN0ZXIKKyAgICAgICAgYW5kIGN1c3RvbSBieXRlLXN3YXBwaW5nIHdoaWNoIHdhcyBzbG93Lgor
CisgICAgICAgIFJhbiBhIHRlc3Qgdy8gRHVtcFJlbmRlclRyZWUgKHRvIGF2b2lkIG11bHRpcHJv
Y2VzcyBvdmVyaGVhZCkgdGFraW5nIGEgMTBrIGNoYXJhY3RlciBzdHJpbmcKKyAgICAgICAgYW5k
IHB1dHRpbmcgaXQgMjBrIHRpbWVzIGFuZCBnZXR0aW5nIGl0IDIwayB0aW1lcy4gT24gbXkgdGVz
dCBib3gsIG1lYW4gdGltZSBiZWZvcmUgdGhlCisgICAgICAgIHBhdGNoIHdhcyA4LjJzLCBtZWFu
IHRpbWUgYWZ0ZXIgdGhlIHBhdGNoIHdhcyA0LjZzLgorCisgICAgICAgIFRlc3RlZCBieSBDaHJv
bWl1bSdzIHdlYmtpdF91bml0X3Rlc3RzIC0tZ3Rlc3RfZmlsdGVyPSdJREJMZXZlbERCQ29kaW5n
VGVzdC4qU3RyaW5nKicKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJD
b2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmRlY29kZVN0cmluZyk6
CisKIDIwMTItMDktMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyMzUxOTA2PiBIYXZlIER1bXBSZW5kZXJUcmVlIGFu
ZCBXZWJLaXRUZXN0UnVubmVyIGNyYXNoIGxvZ3Mgc2hvdyB3aGljaCB0ZXN0IGNyYXNoZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5jcHAKaW5kZXggZjQyYTc3MDE5NjlkNGRmY2MwYTM5NWJhYzE4NWM0OGQ2MTgzNTFmYS4uZjc2
MWZjZTEwZWQ5ODlhZWJiZWUxMWMyNzNlMzMyZWRmODBjYTI1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTI2
LDYgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJMZXZlbERCQ29k
aW5nLmgiCiAKKy8vIEZvciBodG9ucy9udG9ocy4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKwog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogI2lmIFVTRShMRVZFTERCKQogCkBAIC0yODks
MzYgKzI5MiwzMyBAQCBjb25zdCBjaGFyKiBkZWNvZGVWYXJJbnQoY29uc3QgY2hhciogcCwgY29u
c3QgY2hhciogbGltaXQsIGludDY0X3QmIGZvdW5kSW50KQogCiBWZWN0b3I8Y2hhcj4gZW5jb2Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYgcykKIHsKLSAgICBWZWN0b3I8Y2hhcj4gcmV0KHMubGVuZ3Ro
KCkgKiAyKTsKKyAgICAvLyBCYWNraW5nIHN0b3JlIGlzIFVURi0xNkJFLCBjb252ZXJ0IGZyb20g
aG9zdCBlbmRpYW5uZXNzLgorICAgIHNpemVfdCBsZW5ndGggPSBzLmxlbmd0aCgpOworICAgIFZl
Y3RvcjxjaGFyPiByZXQobGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CiAKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIFVDaGFyIHUgPSBzW2ld
OwotICAgICAgICB1bnNpZ25lZCBjaGFyIGhpID0gdSA+PiA4OwotICAgICAgICB1bnNpZ25lZCBj
aGFyIGxvID0gdTsKLSAgICAgICAgcmV0WzIgKiBpXSA9IGhpOwotICAgICAgICByZXRbMiAqIGkg
KyAxXSA9IGxvOwotICAgIH0KKyAgICBjb25zdCBVQ2hhciogc3JjID0gcy5jaGFyYWN0ZXJzKCk7
CisgICAgVUNoYXIqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihyZXQuZGF0YSgpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICpkc3Qr
KyA9IGh0b25zKCpzcmMrKyk7CiAKICAgICByZXR1cm4gcmV0OwogfQogCi1TdHJpbmcgZGVjb2Rl
U3RyaW5nKGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGVuZCkKK1N0cmluZyBkZWNvZGVTdHJp
bmcoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkKIHsKLSAgICBBU1NFUlQoZW5k
ID49IHApOwotICAgIEFTU0VSVCghKChlbmQgLSBwKSAlIDIpKTsKKyAgICAvLyBCYWNraW5nIHN0
b3JlIGlzIFVURi0xNkJFLCBjb252ZXJ0IHRvIGhvc3QgZW5kaWFubmVzcy4KKyAgICBBU1NFUlQo
ZW5kID49IHN0YXJ0KTsKKyAgICBBU1NFUlQoISgoZW5kIC0gc3RhcnQpICUgc2l6ZW9mKFVDaGFy
KSkpOwogCi0gICAgc2l6ZV90IGxlbiA9IChlbmQgLSBwKSAvIDI7Ci0gICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW4pOworICAgIHNpemVfdCBs
ZW5ndGggPSAoZW5kIC0gc3RhcnQpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBWZWN0b3I8VUNoYXI+
IGJ1ZmZlcihsZW5ndGgpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47ICsraSkg
ewotICAgICAgICB1bnNpZ25lZCBjaGFyIGhpID0gKnArKzsKLSAgICAgICAgdW5zaWduZWQgY2hh
ciBsbyA9ICpwKys7Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4o
KGhpIDw8IDgpIHwgbG8pKTsKLSAgICB9CisgICAgY29uc3QgVUNoYXIqIHNyYyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGFydCk7CisgICAgVUNoYXIqIGRzdCA9IGJ1ZmZlci5k
YXRhKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAg
ICAqZHN0KysgPSBudG9ocygqc3JjKyspOwogCi0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKIFZlY3RvcjxjaGFyPiBl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNvbnN0IFN0cmluZyYgcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166281</attachid>
            <date>2012-09-28 11:03:59 -0700</date>
            <delta_ts>2012-10-03 09:28:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97794-20120928110316.patch</filename>
            <type>text/plain</type>
            <size>3986</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM5ZDcwZDg5Yzk5NTkz
YzYxZjVmN2ZjMTM4OTc5MDNjZjNkMTljYS4uZTRlMzI1ZGRiOGJjZDRiMjAwY2YxZWZlZDVlYzUy
N2ZmZDg1ZTQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTI4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBlbmNvZGVTdHJpbmcvZGVjb2RlU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCisKKyAgICAgICAgT3B0aW1pemUgc3RyaW5nIGVuY29kaW5nL2RlY29kaW5nLCB3aGlj
aCBzaG93ZWQgdXAgYXMgYSBDUFUgaG90IHNwb3QgZHVyaW5nIHByb2ZpbGluZy4KKyAgICAgICAg
VGhlIGJhY2tpbmcgc3RvcmUgdXNlcyBiaWctZW5kaWFuIG9yZGVyaW5nIG9mIDE2LWJpdCBjb2Rl
IHVuaXQgc3RyaW5ncywgc28gYSBtZW1jb3B5CisgICAgICAgIGlzbid0IHN1ZmZpY2llbnQsIGJ1
dCB0aGUgY29kZSB1c2VkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpIGNoYXJhY3Rlci1ieS1jaGFy
YWN0ZXIKKyAgICAgICAgYW5kIGN1c3RvbSBieXRlLXN3YXBwaW5nIHdoaWNoIHdhcyBzbG93Lgor
CisgICAgICAgIFJhbiBhIHRlc3Qgdy8gRHVtcFJlbmRlclRyZWUgKHRvIGF2b2lkIG11bHRpcHJv
Y2VzcyBvdmVyaGVhZCkgdGFraW5nIGEgMTBrIGNoYXJhY3RlciBzdHJpbmcKKyAgICAgICAgYW5k
IHB1dHRpbmcgaXQgMjBrIHRpbWVzIGFuZCBnZXR0aW5nIGl0IDIwayB0aW1lcy4gT24gbXkgdGVz
dCBib3gsIG1lYW4gdGltZSBiZWZvcmUgdGhlCisgICAgICAgIHBhdGNoIHdhcyA4LjJzLCBtZWFu
IHRpbWUgYWZ0ZXIgdGhlIHBhdGNoIHdhcyA0LjZzLgorCisgICAgICAgIFRlc3RlZCBieSBDaHJv
bWl1bSdzIHdlYmtpdF91bml0X3Rlc3RzIC0tZ3Rlc3RfZmlsdGVyPSdJREJMZXZlbERCQ29kaW5n
VGVzdC4qU3RyaW5nKicKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJD
b2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmRlY29kZVN0cmluZyk6
CisKIDIwMTItMDktMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjk4MDYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCmlu
ZGV4IGY0MmE3NzAxOTY5ZDRkZmNjMGEzOTViYWMxODVjNDhkNjE4MzUxZmEuLjU2ODEwMjU4NTJh
NGMyODQ0OGM2N2JhYWQ0MzhmMzc1NTJhMGVkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCkBAIC0yNiw2ICsyNiwy
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQkxldmVsREJDb2RpbmcuaCIK
IAorI2lmIE9TKFVOSVgpCisvLyBGb3IgaHRvbnMvbnRvaHMuCisjaW5jbHVkZSA8YXJwYS9pbmV0
Lmg+CisjZW5kaWYKKworI2lmIE9TKFdJTkRPV1MpCituYW1lc3BhY2Ugeworc3RhdGljIGlubGlu
ZSB1aW50MTZfdCBic3dhcDE2KHVpbnQxNl90IHgpIHsgcmV0dXJuICgoeCAmIDB4ZmYwMCkgPj4g
OCkgfCAoKHggJiAweDAwZmYpIDw8IDgpOyB9Cit9OworI2lmIENQVShCSUdfRU5ESUFOKSB8fCBD
UFUoTUlERExFX0VORElBTikKKyNkZWZpbmUgbnRvaHMoeCkgKCh1aW50MTZfdCkoeCkpCisjZGVm
aW5lIGh0b25zKHgpICgodWludDE2X3QpKHgpKQorI2Vsc2UKKyNkZWZpbmUgbnRvaHMoeCkgYnN3
YXAxNih4KQorI2RlZmluZSBodG9ucyh4KSBic3dhcDE2KHgpCisjZW5kaWYKKyNlbmRpZiAvLyBP
UyhXSU5ET1dTKQorCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAjaWYgVVNFKExFVkVM
REIpCiAKQEAgLTI4OSwzNiArMzA3LDMzIEBAIGNvbnN0IGNoYXIqIGRlY29kZVZhckludChjb25z
dCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCwgaW50NjRfdCYgZm91bmRJbnQpCiAKIFZlY3Rv
cjxjaGFyPiBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBzKQogewotICAgIFZlY3RvcjxjaGFy
PiByZXQocy5sZW5ndGgoKSAqIDIpOworICAgIC8vIEJhY2tpbmcgc3RvcmUgaXMgVVRGLTE2QkUs
IGNvbnZlcnQgZnJvbSBob3N0IGVuZGlhbm5lc3MuCisgICAgc2l6ZV90IGxlbmd0aCA9IHMubGVu
Z3RoKCk7CisgICAgVmVjdG9yPGNoYXI+IHJldChsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKIAot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAg
VUNoYXIgdSA9IHNbaV07Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgaGkgPSB1ID4+IDg7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoYXIgbG8gPSB1OwotICAgICAgICByZXRbMiAqIGldID0gaGk7Ci0gICAg
ICAgIHJldFsyICogaSArIDFdID0gbG87Ci0gICAgfQorICAgIGNvbnN0IFVDaGFyKiBzcmMgPSBz
LmNoYXJhY3RlcnMoKTsKKyAgICBVQ2hhciogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+
KHJldC5kYXRhKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
KyAgICAgICAgKmRzdCsrID0gaHRvbnMoKnNyYysrKTsKIAogICAgIHJldHVybiByZXQ7CiB9CiAK
LVN0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogZW5kKQorU3Ry
aW5nIGRlY29kZVN0cmluZyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogewot
ICAgIEFTU0VSVChlbmQgPj0gcCk7Ci0gICAgQVNTRVJUKCEoKGVuZCAtIHApICUgMikpOworICAg
IC8vIEJhY2tpbmcgc3RvcmUgaXMgVVRGLTE2QkUsIGNvbnZlcnQgdG8gaG9zdCBlbmRpYW5uZXNz
LgorICAgIEFTU0VSVChlbmQgPj0gc3RhcnQpOworICAgIEFTU0VSVCghKChlbmQgLSBzdGFydCkg
JSBzaXplb2YoVUNoYXIpKSk7CiAKLSAgICBzaXplX3QgbGVuID0gKGVuZCAtIHApIC8gMjsKLSAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbik7
CisgICAgc2l6ZV90IGxlbmd0aCA9IChlbmQgLSBzdGFydCkgLyBzaXplb2YoVUNoYXIpOworICAg
IFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgaGkgPSAqcCsrOwotICAgICAg
ICB1bnNpZ25lZCBjaGFyIGxvID0gKnArKzsKLQotICAgICAgICByZXN1bHQuYXBwZW5kKHN0YXRp
Y19jYXN0PFVDaGFyPigoaGkgPDwgOCkgfCBsbykpOwotICAgIH0KKyAgICBjb25zdCBVQ2hhciog
c3JjID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0YXJ0KTsKKyAgICBVQ2hhciog
ZHN0ID0gYnVmZmVyLmRhdGEoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCisgICAgICAgICpkc3QrKyA9IG50b2hzKCpzcmMrKyk7CiAKLSAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAog
VmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoY29uc3QgU3RyaW5nJiBzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166911</attachid>
            <date>2012-10-03 09:28:38 -0700</date>
            <delta_ts>2012-10-03 10:01:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97794-20121003092750.patch</filename>
            <type>text/plain</type>
            <size>3714</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxYzBhYmQ4Nzg2Mzcx
YjUyYWVhYWIzOWVmODZkYjI2NWRiYjQzMC4uNzdmZmZlZjRhZmQ4NTMzMTk4OTk2MTAyOTExYWEw
ZjdjZGZlNTI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTI4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBPcHRp
bWl6ZSBlbmNvZGVTdHJpbmcvZGVjb2RlU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCisKKyAgICAgICAgT3B0aW1pemUgc3RyaW5nIGVuY29kaW5nL2RlY29kaW5nLCB3aGlj
aCBzaG93ZWQgdXAgYXMgYSBDUFUgaG90IHNwb3QgZHVyaW5nIHByb2ZpbGluZy4KKyAgICAgICAg
VGhlIGJhY2tpbmcgc3RvcmUgdXNlcyBiaWctZW5kaWFuIG9yZGVyaW5nIG9mIDE2LWJpdCBjb2Rl
IHVuaXQgc3RyaW5ncywgc28gYSBtZW1jb3B5CisgICAgICAgIGlzbid0IHN1ZmZpY2llbnQsIGJ1
dCB0aGUgY29kZSB1c2VkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpIGNoYXJhY3Rlci1ieS1jaGFy
YWN0ZXIKKyAgICAgICAgYW5kIGN1c3RvbSBieXRlLXN3YXBwaW5nIHdoaWNoIHdhcyBzbG93Lgor
CisgICAgICAgIFJhbiBhIHRlc3Qgdy8gRHVtcFJlbmRlclRyZWUgKHRvIGF2b2lkIG11bHRpcHJv
Y2VzcyBvdmVyaGVhZCkgdGFraW5nIGEgMTBrIGNoYXJhY3RlciBzdHJpbmcKKyAgICAgICAgYW5k
IHB1dHRpbmcgaXQgMjBrIHRpbWVzIGFuZCBnZXR0aW5nIGl0IDIwayB0aW1lcy4gT24gbXkgdGVz
dCBib3gsIG1lYW4gdGltZSBiZWZvcmUgdGhlCisgICAgICAgIHBhdGNoIHdhcyA4LjJzLCBtZWFu
IHRpbWUgYWZ0ZXIgdGhlIHBhdGNoIHdhcyA0LjZzLgorCisgICAgICAgIFRlc3RlZCBieSBDaHJv
bWl1bSdzIHdlYmtpdF91bml0X3Rlc3RzIC0tZ3Rlc3RfZmlsdGVyPSdJREJMZXZlbERCQ29kaW5n
VGVzdC4qU3RyaW5nKicKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJD
b2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6ZW5jb2RlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmRlY29kZVN0cmluZyk6
CisKIDIwMTItMTAtMDMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQnVpbGQgZml4IGZvciBXaW5DRSBhZnRlciByMTMwMTYwLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAppbmRl
eCBmNDJhNzcwMTk2OWQ0ZGZjYzBhMzk1YmFjMTg1YzQ4ZDYxODM1MWZhLi43MGM4MTdmY2NmYjI3
MWFjYWQzNWUyYWJhNWExZmI0Y2FkMWZkOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRl
ICJMZXZlbERCU2xpY2UuaCIKKyNpbmNsdWRlIDx3dGYvQnl0ZU9yZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAvLyBMZXZlbERCIHN0b3JlcyBrZXkvdmFsdWUg
cGFpcnMuIEtleXMgYW5kIHZhbHVlcyBhcmUgc3RyaW5ncyBvZiBieXRlcywgbm9ybWFsbHkgb2Yg
dHlwZSBWZWN0b3I8Y2hhcj4uCkBAIC0yODksMzYgKzI5MCwzMyBAQCBjb25zdCBjaGFyKiBkZWNv
ZGVWYXJJbnQoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQsIGludDY0X3QmIGZvdW5k
SW50KQogCiBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYgcykKIHsKLSAg
ICBWZWN0b3I8Y2hhcj4gcmV0KHMubGVuZ3RoKCkgKiAyKTsKKyAgICAvLyBCYWNraW5nIHN0b3Jl
IGlzIFVURi0xNkJFLCBjb252ZXJ0IGZyb20gaG9zdCBlbmRpYW5uZXNzLgorICAgIHNpemVfdCBs
ZW5ndGggPSBzLmxlbmd0aCgpOworICAgIFZlY3RvcjxjaGFyPiByZXQobGVuZ3RoICogc2l6ZW9m
KFVDaGFyKSk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytp
KSB7Ci0gICAgICAgIFVDaGFyIHUgPSBzW2ldOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGhpID0g
dSA+PiA4OwotICAgICAgICB1bnNpZ25lZCBjaGFyIGxvID0gdTsKLSAgICAgICAgcmV0WzIgKiBp
XSA9IGhpOwotICAgICAgICByZXRbMiAqIGkgKyAxXSA9IGxvOwotICAgIH0KKyAgICBjb25zdCBV
Q2hhciogc3JjID0gcy5jaGFyYWN0ZXJzKCk7CisgICAgVUNoYXIqIGRzdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VUNoYXIqPihyZXQuZGF0YSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCisgICAgICAgICpkc3QrKyA9IGh0b25zKCpzcmMrKyk7CiAKICAgICByZXR1
cm4gcmV0OwogfQogCi1TdHJpbmcgZGVjb2RlU3RyaW5nKGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNo
YXIqIGVuZCkKK1N0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGVuZCkKIHsKLSAgICBBU1NFUlQoZW5kID49IHApOwotICAgIEFTU0VSVCghKChlbmQgLSBw
KSAlIDIpKTsKLQotICAgIHNpemVfdCBsZW4gPSAoZW5kIC0gcCkgLyAyOwotICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuKTsKKyAgICAvLyBC
YWNraW5nIHN0b3JlIGlzIFVURi0xNkJFLCBjb252ZXJ0IHRvIGhvc3QgZW5kaWFubmVzcy4KKyAg
ICBBU1NFUlQoZW5kID49IHN0YXJ0KTsKKyAgICBBU1NFUlQoISgoZW5kIC0gc3RhcnQpICUgc2l6
ZW9mKFVDaGFyKSkpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47ICsraSkgewot
ICAgICAgICB1bnNpZ25lZCBjaGFyIGhpID0gKnArKzsKLSAgICAgICAgdW5zaWduZWQgY2hhciBs
byA9ICpwKys7CisgICAgc2l6ZV90IGxlbmd0aCA9IChlbmQgLSBzdGFydCkgLyBzaXplb2YoVUNo
YXIpOworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oKGhpIDw8IDgpIHwgbG8pKTsKLSAgICB9CisgICAg
Y29uc3QgVUNoYXIqIHNyYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGFydCk7
CisgICAgVUNoYXIqIGRzdCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAqZHN0KysgPSBudG9ocygqc3JjKyspOwogCi0g
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1
ZmZlcik7CiB9CiAKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNvbnN0IFN0
cmluZyYgcykK
</data>

          </attachment>
      

    </bug>

</bugzilla>