no-multi-spaces fix
diff --git a/.eslintrc.json b/.eslintrc.json
index a41bf83..2d29004 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -39,7 +39,6 @@
         "no-shadow": "off",
         "no-restricted-globals": "off",
         "default-case": "off",
-        "no-multi-spaces": "off",
         "curly": "off",
         "nonblock-statement-body-position": "off",
         "no-else-return": "off",
diff --git a/player/js/3rd_party/BezierEaser.js b/player/js/3rd_party/BezierEaser.js
index 7124256..da798c2 100644
--- a/player/js/3rd_party/BezierEaser.js
+++ b/player/js/3rd_party/BezierEaser.js
@@ -37,7 +37,7 @@
 
   function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
   function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
-  function C(aA1)      { return 3.0 * aA1; }
+  function C(aA1) { return 3.0 * aA1; }
 
   // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
   function calcBezier(aT, aA1, aA2) {
diff --git a/player/js/3rd_party/seedrandom.js b/player/js/3rd_party/seedrandom.js
index e100007..2795e6f 100644
--- a/player/js/3rd_party/seedrandom.js
+++ b/player/js/3rd_party/seedrandom.js
@@ -27,15 +27,15 @@
 // The following constants are related to IEEE 754 limits.
 //
   var global = this,
-    width = 256,        // each RC4 output is 0 <= x < 256
-    chunks = 6,         // at least six RC4 outputs for each double
-    digits = 52,        // there are 52 significant digits in a double
+    width = 256, // each RC4 output is 0 <= x < 256
+    chunks = 6, // at least six RC4 outputs for each double
+    digits = 52, // there are 52 significant digits in a double
     rngname = 'random', // rngname: name for Math.random and Math.seedrandom
     startdenom = math.pow(width, chunks),
     significance = math.pow(2, digits),
     overflow = significance * 2,
     mask = width - 1,
-    nodecrypto;         // node.js crypto module, initialized at the bottom.
+    nodecrypto; // node.js crypto module, initialized at the bottom.
 
   //
   // seedrandom()
@@ -57,20 +57,20 @@
     // This function returns a random double in [0, 1) that contains
     // randomness in every bit of the mantissa of the IEEE 754 value.
     var prng = function () {
-      var n = arc4.g(chunks),             // Start with a numerator n < 2 ^ 48
-        d = startdenom,                 //   and denominator d = 2 ^ 48.
-        x = 0;                          //   and no 'extra last byte'.
-      while (n < significance) {          // Fill up all significant digits by
-        n = (n + x) * width;              //   shifting numerator and
-        d *= width;                       //   denominator and generating a
-        x = arc4.g(1);                    //   new least-significant-byte.
+      var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48
+        d = startdenom, //   and denominator d = 2 ^ 48.
+        x = 0; //   and no 'extra last byte'.
+      while (n < significance) { // Fill up all significant digits by
+        n = (n + x) * width; //   shifting numerator and
+        d *= width; //   denominator and generating a
+        x = arc4.g(1); //   new least-significant-byte.
       }
-      while (n >= overflow) {             // To avoid rounding up, before adding
-        n /= 2;                           //   last byte, shift everything
-        d /= 2;                           //   right using integer math until
-        x >>>= 1;                         //   we have exactly the desired bits.
+      while (n >= overflow) { // To avoid rounding up, before adding
+        n /= 2; //   last byte, shift everything
+        d /= 2; //   right using integer math until
+        x >>>= 1; //   we have exactly the desired bits.
       }
-      return (n + x) / d;                 // Form the number within [0, 1).
+      return (n + x) / d; // Form the number within [0, 1).
     };
 
     prng.int32 = function () { return arc4.g(4) | 0; };
@@ -231,6 +231,6 @@
 
 // End anonymous scope, and pass initial values.
 })(
-  [],     // pool: entropy pool starts empty
-  BMMath,    // math: package containing random, pow, and seedrandom
+  [], // pool: entropy pool starts empty
+  BMMath, // math: package containing random, pow, and seedrandom
 );
diff --git a/player/js/3rd_party/transformation-matrix.js b/player/js/3rd_party/transformation-matrix.js
index 237df6b..5e5b422 100644
--- a/player/js/3rd_party/transformation-matrix.js
+++ b/player/js/3rd_party/transformation-matrix.js
@@ -60,7 +60,7 @@
     }
     var mCos = _cos(angle);
     var mSin = _sin(angle);
