<?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>93194</bug_id>
          
          <creation_ts>2012-08-04 20:52:27 -0700</creation_ts>
          <short_desc>Creating &quot;basic waveform&quot; Oscillator nodes is not efficient</short_desc>
          <delta_ts>2012-08-08 17:18:47 -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>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>93490</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Srikumar K. Subramanian">srikumarks</reporter>
          <assigned_to name="Raymond Toy">rtoy</assigned_to>
          <cc>abarth</cc>
    
    <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687558</commentid>
    <comment_count>0</comment_count>
    <who name="Srikumar K. Subramanian">srikumarks</who>
    <bug_when>2012-08-04 20:52:27 -0700</bug_when>
    <thetext>New Oscillator nodes need to be created for each &quot;voice&quot; since their noteOn/noteOff methods can be used only once. Therefore efficient creation of these nodes is desirable. Currently, new wavetables are created and setup for the &quot;basic waveform&quot; types every time a new Oscillator node is created and its &quot;type&quot; field is set (to SINE, SQUARE, etc.), which is an unnecessary overhead to Oscillator node creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687561</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-08-04 22:00:16 -0700</bug_when>
    <thetext>It looks like we could easily optimize to share the WaveTable objects between Oscillator instances through the use of lazily-created WaveTables (static member vars of Oscillator) used in the Oscillator::setType() methods for the simple waveform types...

This would avoid redundant creation of WaveTable objects and their associated overhead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689317</commentid>
    <comment_count>2</comment_count>
      <attachid>156986</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-08-07 13:14:08 -0700</bug_when>
    <thetext>Created attachment 156986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689319</commentid>
    <comment_count>3</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-08-07 13:15:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=156986) [details]
&gt; Patch

Added the static member vars to cache the wave tables.

This patch also fixes a bug where the oscillator type was always returning CUSTOM instead of the specified type.  Test added for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689331</commentid>
    <comment_count>4</comment_count>
      <attachid>156986</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-08-07 13:29:49 -0700</bug_when>
    <thetext>Comment on attachment 156986
Patch

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

Thanks Ray:

&gt; Source/WebCore/Modules/webaudio/Oscillator.cpp:48
&gt; +RefPtr&lt;WaveTable&gt; Oscillator::s_waveTableTriangle;

It&apos;s strictly forbidden in WebKit to have static initialization code run, so these can&apos;t be RefPtr&lt;&gt;, but instead should be raw pointers.
You&apos;ll then need to call release() on the RefPtr&apos;s below to &quot;convert&quot; them into a raw pointer.
These are shared WaveTables which will be lazily initialized and live for the life of the process.

Ask someone to help if this doesn&apos;t make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689590</commentid>
    <comment_count>5</comment_count>
      <attachid>157039</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-08-07 16:34:13 -0700</bug_when>
    <thetext>Created attachment 157039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689592</commentid>
    <comment_count>6</comment_count>
      <attachid>156986</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-08-07 16:34:57 -0700</bug_when>
    <thetext>Comment on attachment 156986
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/Oscillator.cpp:48
&gt;&gt; +RefPtr&lt;WaveTable&gt; Oscillator::s_waveTableTriangle;
&gt; 
&gt; It&apos;s strictly forbidden in WebKit to have static initialization code run, so these can&apos;t be RefPtr&lt;&gt;, but instead should be raw pointers.
&gt; You&apos;ll then need to call release() on the RefPtr&apos;s below to &quot;convert&quot; them into a raw pointer.
&gt; These are shared WaveTables which will be lazily initialized and live for the life of the process.
&gt; 
&gt; Ask someone to help if this doesn&apos;t make sense.

Fixed as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690474</commentid>
    <comment_count>7</comment_count>
      <attachid>157039</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-08-08 10:31:27 -0700</bug_when>
    <thetext>Comment on attachment 157039
Patch

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

&gt; Source/WebCore/Modules/webaudio/Oscillator.cpp:92
&gt; +            s_waveTableSine = WaveTable::createSine(sampleRate).leakRef();

I am not familiar with this leakRef() method and don&apos;t see it used very much in the WebKit code, so you&apos;ll either have to ask somebody who knows more about this (abarth, for example).
Or, change to a pattern like this:

RefPtr&lt;WaveTable&gt; table = WaveTable::createSine(sampleRate);
s_waveTableSine = table.release();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690509</commentid>
    <comment_count>8</comment_count>
      <attachid>157039</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-08-08 10:51:29 -0700</bug_when>
    <thetext>Comment on attachment 157039
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/Oscillator.cpp:92
&gt;&gt; +            s_waveTableSine = WaveTable::createSine(sampleRate).leakRef();
&gt; 
&gt; I am not familiar with this leakRef() method and don&apos;t see it used very much in the WebKit code, so you&apos;ll either have to ask somebody who knows more about this (abarth, for example).
&gt; Or, change to a pattern like this:
&gt; 
&gt; RefPtr&lt;WaveTable&gt; table = WaveTable::createSine(sampleRate);
&gt; s_waveTableSine = table.release();

