This has been asked before. I provided a detailed answer here:
The code might have been tweaked since …