-    return this._t(mCos, -mSin,  0, 0, mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1);
+    return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
   }
 
   function rotateX(angle) {
@@ -69,7 +69,7 @@
     }
     var mCos = _cos(angle);
     var mSin = _sin(angle);
-    return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin,  mCos, 0, 0, 0, 0, 1);
+    return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);
   }
 
   function rotateY(angle) {
@@ -78,7 +78,7 @@
     }
     var mCos = _cos(angle);
     var mSin = _sin(angle);
-    return this._t(mCos,  0,  mSin, 0, 0, 1, 0, 0, -mSin,  0,  mCos, 0, 0, 0, 0, 1);
+    return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);
   }
 
   function rotateZ(angle) {
@@ -87,7 +87,7 @@
     }
     var mCos = _cos(angle);
     var mSin = _sin(angle);
-    return this._t(mCos, -mSin,  0, 0, mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1);
+    return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
   }
 
   function shear(sx, sy) {
@@ -101,9 +101,9 @@
   function skewFromAxis(ax, angle) {
     var mCos = _cos(angle);
     var mSin = _sin(angle);
-    return this._t(mCos, mSin,  0, 0, -mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1)
-      ._t(1, 0,  0, 0, _tan(ax),  1, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1)
-      ._t(mCos, -mSin,  0, 0, mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1);
+    return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
+      ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
+      ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
     // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);
   }
 
diff --git a/player/js/animation/AnimationItem.js b/player/js/animation/AnimationItem.js
index bace18f..c5dc9f7 100644
--- a/player/js/animation/AnimationItem.js
+++ b/player/js/animation/AnimationItem.js
@@ -64,8 +64,8 @@
     this.loop = parseInt(params.loop);
   }
   this.autoplay = 'autoplay' in params ? params.autoplay : true;
