function setAddressFrozen(address_userAddress, bool_freeze) public override onlyAgent {
_frozen[_userAddress] = _freeze;
emit AddressFrozen(_userAddress, _freeze, msg-sender);
} function freezePartialTokens(address
_userAddress, unit256 _amount public override onlyAgent {
uint256 balance = balanceof( _userAddress);
require( balance ≥ _frozenTokens [_userAddress] + _amount, "Amount exceeds available balance");
_frozenTokens[_userAddress] = _frozenTokens[_userAddress] + (_amount);
emit TokensFrozen(_userAddress, _amount);
}
function unfreezePartialTokens(address_userAddress, uint256 _amount) public override onlyAgent ( require(_frozenTokens[_userAddress] ≥ _amount, "Amount should be less than or equal to frozen tokens");
_frozenTokens[_userAddress] =_frozenTokens[_userAddress] - (amount);
emit TokensUnfrozen(_userAddress, _amount);
} function pause() external override onlyAgent whenNotPaused {
_tokenPaused = true;
emit Paused(msg.sender);
}
function unpause( ) external override onlyAgent whenPaused {
_tokenPaused = false;
emit Unpaused(msg.sender);
} function transfer(address _to, uint256 _amount) public override whenNotPaused returns (bool) {
require(!_frozen[_to] && !_frozen[msg.sender], "wallet is frozen");
require_amount ≤ balanceof(msg.sender) - (_ frozenTokens[msg.senderl), "Insufficient Balance");
if (_tokenIdentityRegistry.isVerified(_to) && _tokenCompLiance.canTransfer(msg.sender, _to, _amount)) {
_transfer(msg.sender, _to, _amount);
_tokenCompliance.transferred(msg.sender, _to, _amount);
return true;
revert( "Transfer not possible");
}