BP agrees to pay record $4.5bn fine