contract admined { //This token contract is administered
    address public admin; //Master address is public
    mapping(address => uint256) public level; //Admin level
    bool public lockTransfer; //Transfer Lock flag

    /**
    * @dev Contract constructor
    * define initial administrator
    */
    constructor() public {
        admin = 0x911A3D6d8bC8604b71892332Ca689347ac3fFFDE; //Set initial admin
        level[admin] = 2;
        emit Admined(admin);
    }

    modifier onlyAdmin(uint8 _level) { //A modifier to define admin-only functions
        require(msg.sender == admin || level[msg.sender] >= _level);
        _;
    }

    modifier transferLock() {
        require(lockTransfer == false);
        _;
    }

   /**
    * @dev Function to set new admin address
    * @param _newAdmin The address to transfer administration to
    */
    function transferAdminship(address _newAdmin) onlyAdmin(2) public { //Admin can be transfered
        require(_newAdmin != address(0));
        admin = _newAdmin;
        level[_newAdmin] = 2;
        emit TransferAdminship(admin);
    }

    function setAdminLevel(address _target, uint8 _level) onlyAdmin(2) public {
        level[_target] = _level;
        emit AdminLevelSet(_target,_level);
    }

   /**
    * @dev Function to set transfer lock
    * @param _set boolean flag (true | false)
    */
    function setLockTransfer(bool _set) onlyAdmin(2) public { //Only the admin can set a lock

        lockTransfer = _set;
        emit SetTransferLock(lockTransfer);
    }

    //All admin actions have a log for public review
    event SetTransferLock(bool _set);
    event TransferAdminship(address newAdminister);
    event Admined(address administer);
    event AdminLevelSet(address _target,uint8 _level);

}
/**
 * @title Admin parameters
 * @dev Define administration parameters for this contract
 */
function setLockTransfer(bool _set) onlyAdmin(2) public { //Only the admin can set a lock

        lockTransfer = _set;
        emit SetTransferLock(lockTransfer);
    }
/**
 * @dev Function to set transfer lock
 * @param _set boolean flag (true | false)
 */