More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x2f1e482052f0c9f8dc99c3247a25cb461f5c594309cef1970f1fba796c313d25 | Unstake | (pending) | 1 hr ago | IN | 0 ETH | (Pending) | |||
0x3c34b421d820d56c0f791c51786fcc156dfa5c3c25d8dd3f84eef3f7be39bf9a | Unstake | (pending) | 3 hrs ago | IN | 0 ETH | (Pending) | |||
Unstake | 20200563 | 21 days ago | IN | 0 ETH | 0.00012617 | ||||
Unstake | 19656470 | 97 days ago | IN | 0 ETH | 0.00105002 | ||||
Unstake | 18850668 | 210 days ago | IN | 0 ETH | 0.00235974 | ||||
Unstake | 17854734 | 349 days ago | IN | 0 ETH | 0.00145453 | ||||
Unstake | 17854708 | 349 days ago | IN | 0 ETH | 0.00185878 | ||||
Unstake | 17854694 | 349 days ago | IN | 0 ETH | 0.00180288 | ||||
Harvest | 17854677 | 349 days ago | IN | 0 ETH | 0.00111095 | ||||
Unstake | 17766203 | 362 days ago | IN | 0 ETH | 0.00281135 | ||||
Unstake | 17597082 | 385 days ago | IN | 0 ETH | 0.00188564 | ||||
Unstake | 17288812 | 429 days ago | IN | 0 ETH | 0.00548468 | ||||
Unstake | 16998479 | 470 days ago | IN | 0 ETH | 0.00252422 | ||||
Stake | 16937393 | 479 days ago | IN | 0 ETH | 0.00356183 | ||||
Unstake | 16929172 | 480 days ago | IN | 0 ETH | 0.00320254 | ||||
Unstake | 16626425 | 522 days ago | IN | 0 ETH | 0.0017829 | ||||
Stake | 16617460 | 524 days ago | IN | 0 ETH | 0.00208556 | ||||
Unstake | 16617334 | 524 days ago | IN | 0 ETH | 0.00227676 | ||||
Stake | 16608865 | 525 days ago | IN | 0 ETH | 0.00194151 | ||||
Stake | 16606246 | 525 days ago | IN | 0 ETH | 0.00199989 | ||||
Unstake | 16605539 | 525 days ago | IN | 0 ETH | 0.00208759 | ||||
Unstake | 16605450 | 525 days ago | IN | 0 ETH | 0.00198242 | ||||
Stake | 16599174 | 526 days ago | IN | 0 ETH | 0.00534447 | ||||
Unstake | 16596171 | 526 days ago | IN | 0 ETH | 0.00259686 | ||||
Stake | 16593129 | 527 days ago | IN | 0 ETH | 0.004573 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
20200563 | 21 days ago | 0 ETH | |||||
20200563 | 21 days ago | 0 ETH | |||||
19656470 | 97 days ago | 0 ETH | |||||
19656470 | 97 days ago | 0 ETH | |||||
19656470 | 97 days ago | 0 ETH | |||||
18850668 | 210 days ago | 0 ETH | |||||
18850668 | 210 days ago | 0 ETH | |||||
18850668 | 210 days ago | 0 ETH | |||||
17854734 | 349 days ago | 0 ETH | |||||
17854734 | 349 days ago | 0 ETH | |||||
17854734 | 349 days ago | 0 ETH | |||||
17854708 | 349 days ago | 0 ETH | |||||
17854708 | 349 days ago | 0 ETH | |||||
17854708 | 349 days ago | 0 ETH | |||||
17854694 | 349 days ago | 0 ETH | |||||
17854694 | 349 days ago | 0 ETH | |||||
17854694 | 349 days ago | 0 ETH | |||||
17854677 | 349 days ago | 0 ETH | |||||
17766203 | 362 days ago | 0 ETH | |||||
17766203 | 362 days ago | 0 ETH | |||||
17766203 | 362 days ago | 0 ETH | |||||
17597082 | 385 days ago | 0 ETH | |||||
17597082 | 385 days ago | 0 ETH | |||||
17597082 | 385 days ago | 0 ETH | |||||
17288812 | 429 days ago | 0 ETH |
Loading...
Loading
Contract Name:
CardKeeper
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-13 */ /** *Submitted for verification at Etherscan.io on 2020-10-18 */ // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { 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; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface RMU { function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data) external; function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external; function setApprovalForAll(address _operator, bool _approved) external; function isApprovedForAll(address _owner, address _operator) external view returns (bool isOperator); function balanceOf(address _owner, uint256 _id) external view returns (uint256); function mintBatch(address user, uint256[] calldata ids, uint256[] calldata amounts) external; function burn( address _account, uint256 _id, uint256 _amount ) external; } interface Toshicash { function totalSupply() external view returns (uint256); function totalClaimed() external view returns (uint256); function addClaimed(uint256 _amount) external; function setClaimed(uint256 _amount) external; function transfer(address receiver, uint numTokens) external returns (bool); function transferFrom(address owner, address buyer, uint numTokens) external returns (bool); function balanceOf(address owner) external view returns (uint256); function mint(address _to, uint256 _amount) external; function burn(address _account, uint256 value) external; } /** * This contract was forked from Rope's VendingMachine contract: * https://etherscan.io/address/0x4c842514fb55323acc51aa575ec4b7d1be1e0694#code * * All code attribution goes to Rope and the Rope development team: * https://rope.lol */ contract CardKeeper is Ownable { using SafeMath for uint256; struct CardSet { uint256[] cardIds; uint256 toshicashPerDayPerCard; } RMU public ropeMaker; Toshicash public toshicash; uint256[] public cardSetList; uint256 public highestCardId; mapping (uint256 => CardSet) public cardSets; mapping (uint256 => uint256) public cardToSetMap; mapping (address => mapping(uint256 => uint256)) public userCards; mapping (address => uint256) public userLastUpdate; mapping(uint256 => mapping(address => UserInfoERC1155)) public userInfoERC1155; mapping(uint256 => uint256) public eRC1155MultiplierIds; mapping(address => ERC1155MultiplierUserInfo) public userMultiplier; event Stake(address indexed user, uint256[] cardIds, uint256[] amounts); event Unstake(address indexed user, uint256[] cardIds, uint256[] amounts); event Harvest(address indexed user, uint256 amount); struct UserInfoERC1155 { uint256 amountInPool; /* * At any point in time, the amount of ToshiCoin earned by a user waiting to be claimed is: * * Pending claim = (user.amountInPool * pool.coinsEarnedPerToken) - user.coinsReceivedToDate * * Whenever a user deposits or withdraws tokens to a pool, the following occurs: * 1. The pool's `coinsEarnedPerToken` is rebalanced to account for the new shares in the pool. * 2. The `lastRewardBlock` is updated to the latest block. * 3. The user receives the pending claim sent to their address. * 4. The user's `amountInPool` and `coinsReceivedToDate` get updated for this pool. */ } struct ERC1155Multiplier { uint256 id; uint256 percentBoost; } struct ERC1155MultiplierUserInfo { uint256 multiplier; uint256 total; } ERC1155Multiplier[] public eRC1155Multiplier; constructor(RMU _ropeMakerAddr, Toshicash _toshicashAddr) public { ropeMaker = _ropeMakerAddr; toshicash = _toshicashAddr; } // Utility function to check if a value is inside an array function _isInArray(uint256 _value, uint256[] memory _array) internal pure returns(bool) { uint256 length = _array.length; for (uint256 i = 0; i < length; ++i) { if (_array[i] == _value) { return true; } } return false; } // Index of the value in the return array is the cardId, value is whether card is staked or not function getCardsStakedOfAddress(address _user) public view returns(uint256[] memory) { uint256[] memory cardsStaked = new uint256[](highestCardId + 1); for (uint256 i = 0; i < highestCardId + 1; ++i) { cardsStaked[i] = userCards[_user][i]; } return cardsStaked; } // Returns the list of cardIds which are part of a set function getCardIdListOfSet(uint256 _setId) external view returns(uint256[] memory) { return cardSets[_setId].cardIds; } function addCardSet(uint256 _setId, uint256[] memory _cardIds, uint256 _toshicashPerDayPerCard) public onlyOwner { uint256 length = _cardIds.length; for (uint256 i = 0; i < length; ++i) { uint256 cardId = _cardIds[i]; if (cardId > highestCardId) { highestCardId = cardId; } // Check all cards to assign arent already part of another set require(cardToSetMap[cardId] == 0, "Card already assigned to a set"); // Assign to set cardToSetMap[cardId] = _setId; } if (_isInArray(_setId, cardSetList) == false) { cardSetList.push(_setId); } cardSets[_setId] = CardSet({ cardIds: _cardIds, toshicashPerDayPerCard: _toshicashPerDayPerCard }); } // Returns the total toshicash pending for a given address // Can include the bonus from toshicashBooster or not function totalPendingToshicashOfAddress(address _user, bool _includeToshicashBooster) public view returns (uint256) { uint256 totalToshicashPerDay = 0; uint256 length = cardSetList.length; for (uint256 i = 0; i < length; ++i) { uint256 setId = cardSetList[i]; CardSet storage set = cardSets[setId]; uint256 cardLength = set.cardIds.length; uint256 setToshicashPerDay = 0; for (uint256 j = 0; j < cardLength; ++j) { setToshicashPerDay = setToshicashPerDay.add(set.toshicashPerDayPerCard.mul(userCards[_user][set.cardIds[j]])); } totalToshicashPerDay = totalToshicashPerDay.add(setToshicashPerDay); } // Apply toshicashBooster bonus if (_includeToshicashBooster) { uint256 toAdd = 0; totalToshicashPerDay = totalToshicashPerDay.add(toAdd); } uint256 lastUpdate = userLastUpdate[_user]; uint256 blockTime = block.timestamp; return blockTime.sub(lastUpdate).mul(totalToshicashPerDay.div(86400)); } ////////////////////////////// ////////////////////////////// ////////////////////////////// // Set manually the highestCardId, in case there has been a mistake while adding a set // (This value is used to know the range in which iterate to get the list of staked cards for an address) function setHighestCardId(uint256 _highestId) public onlyOwner { require(_highestId > 0); highestCardId = _highestId; } // Set the toshicashPerDayPerCard value for a list of sets function setToshicashRateOfSets(uint256[] memory _setIds, uint256[] memory _toshicashPerDayPerCard) public onlyOwner { require(_setIds.length == _toshicashPerDayPerCard.length, "_setId and _toshicashPerDayPerCard have different length"); for (uint256 i = 0; i < _setIds.length; ++i) { require(cardSets[_setIds[i]].cardIds.length > 0, "Set is empty"); cardSets[_setIds[i]].toshicashPerDayPerCard = _toshicashPerDayPerCard[i]; } } function harvest() public { ERC1155MultiplierUserInfo storage multiplier = userMultiplier[msg.sender]; uint256 pendingToshicash = totalPendingToshicashOfAddress(msg.sender, true); userLastUpdate[msg.sender] = block.timestamp; pendingToshicash = pendingToshicash.add( pendingToshicash.mul(multiplier.multiplier).div( 100)); if (pendingToshicash > 0) { toshicash.mint(msg.sender, pendingToshicash); } emit Harvest(msg.sender, pendingToshicash); } function stake(uint256[] memory _cardIds, uint256[] memory _cardAmounts) public { require(_cardIds.length > 0, "_cardIds array empty"); harvest(); for (uint256 i = 0; i < _cardIds.length; ++i) { require(cardToSetMap[_cardIds[i]] != 0, "Card is not part of any set"); } ropeMaker.mintBatch(address(this), _cardIds, _cardAmounts); for (uint256 i = 0; i < _cardIds.length; ++i) { userCards[msg.sender][_cardIds[i]] = userCards[msg.sender][_cardIds[i]].add(_cardAmounts[i]); ropeMaker.burn(msg.sender, _cardIds[i], _cardAmounts[i]); } emit Stake(msg.sender, _cardIds, _cardAmounts); } function unstake(uint256[] memory _cardIds, uint256[] memory _cardAmounts) public { require(_cardIds.length > 0, "_cardIds array empty"); harvest(); for (uint256 i = 0; i < _cardIds.length; ++i) { require(userCards[msg.sender][_cardIds[i]] >= _cardAmounts[i], "Card not staked"); userCards[msg.sender][_cardIds[i]] = userCards[msg.sender][_cardIds[i]].sub(_cardAmounts[i]); ropeMaker.burn(address(this), _cardIds[i], _cardAmounts[i]); } ropeMaker.mintBatch(msg.sender, _cardIds, _cardAmounts); emit Unstake(msg.sender, _cardIds, _cardAmounts); } // Withdraw without rewards function emergencyUnstake(uint256[] memory _cardIds, uint256[] memory _cardAmounts) public { userLastUpdate[msg.sender] = block.timestamp; uint256 length = _cardIds.length; for (uint256 i = 0; i < length; ++i) { uint256 cardId = _cardIds[i]; require(userCards[msg.sender][cardId] >= _cardAmounts[i], "Card not staked"); userCards[msg.sender][cardId] = userCards[msg.sender][cardId].sub(_cardAmounts[i]); } ropeMaker.safeBatchTransferFrom(address(this), msg.sender, _cardIds, _cardAmounts, ""); } function userMultiplierValue(address user) public view returns (uint256) { return userMultiplier[msg.sender].multiplier; } function userERC155StakedTotal(address user) public view returns (uint256) { return userMultiplier[msg.sender].total; } function addERC1155Multiplier(uint256 _id, uint256 _percentBoost) public onlyOwner { require( eRC1155MultiplierIds[_id] == 0, "ToshiCashFarm: Cannot add duplicate Toshimon ERC1155" ); eRC1155Multiplier.push( ERC1155Multiplier({ id:_id, percentBoost: _percentBoost }) ); eRC1155MultiplierIds[_id] = 1; } /** * @dev Deposit tokens into a pool and claim pending reward. */ function depositERC1155(uint256 poolId, uint256 quantity) public { ERC1155Multiplier storage erc1155 = eRC1155Multiplier[poolId]; UserInfoERC1155 storage user = userInfoERC1155[poolId][msg.sender]; ERC1155MultiplierUserInfo storage multiplier = userMultiplier[msg.sender]; uint256[] memory cardid = new uint256[](1); uint256[] memory cardamount = new uint256[](1); cardid[0] = erc1155.id; cardamount[0] = quantity; harvest(); ropeMaker.burn(msg.sender, erc1155.id, quantity); ropeMaker.mintBatch(address(this), cardid, cardamount); user.amountInPool = user.amountInPool.add(quantity); multiplier.multiplier = multiplier.multiplier.add(erc1155.percentBoost.mul(quantity)); multiplier.total = multiplier.total.add(erc1155.percentBoost.mul(quantity)); if(multiplier.multiplier > 100){ multiplier.multiplier = 100; } } /** * @dev Deposit tokens into a pool and claim pending reward. */ function withdrawERC1155(uint256 poolId, uint256 quantity) public { ERC1155Multiplier storage erc1155 = eRC1155Multiplier[poolId]; UserInfoERC1155 storage user = userInfoERC1155[poolId][msg.sender]; ERC1155MultiplierUserInfo storage multiplier = userMultiplier[msg.sender]; require( user.amountInPool >= quantity, "ToshiCoinFarm: User does not have enough NFTS to withdraw from this pool" ); harvest(); user.amountInPool = user.amountInPool.sub(quantity); multiplier.total = multiplier.total.sub(erc1155.percentBoost.mul(quantity)); multiplier.multiplier = multiplier.total.mul(quantity); if(multiplier.multiplier > 100){ multiplier.multiplier = 100; } ropeMaker.burn(address(this), erc1155.id, quantity); uint256[] memory cardid = new uint256[](1); uint256[] memory cardamount = new uint256[](1); cardid[0] = erc1155.id; cardamount[0] = quantity; ropeMaker.mintBatch(msg.sender, cardid, cardamount); } ///////// ///////// ///////// /** * @notice Handle the receipt of a single ERC1155 token type * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value MUST result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeTransferFrom` function * @param _from The address which previously owned the token * @param _id The id of the token being transferred * @param _amount The amount of tokens being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` */ function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data) external returns(bytes4) { return 0xf23a6e61; } /** * @notice Handle the receipt of multiple ERC1155 token types * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value WILL result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeBatchTransferFrom` function * @param _from The address which previously owned the token * @param _ids An array containing ids of each token being transferred * @param _amounts An array containing amounts of each token being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` */ function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external returns(bytes4) { return 0xbc197c81; } /** * @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types. * @param interfaceID The ERC-165 interface ID that is queried for support.s * @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface. * This function MUST NOT consume more than 5,000 gas. * @return Wheter ERC-165 or ERC1155TokenReceiver interfaces are supported. */ function supportsInterface(bytes4 interfaceID) external view returns (bool) { return interfaceID == 0x01ffc9a7 || // ERC-165 support (i.e. `bytes4(keccak256('supportsInterface(bytes4)'))`). interfaceID == 0x4e2312e0; // ERC-1155 `ERC1155TokenReceiver` support (i.e. `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")) ^ bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`). } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract RMU","name":"_ropeMakerAddr","type":"address"},{"internalType":"contract Toshicash","name":"_toshicashAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"cardIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"cardIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Unstake","type":"event"},{"inputs":[{"internalType":"uint256","name":"_setId","type":"uint256"},{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256","name":"_toshicashPerDayPerCard","type":"uint256"}],"name":"addCardSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_percentBoost","type":"uint256"}],"name":"addERC1155Multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cardSetList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cardSets","outputs":[{"internalType":"uint256","name":"toshicashPerDayPerCard","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cardToSetMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"depositERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"eRC1155Multiplier","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"percentBoost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"eRC1155MultiplierIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_cardAmounts","type":"uint256[]"}],"name":"emergencyUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_setId","type":"uint256"}],"name":"getCardIdListOfSet","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCardsStakedOfAddress","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"highestCardId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ropeMaker","outputs":[{"internalType":"contract RMU","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_highestId","type":"uint256"}],"name":"setHighestCardId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_setIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_toshicashPerDayPerCard","type":"uint256[]"}],"name":"setToshicashRateOfSets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_cardAmounts","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toshicash","outputs":[{"internalType":"contract Toshicash","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_includeToshicashBooster","type":"bool"}],"name":"totalPendingToshicashOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_cardAmounts","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userCards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userERC155StakedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfoERC1155","outputs":[{"internalType":"uint256","name":"amountInPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userLastUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userMultiplier","outputs":[{"internalType":"uint256","name":"multiplier","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userMultiplierValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"withdrawERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200409638038062004096833981810160405260408110156200003757600080fd5b8101908080519060200190929190805190602001909291905050506000620000646200018c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000194565b600033905090565b613ef280620001a46000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063bc197c81116100ad578063eb6494611161007c578063eb64946114610f7e578063ed48193e14610fc0578063f23a6e611461108c578063f2fde38b1461118c578063f8d9be68146111d057610206565b8063bc197c8114610be2578063ddcf489314610d78578063e683ad4414610dd0578063ea6e491e14610f1c57610206565b8063b1a03b6b116100e9578063b1a03b6b146108a9578063b1adb08314610908578063b48067db14610a54578063b4f7901914610a9657610206565b80638da5cb5b146106c75780638f32d59b146106fb5780639c28cd211461071b578063aa31f0531461075d57610206565b80634641257d1161019d5780635f0b3a8d1161016c5780635f0b3a8d14610555578063631667dd1461058d5780636585fe98146105d6578063715018a61461063a57806383fff1ab1461064457610206565b80634641257d1461047957806346716e62146104835780634eb84bff146104c55780635be56ac7146104fd57610206565b80632935b2a8116101d95780632935b2a81461039d5780633cfb3f73146103d5578063419920921461042d57806341d83e7a1461044b57610206565b806301ffc9a71461020b5780630ad6e8f71461026e578063172b6b62146102a257806327a1cdab14610304575b600080fd5b6102566004803603602081101561022157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611204565b60405180821515815260200191505060405180910390f35b610276611266565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee600480360360408110156102b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128c565b6040518082815260200191505060405180910390f35b6103466004803603602081101561031a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038957808201518184015260208101905061036e565b505050509050019250505060405180910390f35b6103d3600480360360408110156103b357600080fd5b810190808035906020019092919080359060200190929190505050611390565b005b610417600480360360208110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b4565b6040518082815260200191505060405180910390f35b6104356117cc565b6040518082815260200191505060405180910390f35b6104776004803603602081101561046157600080fd5b81019080803590602001909291905050506117d2565b005b610481611863565b005b6104af6004803603602081101561049957600080fd5b8101908080359060200190929190505050611a3e565b6040518082815260200191505060405180910390f35b6104fb600480360360408110156104db57600080fd5b810190808035906020019092919080359060200190929190505050611a5c565b005b61053f6004803603602081101561051357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec7565b6040518082815260200191505060405180910390f35b61058b6004803603604081101561056b57600080fd5b810190808035906020019092919080359060200190929190505050611f13565b005b6105b9600480360360208110156105a357600080fd5b810190808035906020019092919050505061206c565b604051808381526020018281526020019250505060405180910390f35b610624600480360360408110156105ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061209d565b6040518082815260200191505060405180910390f35b610642612277565b005b6106706004803603602081101561065a57600080fd5b81019080803590602001909291905050506123af565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b3578082015181840152602081019050610698565b505050509050019250505060405180910390f35b6106cf61241d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610703612446565b60405180821515815260200191505060405180910390f35b6107476004803603602081101561073157600080fd5b81019080803590602001909291905050506124a4565b6040518082815260200191505060405180910390f35b6108a76004803603604081101561077357600080fd5b810190808035906020019064010000000081111561079057600080fd5b8201836020820111156107a257600080fd5b803590602001918460208302840111640100000000831117156107c457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506124bc565b005b6108eb600480360360208110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612845565b604051808381526020018281526020019250505060405180910390f35b610a526004803603604081101561091e57600080fd5b810190808035906020019064010000000081111561093b57600080fd5b82018360208201111561094d57600080fd5b8035906020019184602083028401116401000000008311171561096f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156109cf57600080fd5b8201836020820111156109e157600080fd5b80359060200191846020830284011164010000000083111715610a0357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612869565b005b610a8060048036036020811015610a6a57600080fd5b8101908080359060200190929190505050612dc6565b6040518082815260200191505060405180910390f35b610be060048036036040811015610aac57600080fd5b8101908080359060200190640100000000811115610ac957600080fd5b820183602082011115610adb57600080fd5b80359060200191846020830284011164010000000083111715610afd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b5d57600080fd5b820183602082011115610b6f57600080fd5b80359060200191846020830284011164010000000083111715610b9157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612de7565b005b610d43600480360360a0811015610bf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c5557600080fd5b820183602082011115610c6757600080fd5b80359060200191846020830284011164010000000083111715610c8957600080fd5b909192939192939080359060200190640100000000811115610caa57600080fd5b820183602082011115610cbc57600080fd5b80359060200191846020830284011164010000000083111715610cde57600080fd5b909192939192939080359060200190640100000000811115610cff57600080fd5b820183602082011115610d1157600080fd5b80359060200191846001830284011164010000000083111715610d3357600080fd5b9091929391929390505050612fba565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b610dba60048036036020811015610d8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b610f1a60048036036040811015610de657600080fd5b8101908080359060200190640100000000811115610e0357600080fd5b820183602082011115610e1557600080fd5b80359060200191846020830284011164010000000083111715610e3757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e9757600080fd5b820183602082011115610ea957600080fd5b80359060200191846020830284011164010000000083111715610ecb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061301e565b005b610f6860048036036040811015610f3257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613544565b6040518082815260200191505060405180910390f35b610faa60048036036020811015610f9457600080fd5b810190808035906020019092919050505061356f565b6040518082815260200191505060405180910390f35b61108a60048036036060811015610fd657600080fd5b810190808035906020019092919080359060200190640100000000811115610ffd57600080fd5b82018360208201111561100f57600080fd5b8035906020019184602083028401116401000000008311171561103157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050613587565b005b611157600480360360a08110156110a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561111357600080fd5b82018360208201111561112557600080fd5b8035906020019184600183028401116401000000008311171561114757600080fd5b90919293919293905050506137d2565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6111ce600480360360208110156111a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137e8565b005b6111d861386e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061125f5750634e2312e060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60608060016004540167ffffffffffffffff811180156112d057600080fd5b506040519080825280602002602001820160405280156112ff5781602001602082028036833780820191505090505b50905060005b60016004540181101561138657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000205482828151811061136f57fe5b602002602001018181525050806001019050611305565b5080915050919050565b6000600c838154811061139f57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506060600167ffffffffffffffff8111801561146057600080fd5b5060405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff811180156114ac57600080fd5b506040519080825280602002602001820160405280156114db5781602001602082028036833780820191505090505b5090508460000154826000815181106114f057fe5b602002602001018181525050858160008151811061150a57fe5b60200260200101818152505061151e611863565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338760000154896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561168857808201518184015260208101905061166d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116ca5780820151818401526020810190506116af565b5050505090500195505050505050600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050505061172186856000015461389490919063ffffffff16565b846000018190555061175661174387876001015461391c90919063ffffffff16565b846000015461389490919063ffffffff16565b836000018190555061178b61177887876001015461391c90919063ffffffff16565b846001015461389490919063ffffffff16565b83600101819055506064836000015411156117ab57606483600001819055505b50505050505050565b60086020528060005260406000206000915090505481565b60045481565b6117da612446565b61184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811161185957600080fd5b8060048190555050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006118b333600161209d565b905042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611935611926606461191885600001548561391c90919063ffffffff16565b6139a290919063ffffffff16565b8261389490919063ffffffff16565b905060008111156119ec57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119d357600080fd5b505af11580156119e7573d6000803e3d6000fd5b505050505b3373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040518082815260200191505060405180910390a25050565b60056020528060005260406000206000915090508060010154905081565b6000600c8381548110611a6b57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508382600001541015611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526048815260200180613e3d6048913960600191505060405180910390fd5b611b77611863565b611b8e8483600001546139ec90919063ffffffff16565b8260000181905550611bc3611bb085856001015461391c90919063ffffffff16565b82600101546139ec90919063ffffffff16565b8160010181905550611be284826001015461391c90919063ffffffff16565b8160000181905550606481600001541115611c0257606481600001819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca308560000154876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b505050506060600167ffffffffffffffff81118015611cd357600080fd5b50604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff81118015611d1f57600080fd5b50604051908082528060200260200182016040528015611d4e5781602001602082028036833780820191505090505b509050846000015482600081518110611d6357fe5b6020026020010181815250508581600081518110611d7d57fe5b602002602001018181525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611e3c578082015181840152602081019050611e21565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611e7e578082015181840152602081019050611e63565b5050505090500195505050505050600060405180830381600087803b158015611ea657600080fd5b505af1158015611eba573d6000803e3d6000fd5b5050505050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b611f1b612446565b611f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008481526020019081526020016000205414611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613dc26034913960400191505060405180910390fd5b600c6040518060400160405280848152602001838152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506001600a6000848152602001908152602001600020819055505050565b600c818154811061207957fe5b90600052602060002090600202016000915090508060000154908060010154905082565b600080600090506000600380549050905060005b818110156121c8576000600382815481106120c857fe5b9060005260206000200154905060006005600083815260200190815260200160002090506000816000018054905090506000805b828110156121a357612196612187600760008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087600001858154811061215a57fe5b9060005260206000200154815260200190815260200160002054866001015461391c90919063ffffffff16565b8361389490919063ffffffff16565b91508060010190506120fc565b506121b7818861389490919063ffffffff16565b9650505050508060010190506120b1565b5083156121e85760006121e4818461389490919063ffffffff16565b9250505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905061226b61224a62015180866139a290919063ffffffff16565b61225d84846139ec90919063ffffffff16565b61391c90919063ffffffff16565b94505050505092915050565b61227f612446565b6122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606005600083815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561241157602002820191906000526020600020905b8154815260200190600101908083116123fd575b50505050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612488613a36565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60066020528060005260406000206000915090505481565b42600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008251905060005b818110156126d857600084828151811061251f57fe5b6020026020010151905083828151811061253557fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020541015612602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b61267884838151811061261157fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555050806001019050612509565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6303386866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b838110156127ad578082015181840152602081019050612792565b50505050905001848103835285818151815260200191508051906020019060200280838360005b838110156127ef5780820151818401526020810190506127d4565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50505050505050565b600b6020528060005260406000206000915090508060000154908060010154905082565b60008251116128e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b6128e8611863565b60005b8251811015612bb45781818151811061290057fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061295557fe5b602002602001015181526020019081526020016000205410156129e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b612a698282815181106129ef57fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868581518110612a4457fe5b60200260200101518152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110612ab657fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca30858481518110612b1b57fe5b6020026020010151858581518110612b2f57fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015612b9157600080fd5b505af1158015612ba5573d6000803e3d6000fd5b505050508060010190506128eb565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612c68578082015181840152602081019050612c4d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612caa578082015181840152602081019050612c8f565b5050505090500195505050505050600060405180830381600087803b158015612cd257600080fd5b505af1158015612ce6573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f5cca7afe5a35c97edc51b2536c4f4ba51412a440d622a712593a8063e2fc28598383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612d6b578082015181840152602081019050612d50565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612dad578082015181840152602081019050612d92565b5050505090500194505050505060405180910390a25050565b60038181548110612dd357fe5b906000526020600020016000915090505481565b612def612446565b612e61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613e856038913960400191505060405180910390fd5b60005b8251811015612fb557600060056000858481518110612ed957fe5b602002602001015181526020019081526020016000206000018054905011612f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f53657420697320656d707479000000000000000000000000000000000000000081525060200191505060405180910390fd5b818181518110612f7557fe5b602002602001015160056000858481518110612f8d57fe5b6020026020010151815260200190815260200160002060010181905550806001019050612ebe565b505050565b600063bc197c8160e01b905098975050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000825111613095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b61309d611863565b60005b8251811015613151576000600660008584815181106130bb57fe5b60200260200101518152602001908152602001600020541415613146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43617264206973206e6f742070617274206f6620616e7920736574000000000081525060200191505060405180910390fd5b8060010190506130a0565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156132055780820151818401526020810190506131ea565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561324757808201518184015260208101905061322c565b5050505090500195505050505050600060405180830381600087803b15801561326f57600080fd5b505af1158015613283573d6000803e3d6000fd5b5050505060005b82518110156134675761331c8282815181106132a257fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008685815181106132f757fe5b602002602001015181526020019081526020016000205461389490919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061336957fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338584815181106133ce57fe5b60200260200101518585815181106133e257fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561344457600080fd5b505af1158015613458573d6000803e3d6000fd5b5050505080600101905061328a565b503373ffffffffffffffffffffffffffffffffffffffff167f1c4fe6d0791be96830cfd51a7862e28509381800aadaf1591c1fd27c836910f38383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156134e95780820151818401526020810190506134ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561352b578082015181840152602081019050613510565b5050505090500194505050505060405180910390a25050565b6009602052816000526040600020602052806000526040600020600091509150508060000154905081565b600a6020528060005260406000206000915090505481565b61358f612446565b613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008251905060005b818110156136e957600084828151811061362057fe5b6020026020010151905060045481111561363c57806004819055505b60006006600083815260200190815260200160002054146136c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4361726420616c72656164792061737369676e656420746f206120736574000081525060200191505060405180910390fd5b8560066000838152602001908152602001600020819055505080600101905061360a565b506000151561374885600380548060200260200160405190810160405280929190818152602001828054801561373e57602002820191906000526020600020905b81548152602001906001019080831161372a575b5050505050613a3e565b1515141561377a5760038490806001815401808255809150506001900390600052602060002001600090919091909150555b6040518060400160405280848152602001838152506005600086815260200190815260200160002060008201518160000190805190602001906137be929190613d57565b506020820151816001015590505050505050565b600063f23a6e6160e01b90509695505050505050565b6137f0612446565b613862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61386b81613a8e565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015613912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561392f576000905061399c565b600082840290508284828161394057fe5b0414613997576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e1c6021913960400191505060405180910390fd5b809150505b92915050565b60006139e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bd1565b905092915050565b6000613a2e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c97565b905092915050565b600033905090565b6000808251905060005b81811015613a815784848281518110613a5d57fe5b60200260200101511415613a7657600192505050613a88565b806001019050613a48565b5060009150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613df66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c42578082015181840152602081019050613c27565b50505050905090810190601f168015613c6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613c8957fe5b049050809150509392505050565b6000838311158290613d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d09578082015181840152602081019050613cee565b50505050905090810190601f168015613d365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054828255906000526020600020908101928215613d93579160200282015b82811115613d92578251825591602001919060010190613d77565b5b509050613da09190613da4565b5090565b5b80821115613dbd576000816000905550600101613da5565b509056fe546f736869436173684661726d3a2043616e6e6f7420616464206475706c696361746520546f7368696d6f6e20455243313135354f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f736869436f696e4661726d3a205573657220646f6573206e6f74206861766520656e6f756768204e46545320746f2077697468647261772066726f6d207468697320706f6f6c5f736574496420616e64205f746f7368696361736850657244617950657243617264206861766520646966666572656e74206c656e677468a26469706673582212203e058f95e356a12c22794a8275a099c204bf416992cb27f1c2c86fddc33ce27764736f6c634300060c0033000000000000000000000000d2d2a84f0eb587f70e181a0c4b252c2c053f80cb000000000000000000000000b6e0b9edc711c89b9259e5ff04af48255c500ead
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063bc197c81116100ad578063eb6494611161007c578063eb64946114610f7e578063ed48193e14610fc0578063f23a6e611461108c578063f2fde38b1461118c578063f8d9be68146111d057610206565b8063bc197c8114610be2578063ddcf489314610d78578063e683ad4414610dd0578063ea6e491e14610f1c57610206565b8063b1a03b6b116100e9578063b1a03b6b146108a9578063b1adb08314610908578063b48067db14610a54578063b4f7901914610a9657610206565b80638da5cb5b146106c75780638f32d59b146106fb5780639c28cd211461071b578063aa31f0531461075d57610206565b80634641257d1161019d5780635f0b3a8d1161016c5780635f0b3a8d14610555578063631667dd1461058d5780636585fe98146105d6578063715018a61461063a57806383fff1ab1461064457610206565b80634641257d1461047957806346716e62146104835780634eb84bff146104c55780635be56ac7146104fd57610206565b80632935b2a8116101d95780632935b2a81461039d5780633cfb3f73146103d5578063419920921461042d57806341d83e7a1461044b57610206565b806301ffc9a71461020b5780630ad6e8f71461026e578063172b6b62146102a257806327a1cdab14610304575b600080fd5b6102566004803603602081101561022157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611204565b60405180821515815260200191505060405180910390f35b610276611266565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee600480360360408110156102b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128c565b6040518082815260200191505060405180910390f35b6103466004803603602081101561031a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038957808201518184015260208101905061036e565b505050509050019250505060405180910390f35b6103d3600480360360408110156103b357600080fd5b810190808035906020019092919080359060200190929190505050611390565b005b610417600480360360208110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b4565b6040518082815260200191505060405180910390f35b6104356117cc565b6040518082815260200191505060405180910390f35b6104776004803603602081101561046157600080fd5b81019080803590602001909291905050506117d2565b005b610481611863565b005b6104af6004803603602081101561049957600080fd5b8101908080359060200190929190505050611a3e565b6040518082815260200191505060405180910390f35b6104fb600480360360408110156104db57600080fd5b810190808035906020019092919080359060200190929190505050611a5c565b005b61053f6004803603602081101561051357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec7565b6040518082815260200191505060405180910390f35b61058b6004803603604081101561056b57600080fd5b810190808035906020019092919080359060200190929190505050611f13565b005b6105b9600480360360208110156105a357600080fd5b810190808035906020019092919050505061206c565b604051808381526020018281526020019250505060405180910390f35b610624600480360360408110156105ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061209d565b6040518082815260200191505060405180910390f35b610642612277565b005b6106706004803603602081101561065a57600080fd5b81019080803590602001909291905050506123af565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b3578082015181840152602081019050610698565b505050509050019250505060405180910390f35b6106cf61241d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610703612446565b60405180821515815260200191505060405180910390f35b6107476004803603602081101561073157600080fd5b81019080803590602001909291905050506124a4565b6040518082815260200191505060405180910390f35b6108a76004803603604081101561077357600080fd5b810190808035906020019064010000000081111561079057600080fd5b8201836020820111156107a257600080fd5b803590602001918460208302840111640100000000831117156107c457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506124bc565b005b6108eb600480360360208110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612845565b604051808381526020018281526020019250505060405180910390f35b610a526004803603604081101561091e57600080fd5b810190808035906020019064010000000081111561093b57600080fd5b82018360208201111561094d57600080fd5b8035906020019184602083028401116401000000008311171561096f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156109cf57600080fd5b8201836020820111156109e157600080fd5b80359060200191846020830284011164010000000083111715610a0357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612869565b005b610a8060048036036020811015610a6a57600080fd5b8101908080359060200190929190505050612dc6565b6040518082815260200191505060405180910390f35b610be060048036036040811015610aac57600080fd5b8101908080359060200190640100000000811115610ac957600080fd5b820183602082011115610adb57600080fd5b80359060200191846020830284011164010000000083111715610afd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b5d57600080fd5b820183602082011115610b6f57600080fd5b80359060200191846020830284011164010000000083111715610b9157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612de7565b005b610d43600480360360a0811015610bf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c5557600080fd5b820183602082011115610c6757600080fd5b80359060200191846020830284011164010000000083111715610c8957600080fd5b909192939192939080359060200190640100000000811115610caa57600080fd5b820183602082011115610cbc57600080fd5b80359060200191846020830284011164010000000083111715610cde57600080fd5b909192939192939080359060200190640100000000811115610cff57600080fd5b820183602082011115610d1157600080fd5b80359060200191846001830284011164010000000083111715610d3357600080fd5b9091929391929390505050612fba565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b610dba60048036036020811015610d8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b610f1a60048036036040811015610de657600080fd5b8101908080359060200190640100000000811115610e0357600080fd5b820183602082011115610e1557600080fd5b80359060200191846020830284011164010000000083111715610e3757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e9757600080fd5b820183602082011115610ea957600080fd5b80359060200191846020830284011164010000000083111715610ecb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061301e565b005b610f6860048036036040811015610f3257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613544565b6040518082815260200191505060405180910390f35b610faa60048036036020811015610f9457600080fd5b810190808035906020019092919050505061356f565b6040518082815260200191505060405180910390f35b61108a60048036036060811015610fd657600080fd5b810190808035906020019092919080359060200190640100000000811115610ffd57600080fd5b82018360208201111561100f57600080fd5b8035906020019184602083028401116401000000008311171561103157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050613587565b005b611157600480360360a08110156110a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561111357600080fd5b82018360208201111561112557600080fd5b8035906020019184600183028401116401000000008311171561114757600080fd5b90919293919293905050506137d2565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6111ce600480360360208110156111a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137e8565b005b6111d861386e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061125f5750634e2312e060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60608060016004540167ffffffffffffffff811180156112d057600080fd5b506040519080825280602002602001820160405280156112ff5781602001602082028036833780820191505090505b50905060005b60016004540181101561138657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000205482828151811061136f57fe5b602002602001018181525050806001019050611305565b5080915050919050565b6000600c838154811061139f57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506060600167ffffffffffffffff8111801561146057600080fd5b5060405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff811180156114ac57600080fd5b506040519080825280602002602001820160405280156114db5781602001602082028036833780820191505090505b5090508460000154826000815181106114f057fe5b602002602001018181525050858160008151811061150a57fe5b60200260200101818152505061151e611863565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338760000154896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561168857808201518184015260208101905061166d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116ca5780820151818401526020810190506116af565b5050505090500195505050505050600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050505061172186856000015461389490919063ffffffff16565b846000018190555061175661174387876001015461391c90919063ffffffff16565b846000015461389490919063ffffffff16565b836000018190555061178b61177887876001015461391c90919063ffffffff16565b846001015461389490919063ffffffff16565b83600101819055506064836000015411156117ab57606483600001819055505b50505050505050565b60086020528060005260406000206000915090505481565b60045481565b6117da612446565b61184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811161185957600080fd5b8060048190555050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006118b333600161209d565b905042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611935611926606461191885600001548561391c90919063ffffffff16565b6139a290919063ffffffff16565b8261389490919063ffffffff16565b905060008111156119ec57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119d357600080fd5b505af11580156119e7573d6000803e3d6000fd5b505050505b3373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040518082815260200191505060405180910390a25050565b60056020528060005260406000206000915090508060010154905081565b6000600c8381548110611a6b57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508382600001541015611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526048815260200180613e3d6048913960600191505060405180910390fd5b611b77611863565b611b8e8483600001546139ec90919063ffffffff16565b8260000181905550611bc3611bb085856001015461391c90919063ffffffff16565b82600101546139ec90919063ffffffff16565b8160010181905550611be284826001015461391c90919063ffffffff16565b8160000181905550606481600001541115611c0257606481600001819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca308560000154876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b505050506060600167ffffffffffffffff81118015611cd357600080fd5b50604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff81118015611d1f57600080fd5b50604051908082528060200260200182016040528015611d4e5781602001602082028036833780820191505090505b509050846000015482600081518110611d6357fe5b6020026020010181815250508581600081518110611d7d57fe5b602002602001018181525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611e3c578082015181840152602081019050611e21565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611e7e578082015181840152602081019050611e63565b5050505090500195505050505050600060405180830381600087803b158015611ea657600080fd5b505af1158015611eba573d6000803e3d6000fd5b5050505050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b611f1b612446565b611f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008481526020019081526020016000205414611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613dc26034913960400191505060405180910390fd5b600c6040518060400160405280848152602001838152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506001600a6000848152602001908152602001600020819055505050565b600c818154811061207957fe5b90600052602060002090600202016000915090508060000154908060010154905082565b600080600090506000600380549050905060005b818110156121c8576000600382815481106120c857fe5b9060005260206000200154905060006005600083815260200190815260200160002090506000816000018054905090506000805b828110156121a357612196612187600760008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087600001858154811061215a57fe5b9060005260206000200154815260200190815260200160002054866001015461391c90919063ffffffff16565b8361389490919063ffffffff16565b91508060010190506120fc565b506121b7818861389490919063ffffffff16565b9650505050508060010190506120b1565b5083156121e85760006121e4818461389490919063ffffffff16565b9250505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905061226b61224a62015180866139a290919063ffffffff16565b61225d84846139ec90919063ffffffff16565b61391c90919063ffffffff16565b94505050505092915050565b61227f612446565b6122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606005600083815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561241157602002820191906000526020600020905b8154815260200190600101908083116123fd575b50505050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612488613a36565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60066020528060005260406000206000915090505481565b42600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008251905060005b818110156126d857600084828151811061251f57fe5b6020026020010151905083828151811061253557fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020541015612602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b61267884838151811061261157fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555050806001019050612509565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6303386866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b838110156127ad578082015181840152602081019050612792565b50505050905001848103835285818151815260200191508051906020019060200280838360005b838110156127ef5780820151818401526020810190506127d4565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50505050505050565b600b6020528060005260406000206000915090508060000154908060010154905082565b60008251116128e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b6128e8611863565b60005b8251811015612bb45781818151811061290057fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061295557fe5b602002602001015181526020019081526020016000205410156129e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b612a698282815181106129ef57fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868581518110612a4457fe5b60200260200101518152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110612ab657fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca30858481518110612b1b57fe5b6020026020010151858581518110612b2f57fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015612b9157600080fd5b505af1158015612ba5573d6000803e3d6000fd5b505050508060010190506128eb565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612c68578082015181840152602081019050612c4d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612caa578082015181840152602081019050612c8f565b5050505090500195505050505050600060405180830381600087803b158015612cd257600080fd5b505af1158015612ce6573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f5cca7afe5a35c97edc51b2536c4f4ba51412a440d622a712593a8063e2fc28598383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612d6b578082015181840152602081019050612d50565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612dad578082015181840152602081019050612d92565b5050505090500194505050505060405180910390a25050565b60038181548110612dd357fe5b906000526020600020016000915090505481565b612def612446565b612e61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613e856038913960400191505060405180910390fd5b60005b8251811015612fb557600060056000858481518110612ed957fe5b602002602001015181526020019081526020016000206000018054905011612f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f53657420697320656d707479000000000000000000000000000000000000000081525060200191505060405180910390fd5b818181518110612f7557fe5b602002602001015160056000858481518110612f8d57fe5b6020026020010151815260200190815260200160002060010181905550806001019050612ebe565b505050565b600063bc197c8160e01b905098975050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000825111613095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b61309d611863565b60005b8251811015613151576000600660008584815181106130bb57fe5b60200260200101518152602001908152602001600020541415613146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43617264206973206e6f742070617274206f6620616e7920736574000000000081525060200191505060405180910390fd5b8060010190506130a0565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156132055780820151818401526020810190506131ea565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561324757808201518184015260208101905061322c565b5050505090500195505050505050600060405180830381600087803b15801561326f57600080fd5b505af1158015613283573d6000803e3d6000fd5b5050505060005b82518110156134675761331c8282815181106132a257fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008685815181106132f757fe5b602002602001015181526020019081526020016000205461389490919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061336957fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338584815181106133ce57fe5b60200260200101518585815181106133e257fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561344457600080fd5b505af1158015613458573d6000803e3d6000fd5b5050505080600101905061328a565b503373ffffffffffffffffffffffffffffffffffffffff167f1c4fe6d0791be96830cfd51a7862e28509381800aadaf1591c1fd27c836910f38383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156134e95780820151818401526020810190506134ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561352b578082015181840152602081019050613510565b5050505090500194505050505060405180910390a25050565b6009602052816000526040600020602052806000526040600020600091509150508060000154905081565b600a6020528060005260406000206000915090505481565b61358f612446565b613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008251905060005b818110156136e957600084828151811061362057fe5b6020026020010151905060045481111561363c57806004819055505b60006006600083815260200190815260200160002054146136c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4361726420616c72656164792061737369676e656420746f206120736574000081525060200191505060405180910390fd5b8560066000838152602001908152602001600020819055505080600101905061360a565b506000151561374885600380548060200260200160405190810160405280929190818152602001828054801561373e57602002820191906000526020600020905b81548152602001906001019080831161372a575b5050505050613a3e565b1515141561377a5760038490806001815401808255809150506001900390600052602060002001600090919091909150555b6040518060400160405280848152602001838152506005600086815260200190815260200160002060008201518160000190805190602001906137be929190613d57565b506020820151816001015590505050505050565b600063f23a6e6160e01b90509695505050505050565b6137f0612446565b613862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61386b81613a8e565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015613912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561392f576000905061399c565b600082840290508284828161394057fe5b0414613997576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e1c6021913960400191505060405180910390fd5b809150505b92915050565b60006139e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bd1565b905092915050565b6000613a2e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c97565b905092915050565b600033905090565b6000808251905060005b81811015613a815784848281518110613a5d57fe5b60200260200101511415613a7657600192505050613a88565b806001019050613a48565b5060009150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613df66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c42578082015181840152602081019050613c27565b50505050905090810190601f168015613c6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613c8957fe5b049050809150509392505050565b6000838311158290613d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d09578082015181840152602081019050613cee565b50505050905090810190601f168015613d365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054828255906000526020600020908101928215613d93579160200282015b82811115613d92578251825591602001919060010190613d77565b5b509050613da09190613da4565b5090565b5b80821115613dbd576000816000905550600101613da5565b509056fe546f736869436173684661726d3a2043616e6e6f7420616464206475706c696361746520546f7368696d6f6e20455243313135354f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f736869436f696e4661726d3a205573657220646f6573206e6f74206861766520656e6f756768204e46545320746f2077697468647261772066726f6d207468697320706f6f6c5f736574496420616e64205f746f7368696361736850657244617950657243617264206861766520646966666572656e74206c656e677468a26469706673582212203e058f95e356a12c22794a8275a099c204bf416992cb27f1c2c86fddc33ce27764736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d2d2a84f0eb587f70e181a0c4b252c2c053f80cb000000000000000000000000b6e0b9edc711c89b9259e5ff04af48255c500ead
-----Decoded View---------------
Arg [0] : _ropeMakerAddr (address): 0xd2d2a84f0eB587F70E181A0C4B252c2c053f80cB
Arg [1] : _toshicashAddr (address): 0xb6E0b9eDc711c89B9259E5ff04AF48255C500Ead
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d2d2a84f0eb587f70e181a0c4b252c2c053f80cb
Arg [1] : 000000000000000000000000b6e0b9edc711c89b9259e5ff04af48255c500ead
Deployed Bytecode Sourcemap
10641:15496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25664:470;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10814:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11054:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13324:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20442:1030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11126:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10911:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16326:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17044:527;;;:::i;:::-;;10946:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21564:1189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19767:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19908:442;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12632:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;14863:1140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2932:140;;;:::i;:::-;;13714:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2121:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2487:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10997:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19019:590;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11336:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;18307:671;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10876:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16546:488;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24955:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;19617:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17579:718;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11189:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11274:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13858:870;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23762:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;3227:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10841:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25664:470;25734:4;25774:10;25759:25;;:11;:25;;;;:142;;;;25891:10;25876:25;;:11;:25;;;;25759:142;25751:150;;25664:470;;;:::o;10814:20::-;;;;;;;;;;;;;:::o;11054:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13324:322::-;13392:16;13421:28;13482:1;13466:13;;:17;13452:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13421:63;;13502:9;13497:111;13537:1;13521:13;;:17;13517:1;:21;13497:111;;;13577:9;:16;13587:5;13577:16;;;;;;;;;;;;;;;:19;13594:1;13577:19;;;;;;;;;;;;13560:11;13572:1;13560:14;;;;;;;;;;;;;:36;;;;;13540:3;;;;;13497:111;;;;13627:11;13620:18;;;13324:322;;;:::o;20442:1030::-;20520:33;20556:17;20574:6;20556:25;;;;;;;;;;;;;;;;;;20520:61;;20592:28;20623:15;:23;20639:6;20623:23;;;;;;;;;;;:35;20647:10;20623:35;;;;;;;;;;;;;;;20592:66;;20669:44;20716:14;:26;20731:10;20716:26;;;;;;;;;;;;;;;20669:73;;20754:23;20794:1;20780:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20754:42;;20808:27;20852:1;20838:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20808:46;;20877:7;:10;;;20865:6;20872:1;20865:9;;;;;;;;;;;;;:22;;;;;20914:8;20898:10;20909:1;20898:13;;;;;;;;;;;;;:24;;;;;20946:9;:7;:9::i;:::-;20976;;;;;;;;;;;:14;;;20991:10;21003:7;:10;;;21015:8;20976:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21049:9;;;;;;;;;;;:19;;;21077:4;21084:6;21092:10;21049:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21154:31;21176:8;21154:4;:17;;;:21;;:31;;;;:::i;:::-;21134:4;:17;;:51;;;;21220:61;21246:34;21271:8;21246:7;:20;;;:24;;:34;;;;:::i;:::-;21220:10;:21;;;:25;;:61;;;;:::i;:::-;21196:10;:21;;:85;;;;21311:56;21332:34;21357:8;21332:7;:20;;;:24;;:34;;;;:::i;:::-;21311:10;:16;;;:20;;:56;;;;:::i;:::-;21292:10;:16;;:75;;;;21405:3;21381:10;:21;;;:27;21378:85;;;21448:3;21424:10;:21;;:27;;;;21378:85;20442:1030;;;;;;;:::o;11126:50::-;;;;;;;;;;;;;;;;;:::o;10911:28::-;;;;:::o;16326:142::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16421:1:::1;16408:10;:14;16400:23;;;::::0;::::1;;16450:10;16434:13;:26;;;;16326:142:::0;:::o;17044:527::-;17081:44;17128:14;:26;17143:10;17128:26;;;;;;;;;;;;;;;17081:73;;17165:24;17192:48;17223:10;17235:4;17192:30;:48::i;:::-;17165:75;;17280:15;17251:14;:26;17266:10;17251:26;;;;;;;;;;;;;;;:44;;;;17325:76;17347:53;17396:3;17347:43;17368:10;:21;;;17347:16;:20;;:43;;;;:::i;:::-;:47;;:53;;;;:::i;:::-;17325:16;:20;;:76;;;;:::i;:::-;17306:95;;17435:1;17416:16;:20;17412:97;;;17453:9;;;;;;;;;;;:14;;;17468:10;17480:16;17453:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17412:97;17534:10;17526:37;;;17546:16;17526:37;;;;;;;;;;;;;;;;;;17044:527;;:::o;10946:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;21564:1189::-;21643:33;21679:17;21697:6;21679:25;;;;;;;;;;;;;;;;;;21643:61;;21715:28;21746:15;:23;21762:6;21746:23;;;;;;;;;;;:35;21770:10;21746:35;;;;;;;;;;;;;;;21715:66;;21792:44;21839:14;:26;21854:10;21839:26;;;;;;;;;;;;;;;21792:73;;21939:8;21918:4;:17;;;:29;;21896:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22058:9;:7;:9::i;:::-;22108:31;22130:8;22108:4;:17;;;:21;;:31;;;;:::i;:::-;22088:4;:17;;:51;;;;22189:56;22210:34;22235:8;22210:7;:20;;;:24;;:34;;;;:::i;:::-;22189:10;:16;;;:20;;:56;;;;:::i;:::-;22170:10;:16;;:75;;;;22280:30;22301:8;22280:10;:16;;;:20;;:30;;;;:::i;:::-;22256:10;:21;;:54;;;;22348:3;22324:10;:21;;;:27;22321:85;;;22391:3;22367:10;:21;;:27;;;;22321:85;22426:9;;;;;;;;;;;:14;;;22449:4;22456:7;:10;;;22468:8;22426:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22489:23;22529:1;22515:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22489:42;;22543:27;22587:1;22573:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22543:46;;22612:7;:10;;;22600:6;22607:1;22600:9;;;;;;;;;;;;;:22;;;;;22649:8;22633:10;22644:1;22633:13;;;;;;;;;;;;;:24;;;;;22680:9;;;;;;;;;;;:19;;;22700:10;22712:6;22720:10;22680:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21564:1189;;;;;;;:::o;19767:135::-;19833:7;19862:14;:26;19877:10;19862:26;;;;;;;;;;;;;;;:32;;;19855:39;;19767:135;;;:::o;19908:442::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20053:1:::1;20024:20;:25;20045:3;20024:25;;;;;;;;;;;;:30;20002:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20147:17;20184:105;;;;;;;;20224:3;20184:105;;;;20260:13;20184:105;;::::0;20147:153:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20341:1;20313:20;:25;20334:3;20313:25;;;;;;;;;;;:29;;;;19908:442:::0;;:::o;12632:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14863:1140::-;14970:7;14990:28;15021:1;14990:32;;15035:14;15052:11;:18;;;;15035:35;;15086:9;15081:538;15105:6;15101:1;:10;15081:538;;;15133:13;15149:11;15161:1;15149:14;;;;;;;;;;;;;;;;15133:30;;15178:19;15200:8;:15;15209:5;15200:15;;;;;;;;;;;15178:37;;15232:18;15253:3;:11;;:18;;;;15232:39;;15288:26;15338:9;15333:189;15357:10;15353:1;:14;15333:189;;;15418:88;15441:64;15472:9;:16;15482:5;15472:16;;;;;;;;;;;;;;;:32;15489:3;:11;;15501:1;15489:14;;;;;;;;;;;;;;;;15472:32;;;;;;;;;;;;15441:3;:26;;;:30;;:64;;;;:::i;:::-;15418:18;:22;;:88;;;;:::i;:::-;15397:109;;15369:3;;;;;15333:189;;;;15563:44;15588:18;15563:20;:24;;:44;;;;:::i;:::-;15540:67;;15081:538;;;;15113:3;;;;;15081:538;;;;15676:24;15672:143;;;15717:13;15772:31;15797:5;15772:20;:24;;:31;;;;:::i;:::-;15749:54;;15672:143;;15827:18;15848:14;:21;15863:5;15848:21;;;;;;;;;;;;;;;;15827:42;;15880:17;15900:15;15880:35;;15933:62;15963:31;15988:5;15963:20;:24;;:31;;;;:::i;:::-;15933:25;15947:10;15933:9;:13;;:25;;;;:::i;:::-;:29;;:62;;;;:::i;:::-;15926:69;;;;;;14863:1140;;;;:::o;2932:140::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3031:1:::1;2994:40;;3015:6;::::0;::::1;;;;;;;;2994:40;;;;;;;;;;;;3062:1;3045:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2932:140::o:0;13714:134::-;13780:16;13816:8;:16;13825:6;13816:16;;;;;;;;;;;:24;;13809:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13714:134;;;:::o;2121:79::-;2159:7;2186:6;;;;;;;;;;;2179:13;;2121:79;:::o;2487:94::-;2527:4;2567:6;;;;;;;;;;;2551:22;;:12;:10;:12::i;:::-;:22;;;2544:29;;2487:94;:::o;10997:48::-;;;;;;;;;;;;;;;;;:::o;19019:590::-;19150:15;19121:14;:26;19136:10;19121:26;;;;;;;;;;;;;;;:44;;;;19178:14;19195:8;:15;19178:32;;19226:9;19221:282;19245:6;19241:1;:10;19221:282;;;19273:14;19290:8;19299:1;19290:11;;;;;;;;;;;;;;19273:28;;19359:12;19372:1;19359:15;;;;;;;;;;;;;;19326:9;:21;19336:10;19326:21;;;;;;;;;;;;;;;:29;19348:6;19326:29;;;;;;;;;;;;:48;;19318:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19441:50;19475:12;19488:1;19475:15;;;;;;;;;;;;;;19441:9;:21;19451:10;19441:21;;;;;;;;;;;;;;;:29;19463:6;19441:29;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;19409:9;:21;19419:10;19409:21;;;;;;;;;;;;;;;:29;19431:6;19409:29;;;;;;;;;;;:82;;;;19221:282;19253:3;;;;;19221:282;;;;19515:9;;;;;;;;;;;:31;;;19555:4;19562:10;19574:8;19584:12;19515:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19019:590;;;:::o;11336:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18307:671::-;18426:1;18408:8;:15;:19;18400:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18465:9;:7;:9::i;:::-;18492;18487:335;18511:8;:15;18507:1;:19;18487:335;;;18594:12;18607:1;18594:15;;;;;;;;;;;;;;18556:9;:21;18566:10;18556:21;;;;;;;;;;;;;;;:34;18578:8;18587:1;18578:11;;;;;;;;;;;;;;18556:34;;;;;;;;;;;;:53;;18548:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18681:55;18720:12;18733:1;18720:15;;;;;;;;;;;;;;18681:9;:21;18691:10;18681:21;;;;;;;;;;;;;;;:34;18703:8;18712:1;18703:11;;;;;;;;;;;;;;18681:34;;;;;;;;;;;;:38;;:55;;;;:::i;:::-;18644:9;:21;18654:10;18644:21;;;;;;;;;;;;;;;:34;18666:8;18675:1;18666:11;;;;;;;;;;;;;;18644:34;;;;;;;;;;;:92;;;;18751:9;;;;;;;;;;;:14;;;18774:4;18781:8;18790:1;18781:11;;;;;;;;;;;;;;18794:12;18807:1;18794:15;;;;;;;;;;;;;;18751:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18528:3;;;;;18487:335;;;;18844:9;;;;;;;;;;;:19;;;18864:10;18876:8;18886:12;18844:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18935:10;18927:43;;;18947:8;18957:12;18927:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18307:671;;:::o;10876:28::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16546:488::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16700:23:::1;:30;16682:7;:14;:48;16674:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16809:9;16804:223;16828:7;:14;16824:1;:18;16804:223;;;16910:1;16872:8;:20;16881:7;16889:1;16881:10;;;;;;;;;;;;;;16872:20;;;;;;;;;;;:28;;:35;;;;:39;16864:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16989:23;17013:1;16989:26;;;;;;;;;;;;;;16943:8;:20;16952:7;16960:1;16952:10;;;;;;;;;;;;;;16943:20;;;;;;;;;;;:43;;:72;;;;16844:3;;;;;16804:223;;;;16546:488:::0;;:::o;24955:203::-;25114:6;25140:10;25133:17;;;;24955:203;;;;;;;;;;:::o;19617:138::-;19681:7;19710:14;:26;19725:10;19710:26;;;;;;;;;;;;;;;:37;;;19703:44;;19617:138;;;:::o;17579:718::-;17696:1;17678:8;:15;:19;17670:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17735:9;:7;:9::i;:::-;17762;17757:145;17781:8;:15;17777:1;:19;17757:145;;;17857:1;17828:12;:25;17841:8;17850:1;17841:11;;;;;;;;;;;;;;17828:25;;;;;;;;;;;;:30;;17820:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17798:3;;;;;17757:145;;;;17924:9;;;;;;;;;;;:19;;;17952:4;17959:8;17969:12;17924:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18000:9;17995:236;18019:8;:15;18015:1;:19;17995:236;;;18093:55;18132:12;18145:1;18132:15;;;;;;;;;;;;;;18093:9;:21;18103:10;18093:21;;;;;;;;;;;;;;;:34;18115:8;18124:1;18115:11;;;;;;;;;;;;;;18093:34;;;;;;;;;;;;:38;;:55;;;;:::i;:::-;18056:9;:21;18066:10;18056:21;;;;;;;;;;;;;;;:34;18078:8;18087:1;18078:11;;;;;;;;;;;;;;18056:34;;;;;;;;;;;:92;;;;18163:9;;;;;;;;;;;:14;;;18178:10;18190:8;18199:1;18190:11;;;;;;;;;;;;;;18203:12;18216:1;18203:15;;;;;;;;;;;;;;18163:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18036:3;;;;;17995:236;;;;18254:10;18248:41;;;18266:8;18276:12;18248:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17579:718;;:::o;11189:78::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11274:55::-;;;;;;;;;;;;;;;;;:::o;13858:870::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13993:14:::1;14010:8;:15;13993:32;;14041:9;14036:430;14060:6;14056:1;:10;14036:430;;;14088:14;14105:8;14114:1;14105:11;;;;;;;;;;;;;;14088:28;;14146:13;;14137:6;:22;14133:85;;;14196:6;14180:13;:22;;;;14133:85;14342:1;14318:12;:20;14331:6;14318:20;;;;;;;;;;;;:25;14310:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14448:6;14425:12;:20;14438:6;14425:20;;;;;;;;;;;:29;;;;14036:430;14068:3;;;;;14036:430;;;;14517:5;14482:40;;:31;14493:6;14501:11;14482:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;:31::i;:::-;:40;;;14478:97;;;14539:11;14556:6;14539:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14478:97;14606:114;;;;;;;;14638:8;14606:114;;;;14685:23;14606:114;;::::0;14587:8:::1;:16;14596:6;14587:16;;;;;;;;;;;:133;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2390:1;13858:870:::0;;;:::o;23762:174::-;23892:6;23918:10;23911:17;;;;23762:174;;;;;;;;:::o;3227:109::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:28:::1;3319:8;3300:18;:28::i;:::-;3227:109:::0;:::o;10841:26::-;;;;;;;;;;;;;:::o;4520:181::-;4578:7;4598:9;4614:1;4610;:5;4598:17;;4639:1;4634;:6;;4626:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:1;4685:8;;;4520:181;;;;:::o;5874:471::-;5932:7;6182:1;6177;:6;6173:47;;;6207:1;6200:8;;;;6173:47;6232:9;6248:1;6244;:5;6232:17;;6277:1;6272;6268;:5;;;;;;:10;6260:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6336:1;6329:8;;;5874:471;;;;;:::o;6821:132::-;6879:7;6906:39;6910:1;6913;6906:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6899:46;;6821:132;;;;:::o;4984:136::-;5042:7;5069:43;5073:1;5076;5069:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5062:50;;4984:136;;;;:::o;912:98::-;957:15;992:10;985:17;;912:98;:::o;12908:307::-;12991:4;13008:14;13025:6;:13;13008:30;;13054:9;13049:134;13073:6;13069:1;:10;13049:134;;;13118:6;13105;13112:1;13105:9;;;;;;;;;;;;;;:19;13101:71;;;13152:4;13145:11;;;;;;13101:71;13081:3;;;;;13049:134;;;;13202:5;13195:12;;;12908:307;;;;;:::o;3442:229::-;3536:1;3516:22;;:8;:22;;;;3508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3626:8;3597:38;;3618:6;;;;;;;;;;3597:38;;;;;;;;;;;;3655:8;3646:6;;:17;;;;;;;;;;;;;;;;;;3442:229;:::o;7449:278::-;7535:7;7567:1;7563;:5;7570:12;7555:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7594:9;7610:1;7606;:5;;;;;;7594:17;;7718:1;7711:8;;;7449:278;;;;;:::o;5423:192::-;5509:7;5542:1;5537;:6;;5545:12;5529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5569:9;5585:1;5581;:5;5569:17;;5606:1;5599:8;;;5423:192;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://3e058f95e356a12c22794a8275a099c204bf416992cb27f1c2c86fddc33ce277
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.