<?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>79765</bug_id>
          
          <creation_ts>2012-02-28 01:24:09 -0800</creation_ts>
          <short_desc>[Chromium] Layout Test webaudio/audiobuffersource-channels.html is failing</short_desc>
          <delta_ts>2012-03-02 01:32:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Wei James (wistoch)">james.wei</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>crogers</cc>
    
    <cc>jamesr</cc>
    
    <cc>james.wei</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>566493</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-28 01:24:09 -0800</bug_when>
    <thetext>The following layout test is failing on Debug builds

webaudio/audiobuffersource-channels.html

http://trac.webkit.org/changeset/109076 introduced the test. It tries to set more than 6 channels, but AudioNodeOutput doesn&apos;t allow more than 6 channels(from AudioNodeOutput.cpp):

// This is considering that 5.1 (6 channels) is the largest we&apos;ll ever deal with.
// It can easily be increased to support more if the web audio specification is updated.
const unsigned MaxNumberOfChannels = 6;

Looks like the test should set less than 6 channels for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566495</commentid>
    <comment_count>1</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-28 01:26:12 -0800</bug_when>
    <thetext>http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac10.6%20%28dbg%29/builds/8481/steps/webkit_tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566497</commentid>
    <comment_count>2</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-02-28 01:29:26 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The following layout test is failing on Debug builds
&gt; 
&gt; webaudio/audiobuffersource-channels.html
&gt; 
&gt; http://trac.webkit.org/changeset/109076 introduced the test. It tries to set more than 6 channels, but AudioNodeOutput doesn&apos;t allow more than 6 channels(from AudioNodeOutput.cpp):
&gt; 
&gt; // This is considering that 5.1 (6 channels) is the largest we&apos;ll ever deal with.
&gt; // It can easily be increased to support more if the web audio specification is updated.
&gt; const unsigned MaxNumberOfChannels = 6;
&gt; 
&gt; Looks like the test should set less than 6 channels for now.

how about remove the assert in AudioNodeOutput to support more than 6 channels in AudioNodeOutput?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566501</commentid>
    <comment_count>3</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-28 01:37:08 -0800</bug_when>
    <thetext>Committed suppression.
http://trac.webkit.org/changeset/109090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566503</commentid>
    <comment_count>4</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-28 01:42:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; The following layout test is failing on Debug builds
&gt; &gt; 
&gt; &gt; webaudio/audiobuffersource-channels.html
&gt; &gt; 
&gt; &gt; http://trac.webkit.org/changeset/109076 introduced the test. It tries to set more than 6 channels, but AudioNodeOutput doesn&apos;t allow more than 6 channels(from AudioNodeOutput.cpp):
&gt; &gt; 
&gt; &gt; // This is considering that 5.1 (6 channels) is the largest we&apos;ll ever deal with.
&gt; &gt; // It can easily be increased to support more if the web audio specification is updated.
&gt; &gt; const unsigned MaxNumberOfChannels = 6;
&gt; &gt; 
&gt; &gt; Looks like the test should set less than 6 channels for now.
&gt; 
&gt; how about remove the assert in AudioNodeOutput to support more than 6 channels in AudioNodeOutput?

The comment sounds reasonable to me, but I&apos;m not familiar with webaudio stuff. I think you can ask the author to remove it. For now, I&apos;d like to suggest updating the test to avoid crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566509</commentid>
    <comment_count>5</comment_count>
      <attachid>129216</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-02-28 02:03:27 -0800</bug_when>
    <thetext>Created attachment 129216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566513</commentid>
    <comment_count>6</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-28 02:06:22 -0800</bug_when>
    <thetext>Kent-san, could you please rubber-stamp r+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566526</commentid>
    <comment_count>7</comment_count>
      <attachid>129216</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-28 02:24:37 -0800</bug_when>
    <thetext>Comment on attachment 129216
Patch

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

I&apos;m not sure this change is correct or not.
We had better roll 109076 out.

&gt; Source/WebCore/ChangeLog:7
&gt; +

Please write a reason why the removing 6 channel limitation is right.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

ChangeLog should not have this OOPS line.

&gt; Source/WebCore/webaudio/AudioNodeOutput.cpp:-40
&gt; -// This is considering that 5.1 (6 channels) is the largest we&apos;ll ever deal with.
&gt; -// It can easily be increased to support more if the web audio specification is updated.
&gt; -const unsigned MaxNumberOfChannels = 6;