I started this way, but s_waveTableSine is a WaveTable* and table.release() is a PassRefPtr&lt;WaveTable&gt; so you can&apos;t do that assignment.

http://www.webkit.org/coding/RefPtr.html says to convert a RefPtr to a raw pointer, use table.release().leakRef().

I&apos;ll ask abarth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690519</commentid>
    <comment_count>9</comment_count>
      <attachid>157039</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-08 11:00:02 -0700</bug_when>
    <thetext>Comment on attachment 157039
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webaudio/Oscillator.cpp:92
&gt;&gt;&gt; +            s_waveTableSine = WaveTable::createSine(sampleRate).leakRef();
&gt;&gt; 
&gt;&gt; I am not familiar with this leakRef() method and don&apos;t see it used very much in the WebKit code, so you&apos;ll either have to ask somebody who knows more about this (abarth, for example).
&gt;&gt; Or, change to a pattern like this:
&gt;&gt; 
&gt;&gt; RefPtr&lt;WaveTable&gt; table = WaveTable::createSine(sampleRate);
&gt;&gt; s_waveTableSine = table.release();
&gt; 
&gt; I started this way, but s_waveTableSine is a WaveTable* and table.release() is a PassRefPtr&lt;WaveTable&gt; so you can&apos;t do that assignment.
&gt; 
&gt; http://www.webkit.org/coding/RefPtr.html says to convert a RefPtr to a raw pointer, use table.release().leakRef().
&gt; 
&gt; I&apos;ll ask abarth.

Yeah, this sort of situation is one of the rare cases where we use leakRef.  You&apos;re intentionally leaking the object into a static variable (in the sense that we&apos;ll never deallocate the object).

If you only plan to use the static object in a single lexical scope, you can avoid calling leakRef using this pattern:

DEFINE_STATIC_LOCAL(RefPtr&lt;WaveTable&gt;, waveTableSine, (WaveTable::createSine(sampleRate)));

but the approach you&apos;ve taken here is fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690920</commentid>
    <comment_count>10</comment_count>
      <attachid>157039</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-08-08 16:47:04 -0700</bug_when>
    <thetext>Comment on attachment 157039
Patch

Looks good - thanks Ray!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690955</commentid>
    <comment_count>11</comment_count>
      <attachid>157039</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 17:02:19 -0700</bug_when>
    <thetext>Comment on attachment 157039
Patch

