This code is licensed under the terms of the GNU GPL