Isn&apos;t this specified in the standard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567247</commentid>
    <comment_count>8</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-28 17:10:30 -0800</bug_when>
    <thetext>Hi Wei,

Could you please respond Kent-san&apos;s comments? I&apos;ll roll this out otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567254</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-28 17:16:19 -0800</bug_when>
    <thetext>Let&apos;s just keep the test disabled for now and not roll out the change.  I think James can fix this:


James, in looking further at this, the short answer is that we need to add *some* kind of maximum number of channels and keep the ASSERT just for basic sanity checking, security, etc.

I notice that we have three places where checks exist (or used to exist):
AudioBuffer (in AudioBuffer::create())
AudioBufferSourceNode  &lt;--- check recently removed but should be added back
AudioNodeOutput &lt;-- where current ASSERT problem is happening

Notice this check in AudioBuffer::create():

PassRefPtr&lt;AudioBuffer&gt; AudioBuffer::create(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate)
{
    if (sampleRate &lt; 22050 || sampleRate &gt; 96000 || numberOfChannels &gt; 10 || !numberOfFrames)
        return 0;

    return adoptRef(new AudioBuffer(numberOfChannels, numberOfFrames, sampleRate));
}

We need to protect against wild values of unreasonably large number of channels (perhaps 10 is too small a value, and use 32?).  But in any case, the value we choose (10 or higher) should be defined in a common place for all these checks, perhaps as a static method of AudioContext called maxNumberOfChannels()?, so that we can also check against this same value in AudioBufferSourceNode::setBuffer() and also switch the ASSERT in AudioNodeOutput.cpp to compare against this value instead of the file-local constant MaxNumberOfChannels as we currently have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567258</commentid>
    <comment_count>10</comment_count>
      <attachid>129216</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-02-28 17:19:09 -0800</bug_when>
    <thetext>Comment on attachment 129216
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; Please write a reason why the removing 6 channel limitation is right.

Currently web audio only support limited channels, some place only support mono/stereo channel and some place only support less than 6 channels. we are working on removing the limitation. Several patches have been landed for it. 

So at last we will have no limitation for the channel number.

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; ChangeLog should not have this OOPS line.

got it. will fix it. thanks

&gt;&gt; Source/WebCore/webaudio/AudioNodeOutput.cpp:-40
&gt;&gt; -const unsigned MaxNumberOfChannels = 6;
&gt; 
&gt; Isn&apos;t this specified in the standard?

it is a draft and currently only support 6 channels at most. we are working to let it support more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567266</commentid>
    <comment_count>11</comment_count>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-02-28 17:26:31 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Let&apos;s just keep the test disabled for now and not roll out the change.  I think James can fix this:
&gt; 
&gt; 
&gt; James, in looking further at this, the short answer is that we need to add *some* kind of maximum number of channels and keep the ASSERT just for basic sanity checking, security, etc.
&gt; 
&gt; I notice that we have three places where checks exist (or used to exist):
&gt; AudioBuffer (in AudioBuffer::create())
&gt; AudioBufferSourceNode  &lt;--- check recently removed but should be added back
&gt; AudioNodeOutput &lt;-- where current ASSERT problem is happening
&gt; 
&gt; Notice this check in AudioBuffer::create():
&gt; 
&gt; PassRefPtr&lt;AudioBuffer&gt; AudioBuffer::create(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate)
&gt; {
&gt;     if (sampleRate &lt; 22050 || sampleRate &gt; 96000 || numberOfChannels &gt; 10 || !numberOfFrames)
&gt;         return 0;
&gt; 
&gt;     return adoptRef(new AudioBuffer(numberOfChannels, numberOfFrames, sampleRate));
&gt; }
&gt; 
&gt; We need to protect against wild values of unreasonably large number of channels (perhaps 10 is too small a value, and use 32?).  But in any case, the value we choose (10 or higher) should be defined in a common place for all these checks, perhaps as a static method of AudioContext called maxNumberOfChannels()?, so that we can also check against this same value in AudioBufferSourceNode::setBuffer() and also switch the ASSERT in AudioNodeOutput.cpp to compare against this value instead of the file-local constant MaxNumberOfChannels as we currently have.


ok. I will work on it in this way. thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568355</commentid>
    <comment_count>12</comment_count>
      <attachid>129634</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-02-29 22:23:23 -0800</bug_when>
    <thetext>Created attachment 129634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568802</commentid>
    <comment_count>13</comment_count>
      <attachid>129634</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-03-01 11:58:02 -0800</bug_when>
    <thetext>Comment on attachment 129634