Rejecting attachment 157039 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
(content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [chromium] Add missing OVERRIDE and virtual annotations in compositor

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.

Full output: http://queues.webkit.org/results/13459406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690961</commentid>
    <comment_count>12</comment_count>
      <attachid>157039</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-08 17:04:38 -0700</bug_when>
    <thetext>Comment on attachment 157039
Patch

Sorry, there are a ton of patches landing right now.  Let&apos;s try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690985</commentid>
    <comment_count>13</comment_count>
      <attachid>157039</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 17:18:43 -0700</bug_when>
    <thetext>Comment on attachment 157039
Patch

Clearing flags on attachment: 157039

Committed r125122: &lt;http://trac.webkit.org/changeset/125122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690986</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 17:18:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156986</attachid>
            <date>2012-08-07 13:14:08 -0700</date>
            <delta_ts>2012-08-07 16:34:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93194-20120807131343.patch</filename>
            <type>text/plain</type>
            <size>7760</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDliZmQ0ZWRhYmIzNTkz
YzE2MjljZDM2YjQxZDBiZDg5Y2E2YjEyMi4uMTg5YWM4NWE4OWFhMGJlMTk1MTY1YmU5ZjBjMzQ2
ZDU3NDBjYTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTA3ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBDcmVhdGluZyAiYmFzaWMgd2F2
ZWZvcm0iIE9zY2lsbGF0b3Igbm9kZXMgaXMgbm90IGVmZmljaWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMxOTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWNoZSB0aGUgd2F2ZXRhYmxlcyBmb3Ig
dGhlIGJhc2ljIHR5cGVzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0byBiZQorICAgICAgICByZWNvbXB1
dGVkIGV2ZXJ5IHRpbWUuCisKKyAgICAgICAgQWxzbyBmaXggYSBidWcgd2hlcmUgb3NjaWxsYXRv
ciB0eXBlIHdhcyBhbHdheXMgc2V0IHRvIENVU1RPTQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBz
cGVjaWZpZWQgb3NjaWxsYXRvciB0eXBlLiAgVGVzdCBhZGRlZCBmb3IgdGhpcy4KKworICAgICAg
ICBUZXN0OiB3ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9zY2lsbGF0b3I6OnNldFR5cGUpOiBVc2UgY2FjaGVkIHdhdmV0YWJsZXM7IGZp
eCBidWcgaW4KKyAgICAgICAgc2V0dGluZyB0aGUgb3NjaWxsYXRvciB0eXBlLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5oOiAKKyAgICAgICAgKE9zY2lsbGF0b3IpOiBE
ZWZpbmUgc3RhdGljIHZhcmlhYmxlcyB0byBob2xkIGNhY2hlZCB3YXZldGFibGVzLgorCiAyMDEy
LTA4LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0NzgwLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5jcHAKaW5kZXggMTg1ODhhNjA3NGNlN2RhM2Nh
NzkyMGNmODc4YmI5OWI2OTFhZTE4OS4uOGY5MmM5MjhiNGI3NjFiMGRhYmQ4YjQ5ZmVlM2ZhOWE4
MTMwYzg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3IuY3BwCkBAIC00Miw2ICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBWZWN0b3JNYXRoOwogCitSZWZQdHI8V2F2ZVRhYmxlPiBPc2NpbGxhdG9yOjpzX3dh
dmVUYWJsZVNpbmU7CitSZWZQdHI8V2F2ZVRhYmxlPiBPc2NpbGxhdG9yOjpzX3dhdmVUYWJsZVNx
dWFyZTsKK1JlZlB0cjxXYXZlVGFibGU+IE9zY2lsbGF0b3I6OnNfd2F2ZVRhYmxlU2F3dG9vdGg7
CitSZWZQdHI8V2F2ZVRhYmxlPiBPc2NpbGxhdG9yOjpzX3dhdmVUYWJsZVRyaWFuZ2xlOworCiBQ
YXNzUmVmUHRyPE9zY2lsbGF0b3I+IE9zY2lsbGF0b3I6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPc2Np
bGxhdG9yKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKQEAgLTc4LDIxICs4MywyOSBAQCBPc2NpbGxh
dG9yOjp+T3NjaWxsYXRvcigpCiAKIHZvaWQgT3NjaWxsYXRvcjo6c2V0VHlwZSh1bnNpZ25lZCBz
aG9ydCB0eXBlKQogewotICAgIFJlZlB0cjxXYXZlVGFibGU+IHdhdmVUYWJsZTsKKyAgICBXYXZl
VGFibGUqIHdhdmVUYWJsZSA9IDA7CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRoaXMtPnNhbXBs
ZVJhdGUoKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU0lORToKLSAgICAgICAg
d2F2ZVRhYmxlID0gV2F2ZVRhYmxlOjpjcmVhdGVTaW5lKHNhbXBsZVJhdGUpOworICAgICAgICBp
ZiAoIXNfd2F2ZVRhYmxlU2luZSkKKyAgICAgICAgICAgIHNfd2F2ZVRhYmxlU2luZSA9IFdhdmVU
YWJsZTo6Y3JlYXRlU2luZShzYW1wbGVSYXRlKTsKKyAgICAgICAgd2F2ZVRhYmxlID0gc193YXZl
VGFibGVTaW5lLmdldCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNRVUFSRToKLSAgICAg
ICAgd2F2ZVRhYmxlID0gV2F2ZVRhYmxlOjpjcmVhdGVTcXVhcmUoc2FtcGxlUmF0ZSk7CisgICAg
ICAgIGlmICghc193YXZlVGFibGVTcXVhcmUpCisgICAgICAgICAgICBzX3dhdmVUYWJsZVNxdWFy
ZSA9IFdhdmVUYWJsZTo6Y3JlYXRlU3F1YXJlKHNhbXBsZVJhdGUpOworICAgICAgICB3YXZlVGFi
bGUgPSBzX3dhdmVUYWJsZVNxdWFyZS5nZXQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
QVdUT09USDoKLSAgICAgICAgd2F2ZVRhYmxlID0gV2F2ZVRhYmxlOjpjcmVhdGVTYXd0b290aChz
YW1wbGVSYXRlKTsKKyAgICAgICAgaWYgKCFzX3dhdmVUYWJsZVNhd3Rvb3RoKQorICAgICAgICAg
ICAgc193YXZlVGFibGVTYXd0b290aCA9IFdhdmVUYWJsZTo6Y3JlYXRlU2F3dG9vdGgoc2FtcGxl
UmF0ZSk7CisgICAgICAgIHdhdmVUYWJsZSA9IHNfd2F2ZVRhYmxlU2F3dG9vdGguZ2V0KCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVFJJQU5HTEU6Ci0gICAgICAgIHdhdmVUYWJsZSA9IFdh
dmVUYWJsZTo6Y3JlYXRlVHJpYW5nbGUoc2FtcGxlUmF0ZSk7CisgICAgICAgIGlmICghc193YXZl
VGFibGVUcmlhbmdsZSkKKyAgICAgICAgICAgIHNfd2F2ZVRhYmxlVHJpYW5nbGUgPSBXYXZlVGFi
bGU6OmNyZWF0ZVRyaWFuZ2xlKHNhbXBsZVJhdGUpOworICAgICAgICB3YXZlVGFibGUgPSBzX3dh
dmVUYWJsZVRyaWFuZ2xlLmdldCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVU1RPTToK
ICAgICAgICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlvbiBzaW5jZSBzZXRXYXZlVGFibGUoKSBt
ZXRob2QgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseS4KQEAgLTEwMCw4ICsxMTMsOCBAQCB2b2lk
IE9zY2lsbGF0b3I6OnNldFR5cGUodW5zaWduZWQgc2hvcnQgdHlwZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgc2V0V2F2ZVRhYmxlKHdhdmVUYWJsZSk7CiAgICAgbV90eXBlID0gdHlw
ZTsKLSAgICBzZXRXYXZlVGFibGUod2F2ZVRhYmxlLmdldCgpKTsKIH0KIAogYm9vbCBPc2NpbGxh
dG9yOjpjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVtZW50cyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3Iu
aAppbmRleCAyMTU4YTgyN2E0ZjMwYTY0YzMxYWZjNmQ1ZTEwNDczZjA1OWMwYmE2Li44NDM3YmNk
ZmZiYmFmNzJkMTA3YjUzMDI5ZDliODQ5NWQwNjBmM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3IuaApAQCAtOTksNiArOTksMTIgQEAgcHJpdmF0ZToK
ICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9kZXR1bmVWYWx1ZXM7CiAgICAgCiAgICAgUmVmUHRyPFdh
dmVUYWJsZT4gbV93YXZlVGFibGU7CisKKyAgICAvLyBDYWNoZSB0aGUgd2F2ZSB0YWJsZXMgZm9y
IGRpZmZlcmVudCB3YXZlZm9ybSB0eXBlcywgZXhjZXB0IENVU1RPTS4KKyAgICBzdGF0aWMgUmVm
UHRyPFdhdmVUYWJsZT4gc193YXZlVGFibGVTaW5lOworICAgIHN0YXRpYyBSZWZQdHI8V2F2ZVRh
YmxlPiBzX3dhdmVUYWJsZVNxdWFyZTsKKyAgICBzdGF0aWMgUmVmUHRyPFdhdmVUYWJsZT4gc193
YXZlVGFibGVTYXd0b290aDsKKyAgICBzdGF0aWMgUmVmUHRyPFdhdmVUYWJsZT4gc193YXZlVGFi
bGVUcmlhbmdsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjEyNTc3
Y2I5N2E4NTA3NjlhMmFhOTA5YzlmZGJlYjU3MWI1Y2VmLi5kOWEwZTU2OTlhYTMzODZmYmIxZTNm
MDFlMThkOTI0MGM3ZGVlZjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMDcgIFJh
eW1vbmQgVG95ICA8cnRveUBnb29nbGUuY29tPgorCisgICAgICAgIENyZWF0aW5nICJiYXNpYyB3
YXZlZm9ybSIgT3NjaWxsYXRvciBub2RlcyBpcyBub3QgZWZmaWNpZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzE5NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IHRvIHZlcmlmeSB0aGF0
IHRoZSByZXR1cm5lZCBvc2NpbGxhdG9yIHR5cGUgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgd2hh
dCB3YXMgc2V0LgorICAgICAgICAKKyAgICAgICAgKiB3ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2lj
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vb3NjaWxsYXRvci1iYXNp
Yy5odG1sOiBBZGRlZC4KKwogMjAxMi0wOC0wNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEVuYWJsZSBsaW5rIHByZWZldGNoCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL29zY2lsbGF0b3ItYmFzaWMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE0MTU1YzcyOWEwZTE1YjBiODVkZjEwZDg3YTNiYzk2YzUwYzk3OWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitCYXNpYyB0ZXN0IG9mIHNldHRpbmcgT3NjaWxsYXRv
ciBub2RlIHR5cGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgT3NjaWxs
YXRvciBjb3JyZWN0bHkgc2V0IHRvIFNJTkUgdHlwZS4KK1BBU1MgT3NjaWxsYXRvciBjb3JyZWN0
bHkgc2V0IHRvIFNRVUFSRSB0eXBlLgorUEFTUyBPc2NpbGxhdG9yIGNvcnJlY3RseSBzZXQgdG8g
U0FXVE9PVEggdHlwZS4KK1BBU1MgT3NjaWxsYXRvciBjb3JyZWN0bHkgc2V0IHRvIFRSSUFOR0xF
IHR5cGUuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vb3NjaWxsYXRvci1iYXNpYy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vb3NjaWxsYXRvci1iYXNpYy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlMWIwMmQ5Njc2M2RmNTQ4MWNmZGJhMzU3MWM5NjliNWUwMDE5ZWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLmh0bWwKQEAgLTAsMCAr
MSw2MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJh
bnNpdGlvbmFsLy9FTiI+CisKKzwhLS0KK0NyZWF0ZSBhbiBvc2NpbGxhdG9yIG9mIGVhY2ggdHlw
ZSBhbmQgdmVyaWZ5IHRoYXQgdGhlIHR5cGUgaXMgc2V0IGNvcnJlY3RseS4KKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJC
YXNpYyB0ZXN0IG9mIHNldHRpbmcgT3NjaWxsYXRvciBub2RlIHR5cGVzLiIpOworCit2YXIgc2Ft
cGxlUmF0ZSA9IDQ0MTAwOwordmFyIHJlbmRlckxlbmd0aFNlY29uZHMgPSAwLjI1OworCit2YXIg
b3NjVHlwZXMgPSBbe3R5cGU6IDAsIG5hbWU6ICJTSU5FIn0sCisgICAgICAgICAgICAgICAge3R5
cGU6IDEsIG5hbWU6ICJTUVVBUkUifSwKKyAgICAgICAgICAgICAgICB7dHlwZTogMiwgbmFtZTog
IlNBV1RPT1RIIn0sCisgICAgICAgICAgICAgICAge3R5cGU6IDMsIG5hbWU6ICJUUklBTkdMRSJ9
LAorICAgICAgICAgICAgICAgIHt0eXBlOiA0LCBuYW1lOiAiQ1VTVE9NIn1dOworCitmdW5jdGlv
biBydW5UZXN0KCkgCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB9CisgICAgCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAg
ICAKKyAgICAvLyBDcmVhdGUgb2ZmbGluZSBhdWRpbyBjb250ZXh0LgorICAgIHZhciBjb250ZXh0
ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgyLCBzYW1wbGVSYXRlICogcmVuZGVyTGVuZ3RoU2Vj
b25kcywgc2FtcGxlUmF0ZSk7CisgICAgdmFyIG9zYyA9IGNvbnRleHQuY3JlYXRlT3NjaWxsYXRv
cigpOworCisgICAgLy8gU2V0IGVhY2ggcG9zc2libGUgb3NjaWxsYXRvciB0eXBlIChleGNlcHQg
Q1VTVE9NKSBhbmQgdmVyaWZ5IHRoYXQgdGhlIHR5cGUgaXMgY29ycmVjdC4KKyAgICBmb3IgKHZh
ciBrID0gMDsgayA8IG9zY1R5cGVzLmxlbmd0aCAtIDE7ICsraykgeworICAgICAgICBvc2MudHlw
ZSA9IG9zY1R5cGVzW2tdLnR5cGUKKyAgICAgICAgaWYgKG9zYy50eXBlID09IG9zY1R5cGVzW2td
LnR5cGUpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJPc2NpbGxhdG9yIGNvcnJlY3RseSBzZXQg
dG8gIiArIG9zY1R5cGVzW2tdLm5hbWUgKyAiIHR5cGUuIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIk9zY2lsbGF0b3Igc2V0IHRvICIgKyBvc2NUeXBlc1trXS5uYW1l
ICsgIiB0eXBlLCBidXQgcmV0dXJucyAiICsgb3NjVHlwZXNbb3NjLnR5cGVdLm5hbWUgKyAiIHR5
cGUuIik7CisgICAgfQorCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKK3N1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157039</attachid>
            <date>2012-08-07 16:34:13 -0700</date>
            <delta_ts>2012-08-08 17:18:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93194-20120807163348.patch</filename>
            <type>text/plain</type>
            <size>8357</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDliZmQ0ZWRhYmIzNTkz
YzE2MjljZDM2YjQxZDBiZDg5Y2E2YjEyMi4uMTg5YWM4NWE4OWFhMGJlMTk1MTY1YmU5ZjBjMzQ2
ZDU3NDBjYTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTA3ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBDcmVhdGluZyAiYmFzaWMgd2F2
ZWZvcm0iIE9zY2lsbGF0b3Igbm9kZXMgaXMgbm90IGVmZmljaWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMxOTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWNoZSB0aGUgd2F2ZXRhYmxlcyBmb3Ig
dGhlIGJhc2ljIHR5cGVzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0byBiZQorICAgICAgICByZWNvbXB1
dGVkIGV2ZXJ5IHRpbWUuCisKKyAgICAgICAgQWxzbyBmaXggYSBidWcgd2hlcmUgb3NjaWxsYXRv
ciB0eXBlIHdhcyBhbHdheXMgc2V0IHRvIENVU1RPTQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBz
cGVjaWZpZWQgb3NjaWxsYXRvciB0eXBlLiAgVGVzdCBhZGRlZCBmb3IgdGhpcy4KKworICAgICAg
ICBUZXN0OiB3ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9zY2lsbGF0b3I6OnNldFR5cGUpOiBVc2UgY2FjaGVkIHdhdmV0YWJsZXM7IGZp
eCBidWcgaW4KKyAgICAgICAgc2V0dGluZyB0aGUgb3NjaWxsYXRvciB0eXBlLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5oOiAKKyAgICAgICAgKE9zY2lsbGF0b3IpOiBE
ZWZpbmUgc3RhdGljIHZhcmlhYmxlcyB0byBob2xkIGNhY2hlZCB3YXZldGFibGVzLgorCiAyMDEy
LTA4LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0NzgwLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5jcHAKaW5kZXggMTg1ODhhNjA3NGNlN2RhM2Nh
NzkyMGNmODc4YmI5OWI2OTFhZTE4OS4uZWNiZDRkYjliMDFhMjhjYmI5YjU1ZjczNGM4NzQzNjA5
Yzc4MmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3IuY3BwCkBAIC00Miw2ICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBWZWN0b3JNYXRoOwogCitXYXZlVGFibGUqIE9zY2lsbGF0b3I6OnNfd2F2ZVRhYmxl
U2luZSA9IDA7CitXYXZlVGFibGUqIE9zY2lsbGF0b3I6OnNfd2F2ZVRhYmxlU3F1YXJlID0gMDsK
K1dhdmVUYWJsZSogT3NjaWxsYXRvcjo6c193YXZlVGFibGVTYXd0b290aCA9IDA7CitXYXZlVGFi
bGUqIE9zY2lsbGF0b3I6OnNfd2F2ZVRhYmxlVHJpYW5nbGUgPSAwOworCiBQYXNzUmVmUHRyPE9z
Y2lsbGF0b3I+IE9zY2lsbGF0b3I6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPc2NpbGxhdG9yKGNvbnRl
eHQsIHNhbXBsZVJhdGUpKTsKQEAgLTc4LDMwICs4Myw0MCBAQCBPc2NpbGxhdG9yOjp+T3NjaWxs
YXRvcigpCiAKIHZvaWQgT3NjaWxsYXRvcjo6c2V0VHlwZSh1bnNpZ25lZCBzaG9ydCB0eXBlKQog
ewotICAgIFJlZlB0cjxXYXZlVGFibGU+IHdhdmVUYWJsZTsKKyAgICBXYXZlVGFibGUqIHdhdmVU
YWJsZSA9IDA7CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRoaXMtPnNhbXBsZVJhdGUoKTsKIAog
ICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgU0lORToKLSAgICAgICAgd2F2ZVRhYmxlID0g
V2F2ZVRhYmxlOjpjcmVhdGVTaW5lKHNhbXBsZVJhdGUpOworICAgICAgICBpZiAoIXNfd2F2ZVRh
YmxlU2luZSkKKyAgICAgICAgICAgIHNfd2F2ZVRhYmxlU2luZSA9IFdhdmVUYWJsZTo6Y3JlYXRl
U2luZShzYW1wbGVSYXRlKS5sZWFrUmVmKCk7CisgICAgICAgIHdhdmVUYWJsZSA9IHNfd2F2ZVRh
YmxlU2luZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTUVVBUkU6Ci0gICAgICAgIHdhdmVU
YWJsZSA9IFdhdmVUYWJsZTo6Y3JlYXRlU3F1YXJlKHNhbXBsZVJhdGUpOworICAgICAgICBpZiAo
IXNfd2F2ZVRhYmxlU3F1YXJlKQorICAgICAgICAgICAgc193YXZlVGFibGVTcXVhcmUgPSBXYXZl
VGFibGU6OmNyZWF0ZVNxdWFyZShzYW1wbGVSYXRlKS5sZWFrUmVmKCk7CisgICAgICAgIHdhdmVU
YWJsZSA9IHNfd2F2ZVRhYmxlU3F1YXJlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNBV1RP
T1RIOgotICAgICAgICB3YXZlVGFibGUgPSBXYXZlVGFibGU6OmNyZWF0ZVNhd3Rvb3RoKHNhbXBs
ZVJhdGUpOworICAgICAgICBpZiAoIXNfd2F2ZVRhYmxlU2F3dG9vdGgpCisgICAgICAgICAgICBz
X3dhdmVUYWJsZVNhd3Rvb3RoID0gV2F2ZVRhYmxlOjpjcmVhdGVTYXd0b290aChzYW1wbGVSYXRl
KS5sZWFrUmVmKCk7CisgICAgICAgIHdhdmVUYWJsZSA9IHNfd2F2ZVRhYmxlU2F3dG9vdGg7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVFJJQU5HTEU6Ci0gICAgICAgIHdhdmVUYWJsZSA9IFdh
dmVUYWJsZTo6Y3JlYXRlVHJpYW5nbGUoc2FtcGxlUmF0ZSk7CisgICAgICAgIGlmICghc193YXZl
VGFibGVUcmlhbmdsZSkKKyAgICAgICAgICAgIHNfd2F2ZVRhYmxlVHJpYW5nbGUgPSBXYXZlVGFi
bGU6OmNyZWF0ZVRyaWFuZ2xlKHNhbXBsZVJhdGUpLmxlYWtSZWYoKTsKKyAgICAgICAgd2F2ZVRh
YmxlID0gc193YXZlVGFibGVUcmlhbmdsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVNU
T006Ci0gICAgICAgIC8vIEZJWE1FOiB0aHJvdyBleGNlcHRpb24gc2luY2Ugc2V0V2F2ZVRhYmxl
KCkgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkuCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlvbiBmb3IgaW52YWxpZCB0eXBlcyBvciBpZiB0aGUg
dHlwZSBpcyBDVVNUT00gc2luY2Ugc2V0V2F2ZVRhYmxlKCkKKyAgICAgICAgLy8gbWV0aG9kIG11
c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkgaW4gdGhhdCBjYXNlLgogICAgICAgICByZXR1cm47CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIHNldFdhdmVUYWJsZSh3YXZlVGFibGUpOwogICAg
IG1fdHlwZSA9IHR5cGU7Ci0gICAgc2V0V2F2ZVRhYmxlKHdhdmVUYWJsZS5nZXQoKSk7CiB9CiAK
IGJvb2wgT3NjaWxsYXRvcjo6Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVQaGFzZUluY3JlbWVudHMo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT3NjaWxsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yLmgKaW5kZXggMjE1OGE4MjdhNGYzMGE2NGMzMWFmYzZkNWUxMDQ3M2YwNTlj
MGJhNi4uMTI3YjMxYjJkOTJhYzRlN2QxNmFmZGUzNTQwMjdiM2E0NWVlN2QzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yLmgKQEAgLTk5LDYgKzk5LDEy
IEBAIHByaXZhdGU6CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fZGV0dW5lVmFsdWVzOwogICAgIAog
ICAgIFJlZlB0cjxXYXZlVGFibGU+IG1fd2F2ZVRhYmxlOworCisgICAgLy8gQ2FjaGUgdGhlIHdh
dmUgdGFibGVzIGZvciBkaWZmZXJlbnQgd2F2ZWZvcm0gdHlwZXMsIGV4Y2VwdCBDVVNUT00uCisg
ICAgc3RhdGljIFdhdmVUYWJsZSogc193YXZlVGFibGVTaW5lOworICAgIHN0YXRpYyBXYXZlVGFi
bGUqIHNfd2F2ZVRhYmxlU3F1YXJlOworICAgIHN0YXRpYyBXYXZlVGFibGUqIHNfd2F2ZVRhYmxl
U2F3dG9vdGg7CisgICAgc3RhdGljIFdhdmVUYWJsZSogc193YXZlVGFibGVUcmlhbmdsZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjEyNTc3Y2I5N2E4NTA3NjlhMmFh
OTA5YzlmZGJlYjU3MWI1Y2VmLi5kOWEwZTU2OTlhYTMzODZmYmIxZTNmMDFlMThkOTI0MGM3ZGVl
ZjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMDcgIFJheW1vbmQgVG95ICA8cnRv
eUBnb29nbGUuY29tPgorCisgICAgICAgIENyZWF0aW5nICJiYXNpYyB3YXZlZm9ybSIgT3NjaWxs
YXRvciBub2RlcyBpcyBub3QgZWZmaWNpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MzE5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSByZXR1cm5lZCBv
c2NpbGxhdG9yIHR5cGUgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgd2hhdCB3YXMgc2V0LgorICAg
ICAgICAKKyAgICAgICAgKiB3ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vb3NjaWxsYXRvci1iYXNpYy5odG1sOiBBZGRlZC4K
KwogMjAxMi0wOC0wNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIEVuYWJsZSBsaW5rIHByZWZldGNoCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL29zY2lsbGF0b3ItYmFzaWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2YzZl
ZGI4ZjEwMjM4ODU5MmQ5MmNmYmVjZWE0NWExYWExZmY5MTEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEzIEBACitCYXNpYyB0ZXN0IG9mIHNldHRpbmcgT3NjaWxsYXRvciBub2RlIHR5cGVzLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgT3NjaWxsYXRvciBjb3JyZWN0bHkg
c2V0IHRvIFNJTkUgdHlwZS4KK1BBU1MgT3NjaWxsYXRvciBjb3JyZWN0bHkgc2V0IHRvIFNRVUFS
RSB0eXBlLgorUEFTUyBPc2NpbGxhdG9yIGNvcnJlY3RseSBzZXQgdG8gU0FXVE9PVEggdHlwZS4K
K1BBU1MgT3NjaWxsYXRvciBjb3JyZWN0bHkgc2V0IHRvIFRSSUFOR0xFIHR5cGUuCitQQVNTIE9z
Y2lsbGF0b3IgY29ycmVjdGx5IHNldCB0byBDVVNUT00gdHlwZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJhdWRpby9vc2NpbGxhdG9yLWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9v
c2NpbGxhdG9yLWJhc2ljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYyNmIwMjI5ZGRjODJjZGI0ODVjYWQw
MmM1MmQ2ZGZjZmIwOTVkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlv
L29zY2lsbGF0b3ItYmFzaWMuaHRtbApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKworPCEtLQor
Q3JlYXRlIGFuIG9zY2lsbGF0b3Igb2YgZWFjaCB0eXBlIGFuZCB2ZXJpZnkgdGhhdCB0aGUgdHlw
ZSBpcyBzZXQgY29ycmVjdGx5LgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3Rp
bmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkJhc2ljIHRlc3Qgb2Ygc2V0dGluZyBPc2Np
bGxhdG9yIG5vZGUgdHlwZXMuIik7CisKK3ZhciBzYW1wbGVSYXRlID0gNDQxMDA7Cit2YXIgcmVu
ZGVyTGVuZ3RoU2Vjb25kcyA9IDAuMjU7CisKK3ZhciBvc2NUeXBlcyA9IFt7dHlwZTogMCwgbmFt
ZTogIlNJTkUifSwKKyAgICAgICAgICAgICAgICB7dHlwZTogMSwgbmFtZTogIlNRVUFSRSJ9LAor
ICAgICAgICAgICAgICAgIHt0eXBlOiAyLCBuYW1lOiAiU0FXVE9PVEgifSwKKyAgICAgICAgICAg
ICAgICB7dHlwZTogMywgbmFtZTogIlRSSUFOR0xFIn0sCisgICAgICAgICAgICAgICAge3R5cGU6
IDQsIG5hbWU6ICJDVVNUT00ifV07CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSAKK3sKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIAorICAgIC8vIENyZWF0ZSBvZmZsaW5l
IGF1ZGlvIGNvbnRleHQuCisgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0
KDIsIHNhbXBsZVJhdGUgKiByZW5kZXJMZW5ndGhTZWNvbmRzLCBzYW1wbGVSYXRlKTsKKyAgICB2
YXIgb3NjID0gY29udGV4dC5jcmVhdGVPc2NpbGxhdG9yKCk7CisKKyAgICAvLyBTZXQgZWFjaCBw
b3NzaWJsZSBvc2NpbGxhdG9yIHR5cGUgKGV4Y2VwdCBDVVNUT00pIGFuZCB2ZXJpZnkgdGhhdCB0
aGUgdHlwZSBpcyBjb3JyZWN0LgorICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3NjVHlwZXMubGVu
Z3RoIC0gMTsgKytrKSB7CisgICAgICAgIG9zYy50eXBlID0gb3NjVHlwZXNba10udHlwZQorICAg
ICAgICBpZiAob3NjLnR5cGUgPT0gb3NjVHlwZXNba10udHlwZSkKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIk9zY2lsbGF0b3IgY29ycmVjdGx5IHNldCB0byAiICsgb3NjVHlwZXNba10ubmFtZSAr
ICIgdHlwZS4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3NjaWxs
YXRvciBzZXQgdG8gIiArIG9zY1R5cGVzW2tdLm5hbWUgKyAiIHR5cGUsIGJ1dCByZXR1cm5zICIg
KyBvc2NUeXBlc1tvc2MudHlwZV0ubmFtZSArICIgdHlwZS4iKTsKKyAgICB9CisKKyAgICAvLyBO
b3cgc2V0IGEgY3VzdG9tIG9zY2lsbGF0b3IKKyAgICB2YXIgY29lZmZBID0gbmV3IEZsb2F0MzJB
cnJheShbMCwgMSwgMC41XSk7CisgICAgdmFyIGNvZWZmQiA9IG5ldyBGbG9hdDMyQXJyYXkoWzAs
IDAsIDBdKTsgICAgICAgIAorICAgIHZhciB3YXZldGFibGUgPSBjb250ZXh0LmNyZWF0ZVdhdmVU
YWJsZShjb2VmZkEsIGNvZWZmQik7CisgICAgb3NjLnNldFdhdmVUYWJsZSh3YXZldGFibGUpOwor
ICAgIGlmIChvc2MudHlwZSA9PSBvc2MuQ1VTVE9NKQorICAgICAgICB0ZXN0UGFzc2VkKCJPc2Np
bGxhdG9yIGNvcnJlY3RseSBzZXQgdG8gQ1VTVE9NIHR5cGUuIik7CisgICAgZWxzZQorICAgICAg
ICB0ZXN0RmFpbGVkKCJPc2NpbGxhdG9yIHNldCB0byBDVVNUT00gdHlwZSwgYnV0IHJldHVybnMg
IiArIG9zY1R5cGVzW29zYy50eXBlXS5uYW1lICsgIiB0eXBlLiIpOworCisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>