Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 45 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stop Presale | 17163917 | 651 days ago | IN | 0 ETH | 0.00135074 | ||||
Stop Presale | 17163895 | 651 days ago | IN | 0 ETH | 0.00119855 | ||||
Resume Presale | 17132267 | 655 days ago | IN | 0 ETH | 0.00190284 | ||||
Set Reward ARC P... | 17130290 | 656 days ago | IN | 0 ETH | 0.00104176 | ||||
Set Reward ARC P... | 17130288 | 656 days ago | IN | 0 ETH | 0.00105049 | ||||
Recover ERC20 | 17034724 | 669 days ago | IN | 0 ETH | 0.00144976 | ||||
Emergency USDT | 17034713 | 669 days ago | IN | 0 ETH | 0.00107587 | ||||
Stop Presale | 17033123 | 670 days ago | IN | 0 ETH | 0.00060535 | ||||
Buy ARC With USD... | 17032947 | 670 days ago | IN | 0 ETH | 0.0019142 | ||||
Buy ARC With USD... | 16987291 | 676 days ago | IN | 0 ETH | 0.00183525 | ||||
Buy ARC With USD... | 16951128 | 681 days ago | IN | 0 ETH | 0.00180173 | ||||
Buy ARC With USD... | 16920900 | 685 days ago | IN | 0 ETH | 0.00257574 | ||||
Buy ARC With USD... | 16901256 | 688 days ago | IN | 0 ETH | 0.00120824 | ||||
Buy ARC With USD... | 16871169 | 692 days ago | IN | 0 ETH | 0.00233831 | ||||
Buy ARC With USD... | 16867432 | 693 days ago | IN | 0 ETH | 0.00117246 | ||||
Buy ARC With USD... | 16862307 | 694 days ago | IN | 0 ETH | 0.00141112 | ||||
Buy ARC With USD... | 16823248 | 699 days ago | IN | 0 ETH | 0.00185959 | ||||
Buy ARC With USD... | 16786353 | 704 days ago | IN | 0 ETH | 0.00262498 | ||||
Buy ARC With USD... | 16778444 | 705 days ago | IN | 0 ETH | 0.00296496 | ||||
Buy ARC With USD... | 16773325 | 706 days ago | IN | 0 ETH | 0.00288126 | ||||
Buy ARC With USD... | 16773314 | 706 days ago | IN | 0 ETH | 0.00203704 | ||||
Buy ARC With USD... | 16773311 | 706 days ago | IN | 0 ETH | 0.00210754 | ||||
Buy ARC With USD... | 16773232 | 706 days ago | IN | 0 ETH | 0.00246233 | ||||
Buy ARC With USD... | 16773204 | 706 days ago | IN | 0 ETH | 0.00267323 | ||||
Buy ARC With USD... | 16773174 | 706 days ago | IN | 0 ETH | 0.00256619 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ARC_Presale
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./MerkleProof.sol"; library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ARC_Presale is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public USDC; IERC20 public USDT; uint256 public ARCpricePerUSDC = 23330000000000000000000; // 23330 ARC per USDC uint256 public ARCpricePerUSDT = 23330000000000000000000; // 23330 ARC per USDT uint256 public ARC_Sold; uint256 public maxTokeninPresale= 2333000000*(1E18); bool public presaleStatus; bool public WL_Acces; bytes32 public root; mapping(address => uint256) public deposits; event Deposited(address indexed user, uint256 amount); event Recovered(address token, uint256 amount); constructor(IERC20 _USDC,IERC20 _USDT,bytes32 merkleroot) { USDC = _USDC; USDT=_USDT; root = merkleroot; } receive() external payable { // React to receiving ETH } function BuyARCWithUSDC(uint256 _USDCAmount,bytes32[] calldata proof) external { require(ARC_Sold.add(getARCvalueperUSDC(_USDCAmount))<=maxTokeninPresale,"Hardcap Reached!"); if(WL_Acces==true){ require(isValid(proof, keccak256(abi.encodePacked(msg.sender))), "Not a part of Allowlist"); require(presaleStatus == false, "Presale : Presale is started"); } else{ require(presaleStatus == true, "Presale : Presale is finished"); } require(_USDCAmount > 0, "Presale : Unsuitable Amount"); require(USDC.balanceOf(msg.sender)>_USDCAmount,"not enough USDC in your wallet"); USDC.transferFrom(msg.sender, address(this), _USDCAmount); ARC_Sold =ARC_Sold.add(getARCvalueperUSDC(_USDCAmount)); } function getARCvalueperUSDC(uint256 value) public view returns(uint256) { return (ARCpricePerUSDC.mul(value)).div(1e6); } function BuyARCWithUSDT(uint256 _USDTAmount,bytes32[] calldata proof) external { require(ARC_Sold.add(getARCvalueperUSDT(_USDTAmount))<=maxTokeninPresale,"Hardcap Reached!"); if(WL_Acces==true){ require(isValid(proof, keccak256(abi.encodePacked(msg.sender))), "Not a part of Allowlist"); require(presaleStatus == false, "Presale : Presale is started"); } else{ require(presaleStatus == true, "Presale : Presale is finished"); } require(_USDTAmount > 0, "Presale : Unsuitable Amount"); require(USDT.balanceOf(msg.sender)>_USDTAmount,"not enough USDC in your wallet"); // USDT.transferFrom(msg.sender, address(this), _USDTAmount); IERC20(USDT).safeTransferFrom(msg.sender,address(this),_USDTAmount); ARC_Sold =ARC_Sold.add(getARCvalueperUSDT(_USDTAmount)); } function getARCvalueperUSDT(uint256 value) public view returns(uint256) { return (ARCpricePerUSDT.mul(value)).div(1e6); } function setRewardARCPriceperUSDC(uint256 _count) external onlyOwner { ARCpricePerUSDC = _count; } function setRewardARCPriceperUSDT(uint256 _count) external onlyOwner { ARCpricePerUSDT = _count; } function changeUSDC(IERC20 _USDC,IERC20 _USDT) external onlyOwner{ USDC=_USDC; USDT=_USDT; } function stopPresale() external onlyOwner { presaleStatus = false; } function resumePresale() external onlyOwner { presaleStatus = true; } function setmaxTokeninPresale(uint256 _value) external onlyOwner{ maxTokeninPresale=_value; } function modify_WL_Acces(bool _state) external onlyOwner{ WL_Acces=_state; } function contractbalance() public view returns(uint256) { return address(this).balance; } function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner { IERC20(tokenAddress).transfer(this.owner(), tokenAmount); emit Recovered(tokenAddress, tokenAmount); } function EmergencyUSDT( uint256 tokenAmount) external onlyOwner { IERC20(USDT).safeTransfer(this.owner(),tokenAmount); emit Recovered(address(USDT), tokenAmount); } function releaseFunds() external onlyOwner { payable(msg.sender).transfer(address(this).balance); } /////////////////////////////////////////////////////////////////////////////////////////////////////////// function isValid(bytes32[] memory proof, bytes32 leaf) public view returns (bool) { return MerkleProof.verify(proof, root, leaf); } // owner can update the merkle root at any time function updateMerkleroot(bytes32 _root) external onlyOwner{ root=_root; } /////////////////////////////////////////////////////////////////////////////////////////////////////////// // USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 // USDT 0xdAC17F958D2ee523a2206206994597C13D831ec7 } // root 0xc484c3441a3c0404e757ef42a2c0555b20a727efe929b6736e47f09c5fb7183f
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Tree proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. * * WARNING: You should avoid using leaf values that are 64 bytes long prior to * hashing, or use a hash function other than keccak256 for hashing leaves. * This is because the concatenation of a sorted pair of internal nodes in * the merkle tree could be reinterpreted as a leaf value. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Calldata version of {verify} * * _Available since v4.7._ */ function verifyCalldata( bytes32[] calldata proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProofCalldata(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Calldata version of {processProof} * * _Available since v4.7._ */ function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Returns true if the `leaves` can be proved to be a part of a Merkle tree defined by * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}. * * _Available since v4.7._ */ function multiProofVerify( bytes32[] memory proof, bool[] memory proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProof(proof, proofFlags, leaves) == root; } /** * @dev Calldata version of {multiProofVerify} * * _Available since v4.7._ */ function multiProofVerifyCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProofCalldata(proof, proofFlags, leaves) == root; } /** * @dev Returns the root of a tree reconstructed from `leaves` and the sibling nodes in `proof`, * consuming from one or the other at each step according to the instructions given by * `proofFlags`. * * _Available since v4.7._ */ function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Calldata version of {processMultiProof} * * _Available since v4.7._ */ function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { /// @solidity memory-safe-assembly assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_USDC","type":"address"},{"internalType":"contract IERC20","name":"_USDT","type":"address"},{"internalType":"bytes32","name":"merkleroot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Recovered","type":"event"},{"inputs":[],"name":"ARC_Sold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ARCpricePerUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ARCpricePerUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_USDCAmount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"BuyARCWithUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_USDTAmount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"BuyARCWithUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"EmergencyUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WL_Acces","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_USDC","type":"address"},{"internalType":"contract IERC20","name":"_USDT","type":"address"}],"name":"changeUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractbalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"getARCvalueperUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"getARCvalueperUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"leaf","type":"bytes32"}],"name":"isValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokeninPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"modify_WL_Acces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"setRewardARCPriceperUSDC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"setRewardARCPriceperUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setmaxTokeninPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"updateMerkleroot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526904f0b8ca205cc74800006003556904f0b8ca205cc74800006004556b0789cff76ba191943d0000006006553480156200003d57600080fd5b5060405162003563380380620035638339818101604052810190620000639190620001db565b600062000075620001a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600881905550505050620002b7565b600033905090565b600081519050620001be8162000283565b92915050565b600081519050620001d5816200029d565b92915050565b600080600060608486031215620001f157600080fd5b60006200020186828701620001c4565b93505060206200021486828701620001c4565b92505060406200022786828701620001ad565b9150509250925092565b60006200023e8262000263565b9050919050565b6000819050919050565b60006200025c8262000231565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200028e8162000245565b81146200029a57600080fd5b50565b620002a8816200024f565b8114620002b457600080fd5b50565b61329c80620002c76000396000f3fe6080604052600436106101d15760003560e01c806389a30271116100f7578063c54e44eb11610095578063ebf0c71711610064578063ebf0c7171461060f578063f2fde38b1461063a578063fc7e286d14610663578063fd25ac60146106a0576101d8565b8063c54e44eb14610555578063d2d79ee614610580578063d5dbd64f146105bd578063dee72f0a146105e6576101d8565b8063acfb2355116100d1578063acfb235514610487578063af2f14ca146104b2578063b8a20ed0146104db578063c0c20bed14610518576101d8565b806389a30271146104065780638da5cb5b14610431578063a4df4fca1461045c576101d8565b806354f63ee51161016f578063715018a61161013e578063715018a6146103725780637f3625b41461038957806384345ee3146103b25780638980f11f146103dd576101d8565b806354f63ee5146102f0578063595338aa1461030757806361ddbf7e1461033257806369d895751461035b576101d8565b806329503ff7116101ab57806329503ff7146102465780632f1273c71461027157806330e4f9aa1461029a57806341d0f848146102c5576101d8565b8063162baad5146101dd57806317c68099146102065780631ad2ad1a1461022f576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff919061258a565b6106c9565b005b34801561021257600080fd5b5061022d60048036038101906102289190612618565b6107e4565b005b34801561023b57600080fd5b50610244610b69565b005b34801561025257600080fd5b5061025b610c1b565b6040516102689190612bc3565b60405180910390f35b34801561027d57600080fd5b50610298600480360381019061029391906125c6565b610c21565b005b3480156102a657600080fd5b506102af610cc0565b6040516102bc9190612bc3565b60405180910390f35b3480156102d157600080fd5b506102da610cc8565b6040516102e79190612bc3565b60405180910390f35b3480156102fc57600080fd5b50610305610cce565b005b34801561031357600080fd5b5061031c610d80565b6040516103299190612bc3565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906125c6565b610d86565b005b34801561036757600080fd5b50610370610e25565b005b34801561037e57600080fd5b50610387610f03565b005b34801561039557600080fd5b506103b060048036038101906103ab919061250f565b611056565b005b3480156103be57600080fd5b506103c7611108565b6040516103d49190612bc3565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff919061247f565b61110e565b005b34801561041257600080fd5b5061041b6112eb565b60405161042891906129e6565b60405180910390f35b34801561043d57600080fd5b50610446611311565b6040516104539190612935565b60405180910390f35b34801561046857600080fd5b5061047161133a565b60405161047e91906129b0565b60405180910390f35b34801561049357600080fd5b5061049c61134d565b6040516104a991906129b0565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906125c6565b611360565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906124bb565b6113ff565b60405161050f91906129b0565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a91906125c6565b611416565b60405161054c9190612bc3565b60405180910390f35b34801561056157600080fd5b5061056a611449565b60405161057791906129e6565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906125c6565b61146f565b6040516105b49190612bc3565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190612561565b6114a2565b005b3480156105f257600080fd5b5061060d600480360381019061060891906125c6565b611541565b005b34801561061b57600080fd5b506106246116fe565b60405161063191906129cb565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c919061242d565b611704565b005b34801561066f57600080fd5b5061068a6004803603810190610685919061242d565b6118c6565b6040516106979190612bc3565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190612618565b6118de565b005b6106d1611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590612b03565b60405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6006546108046107f38561146f565b600554611cce90919063ffffffff16565b1115610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c90612b23565b60405180910390fd5b60011515600760019054906101000a900460ff161515141561096c576108d2828280806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050336040516020016108b79190612903565b604051602081830303815290604052805190602001206113ff565b610911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090890612aa3565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e90612ba3565b60405180910390fd5b6109c3565b60011515600760009054906101000a900460ff161515146109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b990612b43565b60405180910390fd5b5b60008311610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd90612a83565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a629190612935565b60206040518083038186803b158015610a7a57600080fd5b505afa158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab291906125ef565b11610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990612ae3565b60405180910390fd5b610b41333085600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d2c909392919063ffffffff16565b610b5e610b4d8461146f565b600554611cce90919063ffffffff16565b600581905550505050565b610b71611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612b03565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b60055481565b610c29611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90612b03565b60405180910390fd5b8060038190555050565b600047905090565b60035481565b610cd6611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612b03565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b60045481565b610d8e611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290612b03565b60405180910390fd5b8060048190555050565b610e2d611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190612b03565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f00573d6000803e3d6000fd5b50565b610f0b611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90612b03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61105e611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290612b03565b60405180910390fd5b80600760016101000a81548160ff02191690831515021790555050565b60065481565b611116611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90612b03565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190612456565b836040518363ffffffff1660e01b815260040161125b929190612987565b602060405180830381600087803b15801561127557600080fd5b505af1158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad9190612538565b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2882826040516112df929190612987565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760019054906101000a900460ff1681565b600760009054906101000a900460ff1681565b611368611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90612b03565b60405180910390fd5b8060068190555050565b600061140e8360085484611db5565b905092915050565b6000611442620f424061143484600354611dcc90919063ffffffff16565b611e4790919063ffffffff16565b9050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061149b620f424061148d84600454611dcc90919063ffffffff16565b611e4790919063ffffffff16565b9050919050565b6114aa611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e90612b03565b60405180910390fd5b8060088190555050565b611549611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90612b03565b60405180910390fd5b6116a03073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561161f57600080fd5b505afa158015611633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116579190612456565b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e919092919063ffffffff16565b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516116f3929190612987565b60405180910390a150565b60085481565b61170c611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090612b03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612a23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915090505481565b6006546118fe6118ed85611416565b600554611cce90919063ffffffff16565b111561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690612b23565b60405180910390fd5b60011515600760019054906101000a900460ff1615151415611a66576119cc828280806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050336040516020016119b19190612903565b604051602081830303815290604052805190602001206113ff565b611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0290612aa3565b60405180910390fd5b60001515600760009054906101000a900460ff16151514611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890612ba3565b60405180910390fd5b611abd565b60011515600760009054906101000a900460ff16151514611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390612b43565b60405180910390fd5b5b60008311611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790612a83565b60405180910390fd5b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611b5c9190612935565b60206040518083038186803b158015611b7457600080fd5b505afa158015611b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bac91906125ef565b11611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390612ae3565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401611c4b93929190612950565b602060405180830381600087803b158015611c6557600080fd5b505af1158015611c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9d9190612538565b50611cbb611caa84611416565b600554611cce90919063ffffffff16565b600581905550505050565b600033905090565b6000808284611cdd9190612c61565b905083811015611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1990612a43565b60405180910390fd5b8091505092915050565b611daf846323b872dd60e01b858585604051602401611d4d93929190612950565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f17565b50505050565b600082611dc28584611fde565b1490509392505050565b600080831415611ddf5760009050611e41565b60008284611ded9190612ce8565b9050828482611dfc9190612cb7565b14611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3390612ac3565b60405180910390fd5b809150505b92915050565b6000611e8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061205a565b905092915050565b611f128363a9059cbb60e01b8484604051602401611eb0929190612987565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f17565b505050565b6000611f79826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166120bd9092919063ffffffff16565b9050600081511115611fd95780806020019051810190611f999190612538565b611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90612b83565b60405180910390fd5b5b505050565b60008082905060005b845181101561204f5761203a8286838151811061202d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516120d5565b9150808061204790612e2e565b915050611fe7565b508091505092915050565b600080831182906120a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120989190612a01565b60405180910390fd5b50600083856120b09190612cb7565b9050809150509392505050565b60606120cc8484600085612100565b90509392505050565b60008183106120ed576120e88284612214565b6120f8565b6120f78383612214565b5b905092915050565b606082471015612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c90612a63565b60405180910390fd5b61214e8561222b565b61218d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218490612b63565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516121b6919061291e565b60006040518083038185875af1925050503d80600081146121f3576040519150601f19603f3d011682016040523d82523d6000602084013e6121f8565b606091505b509150915061220882828661223e565b92505050949350505050565b600082600052816020526040600020905092915050565b600080823b905060008111915050919050565b6060831561224e5782905061229e565b6000835111156122615782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959190612a01565b60405180910390fd5b9392505050565b60006122b86122b384612c03565b612bde565b905080838252602082019050828560208602820111156122d757600080fd5b60005b8581101561230757816122ed88826123d9565b8452602084019350602083019250506001810190506122da565b5050509392505050565b600081359050612320816131f3565b92915050565b600081519050612335816131f3565b92915050565b60008083601f84011261234d57600080fd5b8235905067ffffffffffffffff81111561236657600080fd5b60208301915083602082028301111561237e57600080fd5b9250929050565b600082601f83011261239657600080fd5b81356123a68482602086016122a5565b91505092915050565b6000813590506123be8161320a565b92915050565b6000815190506123d38161320a565b92915050565b6000813590506123e881613221565b92915050565b6000813590506123fd81613238565b92915050565b6000813590506124128161324f565b92915050565b6000815190506124278161324f565b92915050565b60006020828403121561243f57600080fd5b600061244d84828501612311565b91505092915050565b60006020828403121561246857600080fd5b600061247684828501612326565b91505092915050565b6000806040838503121561249257600080fd5b60006124a085828601612311565b92505060206124b185828601612403565b9150509250929050565b600080604083850312156124ce57600080fd5b600083013567ffffffffffffffff8111156124e857600080fd5b6124f485828601612385565b9250506020612505858286016123d9565b9150509250929050565b60006020828403121561252157600080fd5b600061252f848285016123af565b91505092915050565b60006020828403121561254a57600080fd5b6000612558848285016123c4565b91505092915050565b60006020828403121561257357600080fd5b6000612581848285016123d9565b91505092915050565b6000806040838503121561259d57600080fd5b60006125ab858286016123ee565b92505060206125bc858286016123ee565b9150509250929050565b6000602082840312156125d857600080fd5b60006125e684828501612403565b91505092915050565b60006020828403121561260157600080fd5b600061260f84828501612418565b91505092915050565b60008060006040848603121561262d57600080fd5b600061263b86828701612403565b935050602084013567ffffffffffffffff81111561265857600080fd5b6126648682870161233b565b92509250509250925092565b61267981612d42565b82525050565b61269061268b82612d42565b612e77565b82525050565b61269f81612d54565b82525050565b6126ae81612d60565b82525050565b60006126bf82612c2f565b6126c98185612c45565b93506126d9818560208601612dca565b80840191505092915050565b6126ee81612da6565b82525050565b60006126ff82612c3a565b6127098185612c50565b9350612719818560208601612dca565b61272281612f28565b840191505092915050565b600061273a602683612c50565b915061274582612f46565b604082019050919050565b600061275d601b83612c50565b915061276882612f95565b602082019050919050565b6000612780602683612c50565b915061278b82612fbe565b604082019050919050565b60006127a3601b83612c50565b91506127ae8261300d565b602082019050919050565b60006127c6601783612c50565b91506127d182613036565b602082019050919050565b60006127e9602183612c50565b91506127f48261305f565b604082019050919050565b600061280c601e83612c50565b9150612817826130ae565b602082019050919050565b600061282f602083612c50565b915061283a826130d7565b602082019050919050565b6000612852601083612c50565b915061285d82613100565b602082019050919050565b6000612875601d83612c50565b915061288082613129565b602082019050919050565b6000612898601d83612c50565b91506128a382613152565b602082019050919050565b60006128bb602a83612c50565b91506128c68261317b565b604082019050919050565b60006128de601c83612c50565b91506128e9826131ca565b602082019050919050565b6128fd81612d9c565b82525050565b600061290f828461267f565b60148201915081905092915050565b600061292a82846126b4565b915081905092915050565b600060208201905061294a6000830184612670565b92915050565b60006060820190506129656000830186612670565b6129726020830185612670565b61297f60408301846128f4565b949350505050565b600060408201905061299c6000830185612670565b6129a960208301846128f4565b9392505050565b60006020820190506129c56000830184612696565b92915050565b60006020820190506129e060008301846126a5565b92915050565b60006020820190506129fb60008301846126e5565b92915050565b60006020820190508181036000830152612a1b81846126f4565b905092915050565b60006020820190508181036000830152612a3c8161272d565b9050919050565b60006020820190508181036000830152612a5c81612750565b9050919050565b60006020820190508181036000830152612a7c81612773565b9050919050565b60006020820190508181036000830152612a9c81612796565b9050919050565b60006020820190508181036000830152612abc816127b9565b9050919050565b60006020820190508181036000830152612adc816127dc565b9050919050565b60006020820190508181036000830152612afc816127ff565b9050919050565b60006020820190508181036000830152612b1c81612822565b9050919050565b60006020820190508181036000830152612b3c81612845565b9050919050565b60006020820190508181036000830152612b5c81612868565b9050919050565b60006020820190508181036000830152612b7c8161288b565b9050919050565b60006020820190508181036000830152612b9c816128ae565b9050919050565b60006020820190508181036000830152612bbc816128d1565b9050919050565b6000602082019050612bd860008301846128f4565b92915050565b6000612be8612bf9565b9050612bf48282612dfd565b919050565b6000604051905090565b600067ffffffffffffffff821115612c1e57612c1d612ef9565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612c6c82612d9c565b9150612c7783612d9c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612cac57612cab612e9b565b5b828201905092915050565b6000612cc282612d9c565b9150612ccd83612d9c565b925082612cdd57612cdc612eca565b5b828204905092915050565b6000612cf382612d9c565b9150612cfe83612d9c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d3757612d36612e9b565b5b828202905092915050565b6000612d4d82612d7c565b9050919050565b60008115159050919050565b6000819050919050565b6000612d7582612d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612db182612db8565b9050919050565b6000612dc382612d7c565b9050919050565b60005b83811015612de8578082015181840152602081019050612dcd565b83811115612df7576000848401525b50505050565b612e0682612f28565b810181811067ffffffffffffffff82111715612e2557612e24612ef9565b5b80604052505050565b6000612e3982612d9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6c57612e6b612e9b565b5b600182019050919050565b6000612e8282612e89565b9050919050565b6000612e9482612f39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f50726573616c65203a20556e7375697461626c6520416d6f756e740000000000600082015250565b7f4e6f7420612070617274206f6620416c6c6f776c697374000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420656e6f756768205553444320696e20796f75722077616c6c65740000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4861726463617020526561636865642100000000000000000000000000000000600082015250565b7f50726573616c65203a2050726573616c652069732066696e6973686564000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f50726573616c65203a2050726573616c65206973207374617274656400000000600082015250565b6131fc81612d42565b811461320757600080fd5b50565b61321381612d54565b811461321e57600080fd5b50565b61322a81612d60565b811461323557600080fd5b50565b61324181612d6a565b811461324c57600080fd5b50565b61325881612d9c565b811461326357600080fd5b5056fea264697066735822122013a05a3cd1a96f3efc467ab9f76610c15ccaaeddb2140ec5a48f71b9638d9f3d64736f6c63430008040033000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7c484c3441a3c0404e757ef42a2c0555b20a727efe929b6736e47f09c5fb7183f
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806389a30271116100f7578063c54e44eb11610095578063ebf0c71711610064578063ebf0c7171461060f578063f2fde38b1461063a578063fc7e286d14610663578063fd25ac60146106a0576101d8565b8063c54e44eb14610555578063d2d79ee614610580578063d5dbd64f146105bd578063dee72f0a146105e6576101d8565b8063acfb2355116100d1578063acfb235514610487578063af2f14ca146104b2578063b8a20ed0146104db578063c0c20bed14610518576101d8565b806389a30271146104065780638da5cb5b14610431578063a4df4fca1461045c576101d8565b806354f63ee51161016f578063715018a61161013e578063715018a6146103725780637f3625b41461038957806384345ee3146103b25780638980f11f146103dd576101d8565b806354f63ee5146102f0578063595338aa1461030757806361ddbf7e1461033257806369d895751461035b576101d8565b806329503ff7116101ab57806329503ff7146102465780632f1273c71461027157806330e4f9aa1461029a57806341d0f848146102c5576101d8565b8063162baad5146101dd57806317c68099146102065780631ad2ad1a1461022f576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff919061258a565b6106c9565b005b34801561021257600080fd5b5061022d60048036038101906102289190612618565b6107e4565b005b34801561023b57600080fd5b50610244610b69565b005b34801561025257600080fd5b5061025b610c1b565b6040516102689190612bc3565b60405180910390f35b34801561027d57600080fd5b50610298600480360381019061029391906125c6565b610c21565b005b3480156102a657600080fd5b506102af610cc0565b6040516102bc9190612bc3565b60405180910390f35b3480156102d157600080fd5b506102da610cc8565b6040516102e79190612bc3565b60405180910390f35b3480156102fc57600080fd5b50610305610cce565b005b34801561031357600080fd5b5061031c610d80565b6040516103299190612bc3565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906125c6565b610d86565b005b34801561036757600080fd5b50610370610e25565b005b34801561037e57600080fd5b50610387610f03565b005b34801561039557600080fd5b506103b060048036038101906103ab919061250f565b611056565b005b3480156103be57600080fd5b506103c7611108565b6040516103d49190612bc3565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff919061247f565b61110e565b005b34801561041257600080fd5b5061041b6112eb565b60405161042891906129e6565b60405180910390f35b34801561043d57600080fd5b50610446611311565b6040516104539190612935565b60405180910390f35b34801561046857600080fd5b5061047161133a565b60405161047e91906129b0565b60405180910390f35b34801561049357600080fd5b5061049c61134d565b6040516104a991906129b0565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906125c6565b611360565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906124bb565b6113ff565b60405161050f91906129b0565b60405180910390f35b34801561052457600080fd5b5061053f600480360381019061053a91906125c6565b611416565b60405161054c9190612bc3565b60405180910390f35b34801561056157600080fd5b5061056a611449565b60405161057791906129e6565b60405180910390f35b34801561058c57600080fd5b506105a760048036038101906105a291906125c6565b61146f565b6040516105b49190612bc3565b60405180910390f35b3480156105c957600080fd5b506105e460048036038101906105df9190612561565b6114a2565b005b3480156105f257600080fd5b5061060d600480360381019061060891906125c6565b611541565b005b34801561061b57600080fd5b506106246116fe565b60405161063191906129cb565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c919061242d565b611704565b005b34801561066f57600080fd5b5061068a6004803603810190610685919061242d565b6118c6565b6040516106979190612bc3565b60405180910390f35b3480156106ac57600080fd5b506106c760048036038101906106c29190612618565b6118de565b005b6106d1611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590612b03565b60405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6006546108046107f38561146f565b600554611cce90919063ffffffff16565b1115610845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083c90612b23565b60405180910390fd5b60011515600760019054906101000a900460ff161515141561096c576108d2828280806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050336040516020016108b79190612903565b604051602081830303815290604052805190602001206113ff565b610911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090890612aa3565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e90612ba3565b60405180910390fd5b6109c3565b60011515600760009054906101000a900460ff161515146109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b990612b43565b60405180910390fd5b5b60008311610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd90612a83565b60405180910390fd5b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a629190612935565b60206040518083038186803b158015610a7a57600080fd5b505afa158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab291906125ef565b11610af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae990612ae3565b60405180910390fd5b610b41333085600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d2c909392919063ffffffff16565b610b5e610b4d8461146f565b600554611cce90919063ffffffff16565b600581905550505050565b610b71611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612b03565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b60055481565b610c29611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90612b03565b60405180910390fd5b8060038190555050565b600047905090565b60035481565b610cd6611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612b03565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b60045481565b610d8e611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290612b03565b60405180910390fd5b8060048190555050565b610e2d611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190612b03565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f00573d6000803e3d6000fd5b50565b610f0b611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f90612b03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61105e611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290612b03565b60405180910390fd5b80600760016101000a81548160ff02191690831515021790555050565b60065481565b611116611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90612b03565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190612456565b836040518363ffffffff1660e01b815260040161125b929190612987565b602060405180830381600087803b15801561127557600080fd5b505af1158015611289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ad9190612538565b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2882826040516112df929190612987565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760019054906101000a900460ff1681565b600760009054906101000a900460ff1681565b611368611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90612b03565b60405180910390fd5b8060068190555050565b600061140e8360085484611db5565b905092915050565b6000611442620f424061143484600354611dcc90919063ffffffff16565b611e4790919063ffffffff16565b9050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061149b620f424061148d84600454611dcc90919063ffffffff16565b611e4790919063ffffffff16565b9050919050565b6114aa611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e90612b03565b60405180910390fd5b8060088190555050565b611549611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90612b03565b60405180910390fd5b6116a03073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561161f57600080fd5b505afa158015611633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116579190612456565b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e919092919063ffffffff16565b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516116f3929190612987565b60405180910390a150565b60085481565b61170c611cc6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179090612b03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612a23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915090505481565b6006546118fe6118ed85611416565b600554611cce90919063ffffffff16565b111561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690612b23565b60405180910390fd5b60011515600760019054906101000a900460ff1615151415611a66576119cc828280806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050336040516020016119b19190612903565b604051602081830303815290604052805190602001206113ff565b611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0290612aa3565b60405180910390fd5b60001515600760009054906101000a900460ff16151514611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890612ba3565b60405180910390fd5b611abd565b60011515600760009054906101000a900460ff16151514611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390612b43565b60405180910390fd5b5b60008311611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790612a83565b60405180910390fd5b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611b5c9190612935565b60206040518083038186803b158015611b7457600080fd5b505afa158015611b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bac91906125ef565b11611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390612ae3565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401611c4b93929190612950565b602060405180830381600087803b158015611c6557600080fd5b505af1158015611c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9d9190612538565b50611cbb611caa84611416565b600554611cce90919063ffffffff16565b600581905550505050565b600033905090565b6000808284611cdd9190612c61565b905083811015611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1990612a43565b60405180910390fd5b8091505092915050565b611daf846323b872dd60e01b858585604051602401611d4d93929190612950565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f17565b50505050565b600082611dc28584611fde565b1490509392505050565b600080831415611ddf5760009050611e41565b60008284611ded9190612ce8565b9050828482611dfc9190612cb7565b14611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3390612ac3565b60405180910390fd5b809150505b92915050565b6000611e8983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061205a565b905092915050565b611f128363a9059cbb60e01b8484604051602401611eb0929190612987565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f17565b505050565b6000611f79826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166120bd9092919063ffffffff16565b9050600081511115611fd95780806020019051810190611f999190612538565b611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90612b83565b60405180910390fd5b5b505050565b60008082905060005b845181101561204f5761203a8286838151811061202d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516120d5565b9150808061204790612e2e565b915050611fe7565b508091505092915050565b600080831182906120a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120989190612a01565b60405180910390fd5b50600083856120b09190612cb7565b9050809150509392505050565b60606120cc8484600085612100565b90509392505050565b60008183106120ed576120e88284612214565b6120f8565b6120f78383612214565b5b905092915050565b606082471015612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c90612a63565b60405180910390fd5b61214e8561222b565b61218d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218490612b63565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516121b6919061291e565b60006040518083038185875af1925050503d80600081146121f3576040519150601f19603f3d011682016040523d82523d6000602084013e6121f8565b606091505b509150915061220882828661223e565b92505050949350505050565b600082600052816020526040600020905092915050565b600080823b905060008111915050919050565b6060831561224e5782905061229e565b6000835111156122615782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959190612a01565b60405180910390fd5b9392505050565b60006122b86122b384612c03565b612bde565b905080838252602082019050828560208602820111156122d757600080fd5b60005b8581101561230757816122ed88826123d9565b8452602084019350602083019250506001810190506122da565b5050509392505050565b600081359050612320816131f3565b92915050565b600081519050612335816131f3565b92915050565b60008083601f84011261234d57600080fd5b8235905067ffffffffffffffff81111561236657600080fd5b60208301915083602082028301111561237e57600080fd5b9250929050565b600082601f83011261239657600080fd5b81356123a68482602086016122a5565b91505092915050565b6000813590506123be8161320a565b92915050565b6000815190506123d38161320a565b92915050565b6000813590506123e881613221565b92915050565b6000813590506123fd81613238565b92915050565b6000813590506124128161324f565b92915050565b6000815190506124278161324f565b92915050565b60006020828403121561243f57600080fd5b600061244d84828501612311565b91505092915050565b60006020828403121561246857600080fd5b600061247684828501612326565b91505092915050565b6000806040838503121561249257600080fd5b60006124a085828601612311565b92505060206124b185828601612403565b9150509250929050565b600080604083850312156124ce57600080fd5b600083013567ffffffffffffffff8111156124e857600080fd5b6124f485828601612385565b9250506020612505858286016123d9565b9150509250929050565b60006020828403121561252157600080fd5b600061252f848285016123af565b91505092915050565b60006020828403121561254a57600080fd5b6000612558848285016123c4565b91505092915050565b60006020828403121561257357600080fd5b6000612581848285016123d9565b91505092915050565b6000806040838503121561259d57600080fd5b60006125ab858286016123ee565b92505060206125bc858286016123ee565b9150509250929050565b6000602082840312156125d857600080fd5b60006125e684828501612403565b91505092915050565b60006020828403121561260157600080fd5b600061260f84828501612418565b91505092915050565b60008060006040848603121561262d57600080fd5b600061263b86828701612403565b935050602084013567ffffffffffffffff81111561265857600080fd5b6126648682870161233b565b92509250509250925092565b61267981612d42565b82525050565b61269061268b82612d42565b612e77565b82525050565b61269f81612d54565b82525050565b6126ae81612d60565b82525050565b60006126bf82612c2f565b6126c98185612c45565b93506126d9818560208601612dca565b80840191505092915050565b6126ee81612da6565b82525050565b60006126ff82612c3a565b6127098185612c50565b9350612719818560208601612dca565b61272281612f28565b840191505092915050565b600061273a602683612c50565b915061274582612f46565b604082019050919050565b600061275d601b83612c50565b915061276882612f95565b602082019050919050565b6000612780602683612c50565b915061278b82612fbe565b604082019050919050565b60006127a3601b83612c50565b91506127ae8261300d565b602082019050919050565b60006127c6601783612c50565b91506127d182613036565b602082019050919050565b60006127e9602183612c50565b91506127f48261305f565b604082019050919050565b600061280c601e83612c50565b9150612817826130ae565b602082019050919050565b600061282f602083612c50565b915061283a826130d7565b602082019050919050565b6000612852601083612c50565b915061285d82613100565b602082019050919050565b6000612875601d83612c50565b915061288082613129565b602082019050919050565b6000612898601d83612c50565b91506128a382613152565b602082019050919050565b60006128bb602a83612c50565b91506128c68261317b565b604082019050919050565b60006128de601c83612c50565b91506128e9826131ca565b602082019050919050565b6128fd81612d9c565b82525050565b600061290f828461267f565b60148201915081905092915050565b600061292a82846126b4565b915081905092915050565b600060208201905061294a6000830184612670565b92915050565b60006060820190506129656000830186612670565b6129726020830185612670565b61297f60408301846128f4565b949350505050565b600060408201905061299c6000830185612670565b6129a960208301846128f4565b9392505050565b60006020820190506129c56000830184612696565b92915050565b60006020820190506129e060008301846126a5565b92915050565b60006020820190506129fb60008301846126e5565b92915050565b60006020820190508181036000830152612a1b81846126f4565b905092915050565b60006020820190508181036000830152612a3c8161272d565b9050919050565b60006020820190508181036000830152612a5c81612750565b9050919050565b60006020820190508181036000830152612a7c81612773565b9050919050565b60006020820190508181036000830152612a9c81612796565b9050919050565b60006020820190508181036000830152612abc816127b9565b9050919050565b60006020820190508181036000830152612adc816127dc565b9050919050565b60006020820190508181036000830152612afc816127ff565b9050919050565b60006020820190508181036000830152612b1c81612822565b9050919050565b60006020820190508181036000830152612b3c81612845565b9050919050565b60006020820190508181036000830152612b5c81612868565b9050919050565b60006020820190508181036000830152612b7c8161288b565b9050919050565b60006020820190508181036000830152612b9c816128ae565b9050919050565b60006020820190508181036000830152612bbc816128d1565b9050919050565b6000602082019050612bd860008301846128f4565b92915050565b6000612be8612bf9565b9050612bf48282612dfd565b919050565b6000604051905090565b600067ffffffffffffffff821115612c1e57612c1d612ef9565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612c6c82612d9c565b9150612c7783612d9c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612cac57612cab612e9b565b5b828201905092915050565b6000612cc282612d9c565b9150612ccd83612d9c565b925082612cdd57612cdc612eca565b5b828204905092915050565b6000612cf382612d9c565b9150612cfe83612d9c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d3757612d36612e9b565b5b828202905092915050565b6000612d4d82612d7c565b9050919050565b60008115159050919050565b6000819050919050565b6000612d7582612d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612db182612db8565b9050919050565b6000612dc382612d7c565b9050919050565b60005b83811015612de8578082015181840152602081019050612dcd565b83811115612df7576000848401525b50505050565b612e0682612f28565b810181811067ffffffffffffffff82111715612e2557612e24612ef9565b5b80604052505050565b6000612e3982612d9c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6c57612e6b612e9b565b5b600182019050919050565b6000612e8282612e89565b9050919050565b6000612e9482612f39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f50726573616c65203a20556e7375697461626c6520416d6f756e740000000000600082015250565b7f4e6f7420612070617274206f6620416c6c6f776c697374000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420656e6f756768205553444320696e20796f75722077616c6c65740000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4861726463617020526561636865642100000000000000000000000000000000600082015250565b7f50726573616c65203a2050726573616c652069732066696e6973686564000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f50726573616c65203a2050726573616c65206973207374617274656400000000600082015250565b6131fc81612d42565b811461320757600080fd5b50565b61321381612d54565b811461321e57600080fd5b50565b61322a81612d60565b811461323557600080fd5b50565b61324181612d6a565b811461324c57600080fd5b50565b61325881612d9c565b811461326357600080fd5b5056fea264697066735822122013a05a3cd1a96f3efc467ab9f76610c15ccaaeddb2140ec5a48f71b9638d9f3d64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7c484c3441a3c0404e757ef42a2c0555b20a727efe929b6736e47f09c5fb7183f
-----Decoded View---------------
Arg [0] : _USDC (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [1] : _USDT (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : merkleroot (bytes32): 0xc484c3441a3c0404e757ef42a2c0555b20a727efe929b6736e47f09c5fb7183f
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [2] : c484c3441a3c0404e757ef42a2c0555b20a727efe929b6736e47f09c5fb7183f
Deployed Bytecode Sourcemap
14752:5096:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17964:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16666:892;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18087:82;;;;;;;;;;;;;:::i;:::-;;15097:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17724:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18481:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14927:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18177:83;;;;;;;;;;;;;:::i;:::-;;15012:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17844:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19021:119;;;;;;;;;;;;;:::i;:::-;;14345:148;;;;;;;;;;;;;:::i;:::-;;18383:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15127:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18599:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14861:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14135:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15221:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15189:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18268:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19268:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16509:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14886:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17566:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19492:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18819:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15248:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14499:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15280:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15691:810;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17964:115;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18045:5:::1;18040:4;;:10;;;;;;;;;;;;;;;;;;18066:5;18061:4;;:10;;;;;;;;;;;;;;;;;;17964:115:::0;;:::o;16666:892::-;16820:17;;16773:45;16786:31;16805:11;16786:18;:31::i;:::-;16773:8;;:12;;:45;;;;:::i;:::-;:64;;16765:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;16881:4;16871:14;;:8;;;;;;;;;;;:14;;;16868:309;;;16905:55;16913:5;;16905:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16947:10;16930:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;16920:39;;;;;;16905:7;:55::i;:::-;16897:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;17024:5;17007:22;;:13;;;;;;;;;;;:22;;;16999:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16868:309;;;17126:4;17109:21;;:13;;;;;;;;;;;:21;;;17101:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16868:309;17209:1;17195:11;:15;17187:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17288:11;17261:4;;;;;;;;;;;:14;;;17276:10;17261:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;17253:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;17415:67;17445:10;17464:4;17470:11;17422:4;;;;;;;;;;;17415:29;;;;:67;;;;;;:::i;:::-;17503:45;17516:31;17535:11;17516:18;:31::i;:::-;17503:8;;:12;;:45;;;;:::i;:::-;17493:8;:55;;;;16666:892;;;:::o;18087:82::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18156:5:::1;18140:13;;:21;;;;;;;;;;;;;;;;;;18087:82::o:0;15097:23::-;;;;:::o;17724:112::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17822:6:::1;17804:15;:24;;;;17724:112:::0;:::o;18481:106::-;18528:7;18558:21;18551:28;;18481:106;:::o;14927:56::-;;;;:::o;18177:83::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18248:4:::1;18232:13;;:20;;;;;;;;;;;;;;;;;;18177:83::o:0;15012:56::-;;;;:::o;17844:112::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17942:6:::1;17924:15;:24;;;;17844:112:::0;:::o;19021:119::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19089:10:::1;19081:28;;:51;19110:21;19081:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19021:119::o:0;14345:148::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14452:1:::1;14415:40;;14436:6;::::0;::::1;;;;;;;;14415:40;;;;;;;;;;;;14483:1;14466:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;14345:148::o:0;18383:90::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18459:6:::1;18450:8;;:15;;;;;;;;;;;;;;;;;;18383:90:::0;:::o;15127:51::-;;;;:::o;18599:211::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18701:12:::1;18694:29;;;18724:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18738:11;18694:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18766:36;18776:12;18790:11;18766:36;;;;;;;:::i;:::-;;;;;;;;18599:211:::0;;:::o;14861:18::-;;;;;;;;;;;;;:::o;14135:79::-;14173:7;14200:6;;;;;;;;;;;14193:13;;14135:79;:::o;15221:20::-;;;;;;;;;;;;;:::o;15189:25::-;;;;;;;;;;;;;:::o;18268:107::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18361:6:::1;18343:17;:24;;;;18268:107:::0;:::o;19268:145::-;19344:4;19368:37;19387:5;19394:4;;19400;19368:18;:37::i;:::-;19361:44;;19268:145;;;;:::o;16509:140::-;16572:7;16604:37;16637:3;16605:26;16625:5;16605:15;;:19;;:26;;;;:::i;:::-;16604:32;;:37;;;;:::i;:::-;16597:44;;16509:140;;;:::o;14886:18::-;;;;;;;;;;;;;:::o;17566:140::-;17629:7;17661:37;17694:3;17662:26;17682:5;17662:15;;:19;;:26;;;;:::i;:::-;17661:32;;:37;;;;:::i;:::-;17654:44;;17566:140;;;:::o;19492:112::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19579:5:::1;19574:4;:10;;;;19492:112:::0;:::o;18819:189::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18894:51:::1;18920:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18933:11;18901:4;;;;;;;;;;;18894:25;;;;:51;;;;;:::i;:::-;18963:37;18981:4;;;;;;;;;;;18988:11;18963:37;;;;;;;:::i;:::-;;;;;;;;18819:189:::0;:::o;15248:19::-;;;;:::o;14499:244::-;14270:12;:10;:12::i;:::-;14260:22;;:6;;;;;;;;;;:22;;;14252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14608:1:::1;14588:22;;:8;:22;;;;14580:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14698:8;14669:38;;14690:6;::::0;::::1;;;;;;;;14669:38;;;;;;;;;;;;14727:8;14718:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;14499:244:::0;:::o;15280:43::-;;;;;;;;;;;;;;;;;:::o;15691:810::-;15842:17;;15795:45;15808:31;15827:11;15808:18;:31::i;:::-;15795:8;;:12;;:45;;;;:::i;:::-;:64;;15787:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;15903:4;15893:14;;:8;;;;;;;;;;;:14;;;15890:309;;;15927:55;15935:5;;15927:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15969:10;15952:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;15942:39;;;;;;15927:7;:55::i;:::-;15919:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;16046:5;16029:22;;:13;;;;;;;;;;;:22;;;16021:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15890:309;;;16148:4;16131:21;;:13;;;;;;;;;;;:21;;;16123:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15890:309;16231:1;16217:11;:15;16209:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16310:11;16283:4;;;;;;;;;;;:14;;;16298:10;16283:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;16275:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16366:4;;;;;;;;;;;:17;;;16384:10;16404:4;16411:11;16366:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16447:45;16460:31;16479:11;16460:18;:31::i;:::-;16447:8;;:12;;:45;;;;:::i;:::-;16437:8;:55;;;;15691:810;;;:::o;11149:115::-;11202:15;11245:10;11230:26;;11149:115;:::o;12215:193::-;12273:7;12305:9;12321:1;12317;:5;;;;:::i;:::-;12305:17;;12346:1;12341;:6;;12333:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12399:1;12392:8;;;12215:193;;;;:::o;8237:205::-;8338:96;8358:5;8388:27;;;8417:4;8423:2;8427:5;8365:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8338:19;:96::i;:::-;8237:205;;;;:::o;1179:190:0:-;1304:4;1357;1328:25;1341:5;1348:4;1328:12;:25::i;:::-;:33;1321:40;;1179:190;;;;;:::o;12754:250:1:-;12812:7;12841:1;12836;:6;12832:47;;;12866:1;12859:8;;;;12832:47;12891:9;12907:1;12903;:5;;;;:::i;:::-;12891:17;;12936:1;12931;12927;:5;;;;:::i;:::-;:10;12919:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12995:1;12988:8;;;12754:250;;;;;:::o;13012:132::-;13070:7;13097:39;13101:1;13104;13097:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;13090:46;;13012:132;;;;:::o;8052:177::-;8135:86;8155:5;8185:23;;;8210:2;8214:5;8162:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8135:19;:86::i;:::-;8052:177;;;:::o;10357:761::-;10781:23;10807:69;10835:4;10807:69;;;;;;;;;;;;;;;;;10815:5;10807:27;;;;:69;;;;;:::i;:::-;10781:95;;10911:1;10891:10;:17;:21;10887:224;;;11033:10;11022:30;;;;;;;;;;;;:::i;:::-;11014:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10887:224;10357:761;;;:::o;2046:296:0:-;2129:7;2149:20;2172:4;2149:27;;2192:9;2187:118;2211:5;:12;2207:1;:16;2187:118;;;2260:33;2270:12;2284:5;2290:1;2284:8;;;;;;;;;;;;;;;;;;;;;;2260:9;:33::i;:::-;2245:48;;2225:3;;;;;:::i;:::-;;;;2187:118;;;;2322:12;2315:19;;;2046:296;;;;:::o;13152:345:1:-;13238:7;13337:1;13333;:5;13340:12;13325:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13364:9;13380:1;13376;:5;;;;:::i;:::-;13364:17;;13488:1;13481:8;;;13152:345;;;;;:::o;3619:195::-;3722:12;3754:52;3776:6;3784:4;3790:1;3793:12;3754:21;:52::i;:::-;3747:59;;3619:195;;;;;:::o;8253:149:0:-;8316:7;8347:1;8343;:5;:51;;8374:20;8389:1;8392;8374:14;:20::i;:::-;8343:51;;;8351:20;8366:1;8369;8351:14;:20::i;:::-;8343:51;8336:58;;8253:149;;;;:::o;4671:530:1:-;4798:12;4856:5;4831:21;:30;;4823:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;4923:18;4934:6;4923:10;:18::i;:::-;4915:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5049:12;5063:23;5090:6;:11;;5110:5;5118:4;5090:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5048:75;;;;5141:52;5159:7;5168:10;5180:12;5141:17;:52::i;:::-;5134:59;;;;4671:530;;;;;;:::o;8410:268:0:-;8478:13;8585:1;8579:4;8572:15;8614:1;8608:4;8601:15;8655:4;8649;8639:21;8630:30;;8557:114;;;;:::o;701:422:1:-;761:4;969:12;1080:7;1068:20;1060:28;;1114:1;1107:4;:8;1100:15;;;701:422;;;:::o;7211:742::-;7326:12;7355:7;7351:595;;;7386:10;7379:17;;;;7351:595;7520:1;7500:10;:17;:21;7496:439;;;7763:10;7757:17;7824:15;7811:10;7807:2;7803:19;7796:44;7711:148;7906:12;7899:20;;;;;;;;;;;:::i;:::-;;;;;;;;7211:742;;;;;;:::o;24:655:2:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:367::-;1069:8;1079:6;1129:3;1122:4;1114:6;1110:17;1106:27;1096:2;;1147:1;1144;1137:12;1096:2;1183:6;1170:20;1160:30;;1213:18;1205:6;1202:30;1199:2;;;1245:1;1242;1235:12;1199:2;1282:4;1274:6;1270:17;1258:29;;1336:3;1328:4;1320:6;1316:17;1306:8;1302:32;1299:41;1296:2;;;1353:1;1350;1343:12;1296:2;1086:277;;;;;:::o;1386:303::-;1457:5;1506:3;1499:4;1491:6;1487:17;1483:27;1473:2;;1524:1;1521;1514:12;1473:2;1564:6;1551:20;1589:94;1679:3;1671:6;1664:4;1656:6;1652:17;1589:94;:::i;:::-;1580:103;;1463:226;;;;;:::o;1695:133::-;1738:5;1776:6;1763:20;1754:29;;1792:30;1816:5;1792:30;:::i;:::-;1744:84;;;;:::o;1834:137::-;1888:5;1919:6;1913:13;1904:22;;1935:30;1959:5;1935:30;:::i;:::-;1894:77;;;;:::o;1977:139::-;2023:5;2061:6;2048:20;2039:29;;2077:33;2104:5;2077:33;:::i;:::-;2029:87;;;;:::o;2122:169::-;2183:5;2221:6;2208:20;2199:29;;2237:48;2279:5;2237:48;:::i;:::-;2189:102;;;;:::o;2297:139::-;2343:5;2381:6;2368:20;2359:29;;2397:33;2424:5;2397:33;:::i;:::-;2349:87;;;;:::o;2442:143::-;2499:5;2530:6;2524:13;2515:22;;2546:33;2573:5;2546:33;:::i;:::-;2505:80;;;;:::o;2591:262::-;2650:6;2699:2;2687:9;2678:7;2674:23;2670:32;2667:2;;;2715:1;2712;2705:12;2667:2;2758:1;2783:53;2828:7;2819:6;2808:9;2804:22;2783:53;:::i;:::-;2773:63;;2729:117;2657:196;;;;:::o;2859:284::-;2929:6;2978:2;2966:9;2957:7;2953:23;2949:32;2946:2;;;2994:1;2991;2984:12;2946:2;3037:1;3062:64;3118:7;3109:6;3098:9;3094:22;3062:64;:::i;:::-;3052:74;;3008:128;2936:207;;;;:::o;3149:407::-;3217:6;3225;3274:2;3262:9;3253:7;3249:23;3245:32;3242:2;;;3290:1;3287;3280:12;3242:2;3333:1;3358:53;3403:7;3394:6;3383:9;3379:22;3358:53;:::i;:::-;3348:63;;3304:117;3460:2;3486:53;3531:7;3522:6;3511:9;3507:22;3486:53;:::i;:::-;3476:63;;3431:118;3232:324;;;;;:::o;3562:550::-;3655:6;3663;3712:2;3700:9;3691:7;3687:23;3683:32;3680:2;;;3728:1;3725;3718:12;3680:2;3799:1;3788:9;3784:17;3771:31;3829:18;3821:6;3818:30;3815:2;;;3861:1;3858;3851:12;3815:2;3889:78;3959:7;3950:6;3939:9;3935:22;3889:78;:::i;:::-;3879:88;;3742:235;4016:2;4042:53;4087:7;4078:6;4067:9;4063:22;4042:53;:::i;:::-;4032:63;;3987:118;3670:442;;;;;:::o;4118:256::-;4174:6;4223:2;4211:9;4202:7;4198:23;4194:32;4191:2;;;4239:1;4236;4229:12;4191:2;4282:1;4307:50;4349:7;4340:6;4329:9;4325:22;4307:50;:::i;:::-;4297:60;;4253:114;4181:193;;;;:::o;4380:278::-;4447:6;4496:2;4484:9;4475:7;4471:23;4467:32;4464:2;;;4512:1;4509;4502:12;4464:2;4555:1;4580:61;4633:7;4624:6;4613:9;4609:22;4580:61;:::i;:::-;4570:71;;4526:125;4454:204;;;;:::o;4664:262::-;4723:6;4772:2;4760:9;4751:7;4747:23;4743:32;4740:2;;;4788:1;4785;4778:12;4740:2;4831:1;4856:53;4901:7;4892:6;4881:9;4877:22;4856:53;:::i;:::-;4846:63;;4802:117;4730:196;;;;:::o;4932:467::-;5030:6;5038;5087:2;5075:9;5066:7;5062:23;5058:32;5055:2;;;5103:1;5100;5093:12;5055:2;5146:1;5171:68;5231:7;5222:6;5211:9;5207:22;5171:68;:::i;:::-;5161:78;;5117:132;5288:2;5314:68;5374:7;5365:6;5354:9;5350:22;5314:68;:::i;:::-;5304:78;;5259:133;5045:354;;;;;:::o;5405:262::-;5464:6;5513:2;5501:9;5492:7;5488:23;5484:32;5481:2;;;5529:1;5526;5519:12;5481:2;5572:1;5597:53;5642:7;5633:6;5622:9;5618:22;5597:53;:::i;:::-;5587:63;;5543:117;5471:196;;;;:::o;5673:284::-;5743:6;5792:2;5780:9;5771:7;5767:23;5763:32;5760:2;;;5808:1;5805;5798:12;5760:2;5851:1;5876:64;5932:7;5923:6;5912:9;5908:22;5876:64;:::i;:::-;5866:74;;5822:128;5750:207;;;;:::o;5963:570::-;6058:6;6066;6074;6123:2;6111:9;6102:7;6098:23;6094:32;6091:2;;;6139:1;6136;6129:12;6091:2;6182:1;6207:53;6252:7;6243:6;6232:9;6228:22;6207:53;:::i;:::-;6197:63;;6153:117;6337:2;6326:9;6322:18;6309:32;6368:18;6360:6;6357:30;6354:2;;;6400:1;6397;6390:12;6354:2;6436:80;6508:7;6499:6;6488:9;6484:22;6436:80;:::i;:::-;6418:98;;;;6280:246;6081:452;;;;;:::o;6539:118::-;6626:24;6644:5;6626:24;:::i;:::-;6621:3;6614:37;6604:53;;:::o;6663:157::-;6768:45;6788:24;6806:5;6788:24;:::i;:::-;6768:45;:::i;:::-;6763:3;6756:58;6746:74;;:::o;6826:109::-;6907:21;6922:5;6907:21;:::i;:::-;6902:3;6895:34;6885:50;;:::o;6941:118::-;7028:24;7046:5;7028:24;:::i;:::-;7023:3;7016:37;7006:53;;:::o;7065:373::-;7169:3;7197:38;7229:5;7197:38;:::i;:::-;7251:88;7332:6;7327:3;7251:88;:::i;:::-;7244:95;;7348:52;7393:6;7388:3;7381:4;7374:5;7370:16;7348:52;:::i;:::-;7425:6;7420:3;7416:16;7409:23;;7173:265;;;;;:::o;7444:161::-;7546:52;7592:5;7546:52;:::i;:::-;7541:3;7534:65;7524:81;;:::o;7611:364::-;7699:3;7727:39;7760:5;7727:39;:::i;:::-;7782:71;7846:6;7841:3;7782:71;:::i;:::-;7775:78;;7862:52;7907:6;7902:3;7895:4;7888:5;7884:16;7862:52;:::i;:::-;7939:29;7961:6;7939:29;:::i;:::-;7934:3;7930:39;7923:46;;7703:272;;;;;:::o;7981:366::-;8123:3;8144:67;8208:2;8203:3;8144:67;:::i;:::-;8137:74;;8220:93;8309:3;8220:93;:::i;:::-;8338:2;8333:3;8329:12;8322:19;;8127:220;;;:::o;8353:366::-;8495:3;8516:67;8580:2;8575:3;8516:67;:::i;:::-;8509:74;;8592:93;8681:3;8592:93;:::i;:::-;8710:2;8705:3;8701:12;8694:19;;8499:220;;;:::o;8725:366::-;8867:3;8888:67;8952:2;8947:3;8888:67;:::i;:::-;8881:74;;8964:93;9053:3;8964:93;:::i;:::-;9082:2;9077:3;9073:12;9066:19;;8871:220;;;:::o;9097:366::-;9239:3;9260:67;9324:2;9319:3;9260:67;:::i;:::-;9253:74;;9336:93;9425:3;9336:93;:::i;:::-;9454:2;9449:3;9445:12;9438:19;;9243:220;;;:::o;9469:366::-;9611:3;9632:67;9696:2;9691:3;9632:67;:::i;:::-;9625:74;;9708:93;9797:3;9708:93;:::i;:::-;9826:2;9821:3;9817:12;9810:19;;9615:220;;;:::o;9841:366::-;9983:3;10004:67;10068:2;10063:3;10004:67;:::i;:::-;9997:74;;10080:93;10169:3;10080:93;:::i;:::-;10198:2;10193:3;10189:12;10182:19;;9987:220;;;:::o;10213:366::-;10355:3;10376:67;10440:2;10435:3;10376:67;:::i;:::-;10369:74;;10452:93;10541:3;10452:93;:::i;:::-;10570:2;10565:3;10561:12;10554:19;;10359:220;;;:::o;10585:366::-;10727:3;10748:67;10812:2;10807:3;10748:67;:::i;:::-;10741:74;;10824:93;10913:3;10824:93;:::i;:::-;10942:2;10937:3;10933:12;10926:19;;10731:220;;;:::o;10957:366::-;11099:3;11120:67;11184:2;11179:3;11120:67;:::i;:::-;11113:74;;11196:93;11285:3;11196:93;:::i;:::-;11314:2;11309:3;11305:12;11298:19;;11103:220;;;:::o;11329:366::-;11471:3;11492:67;11556:2;11551:3;11492:67;:::i;:::-;11485:74;;11568:93;11657:3;11568:93;:::i;:::-;11686:2;11681:3;11677:12;11670:19;;11475:220;;;:::o;11701:366::-;11843:3;11864:67;11928:2;11923:3;11864:67;:::i;:::-;11857:74;;11940:93;12029:3;11940:93;:::i;:::-;12058:2;12053:3;12049:12;12042:19;;11847:220;;;:::o;12073:366::-;12215:3;12236:67;12300:2;12295:3;12236:67;:::i;:::-;12229:74;;12312:93;12401:3;12312:93;:::i;:::-;12430:2;12425:3;12421:12;12414:19;;12219:220;;;:::o;12445:366::-;12587:3;12608:67;12672:2;12667:3;12608:67;:::i;:::-;12601:74;;12684:93;12773:3;12684:93;:::i;:::-;12802:2;12797:3;12793:12;12786:19;;12591:220;;;:::o;12817:118::-;12904:24;12922:5;12904:24;:::i;:::-;12899:3;12892:37;12882:53;;:::o;12941:256::-;13053:3;13068:75;13139:3;13130:6;13068:75;:::i;:::-;13168:2;13163:3;13159:12;13152:19;;13188:3;13181:10;;13057:140;;;;:::o;13203:271::-;13333:3;13355:93;13444:3;13435:6;13355:93;:::i;:::-;13348:100;;13465:3;13458:10;;13337:137;;;;:::o;13480:222::-;13573:4;13611:2;13600:9;13596:18;13588:26;;13624:71;13692:1;13681:9;13677:17;13668:6;13624:71;:::i;:::-;13578:124;;;;:::o;13708:442::-;13857:4;13895:2;13884:9;13880:18;13872:26;;13908:71;13976:1;13965:9;13961:17;13952:6;13908:71;:::i;:::-;13989:72;14057:2;14046:9;14042:18;14033:6;13989:72;:::i;:::-;14071;14139:2;14128:9;14124:18;14115:6;14071:72;:::i;:::-;13862:288;;;;;;:::o;14156:332::-;14277:4;14315:2;14304:9;14300:18;14292:26;;14328:71;14396:1;14385:9;14381:17;14372:6;14328:71;:::i;:::-;14409:72;14477:2;14466:9;14462:18;14453:6;14409:72;:::i;:::-;14282:206;;;;;:::o;14494:210::-;14581:4;14619:2;14608:9;14604:18;14596:26;;14632:65;14694:1;14683:9;14679:17;14670:6;14632:65;:::i;:::-;14586:118;;;;:::o;14710:222::-;14803:4;14841:2;14830:9;14826:18;14818:26;;14854:71;14922:1;14911:9;14907:17;14898:6;14854:71;:::i;:::-;14808:124;;;;:::o;14938:252::-;15046:4;15084:2;15073:9;15069:18;15061:26;;15097:86;15180:1;15169:9;15165:17;15156:6;15097:86;:::i;:::-;15051:139;;;;:::o;15196:313::-;15309:4;15347:2;15336:9;15332:18;15324:26;;15396:9;15390:4;15386:20;15382:1;15371:9;15367:17;15360:47;15424:78;15497:4;15488:6;15424:78;:::i;:::-;15416:86;;15314:195;;;;:::o;15515:419::-;15681:4;15719:2;15708:9;15704:18;15696:26;;15768:9;15762:4;15758:20;15754:1;15743:9;15739:17;15732:47;15796:131;15922:4;15796:131;:::i;:::-;15788:139;;15686:248;;;:::o;15940:419::-;16106:4;16144:2;16133:9;16129:18;16121:26;;16193:9;16187:4;16183:20;16179:1;16168:9;16164:17;16157:47;16221:131;16347:4;16221:131;:::i;:::-;16213:139;;16111:248;;;:::o;16365:419::-;16531:4;16569:2;16558:9;16554:18;16546:26;;16618:9;16612:4;16608:20;16604:1;16593:9;16589:17;16582:47;16646:131;16772:4;16646:131;:::i;:::-;16638:139;;16536:248;;;:::o;16790:419::-;16956:4;16994:2;16983:9;16979:18;16971:26;;17043:9;17037:4;17033:20;17029:1;17018:9;17014:17;17007:47;17071:131;17197:4;17071:131;:::i;:::-;17063:139;;16961:248;;;:::o;17215:419::-;17381:4;17419:2;17408:9;17404:18;17396:26;;17468:9;17462:4;17458:20;17454:1;17443:9;17439:17;17432:47;17496:131;17622:4;17496:131;:::i;:::-;17488:139;;17386:248;;;:::o;17640:419::-;17806:4;17844:2;17833:9;17829:18;17821:26;;17893:9;17887:4;17883:20;17879:1;17868:9;17864:17;17857:47;17921:131;18047:4;17921:131;:::i;:::-;17913:139;;17811:248;;;:::o;18065:419::-;18231:4;18269:2;18258:9;18254:18;18246:26;;18318:9;18312:4;18308:20;18304:1;18293:9;18289:17;18282:47;18346:131;18472:4;18346:131;:::i;:::-;18338:139;;18236:248;;;:::o;18490:419::-;18656:4;18694:2;18683:9;18679:18;18671:26;;18743:9;18737:4;18733:20;18729:1;18718:9;18714:17;18707:47;18771:131;18897:4;18771:131;:::i;:::-;18763:139;;18661:248;;;:::o;18915:419::-;19081:4;19119:2;19108:9;19104:18;19096:26;;19168:9;19162:4;19158:20;19154:1;19143:9;19139:17;19132:47;19196:131;19322:4;19196:131;:::i;:::-;19188:139;;19086:248;;;:::o;19340:419::-;19506:4;19544:2;19533:9;19529:18;19521:26;;19593:9;19587:4;19583:20;19579:1;19568:9;19564:17;19557:47;19621:131;19747:4;19621:131;:::i;:::-;19613:139;;19511:248;;;:::o;19765:419::-;19931:4;19969:2;19958:9;19954:18;19946:26;;20018:9;20012:4;20008:20;20004:1;19993:9;19989:17;19982:47;20046:131;20172:4;20046:131;:::i;:::-;20038:139;;19936:248;;;:::o;20190:419::-;20356:4;20394:2;20383:9;20379:18;20371:26;;20443:9;20437:4;20433:20;20429:1;20418:9;20414:17;20407:47;20471:131;20597:4;20471:131;:::i;:::-;20463:139;;20361:248;;;:::o;20615:419::-;20781:4;20819:2;20808:9;20804:18;20796:26;;20868:9;20862:4;20858:20;20854:1;20843:9;20839:17;20832:47;20896:131;21022:4;20896:131;:::i;:::-;20888:139;;20786:248;;;:::o;21040:222::-;21133:4;21171:2;21160:9;21156:18;21148:26;;21184:71;21252:1;21241:9;21237:17;21228:6;21184:71;:::i;:::-;21138:124;;;;:::o;21268:129::-;21302:6;21329:20;;:::i;:::-;21319:30;;21358:33;21386:4;21378:6;21358:33;:::i;:::-;21309:88;;;:::o;21403:75::-;21436:6;21469:2;21463:9;21453:19;;21443:35;:::o;21484:311::-;21561:4;21651:18;21643:6;21640:30;21637:2;;;21673:18;;:::i;:::-;21637:2;21723:4;21715:6;21711:17;21703:25;;21783:4;21777;21773:15;21765:23;;21566:229;;;:::o;21801:98::-;21852:6;21886:5;21880:12;21870:22;;21859:40;;;:::o;21905:99::-;21957:6;21991:5;21985:12;21975:22;;21964:40;;;:::o;22010:147::-;22111:11;22148:3;22133:18;;22123:34;;;;:::o;22163:169::-;22247:11;22281:6;22276:3;22269:19;22321:4;22316:3;22312:14;22297:29;;22259:73;;;;:::o;22338:305::-;22378:3;22397:20;22415:1;22397:20;:::i;:::-;22392:25;;22431:20;22449:1;22431:20;:::i;:::-;22426:25;;22585:1;22517:66;22513:74;22510:1;22507:81;22504:2;;;22591:18;;:::i;:::-;22504:2;22635:1;22632;22628:9;22621:16;;22382:261;;;;:::o;22649:185::-;22689:1;22706:20;22724:1;22706:20;:::i;:::-;22701:25;;22740:20;22758:1;22740:20;:::i;:::-;22735:25;;22779:1;22769:2;;22784:18;;:::i;:::-;22769:2;22826:1;22823;22819:9;22814:14;;22691:143;;;;:::o;22840:348::-;22880:7;22903:20;22921:1;22903:20;:::i;:::-;22898:25;;22937:20;22955:1;22937:20;:::i;:::-;22932:25;;23125:1;23057:66;23053:74;23050:1;23047:81;23042:1;23035:9;23028:17;23024:105;23021:2;;;23132:18;;:::i;:::-;23021:2;23180:1;23177;23173:9;23162:20;;22888:300;;;;:::o;23194:96::-;23231:7;23260:24;23278:5;23260:24;:::i;:::-;23249:35;;23239:51;;;:::o;23296:90::-;23330:7;23373:5;23366:13;23359:21;23348:32;;23338:48;;;:::o;23392:77::-;23429:7;23458:5;23447:16;;23437:32;;;:::o;23475:111::-;23527:7;23556:24;23574:5;23556:24;:::i;:::-;23545:35;;23535:51;;;:::o;23592:126::-;23629:7;23669:42;23662:5;23658:54;23647:65;;23637:81;;;:::o;23724:77::-;23761:7;23790:5;23779:16;;23769:32;;;:::o;23807:156::-;23872:9;23905:52;23951:5;23905:52;:::i;:::-;23892:65;;23882:81;;;:::o;23969:128::-;24034:9;24067:24;24085:5;24067:24;:::i;:::-;24054:37;;24044:53;;;:::o;24103:307::-;24171:1;24181:113;24195:6;24192:1;24189:13;24181:113;;;24280:1;24275:3;24271:11;24265:18;24261:1;24256:3;24252:11;24245:39;24217:2;24214:1;24210:10;24205:15;;24181:113;;;24312:6;24309:1;24306:13;24303:2;;;24392:1;24383:6;24378:3;24374:16;24367:27;24303:2;24152:258;;;;:::o;24416:281::-;24499:27;24521:4;24499:27;:::i;:::-;24491:6;24487:40;24629:6;24617:10;24614:22;24593:18;24581:10;24578:34;24575:62;24572:2;;;24640:18;;:::i;:::-;24572:2;24680:10;24676:2;24669:22;24459:238;;;:::o;24703:233::-;24742:3;24765:24;24783:5;24765:24;:::i;:::-;24756:33;;24811:66;24804:5;24801:77;24798:2;;;24881:18;;:::i;:::-;24798:2;24928:1;24921:5;24917:13;24910:20;;24746:190;;;:::o;24942:100::-;24981:7;25010:26;25030:5;25010:26;:::i;:::-;24999:37;;24989:53;;;:::o;25048:94::-;25087:7;25116:20;25130:5;25116:20;:::i;:::-;25105:31;;25095:47;;;:::o;25148:180::-;25196:77;25193:1;25186:88;25293:4;25290:1;25283:15;25317:4;25314:1;25307:15;25334:180;25382:77;25379:1;25372:88;25479:4;25476:1;25469:15;25503:4;25500:1;25493:15;25520:180;25568:77;25565:1;25558:88;25665:4;25662:1;25655:15;25689:4;25686:1;25679:15;25706:102;25747:6;25798:2;25794:7;25789:2;25782:5;25778:14;25774:28;25764:38;;25754:54;;;:::o;25814:94::-;25847:8;25895:5;25891:2;25887:14;25866:35;;25856:52;;;:::o;25914:225::-;26054:34;26050:1;26042:6;26038:14;26031:58;26123:8;26118:2;26110:6;26106:15;26099:33;26020:119;:::o;26145:177::-;26285:29;26281:1;26273:6;26269:14;26262:53;26251:71;:::o;26328:225::-;26468:34;26464:1;26456:6;26452:14;26445:58;26537:8;26532:2;26524:6;26520:15;26513:33;26434:119;:::o;26559:177::-;26699:29;26695:1;26687:6;26683:14;26676:53;26665:71;:::o;26742:173::-;26882:25;26878:1;26870:6;26866:14;26859:49;26848:67;:::o;26921:220::-;27061:34;27057:1;27049:6;27045:14;27038:58;27130:3;27125:2;27117:6;27113:15;27106:28;27027:114;:::o;27147:180::-;27287:32;27283:1;27275:6;27271:14;27264:56;27253:74;:::o;27333:182::-;27473:34;27469:1;27461:6;27457:14;27450:58;27439:76;:::o;27521:166::-;27661:18;27657:1;27649:6;27645:14;27638:42;27627:60;:::o;27693:179::-;27833:31;27829:1;27821:6;27817:14;27810:55;27799:73;:::o;27878:179::-;28018:31;28014:1;28006:6;28002:14;27995:55;27984:73;:::o;28063:229::-;28203:34;28199:1;28191:6;28187:14;28180:58;28272:12;28267:2;28259:6;28255:15;28248:37;28169:123;:::o;28298:178::-;28438:30;28434:1;28426:6;28422:14;28415:54;28404:72;:::o;28482:122::-;28555:24;28573:5;28555:24;:::i;:::-;28548:5;28545:35;28535:2;;28594:1;28591;28584:12;28535:2;28525:79;:::o;28610:116::-;28680:21;28695:5;28680:21;:::i;:::-;28673:5;28670:32;28660:2;;28716:1;28713;28706:12;28660:2;28650:76;:::o;28732:122::-;28805:24;28823:5;28805:24;:::i;:::-;28798:5;28795:35;28785:2;;28844:1;28841;28834:12;28785:2;28775:79;:::o;28860:152::-;28948:39;28981:5;28948:39;:::i;:::-;28941:5;28938:50;28928:2;;29002:1;28999;28992:12;28928:2;28918:94;:::o;29018:122::-;29091:24;29109:5;29091:24;:::i;:::-;29084:5;29081:35;29071:2;;29130:1;29127;29120:12;29071:2;29061:79;:::o
Swarm Source
ipfs://13a05a3cd1a96f3efc467ab9f76610c15ccaaeddb2140ec5a48f71b9638d9f3d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.