Patch

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

Thanks James, this looks almost finished:

&gt; Source/WebCore/webaudio/AudioContext.h:69
&gt; +// This is considering 32 is large enough for multiple channels audio. 

I&apos;d also add that this limit is somewhat arbitrary and could be increased if necessary.

&gt; Source/WebCore/webaudio/AudioContext.h:70
&gt; +const unsigned MaxNumberOfChannels = 32;

We can&apos;t have a &quot;const unsigned&quot; in a header file like this for namespace/linkage reasons.  These must always go in .cpp files
Instead, I&apos;d recommend making this a private enum, something like:
enum { MaxNumberOfChannels = 32 };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569077</commentid>
    <comment_count>14</comment_count>
      <attachid>129778</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-03-01 16:57:36 -0800</bug_when>
    <thetext>Created attachment 129778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569080</commentid>
    <comment_count>15</comment_count>
      <attachid>129634</attachid>
    <who name="Wei James (wistoch)">james.wei</who>
    <bug_when>2012-03-01 17:03:43 -0800</bug_when>
    <thetext>Comment on attachment 129634
Patch

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

&gt;&gt; Source/WebCore/webaudio/AudioContext.h:69
&gt;&gt; +// This is considering 32 is large enough for multiple channels audio. 
&gt; 
&gt; I&apos;d also add that this limit is somewhat arbitrary and could be increased if necessary.

thanks. added.

&gt;&gt; Source/WebCore/webaudio/AudioContext.h:70
&gt;&gt; +const unsigned MaxNumberOfChannels = 32;
&gt; 
&gt; We can&apos;t have a &quot;const unsigned&quot; in a header file like this for namespace/linkage reasons.  These must always go in .cpp files
&gt; Instead, I&apos;d recommend making this a private enum, something like:
&gt; enum { MaxNumberOfChannels = 32 };

thanks. fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569096</commentid>
    <comment_count>16</comment_count>
      <attachid>129778</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-03-01 17:28:29 -0800</bug_when>
    <thetext>Comment on attachment 129778
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569419</commentid>
    <comment_count>17</comment_count>
      <attachid>129778</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 01:32:22 -0800</bug_when>
    <thetext>Comment on attachment 129778
Patch

Clearing flags on attachment: 129778

Committed r109532: &lt;http://trac.webkit.org/changeset/109532&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569420</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 01:32:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129216</attachid>
            <date>2012-02-28 02:03:27 -0800</date>
            <delta_ts>2012-02-29 22:23:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79765-20120228180319.patch</filename>
            <type>text/plain</type>
            <size>2077</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VjYzQ2MWQxNWRiMWM0
