code: function BezierEasing(points, b, c, d) {
    if (arguments.length === 4) {
      return new BezierEasing([points, b, c, d]);
    }
    if (!(this instanceof BezierEasing)) return new BezierEasing(points);
  
    if (!points || points.length !== 4) {
      throw new Error('BezierEasing: points must contains 4 values');
    }
    for (var i = 0; i < 4; ++i) {
      if (typeof points[i] !== 'number' || isNaN(points[i]) || !isFinite(points[i])) {
        throw new Error('BezierEasing: points should be integers.');
      }
    }
    if (points[0] < 0 || points[0] > 1 || points[2] < 0 || points[2] > 1) {
      throw new Error('BezierEasing x values must be in [0, 1] range.');
    }
  
    this._str = 'BezierEasing(' + points + ')';
    this._css = 'cubic-bezier(' + points + ')';
    this._p = points;
    this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
    this._precomputed = false;
  
    this.get = this.get.bind(this);
  }
docs: points is an array of [ mX1, mY1, mX2, mY2 ]