Author: camelqsoft@gmail.com