Copyright (C) 2011-2017 whitequark <whitequark@whitequark.org>