ZWY4MTNlZTBhMWNlNzVlNDU1N2U3MzE2ZS4uMDBhZTcwMzNkMjg2NmYyY2U1MTQwNDM1YmVlOWZm
YzBmYTY0ZDRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAyLTI4ICBXZWkg
SmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgorCisgICAgICAgIFtDaHJvbWl1bV0gTGF5b3V0
IFRlc3Qgd2ViYXVkaW8vYXVkaW9idWZmZXJzb3VyY2UtY2hhbm5lbHMuaHRtbCBpcyBmYWlsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTc2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6QXVkaW9Ob2RlT3V0cHV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisK
IDIwMTItMDItMjcgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBpbnRlbC5jb20+CiAKICAgICAgICAg
TXVsdGktQ2hhbm5lbCBzdXBwb3J0IGluIEF1ZGlvQnVmZmVyU291cmNlTm9kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKaW5kZXggZTcxNzZiNmVjZjNlYjg1
MTlkMjE0OGNkMjUwNzY2NmY2ZDhkN2JkZS4uNGNmMDkzMGY5NDU5OGM0MjU4ZWNjNDNlZjRmZTc2
ZTAzYzZkNTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQu
Y3BwCkBAIC0zNSwxMCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoaXMg
aXMgY29uc2lkZXJpbmcgdGhhdCA1LjEgKDYgY2hhbm5lbHMpIGlzIHRoZSBsYXJnZXN0IHdlJ2xs
IGV2ZXIgZGVhbCB3aXRoLgotLy8gSXQgY2FuIGVhc2lseSBiZSBpbmNyZWFzZWQgdG8gc3VwcG9y
dCBtb3JlIGlmIHRoZSB3ZWIgYXVkaW8gc3BlY2lmaWNhdGlvbiBpcyB1cGRhdGVkLgotY29uc3Qg
dW5zaWduZWQgTWF4TnVtYmVyT2ZDaGFubmVscyA9IDY7Ci0KIEF1ZGlvTm9kZU91dHB1dDo6QXVk
aW9Ob2RlT3V0cHV0KEF1ZGlvTm9kZSogbm9kZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykK
ICAgICA6IG1fbm9kZShub2RlKQogICAgICwgbV9udW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hh
bm5lbHMpCkBAIC00NywxNSArNDMsMTIgQEAgQXVkaW9Ob2RlT3V0cHV0OjpBdWRpb05vZGVPdXRw
dXQoQXVkaW9Ob2RlKiBub2RlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9p
c0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fcmVuZGVyaW5nRmFuT3V0Q291bnQoMCkKIHsKLSAgICBB
U1NFUlQobnVtYmVyT2ZDaGFubmVscyA8PSBNYXhOdW1iZXJPZkNoYW5uZWxzKTsKLQogICAgIG1f
aW50ZXJuYWxCdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMobnVtYmVyT2ZDaGFubmVscywgQXVk
aW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSk7CiAgICAgbV9hY3R1YWxEZXN0aW5hdGlv
bkJ1cyA9IG1faW50ZXJuYWxCdXMuZ2V0KCk7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlT3V0cHV0Ojpz
ZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiB7Ci0gICAgQVNT
RVJUKG51bWJlck9mQ2hhbm5lbHMgPD0gTWF4TnVtYmVyT2ZDaGFubmVscyk7CiAgICAgQVNTRVJU
KGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOwogCiAgICAgbV9kZXNpcmVkTnVtYmVyT2ZDaGFu
bmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129634</attachid>
            <date>2012-02-29 22:23:23 -0800</date>
            <delta_ts>2012-03-01 17:03:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79765-20120301142314.patch</filename>
            <type>text/plain</type>
            <size>6827</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMWIzZmZmMjZjZTY2
