// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; contract UnboundedRefund { address[] public users; mapping(address => uint256) public deposits; function deposit() external payable { if (deposits[msg.sender] == 0) users.push(msg.sender); deposits[msg.sender] += msg.value; } function refundAll() external { for (uint256 i = 0; i < users.length; i++) { address u = users[i]; uint256 amt = deposits[u]; if (amt > 0) { deposits[u] = 0; (bool ok, ) = payable(u).call{value: amt}(""); require(ok, "refund failed"); } } } }