-  this.name = params.name ? params.name :  '';
-  this.autoloadSegments = params.hasOwnProperty('autoloadSegments') ? params.autoloadSegments :  true;
+  this.name = params.name ? params.name : '';
+  this.autoloadSegments = params.hasOwnProperty('autoloadSegments') ? params.autoloadSegments : true;
   this.assetsPath = params.assetsPath;
   this.initialSegment = params.initialSegment;
   if (params.audioFactory) {
@@ -93,14 +93,14 @@
 AnimationItem.prototype.setData = function (wrapper, animationData) {
   var params = {
     wrapper: wrapper,
-    animationData: animationData ? (typeof animationData  === 'object') ? animationData : JSON.parse(animationData) : null,
+    animationData: animationData ? (typeof animationData === 'object') ? animationData : JSON.parse(animationData) : null,
   };
   var wrapperAttributes = wrapper.attributes;
 
-  params.path = wrapperAttributes.getNamedItem('data-animation-path') ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') ? wrapperAttributes.getNamedItem('data-bm-path').value :  wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';
-  params.animType = wrapperAttributes.getNamedItem('data-anim-type') ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') ? wrapperAttributes.getNamedItem('bm-type').value :  wrapperAttributes.getNamedItem('data-bm-renderer') ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';
+  params.path = wrapperAttributes.getNamedItem('data-animation-path') ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';
+  params.animType = wrapperAttributes.getNamedItem('data-anim-type') ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';
 
-  var loop = wrapperAttributes.getNamedItem('data-anim-loop') ? wrapperAttributes.getNamedItem('data-anim-loop').value :  wrapperAttributes.getNamedItem('data-bm-loop') ? wrapperAttributes.getNamedItem('data-bm-loop').value :  wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';
+  var loop = wrapperAttributes.getNamedItem('data-anim-loop') ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';
   if(loop === '') {
   }else if(loop === 'false') {
     params.loop = false;
@@ -109,11 +109,11 @@
   }else{
     params.loop = parseInt(loop);
   }
-  var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') ? wrapperAttributes.getNamedItem('data-anim-autoplay').value :  wrapperAttributes.getNamedItem('data-bm-autoplay') ? wrapperAttributes.getNamedItem('data-bm-autoplay').value :  wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;
+  var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;
   params.autoplay = autoplay !== 'false';
 
-  params.name = wrapperAttributes.getNamedItem('data-name') ? wrapperAttributes.getNamedItem('data-name').value :  wrapperAttributes.getNamedItem('data-bm-name') ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value :  '';
-  var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') ? wrapperAttributes.getNamedItem('data-anim-prerender').value :  wrapperAttributes.getNamedItem('data-bm-prerender') ? wrapperAttributes.getNamedItem('data-bm-prerender').value :  wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';
+  params.name = wrapperAttributes.getNamedItem('data-name') ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';
+  var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';
 
   if(prerender === 'false') {
     params.prerender = false;
@@ -365,7 +365,7 @@
   // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.
   if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {
     if (!this.loop || this.playCount === this.loop) {
-      if (!this.checkSegments(nextValue >  this.totalFrames ? nextValue % this.totalFrames : 0)) {
+      if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {
         _isComplete = true;
         nextValue = this.totalFrames - 1;
       }
diff --git a/player/js/animation/AnimationItemWorkerOverride.js b/player/js/animation/AnimationItemWorkerOverride.js
index 5941844..ebf4f1e 100644
--- a/player/js/animation/AnimationItemWorkerOverride.js
+++ b/player/js/animation/AnimationItemWorkerOverride.js
@@ -23,8 +23,8 @@
     this.loop = parseInt(params.loop);
   }
   this.autoplay = 'autoplay' in params ? params.autoplay : true;
-  this.name = params.name ? params.name :  '';
-  this.autoloadSegments = params.hasOwnProperty('autoloadSegments') ? params.autoloadSegments :  true;
+  this.name = params.name ? params.name : '';
+  this.autoloadSegments = params.hasOwnProperty('autoloadSegments') ? params.autoloadSegments : true;
   this.assetsPath = null;
   if(params.animationData) {
     this.configAnimation(params.animationData);
diff --git a/player/js/elements/canvasElements/CVShapeElement.js b/player/js/elements/canvasElements/CVShapeElement.js
index e6bcec5..62694e7 100644
--- a/player/js/elements/canvasElements/CVShapeElement.js
+++ b/player/js/elements/canvasElements/CVShapeElement.js
@@ -432,7 +432,7 @@
 CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {
   var styleElem = itemData.style;
   var d = itemData.d;
-  if(d && (d._mdf  || this._isFirstFrame)) {
+  if(d && (d._mdf || this._isFirstFrame)) {
     styleElem.da = d.dashArray;
     styleElem.do = d.dashoffset[0];
   }
diff --git a/player/js/elements/canvasElements/CVTextElement.js b/player/js/elements/canvasElements/CVTextElement.js
index d0f4805..8853a2d 100644
--- a/player/js/elements/canvasElements/CVTextElement.js
+++ b/player/js/elements/canvasElements/CVTextElement.js
@@ -107,7 +107,7 @@
     this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
   }
 
-  var  i, len, j, jLen, k, kLen;
+  var i, len, j, jLen, k, kLen;
   var renderedLetters = this.textAnimator.renderedLetters;
 
   var letters = this.textProperty.currentData.l;
diff --git a/player/js/elements/helpers/RenderableDOMElement.js b/player/js/elements/helpers/RenderableDOMElement.js
index 5b722a8..f9c941c 100644
--- a/player/js/elements/helpers/RenderableDOMElement.js
+++ b/player/js/elements/helpers/RenderableDOMElement.js
@@ -53,7 +53,7 @@
       this.checkTransparency();
     },
     destroy: function () {
-      this.innerElem =  null;
+      this.innerElem = null;
       this.destroyBaseElement();
     },
   };
diff --git a/player/js/elements/helpers/shapes/SVGElementsRenderer.js b/player/js/elements/helpers/shapes/SVGElementsRenderer.js
index 7a9503b..536b611 100644
--- a/player/js/elements/helpers/shapes/SVGElementsRenderer.js
+++ b/player/js/elements/helpers/shapes/SVGElementsRenderer.js
@@ -146,7 +146,7 @@
       }
     }
     if (styleData.t === 1) {
-      if (itemData.e._mdf  || isFirstFrame) {
+      if (itemData.e._mdf || isFirstFrame) {
         gfill.setAttribute('x2', pt2[0]);
         gfill.setAttribute('y2', pt2[1]);
         if (hasOpacity && !itemData.g._collapsable) {
diff --git a/player/js/elements/htmlElements/HShapeElement.js b/player/js/elements/htmlElements/HShapeElement.js
index eca03c6..7543131 100644
--- a/player/js/elements/htmlElements/HShapeElement.js
+++ b/player/js/elements/htmlElements/HShapeElement.js
@@ -205,7 +205,7 @@
       this.shapeCont.setAttribute('height', tempBoundingBox.height);
       changed = true;
     }
-    if(changed  || this.currentBBox.x !== tempBoundingBox.x  || this.currentBBox.y !== tempBoundingBox.y) {
+    if(changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {
       this.currentBBox.w = tempBoundingBox.width;
       this.currentBBox.h = tempBoundingBox.height;
       this.currentBBox.x = tempBoundingBox.x;
diff --git a/player/js/elements/htmlElements/HTextElement.js b/player/js/elements/htmlElements/HTextElement.js
index 18c4697..9d34fa8 100644
--- a/player/js/elements/htmlElements/HTextElement.js
+++ b/player/js/elements/htmlElements/HTextElement.js
@@ -186,7 +186,7 @@
   if(!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {
     return;
   }
-  var  i, len, count = 0;
+  var i, len, count = 0;
   var renderedLetters = this.textAnimator.renderedLetters;
 
   var letters = this.textProperty.currentData.l;
@@ -236,7 +236,7 @@
     }
 
     var margin = 1;
-    if(this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2)  || this.currentBBox.x !== (boundingBox.x - margin)  || this.currentBBox.y !== (boundingBox.y - margin)) {
+    if(this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)) {
       this.currentBBox.w = boundingBox.width + margin * 2;
       this.currentBBox.h = boundingBox.height + margin * 2;
       this.currentBBox.x = boundingBox.x - margin;
diff --git a/player/js/elements/svgElements/SVGBaseElement.js b/player/js/elements/svgElements/SVGBaseElement.js
index 8444a3d..c88cbaf 100644
--- a/player/js/elements/svgElements/SVGBaseElement.js
+++ b/player/js/elements/svgElements/SVGBaseElement.js
@@ -61,7 +61,7 @@
         /// /
         this.globalData.defs.appendChild(fil);
         var alphaRect = createNS('rect');
-        alphaRect.setAttribute('width',  this.comp.data.w);
+        alphaRect.setAttribute('width', this.comp.data.w);
         alphaRect.setAttribute('height', this.comp.data.h);
         alphaRect.setAttribute('x', '0');
         alphaRect.setAttribute('y', '0');
diff --git a/player/js/elements/svgElements/SVGTextElement.js b/player/js/elements/svgElements/SVGTextElement.js
index 95436c7..3db665c 100644
--- a/player/js/elements/svgElements/SVGTextElement.js
+++ b/player/js/elements/svgElements/SVGTextElement.js
@@ -174,7 +174,7 @@
     this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
     if(this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {
       this._sizeChanged = true;
-      var  i, len;
+      var i, len;
       var renderedLetters = this.textAnimator.renderedLetters;
 
       var letters = this.textProperty.currentData.l;
diff --git a/player/js/renderers/CanvasRenderer.js b/player/js/renderers/CanvasRenderer.js
index 98e4c6f..5620833 100644
--- a/player/js/renderers/CanvasRenderer.js
+++ b/player/js/renderers/CanvasRenderer.js
@@ -315,7 +315,7 @@
     } */
 };
 
-CanvasRenderer.prototype.checkPendingElements  = function () {
+CanvasRenderer.prototype.checkPendingElements = function () {
   while(this.pendingElements.length) {
     var element = this.pendingElements.pop();
     element.checkParenting();
diff --git a/player/js/renderers/HybridRenderer.js b/player/js/renderers/HybridRenderer.js
index 6f9af44..dd6e25d 100644
--- a/player/js/renderers/HybridRenderer.js
+++ b/player/js/renderers/HybridRenderer.js
@@ -32,7 +32,7 @@
 
 HybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;
 
-HybridRenderer.prototype.checkPendingElements  = function () {
+HybridRenderer.prototype.checkPendingElements = function () {
   while(this.pendingElements.length) {
     var element = this.pendingElements.pop();
     element.checkParenting();
diff --git a/player/js/renderers/SVGRenderer.js b/player/js/renderers/SVGRenderer.js
index cf2d7b9..7f428c3 100644
--- a/player/js/renderers/SVGRenderer.js
+++ b/player/js/renderers/SVGRenderer.js
@@ -159,7 +159,7 @@
 SVGRenderer.prototype.updateContainerSize = function () {
 };
 
-SVGRenderer.prototype.buildItem  = function (pos) {
+SVGRenderer.prototype.buildItem = function (pos) {
   var elements = this.elements;
   if(elements[pos] || this.layers[pos].ty == 99) {
     return;
@@ -185,7 +185,7 @@
   }
 };
 
-SVGRenderer.prototype.checkPendingElements  = function () {
+SVGRenderer.prototype.checkPendingElements = function () {
   while(this.pendingElements.length) {
     var element = this.pendingElements.pop();
     element.checkParenting();
diff --git a/player/js/utils/FontManager.js b/player/js/utils/FontManager.js
index 7f95b37..bd6e7c5 100644
--- a/player/js/utils/FontManager.js
+++ b/player/js/utils/FontManager.js
@@ -26,20 +26,20 @@
 
   function setUpNode(font, family) {
     var parentNode = createTag('span');
-    parentNode.style.fontFamily    = family;
+    parentNode.style.fontFamily = family;
     var node = createTag('span');
     // Characters that vary significantly among different fonts
     node.innerText = 'giItT1WQy@!-/#';
     // Visible - so we can measure it - but not on the screen
-    parentNode.style.position      = 'absolute';
-    parentNode.style.left          = '-10000px';
-    parentNode.style.top           = '-10000px';
+    parentNode.style.position = 'absolute';
+    parentNode.style.left = '-10000px';
+    parentNode.style.top = '-10000px';
     // Large font size makes even subtle changes obvious
-    parentNode.style.fontSize      = '300px';
+    parentNode.style.fontSize = '300px';
     // Reset any font properties
-    parentNode.style.fontVariant   = 'normal';
-    parentNode.style.fontStyle     = 'normal';
-    parentNode.style.fontWeight    = 'normal';
+    parentNode.style.fontVariant = 'normal';
+    parentNode.style.fontStyle = 'normal';
+    parentNode.style.fontWeight = 'normal';
     parentNode.style.letterSpacing = '0';
     parentNode.appendChild(node);
     document.body.appendChild(parentNode);
diff --git a/player/js/utils/PropertyFactory.js b/player/js/utils/PropertyFactory.js
index fd619b2..568b86d 100644
--- a/player/js/utils/PropertyFactory.js
+++ b/player/js/utils/PropertyFactory.js
@@ -63,8 +63,8 @@
         var distanceInLine = bezierData.segmentLength * perc;
 
         var segmentPerc;
-        var addedLength =  (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;
-        j =  (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;
+        var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;
+        j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;
         flag = true;
         jLen = bezierData.points.length;
         while (flag) {
diff --git a/player/js/utils/common.js b/player/js/utils/common.js
index e026ef6..2af18ac 100644
--- a/player/js/utils/common.js
+++ b/player/js/utils/common.js
@@ -58,7 +58,7 @@
   element.style.left = 0;
   element.style.display = 'block';
   element.style.transformOrigin = element.style.webkitTransformOrigin = '0 0';
-  element.style.backfaceVisibility  = element.style.webkitBackfaceVisibility = 'visible';
+  element.style.backfaceVisibility = element.style.webkitBackfaceVisibility = 'visible';
   element.style.transformStyle = element.style.webkitTransformStyle = element.style.mozTransformStyle = 'preserve-3d';
 }
 
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index e8818a5..e4564e5 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -15,7 +15,7 @@
 
   function $bm_neg(a) {
     var tOfA = typeof a;
-    if(tOfA === 'number' || tOfA === 'boolean'  || a instanceof Number) {
+    if(tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {
       return -a;
     }
     if($bm_isInstanceOfArray(a)) {
@@ -89,7 +89,7 @@
       a[0] = a[0] - b;
       return a;
     }
-    if(isNumerable(tOfA, a) &&  $bm_isInstanceOfArray(b)) {
+    if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
       b = b.slice(0);
       b[0] = a - b[0];
       return b;
diff --git a/player/js/utils/expressions/ExpressionPropertyDecorator.js b/player/js/utils/expressions/ExpressionPropertyDecorator.js
index b40ef23..7317842 100644
--- a/player/js/utils/expressions/ExpressionPropertyDecorator.js
+++ b/player/js/utils/expressions/ExpressionPropertyDecorator.js
@@ -30,12 +30,12 @@
       if(type === 'pingpong') {
         var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);
         if(iterations % 2 !== 0) {
-          return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
+          return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
         }
       } else if(type === 'offset') {
         var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
         var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
-        var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration +  firstKeyFrame) / this.comp.globalData.frameRate, 0);
+        var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
         var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);
         if(this.pv.length) {
           ret = new Array(initV.length);
@@ -59,7 +59,7 @@
         }
         return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001);
       }
-      return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
+      return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
     }
   }
 
@@ -93,12 +93,12 @@
       if(type === 'pingpong') {
         var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);
         if(iterations % 2 === 0) {
-          return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
+          return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
         }
       } else if(type === 'offset') {
         var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
         var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
-        var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration +  firstKeyFrame) / this.comp.globalData.frameRate, 0);
+        var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);
         var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;
         if(this.pv.length) {
           ret = new Array(initV.length);
@@ -122,7 +122,7 @@
         }
         return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;
       }
-      return this.getValueAtTime(((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
+      return this.getValueAtTime(((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0);
     }
   }
 
@@ -287,7 +287,7 @@
     prop.propertyIndex = data.ix;
     var value = 0;
     if(type !== 0) {
-      value = createTypedArray('float32', data.a === 1 ?  data.k[0].s.length : data.k.length);
+      value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);
     }
     prop._cachingAtTime = {
       lastFrame: initialDefaultFrame,
diff --git a/player/js/utils/shapes/DashProperty.js b/player/js/utils/shapes/DashProperty.js
index 204730c..0e04918 100644
--- a/player/js/utils/shapes/DashProperty.js
+++ b/player/js/utils/shapes/DashProperty.js
@@ -5,8 +5,8 @@
   this.renderer = renderer;
   this.k = false;
   this.dashStr = '';
-  this.dashArray = createTypedArray('float32',  data.length ? data.length - 1 : 0);
-  this.dashoffset = createTypedArray('float32',  1);
+  this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);
+  this.dashoffset = createTypedArray('float32', 1);
   this.initDynamicPropertyContainer(container);
   var i, len = data.length || 0, prop;
   for(i = 0; i < len; i += 1) {
diff --git a/player/js/utils/shapes/GradientProperty.js b/player/js/utils/shapes/GradientProperty.js
index cf22fe9..e8cf5f9 100644
--- a/player/js/utils/shapes/GradientProperty.js
+++ b/player/js/utils/shapes/GradientProperty.js
@@ -63,7 +63,7 @@
       len = this.prop.v.length;
       for(i = this.data.p * 4; i < len; i += 1) {
         mult = i % 2 === 0 ? 100 : 1;
-        val = i % 2 === 0 ?  Math.round(this.prop.v[i] * 100) : this.prop.v[i];
+        val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];
         if(this.o[i - this.data.p * 4] !== val) {
           this.o[i - this.data.p * 4] = val;
           this._omdf = !forceRender;
diff --git a/player/js/utils/shapes/RepeaterModifier.js b/player/js/utils/shapes/RepeaterModifier.js
index 6d7a9fb..0065e98 100644
--- a/player/js/utils/shapes/RepeaterModifier.js
+++ b/player/js/utils/shapes/RepeaterModifier.js
@@ -105,7 +105,7 @@
     }
     cont = 0;
     var renderFlag;
-    for(i = 0; i  <= this._groups.length - 1; i += 1) {
+    for(i = 0; i <= this._groups.length - 1; i += 1) {
       renderFlag = cont < copies;
       this._groups[i]._render = renderFlag;
       this.changeGroupRender(this._groups[i].it, renderFlag);
diff --git a/player/js/utils/shapes/ShapeProperty.js b/player/js/utils/shapes/ShapeProperty.js
index 42c4ec2..e6ca01a 100644
--- a/player/js/utils/shapes/ShapeProperty.js
+++ b/player/js/utils/shapes/ShapeProperty.js
@@ -60,11 +60,11 @@
 
     for(j = 0; j < jLen; j += 1) {
       for(k = 0; k < kLen; k += 1) {
-        vertexValue = isHold ? keyPropS.i[j][k] :  keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;
+        vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;
         previousValue.i[j][k] = vertexValue;
-        vertexValue = isHold ? keyPropS.o[j][k] :  keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;
+        vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;
         previousValue.o[j][k] = vertexValue;
-        vertexValue = isHold ? keyPropS.v[j][k] :  keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;
+        vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;
         previousValue.v[j][k] = vertexValue;
       }
     }
@@ -347,8 +347,8 @@
           var y = rad * Math.sin(currentAng);
           var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);
           var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);
-          x +=  + this.p.v[0];
-          y +=  + this.p.v[1];
+          x += + this.p.v[0];
+          y += + this.p.v[1];
           this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);
 
           /* this.v.v[i] = [x,y];
@@ -374,8 +374,8 @@
           var y = rad * Math.sin(currentAng);
           var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);
           var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);
-          x +=  + this.p.v[0];
-          y +=  + this.p.v[1];
+          x += + this.p.v[0];
+          y += + this.p.v[1];
           this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);
           currentAng += angle * dir;
         }