More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 416 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Renew Transistor | 16780742 | 702 days ago | IN | 0.004 ETH | 0.00127864 | ||||
Renew Transistor | 16764847 | 704 days ago | IN | 0.004 ETH | 0.00180992 | ||||
Renew Transistor | 16754961 | 705 days ago | IN | 0.004 ETH | 0.0012465 | ||||
Renew Transistor | 16754957 | 705 days ago | IN | 0.004 ETH | 0.00129805 | ||||
Renew Transistor | 16750001 | 706 days ago | IN | 0.004 ETH | 0.00157724 | ||||
Claim AMPLIFI | 16750000 | 706 days ago | IN | 0 ETH | 0.00099386 | ||||
Renew Transistor | 16744558 | 707 days ago | IN | 0.004 ETH | 0.00126638 | ||||
Renew Transistor | 16719653 | 710 days ago | IN | 0.004 ETH | 0.00082263 | ||||
Renew Transistor | 16710448 | 711 days ago | IN | 0.004 ETH | 0.00086388 | ||||
Renew Transistor | 16701198 | 713 days ago | IN | 0.004 ETH | 0.00142609 | ||||
Renew Transistor | 16701196 | 713 days ago | IN | 0.004 ETH | 0.00140339 | ||||
Renew Transistor | 16701194 | 713 days ago | IN | 0.004 ETH | 0.00133408 | ||||
Renew Transistor | 16695672 | 713 days ago | IN | 0.004 ETH | 0.00136396 | ||||
Renew Transistor | 16695647 | 713 days ago | IN | 0.004 ETH | 0.00156169 | ||||
Renew Transistor | 16695645 | 713 days ago | IN | 0.004 ETH | 0.00155751 | ||||
Renew Transistor | 16695643 | 713 days ago | IN | 0.004 ETH | 0.0014326 | ||||
Renew Transistor | 16695641 | 713 days ago | IN | 0.004 ETH | 0.00166838 | ||||
Renew Transistor | 16695640 | 713 days ago | IN | 0.004 ETH | 0.00148593 | ||||
Renew Transistor | 16695639 | 713 days ago | IN | 0.004 ETH | 0.0015752 | ||||
Renew Transistor | 16695637 | 713 days ago | IN | 0.004 ETH | 0.00163436 | ||||
Renew Transistor | 16695633 | 713 days ago | IN | 0.004 ETH | 0.0016394 | ||||
Renew Transistor | 16695631 | 713 days ago | IN | 0.004 ETH | 0.00151445 | ||||
Renew Transistor | 16683782 | 715 days ago | IN | 0.004 ETH | 0.00115459 | ||||
Renew Transistor | 16665149 | 718 days ago | IN | 0.004 ETH | 0.00098789 | ||||
Renew Transistor | 16657915 | 719 days ago | IN | 0.004 ETH | 0.00099443 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16780742 | 702 days ago | 0.004 ETH | ||||
16764847 | 704 days ago | 0.004 ETH | ||||
16754961 | 705 days ago | 0.004 ETH | ||||
16754957 | 705 days ago | 0.004 ETH | ||||
16750001 | 706 days ago | 0.004 ETH | ||||
16744558 | 707 days ago | 0.004 ETH | ||||
16719653 | 710 days ago | 0.004 ETH | ||||
16710448 | 711 days ago | 0.004 ETH | ||||
16701198 | 713 days ago | 0.004 ETH | ||||
16701196 | 713 days ago | 0.004 ETH | ||||
16701194 | 713 days ago | 0.004 ETH | ||||
16695672 | 713 days ago | 0.004 ETH | ||||
16695647 | 713 days ago | 0.004 ETH | ||||
16695645 | 713 days ago | 0.004 ETH | ||||
16695643 | 713 days ago | 0.004 ETH | ||||
16695641 | 713 days ago | 0.004 ETH | ||||
16695640 | 713 days ago | 0.004 ETH | ||||
16695639 | 713 days ago | 0.004 ETH | ||||
16695637 | 713 days ago | 0.004 ETH | ||||
16695633 | 713 days ago | 0.004 ETH | ||||
16695631 | 713 days ago | 0.004 ETH | ||||
16683782 | 715 days ago | 0.004 ETH | ||||
16665149 | 718 days ago | 0.004 ETH | ||||
16657915 | 719 days ago | 0.004 ETH | ||||
16637167 | 722 days ago | 0.004 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
AmplifiTransistor
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "openzeppelin-contracts/access/Ownable.sol"; import "openzeppelin-contracts/security/ReentrancyGuard.sol"; import "openzeppelin-contracts/token/ERC20/IERC20.sol"; import "./interfaces/IAmplifi.sol"; import "./interfaces/IUniswap.sol"; import "./Types.sol"; /** * Amplifi * Website: https://perpetualyield.io/ * Telegram: https://t.me/Amplifi_ERC * Twitter: https://twitter.com/amplifidefi */ contract AmplifiTransistor is Ownable, ReentrancyGuard { uint16 public maxMonths = 1; uint16 public maxTransistorsPerMinter = 48; uint256 public gracePeriod = 30 days; uint256 public totalTransistors = 0; mapping(uint256 => Types.Transistor) public transistors; mapping(address => uint256) public balanceOf; mapping(address => mapping(uint256 => uint256)) public ownedTransistors; mapping(uint256 => uint256) public ownedTransistorsIndex; uint256 public creationFee = 0.004 ether; uint256 public renewalFee = 0.004 ether; uint256 public refundFee = 0.12 ether; uint256 public mintPrice = 6e18; uint256 public refundAmount = 6e18; address public burnAddress; uint256[20] public rates = [ 169056603773, 151305660376, 135418566037, 121199616603, 108473656860, 97083922889, 86890110986, 77766649332, 69601151153, 62293030282, 55752262102, 49898274581, 44658955750, 39969765396, 35772940030, 32016781327, 28655019287, 25646242262, 20543281208, 17236591470 ]; IAmplifi public immutable amplifi; IUniswapV2Router02 public immutable router; IERC20 public immutable USDC; Types.TransistorFeeRecipients public feeRecipients; uint16 public claimFee = 600; uint16 public mintBurn = 9_000; uint16 public mintLP = 1_000; // Basis for above fee values uint16 public constant bps = 10_000; constructor( IAmplifi _amplifi, IUniswapV2Router02 _router, IERC20 _usdc, address _burnAddress, address _standardFeeRecipient, address _taxRecipient, address _operations, address _developers ) { amplifi = _amplifi; router = _router; USDC = _usdc; burnAddress = _burnAddress; feeRecipients = Types.TransistorFeeRecipients( _standardFeeRecipient, _taxRecipient, _standardFeeRecipient, _standardFeeRecipient, _operations, _developers ); amplifi.approve(address(_router), type(uint256).max); } function createTransistor(uint256 _months, uint256 _amountOutMin) external payable nonReentrant returns (uint256) { require(msg.value == getRenewalFeeForMonths(_months) + creationFee, "Invalid Ether value provided"); chargeFee(feeRecipients.creationFee, msg.value); return _createTransistor(_months, _amountOutMin); } function createTransistorBatch( uint256 _amount, uint256 _months, uint256 _amountOutMin ) external payable nonReentrant returns (uint256[] memory ids) { require(msg.value == (getRenewalFeeForMonths(_months) + creationFee) * _amount, "Invalid Ether value provided"); chargeFee(feeRecipients.creationFee, msg.value); ids = new uint256[](_amount); for (uint256 i = 0; i < _amount; ) { ids[i] = _createTransistor(_months, _amountOutMin); unchecked { ++i; } } return ids; } function _createTransistor(uint256 _months, uint256 _amountOutMin) internal returns (uint256) { require(balanceOf[msg.sender] < maxTransistorsPerMinter, "Too many transistors"); require(_months > 0 && _months <= maxMonths, "Must be greater than 0 and less than maxMonths"); require(amplifi.transferFrom(msg.sender, address(this), mintPrice), "Unable to transfer Amplifi"); // we can't burn from the contract so we have to send to a special address from which the deployer will then burn amplifi.transfer(burnAddress, (mintPrice * mintBurn) / bps); sell((mintPrice * (mintLP / 2)) / bps, _amountOutMin); uint256 usdcBalance = USDC.balanceOf(address(this)); USDC.transfer(feeRecipients.creationTax, usdcBalance); amplifi.transfer(feeRecipients.creationTax, (mintPrice * (mintLP / 2)) / bps); uint256 id; uint256 length; unchecked { id = totalTransistors++; length = balanceOf[msg.sender]++; } transistors[id] = Types.Transistor(msg.sender, block.timestamp, block.timestamp + 30 days * _months, 0, 0); ownedTransistors[msg.sender][length] = id; ownedTransistorsIndex[id] = length; return id; } function renewTransistor(uint256 _id, uint256 _months) external payable nonReentrant { require(msg.value == getRenewalFeeForMonths(_months), "Invalid Ether value provided"); chargeFee(feeRecipients.renewalFee, msg.value); _renewTransistor(_id, _months); } function renewTransistorBatch(uint256[] calldata _ids, uint256 _months) external payable nonReentrant { uint256 length = _ids.length; require(msg.value == (getRenewalFeeForMonths(_months)) * length, "Invalid Ether value provided"); chargeFee(feeRecipients.renewalFee, msg.value); for (uint256 i = 0; i < length; ) { _renewTransistor(_ids[i], _months); unchecked { ++i; } } } function _renewTransistor(uint256 _id, uint256 _months) internal { Types.Transistor storage transistor = transistors[_id]; require(transistor.minter == msg.sender, "Invalid ownership"); require(transistor.expires + gracePeriod >= block.timestamp, "Grace period expired or transistor reversed"); uint256 monthsLeft = 0; if (block.timestamp > transistor.expires) { monthsLeft = (block.timestamp - transistor.expires) / 30 days; } else { monthsLeft = (transistor.expires - block.timestamp) / 30 days; } require(_months + monthsLeft <= maxMonths, "Too many months"); transistor.expires += 30 days * _months; } function reverseTransistor(uint256 _id) external payable nonReentrant { Types.Transistor storage transistor = transistors[_id]; require(transistor.minter == msg.sender, "Invalid ownership"); require(transistor.expires > block.timestamp, "Transistor expired"); require(transistor.numClaims == 0, "Already claimed"); require(msg.value == refundFee, "Invalid Ether value provided"); chargeFee(feeRecipients.reverseFee, msg.value); transistor.expires = 0; amplifi.transfer(msg.sender, refundAmount); } function claimAMPLIFI(uint256 _id, uint256 _amountOutMin) external nonReentrant { _claimAMPLIFI(_id, _amountOutMin); } function claimAMPLIFIBatch(uint256[] calldata _ids, uint256 _amountOutMin) external nonReentrant { uint256 length = _ids.length; for (uint256 i = 0; i < length; ) { _claimAMPLIFI(_ids[i], _amountOutMin); unchecked { ++i; } } } function _claimAMPLIFI(uint256 _id, uint256 _amountOutMin) internal { Types.Transistor storage transistor = transistors[_id]; require(transistor.minter == msg.sender, "Invalid ownership"); require(transistor.expires > block.timestamp, "Transistor expired or reversed"); uint256 amount = getPendingAMPLIFI(_id); amount = takeClaimFee(amount, _amountOutMin); amplifi.transfer(msg.sender, amount); transistor.numClaims++; transistor.lastClaimed = block.timestamp; } function getPendingAMPLIFI(uint256 _id) public view returns (uint256) { Types.Transistor memory transistor = transistors[_id]; uint256 rate = transistor.numClaims >= rates.length ? rates[rates.length - 1] : rates[transistor.numClaims]; uint256 amount = (block.timestamp - (transistor.numClaims > 0 ? transistor.lastClaimed : transistor.created)) * (rate); return amount; } function takeClaimFee(uint256 _amount, uint256 _amountOutMin) internal returns (uint256) { uint256 fee = (_amount * claimFee) / bps; sell(fee, _amountOutMin); uint256 usdcBalance = USDC.balanceOf(address(this)); USDC.transfer(feeRecipients.claimFeeDevelopers, (usdcBalance * 34) / 100); USDC.transfer(feeRecipients.claimFeeOperations, (usdcBalance * 66) / 100); return _amount - fee; } function sell(uint256 _amount, uint256 _amountOutMin) internal { address[] memory path = new address[](2); path[0] = address(amplifi); path[1] = address(USDC); router.swapExactTokensForTokensSupportingFeeOnTransferTokens( _amount, _amountOutMin, path, address(this), block.timestamp ); } function getRenewalFeeForMonths(uint256 _months) public view returns (uint256) { return renewalFee * _months; } function airdropTransistors(address[] calldata _users, uint256[] calldata _months) external onlyOwner returns (uint256[] memory ids) { require(_users.length == _months.length, "Lengths not aligned"); uint256 length = _users.length; ids = new uint256[](length); for (uint256 i = 0; i < length; ) { ids[i] = _airdropTransistor(_users[i], _months[i]); unchecked { ++i; } } return ids; } function _airdropTransistor(address _user, uint256 _months) internal returns (uint256) { require(_months <= maxMonths, "Too many months"); uint256 id; uint256 length; unchecked { id = totalTransistors++; length = balanceOf[_user]++; } transistors[id] = Types.Transistor(_user, block.timestamp, block.timestamp + 30 days * _months, 0, 0); ownedTransistors[_user][length] = id; ownedTransistorsIndex[id] = length; return id; } function removeTransistor(uint256 _id) external onlyOwner { uint256 lastTransistorIndex = balanceOf[transistors[_id].minter]; uint256 transistorIndex = ownedTransistorsIndex[_id]; if (transistorIndex != lastTransistorIndex) { uint256 lastTransistorId = ownedTransistors[transistors[_id].minter][lastTransistorIndex]; ownedTransistors[transistors[_id].minter][transistorIndex] = lastTransistorId; // Move the last Transistor to the slot of the to-delete token ownedTransistorsIndex[lastTransistorId] = transistorIndex; // Update the moved Transistor's index } // This also deletes the contents at the last position of the array delete ownedTransistorsIndex[_id]; delete ownedTransistors[transistors[_id].minter][lastTransistorIndex]; balanceOf[transistors[_id].minter]--; totalTransistors--; delete transistors[_id]; } function chargeFee(address _recipient, uint256 _amount) internal { (bool success, ) = _recipient.call{value: _amount}(""); require(success, "Could not send ETH"); } function setRates(uint256[] calldata _rates) external onlyOwner { require(_rates.length == rates.length, "Invalid length"); uint256 length = _rates.length; for (uint256 i = 0; i < length; ) { rates[i] = _rates[i]; unchecked { ++i; } } } function setMintPrice(uint256 _mintPrice) external onlyOwner { mintPrice = _mintPrice; } function setMaxMonths(uint16 _maxMonths) external onlyOwner { maxMonths = _maxMonths; } function setFees( uint256 _creationFee, uint256 _renewalFee, uint256 _refundFee, uint16 _claimFee, uint16 _mintBurn, uint16 _mintLP ) external onlyOwner { creationFee = _creationFee; renewalFee = _renewalFee; refundFee = _refundFee; claimFee = _claimFee; mintBurn = _mintBurn; mintLP = _mintLP; } function setRefundAmounts(uint256 _refundAmount) external onlyOwner { refundAmount = _refundAmount; } function setBurnAddress(address _burnAddress) external onlyOwner { burnAddress = _burnAddress; } function setFeeRecipients(Types.TransistorFeeRecipients calldata _feeRecipients) external onlyOwner { feeRecipients = _feeRecipients; } function setPeriods(uint256 _gracePeriod) external onlyOwner { gracePeriod = _gracePeriod; } function withdrawETH(address _recipient) external onlyOwner { (bool success, ) = _recipient.call{value: address(this).balance}(""); require(success, "Could not send ETH"); } function withdrawToken(IERC20 _token, address _recipient) external onlyOwner { _token.transfer(_recipient, _token.balanceOf(address(this))); } receive() external payable {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "openzeppelin-contracts/token/ERC20/IERC20.sol"; interface IAmplifi is IERC20 { function burnForAmplifier(address _burnee, uint256 _amount) external returns (bool); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.13; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint256); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; library Types { struct FeeRecipients { address operations; address validatorAcquisition; address PCR; address yield; address xChainValidatorAcquisition; address indexFundPools; address gAMPRewardsPool; address OTCSwap; address rescueFund; address protocolImprovement; address developers; } struct Fees { uint16 operations; uint16 validatorAcquisition; uint16 PCR; uint16 yield; uint16 xChainValidatorAcquisition; uint16 indexFundPools; uint16 gAMPRewardsPool; uint16 OTCSwap; uint16 rescueFund; uint16 protocolImprovement; uint16 developers; } struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; uint256 started; uint256 unlocks; } enum FuseProduct { None, OneYear, ThreeYears, FiveYears } struct Amplifier { FuseProduct fuseProduct; address minter; uint256 created; uint256 expires; uint256 numClaims; uint256 lastClaimed; uint256 fused; uint256 unlocks; uint256 lastFuseClaimed; } struct AmplifierFeeRecipients { address operations; address validatorAcquisition; address developers; } struct Transistor { address minter; uint256 created; uint256 expires; uint256 numClaims; uint256 lastClaimed; } struct TransistorFeeRecipients { address creationFee; address creationTax; address renewalFee; address reverseFee; address claimFeeOperations; address claimFeeDevelopers; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", "solenv/=lib/solenv/src/", "solmate/=lib/solmate/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IAmplifi","name":"_amplifi","type":"address"},{"internalType":"contract IUniswapV2Router02","name":"_router","type":"address"},{"internalType":"contract IERC20","name":"_usdc","type":"address"},{"internalType":"address","name":"_burnAddress","type":"address"},{"internalType":"address","name":"_standardFeeRecipient","type":"address"},{"internalType":"address","name":"_taxRecipient","type":"address"},{"internalType":"address","name":"_operations","type":"address"},{"internalType":"address","name":"_developers","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"uint256[]","name":"_months","type":"uint256[]"}],"name":"airdropTransistors","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"amplifi","outputs":[{"internalType":"contract IAmplifi","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"claimAMPLIFI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"claimAMPLIFIBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_months","type":"uint256"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"createTransistor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_months","type":"uint256"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"createTransistorBatch","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"creationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipients","outputs":[{"internalType":"address","name":"creationFee","type":"address"},{"internalType":"address","name":"creationTax","type":"address"},{"internalType":"address","name":"renewalFee","type":"address"},{"internalType":"address","name":"reverseFee","type":"address"},{"internalType":"address","name":"claimFeeOperations","type":"address"},{"internalType":"address","name":"claimFeeDevelopers","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getPendingAMPLIFI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_months","type":"uint256"}],"name":"getRenewalFeeForMonths","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gracePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMonths","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransistorsPerMinter","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintBurn","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintLP","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownedTransistors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownedTransistorsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"removeTransistor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_months","type":"uint256"}],"name":"renewTransistor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256","name":"_months","type":"uint256"}],"name":"renewTransistorBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renewalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"reverseTransistor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_burnAddress","type":"address"}],"name":"setBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"creationFee","type":"address"},{"internalType":"address","name":"creationTax","type":"address"},{"internalType":"address","name":"renewalFee","type":"address"},{"internalType":"address","name":"reverseFee","type":"address"},{"internalType":"address","name":"claimFeeOperations","type":"address"},{"internalType":"address","name":"claimFeeDevelopers","type":"address"}],"internalType":"struct Types.TransistorFeeRecipients","name":"_feeRecipients","type":"tuple"}],"name":"setFeeRecipients","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_creationFee","type":"uint256"},{"internalType":"uint256","name":"_renewalFee","type":"uint256"},{"internalType":"uint256","name":"_refundFee","type":"uint256"},{"internalType":"uint16","name":"_claimFee","type":"uint16"},{"internalType":"uint16","name":"_mintBurn","type":"uint16"},{"internalType":"uint16","name":"_mintLP","type":"uint16"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_maxMonths","type":"uint16"}],"name":"setMaxMonths","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setPeriods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_rates","type":"uint256[]"}],"name":"setRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_refundAmount","type":"uint256"}],"name":"setRefundAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalTransistors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transistors","outputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"created","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"numClaims","type":"uint256"},{"internalType":"uint256","name":"lastClaimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6002805463ffffffff19166230000117905562278d006003556000600455660e35fa931a00006009819055600a556701aa535d3d0c0000600b556753444835ec580000600c819055600d5561036060405264275c8f0e7d60e090815264233a8527d861010052641f8793559561012052641c380f625b6101405264194188a61c6101605264169aa719c96101805264143b0de00a6101a05264121b40e5f46101c0526410348d48b16101e052640e80f4358a61020052640cfb1801d661022052640b9e2b3f1561024052640a65e195e66102605264094e623814610280526408543bbefe6102a05264077459500f6102c0526406abf8e5176102e0526405f8a299d6610300526404c87998386103205264040361836e610340526200012990600f90601462000301565b506029805465ffffffffffff19166503e8232802581790553480156200014e57600080fd5b5060405162002f4438038062002f4483398101604081905262000171916200037d565b6200017c33620002b1565b600180556001600160a01b03888116608090815288821660a081815289841660c0908152600e80546001600160a01b03199081168c8816179091556040805192830181528a87168084528a881660208501819052848301829052606085018290528a89168589018190528a8a1695909601859052602380548516831790556024805485169091178155602580548516831790556026805485169092179091556027805484169095179094556028805490921690921790559251925163095ea7b360e01b815260048101929092526000199082015291169063095ea7b3906044016020604051808303816000875af11580156200027c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a291906200043e565b50505050505050505062000469565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82601481019282156200033b579160200282015b828111156200033b578251829064ffffffffff1690559160200191906001019062000315565b50620003499291506200034d565b5090565b5b808211156200034957600081556001016200034e565b6001600160a01b03811681146200037a57600080fd5b50565b600080600080600080600080610100898b0312156200039b57600080fd5b8851620003a88162000364565b60208a0151909850620003bb8162000364565b60408a0151909750620003ce8162000364565b60608a0151909650620003e18162000364565b60808a0151909550620003f48162000364565b60a08a0151909450620004078162000364565b60c08a01519093506200041a8162000364565b60e08a01519092506200042d8162000364565b809150509295985092959890939650565b6000602082840312156200045157600080fd5b815180151581146200046257600080fd5b9392505050565b60805160a05160c051612a50620004f46000396000818161063701528181611c4f01528181611cee0152818161209c0152818161211f015281816121dc015261230d0152600081816108af01526123640152600081816107d201528181610ade0152818161187301528181611a6101528181611b3501528181611d6e01526122b90152612a506000f3fe60806040526004361061028c5760003560e01c806377b99d451161015a578063ba422ee3116100c1578063e2d080101161007a578063e2d080101461082a578063e9e697a91461084a578063f2fde38b1461085d578063f4a0a5281461087d578063f887ea401461089d578063ffb70969146108d157600080fd5b8063ba422ee314610745578063c66e5abf14610766578063d269bcdf14610793578063d904ecd9146107c0578063dce0b4e4146107f4578063dd418ae21461080a57600080fd5b806399d32fc41161011357806399d32fc4146106ad578063a06db7dc146106c8578063a7383b47146106de578063ab98f4ae146106f4578063ad33513f14610714578063b6ed9d6f1461072a57600080fd5b806377b99d45146105da578063816b4b091461061257806389a30271146106255780638da5cb5b1461065957806390fe6ddb146106775780639563dbcf1461068d57600080fd5b8063418c23d9116101fe5780636817c76c116101b75780636817c76c14610514578063682373291461052a578063690d83201461054057806370a082311461056057806370d5ae051461058d578063715018a6146105c557600080fd5b8063418c23d91461045e578063476e10881461047e5780634b0e72161461049e5780635863d19f146104be5780635bfc4299146104d15780635f8ee864146104f457600080fd5b8063210a080d11610250578063210a080d146103b85780633296db1a146103cb57806334ad3790146103eb5780633790a4291461040b5780633938b0ee1461042b5780633aeac4e11461043e57600080fd5b8063080b301e146102985780630adfdcb9146102c15780630cf4680e146103425780630f3ac4a3146103645780631221c0381461038457600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae600a5481565b6040519081526020015b60405180910390f35b3480156102cd57600080fd5b50602354602454602554602654602754602854610300956001600160a01b03908116958116948116938116928116911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016102b8565b34801561034e57600080fd5b5061036261035d3660046123f1565b610957565b005b34801561037057600080fd5b506102ae61037f366004612413565b610977565b34801561039057600080fd5b506029546103a59062010000900461ffff1681565b60405161ffff90911681526020016102b8565b6103626103c6366004612413565b61098d565b3480156103d757600080fd5b506103626103e636600461242c565b610b5c565b3480156103f757600080fd5b50610362610406366004612413565b610bb5565b34801561041757600080fd5b50610362610426366004612413565b610bc2565b6103626104393660046124d7565b610cec565b34801561044a57600080fd5b50610362610459366004612538565b610d9c565b34801561046a57600080fd5b50610362610479366004612571565b610e8a565b34801561048a57600080fd5b506103626104993660046124d7565b610ec3565b3480156104aa57600080fd5b506103626104b9366004612593565b610f20565b6103626104cc366004612571565b610f4a565b3480156104dd57600080fd5b506029546103a590640100000000900461ffff1681565b34801561050057600080fd5b506102ae61050f366004612413565b610fb8565b34801561052057600080fd5b506102ae600c5481565b34801561053657600080fd5b506103a561271081565b34801561054c57600080fd5b5061036261055b366004612593565b611094565b34801561056c57600080fd5b506102ae61057b366004612593565b60066020526000908152604090205481565b34801561059957600080fd5b50600e546105ad906001600160a01b031681565b6040516001600160a01b0390911681526020016102b8565b3480156105d157600080fd5b50610362611138565b3480156105e657600080fd5b506102ae6105f53660046125b0565b600760209081526000928352604080842090915290825290205481565b6102ae610620366004612571565b61114c565b34801561063157600080fd5b506105ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066557600080fd5b506000546001600160a01b03166105ad565b34801561068357600080fd5b506102ae600b5481565b34801561069957600080fd5b506103626106a8366004612413565b6111d4565b3480156106b957600080fd5b506029546103a59061ffff1681565b3480156106d457600080fd5b506102ae60035481565b3480156106ea57600080fd5b506102ae60045481565b34801561070057600080fd5b5061036261070f3660046125dc565b6111e1565b34801561072057600080fd5b506102ae600d5481565b34801561073657600080fd5b506002546103a59061ffff1681565b34801561075157600080fd5b506002546103a59062010000900461ffff1681565b34801561077257600080fd5b5061078661078136600461261e565b611272565b6040516102b8919061268a565b34801561079f57600080fd5b506102ae6107ae366004612413565b60086020526000908152604090205481565b3480156107cc57600080fd5b506105ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080057600080fd5b506102ae60095481565b34801561081657600080fd5b506102ae610825366004612413565b611389565b34801561083657600080fd5b506103626108453660046126ce565b6113a0565b6107866108583660046126e6565b6113b5565b34801561086957600080fd5b50610362610878366004612593565b6114bf565b34801561088957600080fd5b50610362610898366004612413565b611538565b3480156108a957600080fd5b506105ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108dd57600080fd5b506109256108ec366004612413565b600560205260009081526040902080546001820154600283015460038401546004909401546001600160a01b0390931693919290919085565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a0016102b8565b61095f611545565b6002805461ffff191661ffff92909216919091179055565b600081600a546109879190612728565b92915050565b6002600154036109b85760405162461bcd60e51b81526004016109af90612747565b60405180910390fd5b6002600155600081815260056020526040902080546001600160a01b031633146109f45760405162461bcd60e51b81526004016109af9061277e565b42816002015411610a3c5760405162461bcd60e51b8152602060048201526012602482015271151c985b9cda5cdd1bdc88195e1c1a5c995960721b60448201526064016109af565b600381015415610a805760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b60448201526064016109af565b600b543414610aa15760405162461bcd60e51b81526004016109af906127a9565b602654610ab7906001600160a01b03163461159f565b60006002820155600d5460405163a9059cbb60e01b815233600482015260248101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906127e0565b50506001805550565b610b64611545565b600995909555600a93909355600b919091556029805461ffff9485166401000000000265ffff0000000019948616620100000263ffffffff1990921695909316949094179390931791909116179055565b610bbd611545565b600d55565b610bca611545565b6000818152600560209081526040808320546001600160a01b031683526006825280832054848452600890925290912054808214610c45576000838152600560209081526040808320546001600160a01b03168352600782528083208584528252808320548484528184208190558352600890915290208190555b60008381526008602090815260408083208390556005825280832080546001600160a01b039081168552600784528285208786528452828520859055905416835260069091528120805491610c9983612802565b909155505060048054906000610cae83612802565b90915550505060009182525060056020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560040155565b600260015403610d0e5760405162461bcd60e51b81526004016109af90612747565b60026001558180610d1e83610977565b610d289190612728565b3414610d465760405162461bcd60e51b81526004016109af906127a9565b602554610d5c906001600160a01b03163461159f565b60005b81811015610d9157610d89858583818110610d7c57610d7c612819565b9050602002013584611637565b600101610d5f565b505060018055505050565b610da4611545565b6040516370a0823160e01b81523060048201526001600160a01b0383169063a9059cbb90839083906370a0823190602401602060405180830381865afa158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e16919061282f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8591906127e0565b505050565b600260015403610eac5760405162461bcd60e51b81526004016109af90612747565b6002600155610ebb82826117b3565b505060018055565b600260015403610ee55760405162461bcd60e51b81526004016109af90612747565b60026001558160005b81811015610d9157610f18858583818110610f0b57610f0b612819565b90506020020135846117b3565b600101610eee565b610f28611545565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600260015403610f6c5760405162461bcd60e51b81526004016109af90612747565b6002600155610f7a81610977565b3414610f985760405162461bcd60e51b81526004016109af906127a9565b602554610fae906001600160a01b03163461159f565b610ebb8282611637565b6000818152600560209081526040808320815160a08101835281546001600160a01b03168152600182015493810193909352600281015491830191909152600381015460608301819052600490910154608083015282906014111561103557600f82606001516014811061102e5761102e612819565b0154611056565b600f61104360016014612848565b6014811061105357611053612819565b01545b90506000816000846060015111611071578360200151611077565b83608001515b6110819042612848565b61108b9190612728565b95945050505050565b61109c611545565b6000816001600160a01b03164760405160006040518083038185875af1925050503d80600081146110e9576040519150601f19603f3d011682016040523d82523d6000602084013e6110ee565b606091505b50509050806111345760405162461bcd60e51b8152602060048201526012602482015271086deead8c840dcdee840e6cadcc8408aa8960731b60448201526064016109af565b5050565b611140611545565b61114a600061190f565b565b60006002600154036111705760405162461bcd60e51b81526004016109af90612747565b600260015560095461118184610977565b61118b919061285b565b34146111a95760405162461bcd60e51b81526004016109af906127a9565b6023546111bf906001600160a01b03163461159f565b6111c9838361195f565b600180559392505050565b6111dc611545565b600355565b6111e9611545565b6014811461122a5760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b60448201526064016109af565b8060005b8181101561126c5783838281811061124857611248612819565b90506020020135600f826014811061126257611262612819565b015560010161122e565b50505050565b606061127c611545565b8382146112c15760405162461bcd60e51b815260206004820152601360248201527213195b99dd1a1cc81b9bdd08185b1a59db9959606a1b60448201526064016109af565b838067ffffffffffffffff8111156112db576112db61286e565b604051908082528060200260200182016040528015611304578160200160208202803683370190505b50915060005b8181101561137f5761135a87878381811061132757611327612819565b905060200201602081019061133c9190612593565b86868481811061134e5761134e612819565b90506020020135611f20565b83828151811061136c5761136c612819565b602090810291909101015260010161130a565b5050949350505050565b600f816014811061139957600080fd5b0154905081565b6113a8611545565b806023610e8582826128a4565b60606002600154036113d95760405162461bcd60e51b81526004016109af90612747565b600260015560095484906113ec85610977565b6113f6919061285b565b6114009190612728565b341461141e5760405162461bcd60e51b81526004016109af906127a9565b602354611434906001600160a01b03163461159f565b8367ffffffffffffffff81111561144d5761144d61286e565b604051908082528060200260200182016040528015611476578160200160208202803683370190505b50905060005b848110156114b35761148e848461195f565b8282815181106114a0576114a0612819565b602090810291909101015260010161147c565b50600180559392505050565b6114c7611545565b6001600160a01b03811661152c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109af565b6115358161190f565b50565b611540611545565b600c55565b6000546001600160a01b0316331461114a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109af565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146115ec576040519150601f19603f3d011682016040523d82523d6000602084013e6115f1565b606091505b5050905080610e855760405162461bcd60e51b8152602060048201526012602482015271086deead8c840dcdee840e6cadcc8408aa8960731b60448201526064016109af565b600082815260056020526040902080546001600160a01b0316331461166e5760405162461bcd60e51b81526004016109af9061277e565b426003548260020154611681919061285b565b10156116e35760405162461bcd60e51b815260206004820152602b60248201527f477261636520706572696f642065787069726564206f72207472616e7369737460448201526a1bdc881c995d995c9cd95960aa1b60648201526084016109af565b600081600201544211156117165762278d008260020154426117059190612848565b61170f919061295b565b9050611737565b62278d0042836002015461172a9190612848565b611734919061295b565b90505b60025461ffff16611748828561285b565b11156117885760405162461bcd60e51b815260206004820152600f60248201526e546f6f206d616e79206d6f6e74687360881b60448201526064016109af565b6117958362278d00612728565b8260020160008282546117a8919061285b565b909155505050505050565b600082815260056020526040902080546001600160a01b031633146117ea5760405162461bcd60e51b81526004016109af9061277e565b4281600201541161183d5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736973746f722065787069726564206f72207265766572736564000060448201526064016109af565b600061184884610fb8565b90506118548184612054565b60405163a9059cbb60e01b8152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e891906127e0565b506003820180549060006118fb8361296f565b919050555042826004018190555050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60025433600090815260066020526040812054909162010000900461ffff16116119c25760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e79207472616e736973746f727360601b60448201526064016109af565b6000831180156119d8575060025461ffff168311155b611a3b5760405162461bcd60e51b815260206004820152602e60248201527f4d7573742062652067726561746572207468616e203020616e64206c6573732060448201526d7468616e206d61784d6f6e74687360901b60648201526084016109af565b600c546040516323b872dd60e01b815233600482015230602482015260448101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906127e0565b611b225760405162461bcd60e51b815260206004820152601a60248201527f556e61626c6520746f207472616e7366657220416d706c69666900000000000060448201526064016109af565b600e54602954600c546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169363a9059cbb9391169161271091611b79916201000090910461ffff1690612728565b611b83919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf291906127e0565b50602954611c379061271090611c1690600290640100000000900461ffff16612988565b61ffff16600c54611c279190612728565b611c31919061295b565b83612296565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc2919061282f565b6024805460405163a9059cbb60e01b81526001600160a01b0391821660048201529182018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5d91906127e0565b506024546029546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263a9059cbb9291169061271090611db590600290640100000000900461ffff16612988565b61ffff16600c54611dc69190612728565b611dd0919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f91906127e0565b506004805460018082019092553360008181526006602090815260409182902080549586019055815160a08101835292835242908301529192918101611e888862278d00612728565b611e92904261285b565b815260006020808301829052604092830182905285825260058152828220845181546001600160a01b0319166001600160a01b0390911617815584820151600182015584840151600282015560608501516003820155608090940151600490940193909355338152600783528181208482528352818120859055848152600890925290205591505092915050565b60025460009061ffff16821115611f6b5760405162461bcd60e51b815260206004820152600f60248201526e546f6f206d616e79206d6f6e74687360881b60448201526064016109af565b6004805460018082019092556001600160a01b03851660008181526006602090815260409182902080549586019055815160a08101835292835242908301529192918101611fbc8662278d00612728565b611fc6904261285b565b815260006020808301829052604092830182905285825260058152828220845181546001600160a01b039182166001600160a01b03199091161782558583015160018301558585015160028301556060860151600383015560809095015160049091015592881681526007835281812084825283528181208590558481526008909252902055905092915050565b60295460009081906127109061206e9061ffff1686612728565b612078919061295b565b90506120848184612296565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f919061282f565b6028549091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163a9059cbb91166064612155856022612728565b61215f919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156121aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ce91906127e0565b506027546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163a9059cbb91166064612212856042612728565b61221c919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228b91906127e0565b5061108b8286612848565b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106122eb576122eb612819565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061233f5761233f612819565b6001600160a01b039283166020918202929092010152604051635c11d79560e01b81527f000000000000000000000000000000000000000000000000000000000000000090911690635c11d795906123a390869086908690309042906004016129a9565b600060405180830381600087803b1580156123bd57600080fd5b505af11580156123d1573d6000803e3d6000fd5b50505050505050565b803561ffff811681146123ec57600080fd5b919050565b60006020828403121561240357600080fd5b61240c826123da565b9392505050565b60006020828403121561242557600080fd5b5035919050565b60008060008060008060c0878903121561244557600080fd5b863595506020870135945060408701359350612463606088016123da565b9250612471608088016123da565b915061247f60a088016123da565b90509295509295509295565b60008083601f84011261249d57600080fd5b50813567ffffffffffffffff8111156124b557600080fd5b6020830191508360208260051b85010111156124d057600080fd5b9250929050565b6000806000604084860312156124ec57600080fd5b833567ffffffffffffffff81111561250357600080fd5b61250f8682870161248b565b909790965060209590950135949350505050565b6001600160a01b038116811461153557600080fd5b6000806040838503121561254b57600080fd5b823561255681612523565b9150602083013561256681612523565b809150509250929050565b6000806040838503121561258457600080fd5b50508035926020909101359150565b6000602082840312156125a557600080fd5b813561240c81612523565b600080604083850312156125c357600080fd5b82356125ce81612523565b946020939093013593505050565b600080602083850312156125ef57600080fd5b823567ffffffffffffffff81111561260657600080fd5b6126128582860161248b565b90969095509350505050565b6000806000806040858703121561263457600080fd5b843567ffffffffffffffff8082111561264c57600080fd5b6126588883890161248b565b9096509450602087013591508082111561267157600080fd5b5061267e8782880161248b565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156126c2578351835292840192918401916001016126a6565b50909695505050505050565b600060c082840312156126e057600080fd5b50919050565b6000806000606084860312156126fb57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561274257612742612712565b500290565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601190820152700496e76616c6964206f776e65727368697607c1b604082015260600190565b6020808252601c908201527f496e76616c69642045746865722076616c75652070726f766964656400000000604082015260600190565b6000602082840312156127f257600080fd5b8151801515811461240c57600080fd5b60008161281157612811612712565b506000190190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561284157600080fd5b5051919050565b8181038181111561098757610987612712565b8082018082111561098757610987612712565b634e487b7160e01b600052604160045260246000fd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b81356128af81612523565b6128b98183612884565b5060208201356128c881612523565b6128d58160018401612884565b5060408201356128e481612523565b6128f18160028401612884565b50606082013561290081612523565b61290d8160038401612884565b50608082013561291c81612523565b6129298160048401612884565b5060a082013561293881612523565b610e858160058401612884565b634e487b7160e01b600052601260045260246000fd5b60008261296a5761296a612945565b500490565b60006001820161298157612981612712565b5060010190565b600061ffff8084168061299d5761299d612945565b92169190910492915050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129f95784516001600160a01b0316835293830193918301916001016129d4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d5381469c85c35cd97a49d349819ca029898d0eb206ead2661b1d810df7ddae964736f6c63430008100033000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd90000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000001abe782f0a25636afe13c2687c6bcb6ebe9024f8000000000000000000000000e2eaacb0e8332c2a02cac452808c2c303a251211000000000000000000000000b9806c1a57e75aa4206ba75559109389550ac021000000000000000000000000c766b8c9741bc804fcc378fde75560229ca3ab1e000000000000000000000000454cd1e89df17cdb61d868c6d3dbc02bc2c38a17
Deployed Bytecode
0x60806040526004361061028c5760003560e01c806377b99d451161015a578063ba422ee3116100c1578063e2d080101161007a578063e2d080101461082a578063e9e697a91461084a578063f2fde38b1461085d578063f4a0a5281461087d578063f887ea401461089d578063ffb70969146108d157600080fd5b8063ba422ee314610745578063c66e5abf14610766578063d269bcdf14610793578063d904ecd9146107c0578063dce0b4e4146107f4578063dd418ae21461080a57600080fd5b806399d32fc41161011357806399d32fc4146106ad578063a06db7dc146106c8578063a7383b47146106de578063ab98f4ae146106f4578063ad33513f14610714578063b6ed9d6f1461072a57600080fd5b806377b99d45146105da578063816b4b091461061257806389a30271146106255780638da5cb5b1461065957806390fe6ddb146106775780639563dbcf1461068d57600080fd5b8063418c23d9116101fe5780636817c76c116101b75780636817c76c14610514578063682373291461052a578063690d83201461054057806370a082311461056057806370d5ae051461058d578063715018a6146105c557600080fd5b8063418c23d91461045e578063476e10881461047e5780634b0e72161461049e5780635863d19f146104be5780635bfc4299146104d15780635f8ee864146104f457600080fd5b8063210a080d11610250578063210a080d146103b85780633296db1a146103cb57806334ad3790146103eb5780633790a4291461040b5780633938b0ee1461042b5780633aeac4e11461043e57600080fd5b8063080b301e146102985780630adfdcb9146102c15780630cf4680e146103425780630f3ac4a3146103645780631221c0381461038457600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae600a5481565b6040519081526020015b60405180910390f35b3480156102cd57600080fd5b50602354602454602554602654602754602854610300956001600160a01b03908116958116948116938116928116911686565b604080516001600160a01b03978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016102b8565b34801561034e57600080fd5b5061036261035d3660046123f1565b610957565b005b34801561037057600080fd5b506102ae61037f366004612413565b610977565b34801561039057600080fd5b506029546103a59062010000900461ffff1681565b60405161ffff90911681526020016102b8565b6103626103c6366004612413565b61098d565b3480156103d757600080fd5b506103626103e636600461242c565b610b5c565b3480156103f757600080fd5b50610362610406366004612413565b610bb5565b34801561041757600080fd5b50610362610426366004612413565b610bc2565b6103626104393660046124d7565b610cec565b34801561044a57600080fd5b50610362610459366004612538565b610d9c565b34801561046a57600080fd5b50610362610479366004612571565b610e8a565b34801561048a57600080fd5b506103626104993660046124d7565b610ec3565b3480156104aa57600080fd5b506103626104b9366004612593565b610f20565b6103626104cc366004612571565b610f4a565b3480156104dd57600080fd5b506029546103a590640100000000900461ffff1681565b34801561050057600080fd5b506102ae61050f366004612413565b610fb8565b34801561052057600080fd5b506102ae600c5481565b34801561053657600080fd5b506103a561271081565b34801561054c57600080fd5b5061036261055b366004612593565b611094565b34801561056c57600080fd5b506102ae61057b366004612593565b60066020526000908152604090205481565b34801561059957600080fd5b50600e546105ad906001600160a01b031681565b6040516001600160a01b0390911681526020016102b8565b3480156105d157600080fd5b50610362611138565b3480156105e657600080fd5b506102ae6105f53660046125b0565b600760209081526000928352604080842090915290825290205481565b6102ae610620366004612571565b61114c565b34801561063157600080fd5b506105ad7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b34801561066557600080fd5b506000546001600160a01b03166105ad565b34801561068357600080fd5b506102ae600b5481565b34801561069957600080fd5b506103626106a8366004612413565b6111d4565b3480156106b957600080fd5b506029546103a59061ffff1681565b3480156106d457600080fd5b506102ae60035481565b3480156106ea57600080fd5b506102ae60045481565b34801561070057600080fd5b5061036261070f3660046125dc565b6111e1565b34801561072057600080fd5b506102ae600d5481565b34801561073657600080fd5b506002546103a59061ffff1681565b34801561075157600080fd5b506002546103a59062010000900461ffff1681565b34801561077257600080fd5b5061078661078136600461261e565b611272565b6040516102b8919061268a565b34801561079f57600080fd5b506102ae6107ae366004612413565b60086020526000908152604090205481565b3480156107cc57600080fd5b506105ad7f000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd981565b34801561080057600080fd5b506102ae60095481565b34801561081657600080fd5b506102ae610825366004612413565b611389565b34801561083657600080fd5b506103626108453660046126ce565b6113a0565b6107866108583660046126e6565b6113b5565b34801561086957600080fd5b50610362610878366004612593565b6114bf565b34801561088957600080fd5b50610362610898366004612413565b611538565b3480156108a957600080fd5b506105ad7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156108dd57600080fd5b506109256108ec366004612413565b600560205260009081526040902080546001820154600283015460038401546004909401546001600160a01b0390931693919290919085565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a0016102b8565b61095f611545565b6002805461ffff191661ffff92909216919091179055565b600081600a546109879190612728565b92915050565b6002600154036109b85760405162461bcd60e51b81526004016109af90612747565b60405180910390fd5b6002600155600081815260056020526040902080546001600160a01b031633146109f45760405162461bcd60e51b81526004016109af9061277e565b42816002015411610a3c5760405162461bcd60e51b8152602060048201526012602482015271151c985b9cda5cdd1bdc88195e1c1a5c995960721b60448201526064016109af565b600381015415610a805760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b60448201526064016109af565b600b543414610aa15760405162461bcd60e51b81526004016109af906127a9565b602654610ab7906001600160a01b03163461159f565b60006002820155600d5460405163a9059cbb60e01b815233600482015260248101919091527f000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd96001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906127e0565b50506001805550565b610b64611545565b600995909555600a93909355600b919091556029805461ffff9485166401000000000265ffff0000000019948616620100000263ffffffff1990921695909316949094179390931791909116179055565b610bbd611545565b600d55565b610bca611545565b6000818152600560209081526040808320546001600160a01b031683526006825280832054848452600890925290912054808214610c45576000838152600560209081526040808320546001600160a01b03168352600782528083208584528252808320548484528184208190558352600890915290208190555b60008381526008602090815260408083208390556005825280832080546001600160a01b039081168552600784528285208786528452828520859055905416835260069091528120805491610c9983612802565b909155505060048054906000610cae83612802565b90915550505060009182525060056020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560040155565b600260015403610d0e5760405162461bcd60e51b81526004016109af90612747565b60026001558180610d1e83610977565b610d289190612728565b3414610d465760405162461bcd60e51b81526004016109af906127a9565b602554610d5c906001600160a01b03163461159f565b60005b81811015610d9157610d89858583818110610d7c57610d7c612819565b9050602002013584611637565b600101610d5f565b505060018055505050565b610da4611545565b6040516370a0823160e01b81523060048201526001600160a01b0383169063a9059cbb90839083906370a0823190602401602060405180830381865afa158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e16919061282f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8591906127e0565b505050565b600260015403610eac5760405162461bcd60e51b81526004016109af90612747565b6002600155610ebb82826117b3565b505060018055565b600260015403610ee55760405162461bcd60e51b81526004016109af90612747565b60026001558160005b81811015610d9157610f18858583818110610f0b57610f0b612819565b90506020020135846117b3565b600101610eee565b610f28611545565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600260015403610f6c5760405162461bcd60e51b81526004016109af90612747565b6002600155610f7a81610977565b3414610f985760405162461bcd60e51b81526004016109af906127a9565b602554610fae906001600160a01b03163461159f565b610ebb8282611637565b6000818152600560209081526040808320815160a08101835281546001600160a01b03168152600182015493810193909352600281015491830191909152600381015460608301819052600490910154608083015282906014111561103557600f82606001516014811061102e5761102e612819565b0154611056565b600f61104360016014612848565b6014811061105357611053612819565b01545b90506000816000846060015111611071578360200151611077565b83608001515b6110819042612848565b61108b9190612728565b95945050505050565b61109c611545565b6000816001600160a01b03164760405160006040518083038185875af1925050503d80600081146110e9576040519150601f19603f3d011682016040523d82523d6000602084013e6110ee565b606091505b50509050806111345760405162461bcd60e51b8152602060048201526012602482015271086deead8c840dcdee840e6cadcc8408aa8960731b60448201526064016109af565b5050565b611140611545565b61114a600061190f565b565b60006002600154036111705760405162461bcd60e51b81526004016109af90612747565b600260015560095461118184610977565b61118b919061285b565b34146111a95760405162461bcd60e51b81526004016109af906127a9565b6023546111bf906001600160a01b03163461159f565b6111c9838361195f565b600180559392505050565b6111dc611545565b600355565b6111e9611545565b6014811461122a5760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b60448201526064016109af565b8060005b8181101561126c5783838281811061124857611248612819565b90506020020135600f826014811061126257611262612819565b015560010161122e565b50505050565b606061127c611545565b8382146112c15760405162461bcd60e51b815260206004820152601360248201527213195b99dd1a1cc81b9bdd08185b1a59db9959606a1b60448201526064016109af565b838067ffffffffffffffff8111156112db576112db61286e565b604051908082528060200260200182016040528015611304578160200160208202803683370190505b50915060005b8181101561137f5761135a87878381811061132757611327612819565b905060200201602081019061133c9190612593565b86868481811061134e5761134e612819565b90506020020135611f20565b83828151811061136c5761136c612819565b602090810291909101015260010161130a565b5050949350505050565b600f816014811061139957600080fd5b0154905081565b6113a8611545565b806023610e8582826128a4565b60606002600154036113d95760405162461bcd60e51b81526004016109af90612747565b600260015560095484906113ec85610977565b6113f6919061285b565b6114009190612728565b341461141e5760405162461bcd60e51b81526004016109af906127a9565b602354611434906001600160a01b03163461159f565b8367ffffffffffffffff81111561144d5761144d61286e565b604051908082528060200260200182016040528015611476578160200160208202803683370190505b50905060005b848110156114b35761148e848461195f565b8282815181106114a0576114a0612819565b602090810291909101015260010161147c565b50600180559392505050565b6114c7611545565b6001600160a01b03811661152c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109af565b6115358161190f565b50565b611540611545565b600c55565b6000546001600160a01b0316331461114a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109af565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146115ec576040519150601f19603f3d011682016040523d82523d6000602084013e6115f1565b606091505b5050905080610e855760405162461bcd60e51b8152602060048201526012602482015271086deead8c840dcdee840e6cadcc8408aa8960731b60448201526064016109af565b600082815260056020526040902080546001600160a01b0316331461166e5760405162461bcd60e51b81526004016109af9061277e565b426003548260020154611681919061285b565b10156116e35760405162461bcd60e51b815260206004820152602b60248201527f477261636520706572696f642065787069726564206f72207472616e7369737460448201526a1bdc881c995d995c9cd95960aa1b60648201526084016109af565b600081600201544211156117165762278d008260020154426117059190612848565b61170f919061295b565b9050611737565b62278d0042836002015461172a9190612848565b611734919061295b565b90505b60025461ffff16611748828561285b565b11156117885760405162461bcd60e51b815260206004820152600f60248201526e546f6f206d616e79206d6f6e74687360881b60448201526064016109af565b6117958362278d00612728565b8260020160008282546117a8919061285b565b909155505050505050565b600082815260056020526040902080546001600160a01b031633146117ea5760405162461bcd60e51b81526004016109af9061277e565b4281600201541161183d5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736973746f722065787069726564206f72207265766572736564000060448201526064016109af565b600061184884610fb8565b90506118548184612054565b60405163a9059cbb60e01b8152336004820152602481018290529091507f000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd96001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e891906127e0565b506003820180549060006118fb8361296f565b919050555042826004018190555050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60025433600090815260066020526040812054909162010000900461ffff16116119c25760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e79207472616e736973746f727360601b60448201526064016109af565b6000831180156119d8575060025461ffff168311155b611a3b5760405162461bcd60e51b815260206004820152602e60248201527f4d7573742062652067726561746572207468616e203020616e64206c6573732060448201526d7468616e206d61784d6f6e74687360901b60648201526084016109af565b600c546040516323b872dd60e01b815233600482015230602482015260448101919091527f000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd96001600160a01b0316906323b872dd906064016020604051808303816000875af1158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906127e0565b611b225760405162461bcd60e51b815260206004820152601a60248201527f556e61626c6520746f207472616e7366657220416d706c69666900000000000060448201526064016109af565b600e54602954600c546001600160a01b037f000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd981169363a9059cbb9391169161271091611b79916201000090910461ffff1690612728565b611b83919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf291906127e0565b50602954611c379061271090611c1690600290640100000000900461ffff16612988565b61ffff16600c54611c279190612728565b611c31919061295b565b83612296565b6040516370a0823160e01b81523060048201526000907f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486001600160a01b0316906370a0823190602401602060405180830381865afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc2919061282f565b6024805460405163a9059cbb60e01b81526001600160a01b0391821660048201529182018390529192507f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489091169063a9059cbb906044016020604051808303816000875af1158015611d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5d91906127e0565b506024546029546001600160a01b037f000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd981169263a9059cbb9291169061271090611db590600290640100000000900461ffff16612988565b61ffff16600c54611dc69190612728565b611dd0919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f91906127e0565b506004805460018082019092553360008181526006602090815260409182902080549586019055815160a08101835292835242908301529192918101611e888862278d00612728565b611e92904261285b565b815260006020808301829052604092830182905285825260058152828220845181546001600160a01b0319166001600160a01b0390911617815584820151600182015584840151600282015560608501516003820155608090940151600490940193909355338152600783528181208482528352818120859055848152600890925290205591505092915050565b60025460009061ffff16821115611f6b5760405162461bcd60e51b815260206004820152600f60248201526e546f6f206d616e79206d6f6e74687360881b60448201526064016109af565b6004805460018082019092556001600160a01b03851660008181526006602090815260409182902080549586019055815160a08101835292835242908301529192918101611fbc8662278d00612728565b611fc6904261285b565b815260006020808301829052604092830182905285825260058152828220845181546001600160a01b039182166001600160a01b03199091161782558583015160018301558585015160028301556060860151600383015560809095015160049091015592881681526007835281812084825283528181208590558481526008909252902055905092915050565b60295460009081906127109061206e9061ffff1686612728565b612078919061295b565b90506120848184612296565b6040516370a0823160e01b81523060048201526000907f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486001600160a01b0316906370a0823190602401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f919061282f565b6028549091506001600160a01b037f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881169163a9059cbb91166064612155856022612728565b61215f919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156121aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ce91906127e0565b506027546001600160a01b037f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881169163a9059cbb91166064612212856042612728565b61221c919061295b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228b91906127e0565b5061108b8286612848565b6040805160028082526060820183526000926020830190803683370190505090507f000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd9816000815181106122eb576122eb612819565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061233f5761233f612819565b6001600160a01b039283166020918202929092010152604051635c11d79560e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d90911690635c11d795906123a390869086908690309042906004016129a9565b600060405180830381600087803b1580156123bd57600080fd5b505af11580156123d1573d6000803e3d6000fd5b50505050505050565b803561ffff811681146123ec57600080fd5b919050565b60006020828403121561240357600080fd5b61240c826123da565b9392505050565b60006020828403121561242557600080fd5b5035919050565b60008060008060008060c0878903121561244557600080fd5b863595506020870135945060408701359350612463606088016123da565b9250612471608088016123da565b915061247f60a088016123da565b90509295509295509295565b60008083601f84011261249d57600080fd5b50813567ffffffffffffffff8111156124b557600080fd5b6020830191508360208260051b85010111156124d057600080fd5b9250929050565b6000806000604084860312156124ec57600080fd5b833567ffffffffffffffff81111561250357600080fd5b61250f8682870161248b565b909790965060209590950135949350505050565b6001600160a01b038116811461153557600080fd5b6000806040838503121561254b57600080fd5b823561255681612523565b9150602083013561256681612523565b809150509250929050565b6000806040838503121561258457600080fd5b50508035926020909101359150565b6000602082840312156125a557600080fd5b813561240c81612523565b600080604083850312156125c357600080fd5b82356125ce81612523565b946020939093013593505050565b600080602083850312156125ef57600080fd5b823567ffffffffffffffff81111561260657600080fd5b6126128582860161248b565b90969095509350505050565b6000806000806040858703121561263457600080fd5b843567ffffffffffffffff8082111561264c57600080fd5b6126588883890161248b565b9096509450602087013591508082111561267157600080fd5b5061267e8782880161248b565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156126c2578351835292840192918401916001016126a6565b50909695505050505050565b600060c082840312156126e057600080fd5b50919050565b6000806000606084860312156126fb57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561274257612742612712565b500290565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601190820152700496e76616c6964206f776e65727368697607c1b604082015260600190565b6020808252601c908201527f496e76616c69642045746865722076616c75652070726f766964656400000000604082015260600190565b6000602082840312156127f257600080fd5b8151801515811461240c57600080fd5b60008161281157612811612712565b506000190190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561284157600080fd5b5051919050565b8181038181111561098757610987612712565b8082018082111561098757610987612712565b634e487b7160e01b600052604160045260246000fd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b81356128af81612523565b6128b98183612884565b5060208201356128c881612523565b6128d58160018401612884565b5060408201356128e481612523565b6128f18160028401612884565b50606082013561290081612523565b61290d8160038401612884565b50608082013561291c81612523565b6129298160048401612884565b5060a082013561293881612523565b610e858160058401612884565b634e487b7160e01b600052601260045260246000fd5b60008261296a5761296a612945565b500490565b60006001820161298157612981612712565b5060010190565b600061ffff8084168061299d5761299d612945565b92169190910492915050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129f95784516001600160a01b0316835293830193918301916001016129d4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d5381469c85c35cd97a49d349819ca029898d0eb206ead2661b1d810df7ddae964736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd90000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000001abe782f0a25636afe13c2687c6bcb6ebe9024f8000000000000000000000000e2eaacb0e8332c2a02cac452808c2c303a251211000000000000000000000000b9806c1a57e75aa4206ba75559109389550ac021000000000000000000000000c766b8c9741bc804fcc378fde75560229ca3ab1e000000000000000000000000454cd1e89df17cdb61d868c6d3dbc02bc2c38a17
-----Decoded View---------------
Arg [0] : _amplifi (address): 0xD23367155B55d67492DFDC0FC7f8bB1dF7114fD9
Arg [1] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [2] : _usdc (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [3] : _burnAddress (address): 0x1abE782f0a25636afE13C2687C6BCB6Ebe9024f8
Arg [4] : _standardFeeRecipient (address): 0xE2eAAcB0e8332c2A02cAC452808C2C303A251211
Arg [5] : _taxRecipient (address): 0xb9806C1a57e75Aa4206Ba75559109389550aC021
Arg [6] : _operations (address): 0xc766B8c9741BC804FCc378FdE75560229CA3AB1E
Arg [7] : _developers (address): 0x454cD1e89df17cDB61D868C6D3dBC02bC2c38a17
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000d23367155b55d67492dfdc0fc7f8bb1df7114fd9
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [2] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [3] : 0000000000000000000000001abe782f0a25636afe13c2687c6bcb6ebe9024f8
Arg [4] : 000000000000000000000000e2eaacb0e8332c2a02cac452808c2c303a251211
Arg [5] : 000000000000000000000000b9806c1a57e75aa4206ba75559109389550ac021
Arg [6] : 000000000000000000000000c766b8c9741bc804fcc378fde75560229ca3ab1e
Arg [7] : 000000000000000000000000454cd1e89df17cdb61d868c6d3dbc02bc2c38a17
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.