ZjM1YTA0YzgyNThiZThlMzZjMWQyYWM3OS4uMDQ0MjM3YzMwMzRkMjYzYjQyNWFmYjJjZTkxODRh
NTFjZGYwMDRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTI5ICBXZWkg
SmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgorCisgICAgICAgIFtDaHJvbWl1bV0gTGF5b3V0
IFRlc3Qgd2ViYXVkaW8vYXVkaW9idWZmZXJzb3VyY2UtY2hhbm5lbHMuaHRtbCBpcyBmYWlsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTc2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAg
KiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6QXVkaW9Ob2RlT3V0cHV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisKIDIw
MTItMDItMjkgIEphc29uIExpdSAgPGphc29uLmxpdUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldTWFrZSBhYm91dDpjYWNoZSBmZWF0dXJlIGF2YWlsYWJsZSBpbiBy
ZWxlYXNlIHZlcnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5k
ZXggMDUxNWEzNGEyM2MyMDIzYjEzNWMzNjQ2Y2JmNmU4ZDk0MDQxYzcxZS4uMDQ1M2ZiYzVkYTll
ZjFkMWEwMGIzOWZhZGJlODI2ZTdhM2FiMGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgi
CiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9CdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJh
dGUpCiB7Ci0gICAgaWYgKHNhbXBsZVJhdGUgPCAyMjA1MCB8fCBzYW1wbGVSYXRlID4gOTYwMDAg
fHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1iZXJPZkZyYW1lcykKKyAgICBpZiAoc2Ft
cGxlUmF0ZSA8IDIyMDUwIHx8IHNhbXBsZVJhdGUgPiA5NjAwMCB8fCBudW1iZXJPZkNoYW5uZWxz
ID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkgfHwgIW51bWJlck9mRnJhbWVz
KQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
QnVmZmVyKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApp
bmRleCA2MGY0NjMwZDFkYmQwODViYmZmYWNkMTc2MTM2YjRmNjc1MDU0YWZmLi40ODgxMTMxYTRk
ZjEzMmU3MGQ1NjdjZTEwOWM2ZTk2MTk4NGE3NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTM2Myw2ICszNjMsMTAgQEAg
Ym9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVy
KQogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgLy8gRG8gYW55IG5lY2Vzc3NhcnkgcmUtY29u
ZmlndXJhdGlvbiB0byB0aGUgYnVmZmVyJ3MgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gYnVmZmVyLT5udW1iZXJPZkNoYW5uZWxzKCk7CisK
KyAgICAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9m
Q2hhbm5lbHMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBvdXRwdXQo
MCktPnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICAgICAgbV9z
b3VyY2VDaGFubmVscyA9IGFkb3B0QXJyYXlQdHIobmV3IGNvbnN0IGZsb2F0KiBbbnVtYmVyT2ZD
aGFubmVsc10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA3OTEx
NTE5YjM4MDNkZDlhNzJiZDkyNWY4ODFhZWMyMWY2NDkyMmIzLi5mZGZlOTJjZTNlMGU5NmU1NDE5
Njk2MjhkZWRlYWFhYjZjMDQ1OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaApAQCAtNjYsNiArNjYsOSBAQCBjbGFzcyBSZWFsdGltZUFuYWx5c2VyTm9kZTsKIGNsYXNz
IFdhdmVTaGFwZXJOb2RlOwogY2xhc3MgSmF2YVNjcmlwdEF1ZGlvTm9kZTsKIAorLy8gVGhpcyBp
cyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91Z2ggZm9yIG11bHRpcGxlIGNoYW5uZWxzIGF1
ZGlvLiAKK2NvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ2hhbm5lbHMgPSAzMjsKKwogLy8gQXVk
aW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxs
IEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KIC8vIEZvciB0aHJlYWQgc2FmZXR5IGJl
dHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5k
ZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uIAogCkBAIC0xNzIsNiArMTc1LDkgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0
J3MgbG9jay4KICAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OwogCisgICAgLy8gUmV0dXJu
cyB0aGUgbWF4aW11bSBudW11YmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgorICAgIHN0
YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZD
aGFubmVsczt9CisKICAgICBjbGFzcyBBdXRvTG9ja2VyIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IEF1dG9Mb2NrZXIoQXVkaW9Db250ZXh0KiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKaW5kZXggZTcxNzZiNmVjZjNlYjg1MTlkMjE0OGNkMjUw
NzY2NmY2ZDhkN2JkZS4uNzc5MjdiOTg4ZTkwM2Q2OTQzMGY0NGE4YzFiNmEyNmRhMTgzMmFlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCkBAIC0zNSwx
MCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoaXMgaXMgY29uc2lkZXJp
bmcgdGhhdCA1LjEgKDYgY2hhbm5lbHMpIGlzIHRoZSBsYXJnZXN0IHdlJ2xsIGV2ZXIgZGVhbCB3
aXRoLgotLy8gSXQgY2FuIGVhc2lseSBiZSBpbmNyZWFzZWQgdG8gc3VwcG9ydCBtb3JlIGlmIHRo
ZSB3ZWIgYXVkaW8gc3BlY2lmaWNhdGlvbiBpcyB1cGRhdGVkLgotY29uc3QgdW5zaWduZWQgTWF4
TnVtYmVyT2ZDaGFubmVscyA9IDY7Ci0KIEF1ZGlvTm9kZU91dHB1dDo6QXVkaW9Ob2RlT3V0cHV0
KEF1ZGlvTm9kZSogbm9kZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fbm9k
ZShub2RlKQogICAgICwgbV9udW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpCkBAIC00
Nyw3ICs0Myw3IEBAIEF1ZGlvTm9kZU91dHB1dDo6QXVkaW9Ob2RlT3V0cHV0KEF1ZGlvTm9kZSog
bm9kZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1faXNFbmFibGVkKHRydWUp
CiAgICAgLCBtX3JlbmRlcmluZ0Zhbk91dENvdW50KDApCiB7Ci0gICAgQVNTRVJUKG51bWJlck9m
Q2hhbm5lbHMgPD0gTWF4TnVtYmVyT2ZDaGFubmVscyk7CisgICAgQVNTRVJUKG51bWJlck9mQ2hh
bm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgbV9p
bnRlcm5hbEJ1cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cyhudW1iZXJPZkNoYW5uZWxzLCBBdWRp
b05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpKTsKICAgICBtX2FjdHVhbERlc3RpbmF0aW9u
QnVzID0gbV9pbnRlcm5hbEJ1cy5nZXQoKTsKQEAgLTU1LDcgKzUxLDcgQEAgQXVkaW9Ob2RlT3V0
cHV0OjpBdWRpb05vZGVPdXRwdXQoQXVkaW9Ob2RlKiBub2RlLCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzKQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzKQogewotICAgIEFTU0VSVChudW1iZXJPZkNoYW5uZWxzIDw9
IE1heE51bWJlck9mQ2hhbm5lbHMpOworICAgIEFTU0VSVChudW1iZXJPZkNoYW5uZWxzIDw9IEF1
ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKICAgICBBU1NFUlQoY29udGV4dCgp
LT5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBtX2Rlc2lyZWROdW1iZXJPZkNoYW5uZWxzID0gbnVt
YmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YWJiMjg1OWE5MmMyY2FiNzMyZTExYzMwMjljMzFjNjI2
M2NiZmE0Li42MzA5MzIwMDEwNWViMmExNjY4Zjc1ZTdjNDFmOTQzMmY5YWVlNzRmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMDItMjkgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBpbnRlbC5j
b20+CisKKyAgICAgICAgW0Nocm9taXVtXSBMYXlvdXQgVGVzdCB3ZWJhdWRpby9hdWRpb2J1ZmZl
cnNvdXJjZS1jaGFubmVscy5odG1sIGlzIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQ6CisKIDIwMTItMDItMjkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA3YjljMjRl
MGUxMDdlMDdhMGQxMjc5ODk4OGZlZDUzOGQ4NGZkYzQ5Li4yZjhiMWUzMGU3OTQ4OTA1NTkxMWY5
MzAyNjk2ZmM4OGQ4MmVkM2Q2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00NDIwLDggKzQ0MjAsNiBAQCBCVUdXSzc5
NjQyIDogZmFzdC9sb2FkZXIvc3VicmVzb3VyY2Utd2lsbFNlbmRSZXF1ZXN0LW51bGwuaHRtbCA9
IFRJTUVPVVQKIEJVR1dLNzk3MDIgOiBmYXN0L3JlZ2V4L2xhc3RJbmRleC5odG1sID0gVEVYVAog
QlVHV0s3OTcwMyA6IGZhc3QvcmVnZXgvb3ZlcmZsb3cuaHRtbCA9IFRFWFQKIAotQlVHV0s3OTc2
NSBERUJVRyA6IHdlYmF1ZGlvL2F1ZGlvYnVmZmVyc291cmNlLWNoYW5uZWxzLmh0bWwgPSBDUkFT
SAotCiBCVUdXSzc5ODIzIDogY29tcG9zaXRpbmcvcmVwYWludC9vcGFjaXR5LWJldHdlZW4tYWJz
b2x1dGUuaHRtbCA9IFBBU1MgSU1BR0UKIEJVR1dLNzk4MjMgOiBjb21wb3NpdGluZy9yZWZsZWN0
aW9ucy9tYXNrZWQtcmVmbGVjdGlvbi1vbi1jb21wb3NpdGVkLmh0bWwgPSBQQVNTIElNQUdFCiAv
LyBBbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBidWcgNDc5NDkgb24gTWFjLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129778</attachid>
            <date>2012-03-01 16:57:36 -0800</date>
            <delta_ts>2012-03-02 01:32:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79765-20120302085726.patch</filename>
            <type>text/plain</type>
            <size>6711</size>
            <attacher name="Wei James (wistoch)">james.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMWIzZmZmMjZjZTY2
