function releaseTokens(address _adr) public{
        require(_adr!=address(0));
        HolderSchedule storage holderSchedule = holderList[_adr];
        if(holderSchedule.isReleased==false&&holderSchedule.lockAmount>0){
            uint256 unlockAmount=lockStrategy(_adr);
            if(unlockAmount>0&&holderSchedule.lockAmount>=unlockAmount){
                holderSchedule.lockAmount=holderSchedule.lockAmount.sub(unlockAmount);
                holderSchedule.releasedAmount=holderSchedule.releasedAmount.add(unlockAmount);
                holderSchedule.totalReleasedAmount=holderSchedule.totalReleasedAmount.add(unlockAmount);
                holderSchedule.lastUnlocktime=block.timestamp;
                if(holderSchedule.lockAmount==0){
                    holderSchedule.isReleased=true;
                    holderSchedule.releasedAmount=0;
                    holderSchedule.unlockNumed=0;
                }
                accessToken(_adr,unlockAmount);
                emit ReleaseTokens(_adr,unlockAmount);
            }
        }
    }