docs: function extendTimeAwarePolyline(polyline, points, lastPoint) {
      var lastLat = 0, lastLng = 0, lastTimeStamp = 0;
  
      if (polyline == null) {
          polyline = '';
      }
  
      if (lastPoint != null) {
          lastLat = getLat(lastPoint);
          lastLng = getLng(lastPoint);
          lastTimeStamp = getTimeStamp(lastPoint);
      }
  
      if (points.length < 1) {
          return polyline
      }
  
      for (var i = 0; i < points.length; i++) {
          var currentGpxLog = points[i];
          var lat = getLat(currentGpxLog);
          var lng = getLng(currentGpxLog);
          var timeStamp = getTimeStamp(currentGpxLog);
  
          var diffArray = [lat - lastLat, lng - lastLng, timeStamp - lastTimeStamp];
  
          for (var j = 0; j < diffArray.length; j++) {
              var currentDiff = diffArray[j];
              currentDiff = (currentDiff < 0) ? notOperator(lshiftOperator(currentDiff, 1)) : lshiftOperator(currentDiff, 1);
  
              while (currentDiff >= 0x20) {
                  polyline += String.fromCharCode((0x20 | (currentDiff & 0x1f)) + 63);
                  currentDiff = rshiftOperator(currentDiff, 5);
              }
  
              polyline += String.fromCharCode(currentDiff + 63);
          }
  
          lastLat = lat, lastLng = lng, lastTimeStamp = timeStamp;
      }
  
      return polyline;
  }