ZjM1YTA0YzgyNThiZThlMzZjMWQyYWM3OS4uMDQ0MjM3YzMwMzRkMjYzYjQyNWFmYjJjZTkxODRh
NTFjZGYwMDRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTI5ICBXZWkg
SmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29tPgorCisgICAgICAgIFtDaHJvbWl1bV0gTGF5b3V0
IFRlc3Qgd2ViYXVkaW8vYXVkaW9idWZmZXJzb3VyY2UtY2hhbm5lbHMuaHRtbCBpcyBmYWlsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTc2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAg
KiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6QXVkaW9Ob2RlT3V0cHV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisKIDIw
MTItMDItMjkgIEphc29uIExpdSAgPGphc29uLmxpdUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldTWFrZSBhYm91dDpjYWNoZSBmZWF0dXJlIGF2YWlsYWJsZSBpbiBy
ZWxlYXNlIHZlcnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5k
ZXggMDUxNWEzNGEyM2MyMDIzYjEzNWMzNjQ2Y2JmNmU4ZDk0MDQxYzcxZS4uMDQ1M2ZiYzVkYTll
ZjFkMWEwMGIzOWZhZGJlODI2ZTdhM2FiMGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgi
CiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9CdWZmZXI6OmNyZWF0ZSh1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJh
dGUpCiB7Ci0gICAgaWYgKHNhbXBsZVJhdGUgPCAyMjA1MCB8fCBzYW1wbGVSYXRlID4gOTYwMDAg
fHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1iZXJPZkZyYW1lcykKKyAgICBpZiAoc2Ft
cGxlUmF0ZSA8IDIyMDUwIHx8IHNhbXBsZVJhdGUgPiA5NjAwMCB8fCBudW1iZXJPZkNoYW5uZWxz
ID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkgfHwgIW51bWJlck9mRnJhbWVz
KQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
QnVmZmVyKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApp
bmRleCA2MGY0NjMwZDFkYmQwODViYmZmYWNkMTc2MTM2YjRmNjc1MDU0YWZmLi40ODgxMTMxYTRk
ZjEzMmU3MGQ1NjdjZTEwOWM2ZTk2MTk4NGE3NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTM2Myw2ICszNjMsMTAgQEAg
Ym9vbCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVy
KQogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgLy8gRG8gYW55IG5lY2Vzc3NhcnkgcmUtY29u
ZmlndXJhdGlvbiB0byB0aGUgYnVmZmVyJ3MgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0gYnVmZmVyLT5udW1iZXJPZkNoYW5uZWxzKCk7CisK
KyAgICAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9m
Q2hhbm5lbHMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBvdXRwdXQo
MCktPnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICAgICAgbV9z
b3VyY2VDaGFubmVscyA9IGFkb3B0QXJyYXlQdHIobmV3IGNvbnN0IGZsb2F0KiBbbnVtYmVyT2ZD
aGFubmVsc10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA3OTEx
NTE5YjM4MDNkZDlhNzJiZDkyNWY4ODFhZWMyMWY2NDkyMmIzLi5hOGNhOTNjMzQ1ODlhOTkwMWFl
Nzg5NzcxYTdkZTkwNjFjM2Y1ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaApAQCAtMTcyLDYgKzE3Miw5IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2suCiAgICAgYm9vbCBpc0dyYXBoT3du
ZXIoKSBjb25zdDsKIAorICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gbnVtdWJlciBvZiBjaGFu
bmVscyB3ZSBjYW4gc3VwcG9ydC4KKyAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFu
bmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7fQorCiAgICAgY2xhc3MgQXV0b0xv
Y2tlciB7CiAgICAgcHVibGljOgogICAgICAgICBBdXRvTG9ja2VyKEF1ZGlvQ29udGV4dCogY29u
dGV4dCkKQEAgLTMwMyw2ICszMDYsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNPZmZsaW5l
Q29udGV4dDsKIAogICAgIEFzeW5jQXVkaW9EZWNvZGVyIG1fYXVkaW9EZWNvZGVyOworCisgICAg
Ly8gVGhpcyBpcyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91Z2ggZm9yIG11bHRpcGxlIGNo
YW5uZWxzIGF1ZGlvLiAKKyAgICAvLyBJdCBpcyBzb21ld2hhdCBhcmJpdHJhcnkgYW5kIGNvdWxk
IGJlIGluY3JlYXNlZCBpZiBuZWNlc3NhcnkuCisgICAgZW51bSB7IE1heE51bWJlck9mQ2hhbm5l
bHMgPSAzMiB9OworCiB9OwogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb05vZGVPdXRwdXQuY3BwCmluZGV4IGU3MTc2YjZlY2YzZWI4NTE5ZDIxNDhjZDI1MDc2
NjZmNmQ4ZDdiZGUuLjc3OTI3Yjk4OGU5MDNkNjk0MzBmNDRhOGMxYjZhMjZkYTE4MzJhZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcApAQCAtMzUsMTAg
KzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBUaGlzIGlzIGNvbnNpZGVyaW5n
IHRoYXQgNS4xICg2IGNoYW5uZWxzKSBpcyB0aGUgbGFyZ2VzdCB3ZSdsbCBldmVyIGRlYWwgd2l0
aC4KLS8vIEl0IGNhbiBlYXNpbHkgYmUgaW5jcmVhc2VkIHRvIHN1cHBvcnQgbW9yZSBpZiB0aGUg
d2ViIGF1ZGlvIHNwZWNpZmljYXRpb24gaXMgdXBkYXRlZC4KLWNvbnN0IHVuc2lnbmVkIE1heE51
bWJlck9mQ2hhbm5lbHMgPSA2OwotCiBBdWRpb05vZGVPdXRwdXQ6OkF1ZGlvTm9kZU91dHB1dChB
dWRpb05vZGUqIG5vZGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBtX25vZGUo
bm9kZSkKICAgICAsIG1fbnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQpAQCAtNDcs
NyArNDMsNyBAQCBBdWRpb05vZGVPdXRwdXQ6OkF1ZGlvTm9kZU91dHB1dChBdWRpb05vZGUqIG5v
ZGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQog
ICAgICwgbV9yZW5kZXJpbmdGYW5PdXRDb3VudCgwKQogewotICAgIEFTU0VSVChudW1iZXJPZkNo
YW5uZWxzIDw9IE1heE51bWJlck9mQ2hhbm5lbHMpOworICAgIEFTU0VSVChudW1iZXJPZkNoYW5u
ZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKIAogICAgIG1faW50
ZXJuYWxCdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMobnVtYmVyT2ZDaGFubmVscywgQXVkaW9O
b2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSk7CiAgICAgbV9hY3R1YWxEZXN0aW5hdGlvbkJ1
cyA9IG1faW50ZXJuYWxCdXMuZ2V0KCk7CkBAIC01NSw3ICs1MSw3IEBAIEF1ZGlvTm9kZU91dHB1
dDo6QXVkaW9Ob2RlT3V0cHV0KEF1ZGlvTm9kZSogbm9kZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscykKIAogdm9pZCBBdWRpb05vZGVPdXRwdXQ6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscykKIHsKLSAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA8PSBN
YXhOdW1iZXJPZkNoYW5uZWxzKTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA8PSBBdWRp
b0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQoKS0+
aXNHcmFwaE93bmVyKCkpOwogCiAgICAgbV9kZXNpcmVkTnVtYmVyT2ZDaGFubmVscyA9IG51bWJl
ck9mQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmFiYjI4NTlhOTJjMmNhYjczMmUxMWMzMDI5YzMxYzYyNjNj
YmZhNC4uNjMwOTMyMDAxMDVlYjJhMTY2OGY3NWU3YzQxZjk0MzJmOWFlZTc0ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEyLTAyLTI5ICBXZWkgSmFtZXMgIDxqYW1lcy53ZWlAaW50ZWwuY29t
PgorCisgICAgICAgIFtDaHJvbWl1bV0gTGF5b3V0IFRlc3Qgd2ViYXVkaW8vYXVkaW9idWZmZXJz
b3VyY2UtY2hhbm5lbHMuaHRtbCBpcyBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDEyLTAyLTI5ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggN2I5YzI0ZTBl
MTA3ZTA3YTBkMTI3OTg5ODhmZWQ1MzhkODRmZGM0OS4uMmY4YjFlMzBlNzk0ODkwNTU5MTFmOTMw
MjY5NmZjODhkODJlZDNkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNDQyMCw4ICs0NDIwLDYgQEAgQlVHV0s3OTY0
MiA6IGZhc3QvbG9hZGVyL3N1YnJlc291cmNlLXdpbGxTZW5kUmVxdWVzdC1udWxsLmh0bWwgPSBU
SU1FT1VUCiBCVUdXSzc5NzAyIDogZmFzdC9yZWdleC9sYXN0SW5kZXguaHRtbCA9IFRFWFQKIEJV
R1dLNzk3MDMgOiBmYXN0L3JlZ2V4L292ZXJmbG93Lmh0bWwgPSBURVhUCiAKLUJVR1dLNzk3NjUg
REVCVUcgOiB3ZWJhdWRpby9hdWRpb2J1ZmZlcnNvdXJjZS1jaGFubmVscy5odG1sID0gQ1JBU0gK
LQogQlVHV0s3OTgyMyA6IGNvbXBvc2l0aW5nL3JlcGFpbnQvb3BhY2l0eS1iZXR3ZWVuLWFic29s
dXRlLmh0bWwgPSBQQVNTIElNQUdFCiBCVUdXSzc5ODIzIDogY29tcG9zaXRpbmcvcmVmbGVjdGlv
bnMvbWFza2VkLXJlZmxlY3Rpb24tb24tY29tcG9zaXRlZC5odG1sID0gUEFTUyBJTUFHRQogLy8g
QWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYnVnIDQ3OTQ5IG9uIE1hYy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>