licensed under Apache License 2.0, copyright goes to fairylands,kryops github users.