Giants' Tim Lincecum tosses no-hitter