Copyright (C) all rights reserved.