/**
 *
 * A Track that interpolates Boolean
 * 
 * @author Ben Houston / http://clara.io/
 * @author David Sarno / http://lighthaus.us/
 */

THREE.BooleanKeyframeTrack = function ( name, keys ) {

	THREE.KeyframeTrack.call( this, name, keys );

	// local cache of value type to avoid allocations during runtime.
	this.result = this.keys[0].value;

};

THREE.BooleanKeyframeTrack.prototype = Object.create( THREE.KeyframeTrack.prototype );

THREE.BooleanKeyframeTrack.prototype.constructor = THREE.BooleanKeyframeTrack;

THREE.BooleanKeyframeTrack.prototype.setResult = function( value ) {

	this.result = value;

};

// memoization of the lerp function for speed.
// NOTE: Do not optimize as a prototype initialization closure, as value0 will be different on a per class basis.
THREE.BooleanKeyframeTrack.prototype.lerpValues = function( value0, value1, alpha ) {

	return ( alpha < 1.0 ) ? value0 : value1;

};

THREE.BooleanKeyframeTrack.prototype.compareValues = function( value0, value1 ) {

	return ( value0 === value1 );

};

THREE.BooleanKeyframeTrack.parse = function( name, jsonKeys ) {

	return new THREE.BooleanKeyframeTrack( name, jsonKeys );

};
 
@@ -1021,24 +1021,349 @@
 ue1 );%0A%0A%7D;%0A%0A
+THREE.BooleanKeyframeTrack.prototype.clone = function() %7B%0A%0A%09var clonedKeys = %5B%5D;%0A%0A%09for( var i = 0; i %3C this.keys.length; i ++ ) %7B%0A%09%09%0A%09%09var key = this.keys%5Bi%5D;%0A%09%09clonedKeys.push( %7B%0A%09%09%09time: key.time%0A%09%09%09value: key.value%0A%09%09%7D );%0A%09%7D%0A%0A%09var result = new THREE.BooleanKeyframeTrack( this.name );%0A%09return ( value0 === value1 );%0A%0A%7D;%0A%0A%0A
 THREE.Boolea

allow for cloning of boolean keyframe tracks.