Polygon Sponsored slots available. Book your slot here!
Overview
Max Total Supply
2,057,404 EGG
Holders
2,901 (0.00%)
Market
Price
$0.0977 @ 0.139590 POL
Onchain Market Cap
$201,057.24
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
3.117798016582501834 EGGValue
$0.30 ( ~0.428524030684379 POL) [0.0002%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
EggToken
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-07-21 */ /** *Submitted for verification at polygonscan.com on 2021-07-21 */ // File: ..\node_modules\@openzeppelin\contracts\utils\Context.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with 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. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: ..\node_modules\@openzeppelin\contracts\token\ERC20\IERC20.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: ..\node_modules\@openzeppelin\contracts\math\SafeMath.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @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, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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; } } // File: @openzeppelin\contracts\token\ERC20\ERC20.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) public { _name = name_; _symbol = symbol_; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } // File: contracts\OwnableContract.sol pragma solidity 0.6.6; contract OwnableContract { address public owner; address public pendingOwner; address public admin; event NewAdmin(address oldAdmin, address newAdmin); event NewOwner(address oldOwner, address newOwner); event NewPendingOwner(address oldPendingOwner, address newPendingOwner); constructor() public { owner = msg.sender; admin = msg.sender; } modifier onlyOwner { require(msg.sender == owner,"onlyOwner"); _; } modifier onlyPendingOwner { require(msg.sender == pendingOwner,"onlyPendingOwner"); _; } modifier onlyAdmin { require(msg.sender == admin || msg.sender == owner,"onlyAdmin"); _; } function transferOwnership(address _pendingOwner) public onlyOwner { emit NewPendingOwner(pendingOwner, _pendingOwner); pendingOwner = _pendingOwner; } function renounceOwnership() public virtual onlyOwner { emit NewOwner(owner, address(0)); emit NewAdmin(admin, address(0)); emit NewPendingOwner(pendingOwner, address(0)); owner = address(0); pendingOwner = address(0); admin = address(0); } function acceptOwner() public onlyPendingOwner { emit NewOwner(owner, pendingOwner); owner = pendingOwner; address newPendingOwner = address(0); emit NewPendingOwner(pendingOwner, newPendingOwner); pendingOwner = newPendingOwner; } function setAdmin(address newAdmin) public onlyOwner { emit NewAdmin(admin, newAdmin); admin = newAdmin; } } // File: contracts\ChickToken.sol pragma solidity 0.6.6; contract ChickToken is ERC20("loserchick", "CHICK"), OwnableContract{ using SafeMath for uint256; address public teamAddr; address public boardAddr; uint256 public dayIndex = 0; mapping(uint256 => uint256) public burnAmountPerDay; mapping(address => uint256) public addUpSwapCchickCountPerUser; uint256 public totalSwapCount = 0; uint256 public chickSwapCchickIndex = 0; event ChickSwapCchick(address userAddress, uint256 amount, uint256 index); constructor(address _teamAddr, address _boardAddr) public { teamAddr = _teamAddr; boardAddr = _boardAddr; _setupDecimals(18); _mint(msg.sender, uint256(13333333).mul(1e18)); } function updateBurnAmount(uint256 floatAmount) internal{ dayIndex = now / 86400; burnAmountPerDay[dayIndex] = floatAmount.add(burnAmountPerDay[dayIndex]); } function getBurnAmountPerDay(uint256 _dayIndex) public view returns(uint256){ return burnAmountPerDay[_dayIndex]; } function getAddUpSwapCchickCountPerUser(address userAddr) public view returns(uint256){ return addUpSwapCchickCountPerUser[userAddr]; } function chickSwapCchick(uint256 floatAmount) public{ require(floatAmount != 0, 'floatAmount cannot be zero'); addUpSwapCchickCountPerUser[msg.sender] = floatAmount.add(addUpSwapCchickCountPerUser[msg.sender]); uint256 amount = floatAmount.mul(1e18); uint256 teamAmount = amount.div(10); // 10 % _transfer(msg.sender, teamAddr, teamAmount); uint256 boardAmount = amount.div(5); // 20 % _transfer(msg.sender, boardAddr, boardAmount); uint256 burnAmount = amount.mul(7).div(10); // 70 % _burn(msg.sender, burnAmount); updateBurnAmount(floatAmount); totalSwapCount = totalSwapCount.add(floatAmount); chickSwapCchickIndex++; emit ChickSwapCchick(msg.sender, floatAmount, chickSwapCchickIndex); } function updateTeamAddr(address _teamAddr) public onlyOwner{ teamAddr = _teamAddr; } function updateBoardAddr(address _boardAddr) public onlyOwner{ boardAddr = _boardAddr; } } // File: contracts\EggToken.sol pragma solidity 0.6.6; pragma experimental ABIEncoderV2; contract EggToken is ERC20("LoserchickEgg", "EGG"), OwnableContract{ using SafeMath for uint256; uint256 public constant MAX_TOTAL_SUPPLY = 7000000 * 1e18; uint256 public dayIndex = 0; uint256 public perUserPerDayLimit; uint256 public marketPerDayLimit; uint256 public addUpClaimCount; uint256 public addUpBurnCount; address public signer1; address public signer2; mapping(uint256 => bool) public claimedOrderId; mapping(uint256 => mapping(address => uint256)) public userClaimCountPerDay; // Maximum per user per day. mapping(uint256 => uint256) public marketClaimCountPerDay; // Maximum market per day. mapping(uint256 => uint256) public burnAmountPerDay; uint256[4] public cChickSwapChickLimit; uint256[4] public ceggSwapEggProportion; mapping(address => uint256) public addUpSwapCeggCountPerUser; ChickToken public chickToken; uint256 public claimIndex = 0; event Claim(uint256 orderId, uint256 amount, address userAddress, address signer, uint256 index); event AleadyClaim(uint256 orderId, uint256 amount, address userAddress); event Burn(address userAddress, uint256 amount); constructor(address _chickAddr) public { chickToken = ChickToken(_chickAddr); mint(msg.sender, 1); _setupDecimals(18); perUserPerDayLimit = 1000; marketPerDayLimit = 100000; cChickSwapChickLimit[0] = 10; cChickSwapChickLimit[1] = 20; cChickSwapChickLimit[2] = 100; cChickSwapChickLimit[3] = 115792089237316195423570985008687907853269984665640564039457584007913129639935; ceggSwapEggProportion[0] = 8; // special case : if addUpSwapCchickCountPerUser[userAddr] <=10 , the max EGG count is 8 // maxEggAmount = chickCount.mul(ceggSwapEggProportion[index]).div(100); ceggSwapEggProportion[1] = 60; ceggSwapEggProportion[2] = 50; ceggSwapEggProportion[3] = 40; } function setDev1(address _signer) public onlyOwner { signer1 = _signer; } function setDev2(address _signer) public onlyOwner { signer2 = _signer; } function getUserClaimCountPerDay(uint256 _dayIndex, address userAddr) public view returns(uint256){ return userClaimCountPerDay[_dayIndex][userAddr]; } function getMarketClaimCountPerDay(uint256 _dayIndex) public view returns(uint256){ return marketClaimCountPerDay[_dayIndex]; } function getBurnAmountPerDay(uint256 _dayIndex) public view returns(uint256){ return burnAmountPerDay[_dayIndex]; } function getInCirculationCount() public view returns(uint256){ return addUpClaimCount.sub(addUpBurnCount); } function getAwaitMiningCount() public view returns(uint256){ return MAX_TOTAL_SUPPLY.div(1e18).sub(addUpClaimCount); } function updateCeggSwapEggProportion(uint256 index, uint256 proportion) public onlyOwner{ require(index < 4, 'Index cannot be greater than 4 !'); ceggSwapEggProportion[index] = proportion; } function updateLimitProportion(uint256 index, uint256 proportion) public onlyOwner{ require(index < 4, 'Index cannot be greater than 4 !'); cChickSwapChickLimit[index] = proportion; } // check to avoid bad base, such as centralized db changed by hacker function checkRestrictions(uint256 userAddUpCchickCount, uint256 userAddUpClaimEggCount) internal view returns(bool){ require(userAddUpClaimEggCount <= userAddUpCchickCount, 'error: userAddUpClaimEggCount > userAddUpCchickCount'); uint256 index = 0; for(uint256 i = 0; i<cChickSwapChickLimit.length; i++){ if(userAddUpCchickCount <= cChickSwapChickLimit[i]){ index = i; break; } } uint256 maxEggAmount; if(index == 0){ maxEggAmount = ceggSwapEggProportion[0]; }else{ maxEggAmount = userAddUpCchickCount.mul(ceggSwapEggProportion[index]).div(100); } require(maxEggAmount >= userAddUpClaimEggCount, 'error: maxEggAmount < userAddUpClaimEggCount'); } function batchClaim(uint256[] memory orderId, uint256[] memory floatAmount, bytes[] memory signature) public{ require(orderId.length == floatAmount.length, "orderId length should eq floatAmount length"); require(floatAmount.length == signature.length, "floatAmount length should eq signature length"); updateDay(); for(uint256 i=0; i<orderId.length; i++){ claim(orderId[i], floatAmount[i], signature[i]); } } function claim(uint256 orderId, uint256 floatAmount, bytes memory signature) internal{ if(claimedOrderId[orderId]){ emit AleadyClaim(orderId, floatAmount, msg.sender); return; } require(userClaimCountPerDay[dayIndex][msg.sender].add(floatAmount) <= perUserPerDayLimit, 'Maximum single day limit exceeded!'); require(marketClaimCountPerDay[dayIndex].add(floatAmount) <= marketPerDayLimit, 'It has exceeded the maximum market quota!'); bytes32 hash1 = keccak256(abi.encode(address(this), msg.sender, orderId, floatAmount)); bytes32 hash2 = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash1)); address signer = recover(hash2, signature); require(signer == signer1 || signer == signer2, "invalid signer"); uint256 userAddUpcChickCount = chickToken.getAddUpSwapCchickCountPerUser(msg.sender); uint256 useAddUpClaimEggCount = floatAmount.add(addUpSwapCeggCountPerUser[msg.sender]); checkRestrictions(userAddUpcChickCount, useAddUpClaimEggCount); mint(msg.sender, floatAmount); claimedOrderId[orderId] = true; userClaimCountPerDay[dayIndex][msg.sender] = floatAmount.add(userClaimCountPerDay[dayIndex][msg.sender]); marketClaimCountPerDay[dayIndex] = floatAmount.add(marketClaimCountPerDay[dayIndex]); addUpSwapCeggCountPerUser[msg.sender] = useAddUpClaimEggCount; claimIndex++; emit Claim(orderId, floatAmount, msg.sender, signer, claimIndex); } function mint(address _to, uint256 _amount) internal{ uint256 intAmount = _amount.mul(1e18); uint256 totalSupply = totalSupply(); require(totalSupply.add(intAmount) <= MAX_TOTAL_SUPPLY,"invalid _amount"); _mint(_to, intAmount); addUpClaimCount = addUpClaimCount.add(_amount ); } function burn(uint256 amount) public{ require(amount != 0, 'burnAmount cannot be zero'); address deadAddress = 0x000000000000000000000000000000000000dEaD; transfer(deadAddress, amount.mul(1e18)); emit Burn(msg.sender, amount); addUpBurnCount = addUpBurnCount.add(amount); updateDay(); burnAmountPerDay[dayIndex] = amount.add(burnAmountPerDay[dayIndex]); } function setPerUserPerDayLimit(uint _perUserPerDayLimit) public onlyAdmin { perUserPerDayLimit = _perUserPerDayLimit; } function setMarketPerDayLimit(uint _marketPerDayLimit) public onlyAdmin { marketPerDayLimit = _marketPerDayLimit; } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { // Check the signature length if (signature.length != 65) { revert("ECDSA: invalid signature length"); } // Divide the signature in r, s and v variables bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. // solhint-disable-next-line no-inline-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return recover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover-bytes32-bytes-} that receives the `v`, * `r` and `s` signature fields separately. */ function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value"); require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value"); // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); require(signer != address(0), "ECDSA: invalid signature"); return signer; } function updateDay() internal{ dayIndex = now / 86400; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_chickAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"orderId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"userAddress","type":"address"}],"name":"AleadyClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"orderId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingOwner","type":"address"}],"name":"NewPendingOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addUpBurnCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addUpClaimCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addUpSwapCeggCountPerUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"orderId","type":"uint256[]"},{"internalType":"uint256[]","name":"floatAmount","type":"uint256[]"},{"internalType":"bytes[]","name":"signature","type":"bytes[]"}],"name":"batchClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"burnAmountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cChickSwapChickLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ceggSwapEggProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chickToken","outputs":[{"internalType":"contract ChickToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimedOrderId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dayIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAwaitMiningCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dayIndex","type":"uint256"}],"name":"getBurnAmountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInCirculationCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dayIndex","type":"uint256"}],"name":"getMarketClaimCountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dayIndex","type":"uint256"},{"internalType":"address","name":"userAddr","type":"address"}],"name":"getUserClaimCountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marketClaimCountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketPerDayLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perUserPerDayLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_signer","type":"address"}],"name":"setDev1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_signer","type":"address"}],"name":"setDev2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketPerDayLimit","type":"uint256"}],"name":"setMarketPerDayLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_perUserPerDayLimit","type":"uint256"}],"name":"setPerUserPerDayLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signer1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"signer2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"updateCeggSwapEggProportion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"updateLimitProportion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userClaimCountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260006008556000601d553480156200001b57600080fd5b5060405162002b1438038062002b148339810160408190526200003e9162000446565b6040518060400160405280600d81526020016c4c6f736572636869636b45676760981b8152506040518060400160405280600381526020016245474760e81b815250816003908051906020019062000098929190620003a4565b508051620000ae906004906020840190620003a4565b505060058054601260ff1990911617610100600160a81b0319166101003390810291909117909155600780546001600160a01b03199081168317909155601c80549091166001600160a01b0385161790556200010d915060016200015e565b6200012260126001600160e01b036200022516565b506103e8600955620186a0600a9081556013556014805560646015556000196016556008601755603c60185560326019556028601a5562000550565b600062000182670de0b6b3a7640000836200023b60201b620013311790919060201c565b90506000620001996001600160e01b036200028416565b90506a05ca4ec2a79a7f67000000620001c183836200028b60201b620012dd1790919060201c565b1115620001eb5760405162461bcd60e51b8152600401620001e290620004a6565b60405180910390fd5b6200020084836001600160e01b03620002b316565b6200021c83600b546200028b60201b620012dd1790919060201c565b600b5550505050565b6005805460ff191660ff92909216919091179055565b6000826200024c575060006200027e565b828202828482816200025a57fe5b04146200027b5760405162461bcd60e51b8152600401620001e290620004cf565b90505b92915050565b6002545b90565b6000828201838110156200027b5760405162461bcd60e51b8152600401620001e2906200046f565b6001600160a01b038216620002dc5760405162461bcd60e51b8152600401620001e29062000510565b620002f3600083836001600160e01b036200039f16565b6200030f816002546200028b60201b620012dd1790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000342918390620012dd6200028b821b17901c565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200039390859062000547565b60405180910390a35050565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003e757805160ff191683800117855562000417565b8280016001018555821562000417579182015b8281111562000417578251825591602001919060010190620003fa565b506200042592915062000429565b5090565b6200028891905b8082111562000425576000815560010162000430565b60006020828403121562000458578081fd5b81516001600160a01b03811681146200027b578182fd5b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600f908201526e1a5b9d985b1a590817d85b5bdd5b9d608a1b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b6125b480620005606000396000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80637b4d339111610167578063b617e6c7116100ce578063ec19795311610087578063ec1979531461053e578063ecdad43a14610551578063f2fde38b14610564578063f851a44014610577578063f8983ffd1461057f578063fe25cb2914610592576102a0565b8063b617e6c7146104ed578063d41d922114610500578063dd62ed3e14610508578063e30c39781461051b578063e56dee3e14610523578063ebbc496514610536576102a0565b80639646dec6116101205780639646dec61461049157806397d4b17c146104995780639b271866146104a15780639e15cfff146104b4578063a457c2d7146104c7578063a9059cbb146104da576102a0565b80637b4d3391146104355780638282a1721461044857806388ef50351461045b57806389f83e0b1461046e5780638da5cb5b1461048157806395d89b4114610489576102a0565b80633c20f0911161020b57806369c568b0116101c457806369c568b0146103e45780636aa02f4e146103ec5780636c77735b146103ff578063704b6c021461040757806370a082311461041a578063715018a61461042d576102a0565b80633c20f091146103915780633f08c4bc1461039957806342966c68146103a15780634dafdce1146103b657806350aadb94146103be57806357173314146103d1576102a0565b8063313ce5671161025d578063313ce5671461033157806333039d3d14610346578063341072821461034e57806338c0ac5f146103635780633921c2391461036b578063395093511461037e576102a0565b806306fdde03146102a5578063095ea7b3146102c357806318160ddd146102e35780631d1dc2f6146102f85780631d8e50891461030b57806323b872dd1461031e575b600080fd5b6102ad61059a565b6040516102ba9190611de6565b60405180910390f35b6102d66102d1366004611b5e565b610630565b6040516102ba9190611dbd565b6102eb61064e565b6040516102ba919061244a565b6102eb610306366004611ca8565b610654565b6102eb610319366004611cd8565b610666565b6102d661032c366004611b1e565b61068e565b61033961071b565b6040516102ba919061249e565b6102eb610724565b610356610733565b6040516102ba9190611d4d565b610356610742565b6102eb610379366004611ca8565b610751565b6102d661038c366004611b5e565b610765565b6103566107b9565b6102eb6107c8565b6103b46103af366004611ca8565b6107e6565b005b6102eb6108bc565b6103b46103cc366004611acf565b6108c2565b6103b46103df366004611cfb565b610913565b6102eb610976565b6103b46103fa366004611cfb565b61097c565b6102eb6109d9565b6103b4610415366004611acf565b610a12565b6102eb610428366004611acf565b610aaa565b6103b4610ac5565b6103b4610443366004611b88565b610c02565b6103b4610456366004611acf565b610caa565b6102eb610469366004611cd8565b610cfb565b6102eb61047c366004611ca8565b610d18565b610356610d25565b6102ad610d39565b6102eb610d9a565b6102eb610da0565b6102d66104af366004611ca8565b610da6565b6102eb6104c2366004611acf565b610dbb565b6102d66104d5366004611b5e565b610dcd565b6102d66104e8366004611b5e565b610e3b565b6103b46104fb366004611ca8565b610e4f565b6102eb610e98565b6102eb610516366004611aea565b610e9e565b610356610ec9565b6102eb610531366004611ca8565b610ed8565b6103b4610eea565b6102eb61054c366004611ca8565b610fe8565b6102eb61055f366004611ca8565b610ffa565b6103b4610572366004611acf565b61100c565b61035661107a565b6103b461058d366004611ca8565b611089565b6102eb6110d2565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b5050505050905090565b600061064461063d6110d8565b84846110dc565b5060015b92915050565b60025490565b60126020526000908152604090205481565b60009182526010602090815260408084206001600160a01b0393909316845291905290205490565b600061069b848484611190565b610711846106a76110d8565b61070c85604051806060016040528060288152602001612532602891396001600160a01b038a166000908152600160205260408120906106e56110d8565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6112b116565b6110dc565b5060019392505050565b60055460ff1690565b6a05ca4ec2a79a7f6700000081565b600d546001600160a01b031681565b600e546001600160a01b031681565b6017816004811061075e57fe5b0154905081565b60006106446107726110d8565b8461070c85600160006107836110d8565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112dd16565b601c546001600160a01b031681565b60006107e1600c54600b5461130990919063ffffffff16565b905090565b8061080c5760405162461bcd60e51b8152600401610803906120d2565b60405180910390fd5b61dead61082b816104e884670de0b6b3a764000063ffffffff61133116565b507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5338360405161085d929190611d61565b60405180910390a1600c54610878908363ffffffff6112dd16565b600c5561088361136b565b6008546000908152601260205260409020546108a690839063ffffffff6112dd16565b6008546000908152601260205260409020555050565b60095481565b60055461010090046001600160a01b031633146108f15760405162461bcd60e51b8152600401610803906123a3565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b60055461010090046001600160a01b031633146109425760405162461bcd60e51b8152600401610803906123a3565b600482106109625760405162461bcd60e51b815260040161080390612201565b806017836004811061097057fe5b01555050565b600a5481565b60055461010090046001600160a01b031633146109ab5760405162461bcd60e51b8152600401610803906123a3565b600482106109cb5760405162461bcd60e51b815260040161080390612201565b806013836004811061097057fe5b600b546000906107e190610a066a05ca4ec2a79a7f67000000670de0b6b3a764000063ffffffff61137616565b9063ffffffff61130916565b60055461010090046001600160a01b03163314610a415760405162461bcd60e51b8152600401610803906123a3565b6007546040517ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91610a80916001600160a01b03909116908490611d7a565b60405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b03163314610af45760405162461bcd60e51b8152600401610803906123a3565b7f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b2364600560019054906101000a90046001600160a01b03166000604051610b3b929190611d7a565b60405180910390a16007546040517ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91610b83916001600160a01b0390911690600090611d7a565b60405180910390a16006546040517fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91610bcb916001600160a01b0390911690600090611d7a565b60405180910390a160058054610100600160a81b0319169055600680546001600160a01b0319908116909155600780549091169055565b8151835114610c235760405162461bcd60e51b81526004016108039061218c565b8051825114610c445760405162461bcd60e51b8152600401610803906123c6565b610c4c61136b565b60005b8351811015610ca457610c9c848281518110610c6757fe5b6020026020010151848381518110610c7b57fe5b6020026020010151848481518110610c8f57fe5b60200260200101516113a8565b600101610c4f565b50505050565b60055461010090046001600160a01b03163314610cd95760405162461bcd60e51b8152600401610803906123a3565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b601060209081526000928352604080842090915290825290205481565b6013816004811061075e57fe5b60055461010090046001600160a01b031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b60085481565b600b5481565b600f6020526000908152604090205460ff1681565b601b6020526000908152604090205481565b6000610644610dda6110d8565b8461070c8560405180606001604052806025815260200161255a6025913960016000610e046110d8565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6112b116565b6000610644610e486110d8565b8484611190565b6007546001600160a01b0316331480610e77575060055461010090046001600160a01b031633145b610e935760405162461bcd60e51b815260040161080390611e70565b600955565b601d5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031681565b60009081526011602052604090205490565b6006546001600160a01b03163314610f145760405162461bcd60e51b8152600401610803906121d7565b6005546006546040517f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b236492610f5c926001600160a01b03610100909204821692911690611d7a565b60405180910390a160065460058054610100600160a81b0319166101006001600160a01b039093169283021790556040516000917fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91610fbe91908490611d7a565b60405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b60116020526000908152604090205481565b60009081526012602052604090205490565b60055461010090046001600160a01b0316331461103b5760405162461bcd60e51b8152600401610803906123a3565b6006546040517fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91610fbe916001600160a01b03909116908490611d7a565b6007546001600160a01b031681565b6007546001600160a01b03163314806110b1575060055461010090046001600160a01b031633145b6110cd5760405162461bcd60e51b815260040161080390611e70565b600a55565b600c5481565b3390565b6001600160a01b0383166111025760405162461bcd60e51b81526004016108039061230b565b6001600160a01b0382166111285760405162461bcd60e51b815260040161080390611f0d565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061118390859061244a565b60405180910390a3505050565b6001600160a01b0383166111b65760405162461bcd60e51b815260040161080390612236565b6001600160a01b0382166111dc5760405162461bcd60e51b815260040161080390611e93565b6111e78383836116f0565b61122a8160405180606001604052806026815260200161250c602691396001600160a01b038616600090815260208190526040902054919063ffffffff6112b116565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461125f908263ffffffff6112dd16565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061118390859061244a565b600081848411156112d55760405162461bcd60e51b81526004016108039190611de6565b505050900390565b6000828201838110156113025760405162461bcd60e51b815260040161080390611f77565b9392505050565b60008282111561132b5760405162461bcd60e51b815260040161080390611ff9565b50900390565b60008261134057506000610648565b8282028284828161134d57fe5b04146113025760405162461bcd60e51b81526004016108039061214b565b620151804204600855565b60008082116113975760405162461bcd60e51b815260040161080390612072565b8183816113a057fe5b049392505050565b6000838152600f602052604090205460ff16156113ff577f38fb1e4ad20e7696e8e9d86d6a13ff887870e2f5ff1dab4f4fe185efafced9028383336040516113f293929190612453565b60405180910390a16116f0565b600954600854600090815260106020908152604080832033845290915290205461142f908463ffffffff6112dd16565b111561144d5760405162461bcd60e51b8152600401610803906122c7565b600a54600854600090815260116020526040902054611472908463ffffffff6112dd16565b11156114905760405162461bcd60e51b815260040161080390611fae565b6000303385856040516020016114a99493929190611d94565b6040516020818303038152906040528051906020012090506000816040516020016114d49190611d1c565b60405160208183030381529060405280519060200120905060006114f882856116f5565b600d549091506001600160a01b03808316911614806115245750600e546001600160a01b038281169116145b6115405760405162461bcd60e51b815260040161080390611f4f565b601c546040516316d5600d60e21b81526000916001600160a01b031690635b55803490611571903390600401611d4d565b60206040518083038186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c19190611cc0565b336000908152601b6020526040812054919250906115e690889063ffffffff6112dd16565b90506115f28282611740565b506115fd3388611800565b6000888152600f60209081526040808320805460ff1916600117905560085483526010825280832033845290915290205461163f90889063ffffffff6112dd16565b600880546000908152601060209081526040808320338452825280832094909455915481526011909152205461167c90889063ffffffff6112dd16565b60085460009081526011602090815260408083209390935533808352601b90915290829020839055601d80546001019081905591517fbba050ad50db42138d75045a09a10dcd297909df8ab6c9c82dfffa541fae2d4e926116e2928c928c928991612472565b60405180910390a150505050505b505050565b600081516041146117185760405162461bcd60e51b815260040161080390611ed6565b60208201516040830151606084015160001a61173686828585611888565b9695505050505050565b6000828211156117625760405162461bcd60e51b81526004016108039061234f565b6000805b6004811015611794576013816004811061177c57fe5b0154851161178c57809150611794565b600101611766565b506000816117a557506017546117d8565b6117d560646117c9601785600481106117ba57fe5b0154889063ffffffff61133116565b9063ffffffff61137616565b90505b838110156117f85760405162461bcd60e51b81526004016108039061227b565b505092915050565b600061181a82670de0b6b3a764000063ffffffff61133116565b9050600061182661064e565b90506a05ca4ec2a79a7f67000000611844828463ffffffff6112dd16565b11156118625760405162461bcd60e51b8152600401610803906120a9565b61186c848361197e565b600b5461187f908463ffffffff6112dd16565b600b5550505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156118ca5760405162461bcd60e51b815260040161080390612030565b8360ff16601b14806118df57508360ff16601c145b6118fb5760405162461bcd60e51b815260040161080390612109565b6000600186868686604051600081526020016040526040516119209493929190611dc8565b6020604051602081039080840390855afa158015611942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119755760405162461bcd60e51b815260040161080390611e39565b95945050505050565b6001600160a01b0382166119a45760405162461bcd60e51b815260040161080390612413565b6119b0600083836116f0565b6002546119c3908263ffffffff6112dd16565b6002556001600160a01b0382166000908152602081905260409020546119ef908263ffffffff6112dd16565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a3e90859061244a565b60405180910390a35050565b80356001600160a01b038116811461064857600080fd5b600082601f830112611a71578081fd5b8135611a84611a7f826124d3565b6124ac565b818152915060208083019084810181840286018201871015611aa557600080fd5b60005b84811015611ac457813584529282019290820190600101611aa8565b505050505092915050565b600060208284031215611ae0578081fd5b6113028383611a4a565b60008060408385031215611afc578081fd5b611b068484611a4a565b9150611b158460208501611a4a565b90509250929050565b600080600060608486031215611b32578081fd5b8335611b3d816124f3565b92506020840135611b4d816124f3565b929592945050506040919091013590565b60008060408385031215611b70578182fd5b611b7a8484611a4a565b946020939093013593505050565b600080600060608486031215611b9c578283fd5b833567ffffffffffffffff80821115611bb3578485fd5b611bbf87838801611a61565b9450602091508186013581811115611bd5578485fd5b611be188828901611a61565b945050604086013581811115611bf5578384fd5b80870188601f820112611c06578485fd5b80359150611c16611a7f836124d3565b82815284810190828601875b85811015611c9657813585018d603f820112611c3c57898afd5b8881013588811115611c4c578a8bfd5b611c5e601f8201601f19168b016124ac565b8181528f6040838501011115611c72578b8cfd5b81604084018c8301379081018a018b90528552509287019290870190600101611c22565b50508096505050505050509250925092565b600060208284031215611cb9578081fd5b5035919050565b600060208284031215611cd1578081fd5b5051919050565b60008060408385031215611cea578182fd5b82359150611b158460208501611a4a565b60008060408385031215611d0d578182fd5b50508035926020909101359150565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611e1257858101830151858201604001528201611df6565b81811115611e235783604083870101525b50601f01601f1916929092016040019392505050565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b60208082526009908201526837b7363ca0b236b4b760b91b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252600e908201526d34b73b30b634b21039b4b3b732b960911b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602b908201527f49742068617320657863656564656420746865206d6178696d756d206d61726b60408201526a65742071756f7461efbc8160a81b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b6020808252600f908201526e1a5b9d985b1a590817d85b5bdd5b9d608a1b604082015260600190565b60208082526019908201527f6275726e416d6f756e742063616e6e6f74206265207a65726f00000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602b908201527f6f726465724964206c656e6774682073686f756c6420657120666c6f6174416d60408201526a0deeadce840d8cadccee8d60ab1b606082015260800190565b60208082526010908201526f37b7363ca832b73234b733a7bbb732b960811b604082015260600190565b6020808252818101527f496e6465782063616e6e6f742062652067726561746572207468616e20342021604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602c908201527f6572726f723a206d6178456767416d6f756e74203c207573657241646455704360408201526b1b185a5b5159d9d0dbdd5b9d60a21b606082015260800190565b60208082526024908201527f4d6178696d756d2073696e676c6520646179206c696d6974206578636565646560408201526364efbc8160e01b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526034908201527f6572726f723a20757365724164645570436c61696d456767436f756e74203e206040820152731d5cd95c905919155c10d8da1a58dad0dbdd5b9d60621b606082015260800190565b60208082526009908201526837b7363ca7bbb732b960b91b604082015260600190565b6020808252602d908201527f666c6f6174416d6f756e74206c656e6774682073686f756c642065712073696760408201526c0dcc2e8eae4ca40d8cadccee8d609b1b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b92835260208301919091526001600160a01b0316604082015260600190565b94855260208501939093526001600160a01b039182166040850152166060830152608082015260a00190565b60ff91909116815260200190565b60405181810167ffffffffffffffff811182821017156124cb57600080fd5b604052919050565b600067ffffffffffffffff8211156124e9578081fd5b5060209081020190565b6001600160a01b038116811461250857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f78f5057fb9c212424722f2b30d9fbde6fbd6b930a86242b722428bcf688fcec64736f6c634300060600330000000000000000000000009e725cf7265d12fd5f59499aff1258ca92cac74d
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102a05760003560e01c80637b4d339111610167578063b617e6c7116100ce578063ec19795311610087578063ec1979531461053e578063ecdad43a14610551578063f2fde38b14610564578063f851a44014610577578063f8983ffd1461057f578063fe25cb2914610592576102a0565b8063b617e6c7146104ed578063d41d922114610500578063dd62ed3e14610508578063e30c39781461051b578063e56dee3e14610523578063ebbc496514610536576102a0565b80639646dec6116101205780639646dec61461049157806397d4b17c146104995780639b271866146104a15780639e15cfff146104b4578063a457c2d7146104c7578063a9059cbb146104da576102a0565b80637b4d3391146104355780638282a1721461044857806388ef50351461045b57806389f83e0b1461046e5780638da5cb5b1461048157806395d89b4114610489576102a0565b80633c20f0911161020b57806369c568b0116101c457806369c568b0146103e45780636aa02f4e146103ec5780636c77735b146103ff578063704b6c021461040757806370a082311461041a578063715018a61461042d576102a0565b80633c20f091146103915780633f08c4bc1461039957806342966c68146103a15780634dafdce1146103b657806350aadb94146103be57806357173314146103d1576102a0565b8063313ce5671161025d578063313ce5671461033157806333039d3d14610346578063341072821461034e57806338c0ac5f146103635780633921c2391461036b578063395093511461037e576102a0565b806306fdde03146102a5578063095ea7b3146102c357806318160ddd146102e35780631d1dc2f6146102f85780631d8e50891461030b57806323b872dd1461031e575b600080fd5b6102ad61059a565b6040516102ba9190611de6565b60405180910390f35b6102d66102d1366004611b5e565b610630565b6040516102ba9190611dbd565b6102eb61064e565b6040516102ba919061244a565b6102eb610306366004611ca8565b610654565b6102eb610319366004611cd8565b610666565b6102d661032c366004611b1e565b61068e565b61033961071b565b6040516102ba919061249e565b6102eb610724565b610356610733565b6040516102ba9190611d4d565b610356610742565b6102eb610379366004611ca8565b610751565b6102d661038c366004611b5e565b610765565b6103566107b9565b6102eb6107c8565b6103b46103af366004611ca8565b6107e6565b005b6102eb6108bc565b6103b46103cc366004611acf565b6108c2565b6103b46103df366004611cfb565b610913565b6102eb610976565b6103b46103fa366004611cfb565b61097c565b6102eb6109d9565b6103b4610415366004611acf565b610a12565b6102eb610428366004611acf565b610aaa565b6103b4610ac5565b6103b4610443366004611b88565b610c02565b6103b4610456366004611acf565b610caa565b6102eb610469366004611cd8565b610cfb565b6102eb61047c366004611ca8565b610d18565b610356610d25565b6102ad610d39565b6102eb610d9a565b6102eb610da0565b6102d66104af366004611ca8565b610da6565b6102eb6104c2366004611acf565b610dbb565b6102d66104d5366004611b5e565b610dcd565b6102d66104e8366004611b5e565b610e3b565b6103b46104fb366004611ca8565b610e4f565b6102eb610e98565b6102eb610516366004611aea565b610e9e565b610356610ec9565b6102eb610531366004611ca8565b610ed8565b6103b4610eea565b6102eb61054c366004611ca8565b610fe8565b6102eb61055f366004611ca8565b610ffa565b6103b4610572366004611acf565b61100c565b61035661107a565b6103b461058d366004611ca8565b611089565b6102eb6110d2565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b5050505050905090565b600061064461063d6110d8565b84846110dc565b5060015b92915050565b60025490565b60126020526000908152604090205481565b60009182526010602090815260408084206001600160a01b0393909316845291905290205490565b600061069b848484611190565b610711846106a76110d8565b61070c85604051806060016040528060288152602001612532602891396001600160a01b038a166000908152600160205260408120906106e56110d8565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6112b116565b6110dc565b5060019392505050565b60055460ff1690565b6a05ca4ec2a79a7f6700000081565b600d546001600160a01b031681565b600e546001600160a01b031681565b6017816004811061075e57fe5b0154905081565b60006106446107726110d8565b8461070c85600160006107836110d8565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112dd16565b601c546001600160a01b031681565b60006107e1600c54600b5461130990919063ffffffff16565b905090565b8061080c5760405162461bcd60e51b8152600401610803906120d2565b60405180910390fd5b61dead61082b816104e884670de0b6b3a764000063ffffffff61133116565b507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5338360405161085d929190611d61565b60405180910390a1600c54610878908363ffffffff6112dd16565b600c5561088361136b565b6008546000908152601260205260409020546108a690839063ffffffff6112dd16565b6008546000908152601260205260409020555050565b60095481565b60055461010090046001600160a01b031633146108f15760405162461bcd60e51b8152600401610803906123a3565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b60055461010090046001600160a01b031633146109425760405162461bcd60e51b8152600401610803906123a3565b600482106109625760405162461bcd60e51b815260040161080390612201565b806017836004811061097057fe5b01555050565b600a5481565b60055461010090046001600160a01b031633146109ab5760405162461bcd60e51b8152600401610803906123a3565b600482106109cb5760405162461bcd60e51b815260040161080390612201565b806013836004811061097057fe5b600b546000906107e190610a066a05ca4ec2a79a7f67000000670de0b6b3a764000063ffffffff61137616565b9063ffffffff61130916565b60055461010090046001600160a01b03163314610a415760405162461bcd60e51b8152600401610803906123a3565b6007546040517ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91610a80916001600160a01b03909116908490611d7a565b60405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b03163314610af45760405162461bcd60e51b8152600401610803906123a3565b7f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b2364600560019054906101000a90046001600160a01b03166000604051610b3b929190611d7a565b60405180910390a16007546040517ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91610b83916001600160a01b0390911690600090611d7a565b60405180910390a16006546040517fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91610bcb916001600160a01b0390911690600090611d7a565b60405180910390a160058054610100600160a81b0319169055600680546001600160a01b0319908116909155600780549091169055565b8151835114610c235760405162461bcd60e51b81526004016108039061218c565b8051825114610c445760405162461bcd60e51b8152600401610803906123c6565b610c4c61136b565b60005b8351811015610ca457610c9c848281518110610c6757fe5b6020026020010151848381518110610c7b57fe5b6020026020010151848481518110610c8f57fe5b60200260200101516113a8565b600101610c4f565b50505050565b60055461010090046001600160a01b03163314610cd95760405162461bcd60e51b8152600401610803906123a3565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b601060209081526000928352604080842090915290825290205481565b6013816004811061075e57fe5b60055461010090046001600160a01b031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b60085481565b600b5481565b600f6020526000908152604090205460ff1681565b601b6020526000908152604090205481565b6000610644610dda6110d8565b8461070c8560405180606001604052806025815260200161255a6025913960016000610e046110d8565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6112b116565b6000610644610e486110d8565b8484611190565b6007546001600160a01b0316331480610e77575060055461010090046001600160a01b031633145b610e935760405162461bcd60e51b815260040161080390611e70565b600955565b601d5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031681565b60009081526011602052604090205490565b6006546001600160a01b03163314610f145760405162461bcd60e51b8152600401610803906121d7565b6005546006546040517f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b236492610f5c926001600160a01b03610100909204821692911690611d7a565b60405180910390a160065460058054610100600160a81b0319166101006001600160a01b039093169283021790556040516000917fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91610fbe91908490611d7a565b60405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b60116020526000908152604090205481565b60009081526012602052604090205490565b60055461010090046001600160a01b0316331461103b5760405162461bcd60e51b8152600401610803906123a3565b6006546040517fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b91610fbe916001600160a01b03909116908490611d7a565b6007546001600160a01b031681565b6007546001600160a01b03163314806110b1575060055461010090046001600160a01b031633145b6110cd5760405162461bcd60e51b815260040161080390611e70565b600a55565b600c5481565b3390565b6001600160a01b0383166111025760405162461bcd60e51b81526004016108039061230b565b6001600160a01b0382166111285760405162461bcd60e51b815260040161080390611f0d565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061118390859061244a565b60405180910390a3505050565b6001600160a01b0383166111b65760405162461bcd60e51b815260040161080390612236565b6001600160a01b0382166111dc5760405162461bcd60e51b815260040161080390611e93565b6111e78383836116f0565b61122a8160405180606001604052806026815260200161250c602691396001600160a01b038616600090815260208190526040902054919063ffffffff6112b116565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461125f908263ffffffff6112dd16565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061118390859061244a565b600081848411156112d55760405162461bcd60e51b81526004016108039190611de6565b505050900390565b6000828201838110156113025760405162461bcd60e51b815260040161080390611f77565b9392505050565b60008282111561132b5760405162461bcd60e51b815260040161080390611ff9565b50900390565b60008261134057506000610648565b8282028284828161134d57fe5b04146113025760405162461bcd60e51b81526004016108039061214b565b620151804204600855565b60008082116113975760405162461bcd60e51b815260040161080390612072565b8183816113a057fe5b049392505050565b6000838152600f602052604090205460ff16156113ff577f38fb1e4ad20e7696e8e9d86d6a13ff887870e2f5ff1dab4f4fe185efafced9028383336040516113f293929190612453565b60405180910390a16116f0565b600954600854600090815260106020908152604080832033845290915290205461142f908463ffffffff6112dd16565b111561144d5760405162461bcd60e51b8152600401610803906122c7565b600a54600854600090815260116020526040902054611472908463ffffffff6112dd16565b11156114905760405162461bcd60e51b815260040161080390611fae565b6000303385856040516020016114a99493929190611d94565b6040516020818303038152906040528051906020012090506000816040516020016114d49190611d1c565b60405160208183030381529060405280519060200120905060006114f882856116f5565b600d549091506001600160a01b03808316911614806115245750600e546001600160a01b038281169116145b6115405760405162461bcd60e51b815260040161080390611f4f565b601c546040516316d5600d60e21b81526000916001600160a01b031690635b55803490611571903390600401611d4d565b60206040518083038186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c19190611cc0565b336000908152601b6020526040812054919250906115e690889063ffffffff6112dd16565b90506115f28282611740565b506115fd3388611800565b6000888152600f60209081526040808320805460ff1916600117905560085483526010825280832033845290915290205461163f90889063ffffffff6112dd16565b600880546000908152601060209081526040808320338452825280832094909455915481526011909152205461167c90889063ffffffff6112dd16565b60085460009081526011602090815260408083209390935533808352601b90915290829020839055601d80546001019081905591517fbba050ad50db42138d75045a09a10dcd297909df8ab6c9c82dfffa541fae2d4e926116e2928c928c928991612472565b60405180910390a150505050505b505050565b600081516041146117185760405162461bcd60e51b815260040161080390611ed6565b60208201516040830151606084015160001a61173686828585611888565b9695505050505050565b6000828211156117625760405162461bcd60e51b81526004016108039061234f565b6000805b6004811015611794576013816004811061177c57fe5b0154851161178c57809150611794565b600101611766565b506000816117a557506017546117d8565b6117d560646117c9601785600481106117ba57fe5b0154889063ffffffff61133116565b9063ffffffff61137616565b90505b838110156117f85760405162461bcd60e51b81526004016108039061227b565b505092915050565b600061181a82670de0b6b3a764000063ffffffff61133116565b9050600061182661064e565b90506a05ca4ec2a79a7f67000000611844828463ffffffff6112dd16565b11156118625760405162461bcd60e51b8152600401610803906120a9565b61186c848361197e565b600b5461187f908463ffffffff6112dd16565b600b5550505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156118ca5760405162461bcd60e51b815260040161080390612030565b8360ff16601b14806118df57508360ff16601c145b6118fb5760405162461bcd60e51b815260040161080390612109565b6000600186868686604051600081526020016040526040516119209493929190611dc8565b6020604051602081039080840390855afa158015611942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119755760405162461bcd60e51b815260040161080390611e39565b95945050505050565b6001600160a01b0382166119a45760405162461bcd60e51b815260040161080390612413565b6119b0600083836116f0565b6002546119c3908263ffffffff6112dd16565b6002556001600160a01b0382166000908152602081905260409020546119ef908263ffffffff6112dd16565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a3e90859061244a565b60405180910390a35050565b80356001600160a01b038116811461064857600080fd5b600082601f830112611a71578081fd5b8135611a84611a7f826124d3565b6124ac565b818152915060208083019084810181840286018201871015611aa557600080fd5b60005b84811015611ac457813584529282019290820190600101611aa8565b505050505092915050565b600060208284031215611ae0578081fd5b6113028383611a4a565b60008060408385031215611afc578081fd5b611b068484611a4a565b9150611b158460208501611a4a565b90509250929050565b600080600060608486031215611b32578081fd5b8335611b3d816124f3565b92506020840135611b4d816124f3565b929592945050506040919091013590565b60008060408385031215611b70578182fd5b611b7a8484611a4a565b946020939093013593505050565b600080600060608486031215611b9c578283fd5b833567ffffffffffffffff80821115611bb3578485fd5b611bbf87838801611a61565b9450602091508186013581811115611bd5578485fd5b611be188828901611a61565b945050604086013581811115611bf5578384fd5b80870188601f820112611c06578485fd5b80359150611c16611a7f836124d3565b82815284810190828601875b85811015611c9657813585018d603f820112611c3c57898afd5b8881013588811115611c4c578a8bfd5b611c5e601f8201601f19168b016124ac565b8181528f6040838501011115611c72578b8cfd5b81604084018c8301379081018a018b90528552509287019290870190600101611c22565b50508096505050505050509250925092565b600060208284031215611cb9578081fd5b5035919050565b600060208284031215611cd1578081fd5b5051919050565b60008060408385031215611cea578182fd5b82359150611b158460208501611a4a565b60008060408385031215611d0d578182fd5b50508035926020909101359150565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611e1257858101830151858201604001528201611df6565b81811115611e235783604083870101525b50601f01601f1916929092016040019392505050565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b60208082526009908201526837b7363ca0b236b4b760b91b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252600e908201526d34b73b30b634b21039b4b3b732b960911b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602b908201527f49742068617320657863656564656420746865206d6178696d756d206d61726b60408201526a65742071756f7461efbc8160a81b606082015260800190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b6020808252600f908201526e1a5b9d985b1a590817d85b5bdd5b9d608a1b604082015260600190565b60208082526019908201527f6275726e416d6f756e742063616e6e6f74206265207a65726f00000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602b908201527f6f726465724964206c656e6774682073686f756c6420657120666c6f6174416d60408201526a0deeadce840d8cadccee8d60ab1b606082015260800190565b60208082526010908201526f37b7363ca832b73234b733a7bbb732b960811b604082015260600190565b6020808252818101527f496e6465782063616e6e6f742062652067726561746572207468616e20342021604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602c908201527f6572726f723a206d6178456767416d6f756e74203c207573657241646455704360408201526b1b185a5b5159d9d0dbdd5b9d60a21b606082015260800190565b60208082526024908201527f4d6178696d756d2073696e676c6520646179206c696d6974206578636565646560408201526364efbc8160e01b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526034908201527f6572726f723a20757365724164645570436c61696d456767436f756e74203e206040820152731d5cd95c905919155c10d8da1a58dad0dbdd5b9d60621b606082015260800190565b60208082526009908201526837b7363ca7bbb732b960b91b604082015260600190565b6020808252602d908201527f666c6f6174416d6f756e74206c656e6774682073686f756c642065712073696760408201526c0dcc2e8eae4ca40d8cadccee8d609b1b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b92835260208301919091526001600160a01b0316604082015260600190565b94855260208501939093526001600160a01b039182166040850152166060830152608082015260a00190565b60ff91909116815260200190565b60405181810167ffffffffffffffff811182821017156124cb57600080fd5b604052919050565b600067ffffffffffffffff8211156124e9578081fd5b5060209081020190565b6001600160a01b038116811461250857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f78f5057fb9c212424722f2b30d9fbde6fbd6b930a86242b722428bcf688fcec64736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009e725cf7265d12fd5f59499aff1258ca92cac74d
-----Decoded View---------------
Arg [0] : _chickAddr (address): 0x9e725Cf7265D12fd5f59499AFf1258CA92CAc74d
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009e725cf7265d12fd5f59499aff1258ca92cac74d
Deployed Bytecode Sourcemap
26777:10651:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26777:10651:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;13679:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;15825:169;;;;;;;;;:::i;:::-;;;;;;;;14778:108;;;:::i;:::-;;;;;;;;27472:51;;;;;;;;;:::i;29014:165::-;;;;;;;;;:::i;16476:321::-;;;;;;;;;:::i;14622:91::-;;;:::i;:::-;;;;;;;;26888:58;;;:::i;27147:22::-;;;:::i;:::-;;;;;;;;27176;;;:::i;27579:39::-;;;;;;;;;:::i;17206:218::-;;;;;;;;;:::i;27696:28::-;;;:::i;29473:122::-;;;:::i;33483:437::-;;;;;;;;;:::i;:::-;;26991:33;;;:::i;28919:87::-;;;;;;;;;:::i;29743:213::-;;;;;;;;;:::i;27031:32::-;;;:::i;29964:206::-;;;;;;;;;:::i;29603:132::-;;;:::i;24170:129::-;;;;;;;;;:::i;14949:127::-;;;;;;;;;:::i;23558:301::-;;;:::i;31083:471::-;;;;;;;;;:::i;28824:87::-;;;;;;;;;:::i;27262:75::-;;;;;;;;;:::i;27532:38::-;;;;;;;;;:::i;22654:20::-;;;:::i;13889:95::-;;;:::i;26955:27::-;;;:::i;27072:30::-;;;:::i;27207:46::-;;;;;;;;;:::i;27627:60::-;;;;;;;;;:::i;17927:269::-;;;;;;;;;:::i;15289:175::-;;;;;;;;;:::i;33928:133::-;;;;;;;;;:::i;27733:29::-;;;:::i;15527:151::-;;;;;;;;;:::i;22681:27::-;;;:::i;29187:141::-;;;;;;;;;:::i;23871:283::-;;;:::i;27379:57::-;;;;;;;;;:::i;29336:129::-;;;;;;;;;:::i;23376:174::-;;;;;;;;;:::i;22715:20::-;;;:::i;34069:129::-;;;;;;;;;:::i;27109:29::-;;;:::i;13679:91::-;13757:5;13750:12;;;;;;;;-1:-1:-1;;13750:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13724:13;;13750:12;;13757:5;;13750:12;;13757:5;13750:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13679:91;:::o;15825:169::-;15908:4;15925:39;15934:12;:10;:12::i;:::-;15948:7;15957:6;15925:8;:39::i;:::-;-1:-1:-1;15982:4:0;15825:169;;;;;:::o;14778:108::-;14866:12;;14778:108;:::o;27472:51::-;;;;;;;;;;;;;:::o;29014:165::-;29104:7;29130:31;;;:20;:31;;;;;;;;-1:-1:-1;;;;;29130:41:0;;;;;;;;;;;;;29014:165::o;16476:321::-;16582:4;16599:36;16609:6;16617:9;16628:6;16599:9;:36::i;:::-;16646:121;16655:6;16663:12;:10;:12::i;:::-;16677:89;16715:6;16677:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16677:19:0;;;;;;:11;:19;;;;;;16697:12;:10;:12::i;:::-;-1:-1:-1;;;;;16677:33:0;;;;;;;;;;;;-1:-1:-1;16677:33:0;;;:89;;:37;:89;:::i;:::-;16646:8;:121::i;:::-;-1:-1:-1;16785:4:0;16476:321;;;;;:::o;14622:91::-;14696:9;;;;14622:91;:::o;26888:58::-;26932:14;26888:58;:::o;27147:22::-;;;-1:-1:-1;;;;;27147:22:0;;:::o;27176:::-;;;-1:-1:-1;;;;;27176:22:0;;:::o;27579:39::-;;;;;;;;;;;;;-1:-1:-1;27579:39:0;:::o;17206:218::-;17294:4;17311:83;17320:12;:10;:12::i;:::-;17334:7;17343:50;17382:10;17343:11;:25;17355:12;:10;:12::i;:::-;-1:-1:-1;;;;;17343:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17343:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;27696:28::-;;;-1:-1:-1;;;;;27696:28:0;;:::o;29473:122::-;29526:7;29552:35;29572:14;;29552:15;;:19;;:35;;;;:::i;:::-;29545:42;;29473:122;:::o;33483:437::-;33538:11;33530:49;;;;-1:-1:-1;;;33530:49:0;;;;;;;;;;;;;;;;;33622:42;33675:39;33622:42;33697:16;:6;33708:4;33697:16;:10;:16;:::i;33675:39::-;;33730:24;33735:10;33747:6;33730:24;;;;;;;;;;;;;;;;33784:14;;:26;;33803:6;33784:26;:18;:26;:::i;:::-;33767:14;:43;33823:11;:9;:11::i;:::-;33902:8;;33885:26;;;;:16;:26;;;;;;33874:38;;:6;;:38;:10;:38;:::i;:::-;33862:8;;33845:26;;;;:16;:26;;;;;:67;-1:-1:-1;;33483:437:0:o;26991:33::-;;;;:::o;28919:87::-;23085:5;;;;;-1:-1:-1;;;;;23085:5:0;23071:10;:19;23063:40;;;;-1:-1:-1;;;23063:40:0;;;;;;;;;28981:7:::1;:17:::0;;-1:-1:-1;;;;;;28981:17:0::1;-1:-1:-1::0;;;;;28981:17:0;;;::::1;::::0;;;::::1;::::0;;28919:87::o;29743:213::-;23085:5;;;;;-1:-1:-1;;;;;23085:5:0;23071:10;:19;23063:40;;;;-1:-1:-1;;;23063:40:0;;;;;;;;;29858:1:::1;29850:5;:9;29842:54;;;;-1:-1:-1::0;;;29842:54:0::1;;;;;;;;;29938:10;29907:21;29929:5;29907:28;;;;;;;;:41:::0;-1:-1:-1;;29743:213:0:o;27031:32::-;;;;:::o;29964:206::-;23085:5;;;;;-1:-1:-1;;;;;23085:5:0;23071:10;:19;23063:40;;;;-1:-1:-1;;;23063:40:0;;;;;;;;;30073:1:::1;30065:5;:9;30057:54;;;;-1:-1:-1::0;;;30057:54:0::1;;;;;;;;;30152:10;30122:20;30143:5;30122:27;;;;;;29603:132:::0;29711:15;;29654:7;;29680:47;;:26;26932:14;29701:4;29680:26;:20;:26;:::i;:::-;:30;:47;:30;:47;:::i;24170:129::-;23085:5;;;;;-1:-1:-1;;;;;23085:5:0;23071:10;:19;23063:40;;;;-1:-1:-1;;;23063:40:0;;;;;;;;;24248:5:::1;::::0;24239:25:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;24248:5:0;;::::1;::::0;24255:8;;24239:25:::1;;;;;;;;;;24275:5;:16:::0;;-1:-1:-1;;;;;;24275:16:0::1;-1:-1:-1::0;;;;;24275:16:0;;;::::1;::::0;;;::::1;::::0;;24170:129::o;14949:127::-;-1:-1:-1;;;;;15050:18:0;15023:7;15050:18;;;;;;;;;;;;14949:127::o;23558:301::-;23085:5;;;;;-1:-1:-1;;;;;23085:5:0;23071:10;:19;23063:40;;;;-1:-1:-1;;;23063:40:0;;;;;;;;;23628:27:::1;23637:5;;;;;;;;;-1:-1:-1::0;;;;;23637:5:0::1;23652:1;23628:27;;;;;;;;;;;;;;;;23680:5;::::0;23671:27:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;23680:5:0;;::::1;::::0;::::1;::::0;23671:27:::1;;;;;;;;;;23730:12;::::0;23714:41:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;23730:12:0;;::::1;::::0;::::1;::::0;23714:41:::1;;;;;;;;;;23768:5;:18:::0;;-1:-1:-1;;;;;;23768:18:0::1;::::0;;23797:12:::1;:25:::0;;-1:-1:-1;;;;;;23797:25:0;;::::1;::::0;;;23833:5:::1;:18:::0;;;;::::1;::::0;;23558:301::o;31083:471::-;31228:11;:18;31210:7;:14;:36;31202:92;;;;-1:-1:-1;;;31202:92:0;;;;;;;;;31335:9;:16;31313:11;:18;:38;31305:96;;;;-1:-1:-1;;;31305:96:0;;;;;;;;;31412:11;:9;:11::i;:::-;31438:9;31434:113;31453:7;:14;31451:1;:16;31434:113;;;31488:47;31494:7;31502:1;31494:10;;;;;;;;;;;;;;31506:11;31518:1;31506:14;;;;;;;;;;;;;;31522:9;31532:1;31522:12;;;;;;;;;;;;;;31488:5;:47::i;:::-;31469:3;;31434:113;;;;31083:471;;;:::o;28824:87::-;23085:5;;;;;-1:-1:-1;;;;;23085:5:0;23071:10;:19;23063:40;;;;-1:-1:-1;;;23063:40:0;;;;;;;;;28886:7:::1;:17:::0;;-1:-1:-1;;;;;;28886:17:0::1;-1:-1:-1::0;;;;;28886:17:0;;;::::1;::::0;;;::::1;::::0;;28824:87::o;27262:75::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;27532:38::-;;;;;;;;;22654:20;;;;;;-1:-1:-1;;;;;22654:20:0;;:::o;13889:95::-;13969:7;13962:14;;;;;;;;-1:-1:-1;;13962:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13936:13;;13962:14;;13969:7;;13962:14;;13969:7;13962:14;;;;;;;;;;;;;;;;;;;;;;;;26955:27;;;;:::o;27072:30::-;;;;:::o;27207:46::-;;;;;;;;;;;;;;;:::o;27627:60::-;;;;;;;;;;;;;:::o;17927:269::-;18020:4;18037:129;18046:12;:10;:12::i;:::-;18060:7;18069:96;18108:15;18069:96;;;;;;;;;;;;;;;;;:11;:25;18081:12;:10;:12::i;:::-;-1:-1:-1;;;;;18069:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18069:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;15289:175::-;15375:4;15392:42;15402:12;:10;:12::i;:::-;15416:9;15427:6;15392:9;:42::i;33928:133::-;23302:5;;-1:-1:-1;;;;;23302:5:0;23288:10;:19;;:42;;-1:-1:-1;23325:5:0;;;;;-1:-1:-1;;;;;23325:5:0;23311:10;:19;23288:42;23280:63;;;;-1:-1:-1;;;23280:63:0;;;;;;;;;34013:18:::1;:40:::0;33928:133::o;27733:29::-;;;;:::o;15527:151::-;-1:-1:-1;;;;;15643:18:0;;;15616:7;15643:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15527:151::o;22681:27::-;;;-1:-1:-1;;;;;22681:27:0;;:::o;29187:141::-;29261:7;29287:33;;;:22;:33;;;;;;;29187:141::o;23871:283::-;23190:12;;-1:-1:-1;;;;;23190:12:0;23176:10;:26;23168:54;;;;-1:-1:-1;;;23168:54:0;;;;;;;;;23943:5:::1;::::0;23950:12:::1;::::0;23934:29:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;23943:5:0::1;::::0;;::::1;::::0;::::1;::::0;23950:12;::::1;::::0;23934:29:::1;;;;;;;;;;23982:12;::::0;23974:5:::1;:20:::0;;-1:-1:-1;;;;;;23974:20:0::1;23982:12;-1:-1:-1::0;;;;;23982:12:0;;::::1;23974:20:::0;;::::1;;::::0;;24059:46:::1;::::0;-1:-1:-1;;24059:46:0::1;::::0;::::1;::::0;23982:12;-1:-1:-1;;24059:46:0::1;;;;;;;;;;24116:12;:30:::0;;-1:-1:-1;;;;;;24116:30:0::1;-1:-1:-1::0;;;;;24116:30:0;;;::::1;::::0;;;::::1;::::0;;23871:283::o;27379:57::-;;;;;;;;;;;;;:::o;29336:129::-;29404:7;29430:27;;;:16;:27;;;;;;;29336:129::o;23376:174::-;23085:5;;;;;-1:-1:-1;;;;;23085:5:0;23071:10;:19;23063:40;;;;-1:-1:-1;;;23063:40:0;;;;;;;;;23475:12:::1;::::0;23459:44:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;23475:12:0;;::::1;::::0;23489:13;;23459:44:::1;;22715:20:::0;;;-1:-1:-1;;;;;22715:20:0;;:::o;34069:129::-;23302:5;;-1:-1:-1;;;;;23302:5:0;23288:10;:19;;:42;;-1:-1:-1;23325:5:0;;;;;-1:-1:-1;;;;;23325:5:0;23311:10;:19;23288:42;23280:63;;;;-1:-1:-1;;;23280:63:0;;;;;;;;;34152:17:::1;:38:::0;34069:129::o;27109:29::-;;;;:::o;757:106::-;845:10;757:106;:::o;21074:346::-;-1:-1:-1;;;;;21176:19:0;;21168:68;;;;-1:-1:-1;;;21168:68:0;;;;;;;;;-1:-1:-1;;;;;21255:21:0;;21247:68;;;;-1:-1:-1;;;21247:68:0;;;;;;;;;-1:-1:-1;;;;;21328:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;21380:32;;;;;21358:6;;21380:32;;;;;;;;;;21074:346;;;:::o;18686:539::-;-1:-1:-1;;;;;18792:20:0;;18784:70;;;;-1:-1:-1;;;18784:70:0;;;;;;;;;-1:-1:-1;;;;;18873:23:0;;18865:71;;;;-1:-1:-1;;;18865:71:0;;;;;;;;;18949:47;18970:6;18978:9;18989:6;18949:20;:47::i;:::-;19029:71;19051:6;19029:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19029:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;19009:17:0;;;:9;:17;;;;;;;;;;;:91;;;;19134:20;;;;;;;:32;;19159:6;19134:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;19111:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;19182:35;;;;;;;;;;19210:6;;19182:35;;9640:166;9726:7;9762:12;9754:6;;;;9746:29;;;;-1:-1:-1;;;9746:29:0;;;;;;;;;;-1:-1:-1;;;9793:5:0;;;9640:166::o;6813:179::-;6871:7;6903:5;;;6927:6;;;;6919:46;;;;-1:-1:-1;;;6919:46:0;;;;;;;;;6983:1;6813:179;-1:-1:-1;;;6813:179:0:o;7275:158::-;7333:7;7366:1;7361;:6;;7353:49;;;;-1:-1:-1;;;7353:49:0;;;;;;;;;-1:-1:-1;7420:5:0;;;7275:158::o;7692:220::-;7750:7;7774:6;7770:20;;-1:-1:-1;7789:1:0;7782:8;;7770:20;7813:5;;;7817:1;7813;:5;:1;7837:5;;;;;:10;7829:56;;;;-1:-1:-1;;;7829:56:0;;;;;;;;37355:70;37412:5;37406:3;:11;37395:8;:22;37355:70::o;8390:153::-;8448:7;8480:1;8476;:5;8468:44;;;;-1:-1:-1;;;8468:44:0;;;;;;;;;8534:1;8530;:5;;;;;;;8390:153;-1:-1:-1;;;8390:153:0:o;31562:1571::-;31661:23;;;;:14;:23;;;;;;;;31658:125;;;31705:45;31717:7;31726:11;31739:10;31705:45;;;;;;;;;;;;;;;;;31765:7;;31658:125;31864:18;;31822:8;;31801:30;;;;:20;:30;;;;;;;;31832:10;31801:42;;;;;;;;:59;;31848:11;31801:59;:46;:59;:::i;:::-;:81;;31793:130;;;;-1:-1:-1;;;31793:130:0;;;;;;;;;31995:17;;31965:8;;31942:32;;;;:22;:32;;;;;;:49;;31979:11;31942:49;:36;:49;:::i;:::-;:70;;31934:126;;;;-1:-1:-1;;;31934:126:0;;;;;;;;;32073:13;32118:4;32125:10;32137:7;32146:11;32099:59;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;32099:59:0;;;32089:70;;;;;;32073:86;;32172:13;32251:5;32198:59;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;32198:59:0;;;32188:70;;;;;;32172:86;;32271:14;32288:25;32296:5;32303:9;32288:7;:25::i;:::-;32342:7;;32271:42;;-1:-1:-1;;;;;;32332:17:0;;;32342:7;;32332:17;;:38;;-1:-1:-1;32363:7:0;;-1:-1:-1;;;;;32353:17:0;;;32363:7;;32353:17;32332:38;32324:65;;;;-1:-1:-1;;;32324:65:0;;;;;;;;;32433:10;;:53;;-1:-1:-1;;;32433:53:0;;32402:28;;-1:-1:-1;;;;;32433:10:0;;:41;;:53;;32475:10;;32433:53;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32433:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32433:53:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;32433:53:0;;;;;;;;;32571:10;32497:29;32545:37;;;:25;:37;;;;;;32402:84;;-1:-1:-1;32497:29:0;32529:54;;:11;;:54;:15;:54;:::i;:::-;32497:86;;32594:62;32612:20;32634:21;32594:17;:62::i;:::-;;32669:29;32674:10;32686:11;32669:4;:29::i;:::-;32711:23;;;;:14;:23;;;;;;;;:30;;-1:-1:-1;;32711:30:0;32737:4;32711:30;;;32834:8;;32813:30;;:20;:30;;;;;32844:10;32813:42;;;;;;;;32797:59;;:11;;:59;:15;:59;:::i;:::-;32773:8;;;32752:30;;;;:20;:30;;;;;;;;32783:10;32752:42;;;;;;;:104;;;;32941:8;;32918:32;;:22;:32;;;;;32902:49;;:11;;:49;:15;:49;:::i;:::-;32890:8;;32867:32;;;;:22;:32;;;;;;;;:84;;;;32988:10;32962:37;;;:25;:37;;;;;;;:61;;;33036:10;:12;;;;;;;;33066:59;;;;;;33072:7;;33081:11;;33106:6;;33066:59;;;;;;;;;;31562:1571;;;;;;;;;:::o;35000:761::-;35078:7;35141:9;:16;35161:2;35141:22;35137:96;;35180:41;;-1:-1:-1;;;35180:41:0;;;;;;;;35137:96;35594:4;35579:20;;35573:27;35640:4;35625:20;;35619:27;35694:4;35679:20;;35673:27;35302:9;35665:36;35731:22;35739:4;35665:36;35573:27;35619;35731:7;:22::i;:::-;35724:29;35000:761;-1:-1:-1;;;;;;35000:761:0:o;30254:821::-;30365:4;30415:20;30389:22;:46;;30381:111;;;;-1:-1:-1;;;30381:111:0;;;;;;;;;30503:13;;30531:199;30552:27;30550:1;:29;30531:199;;;30627:20;30648:1;30627:23;;;;;;;;;30603:20;:47;30600:119;;30678:1;30670:9;;30698:5;;30600:119;30581:3;;30531:199;;;-1:-1:-1;30740:20:0;30774:10;30771:189;;-1:-1:-1;30815:21:0;:24;30771:189;;;30885:63;30944:3;30885:54;30910:21;30932:5;30910:28;;;;;;;;;30885:20;;:54;:24;:54;:::i;:::-;:58;:63;:58;:63;:::i;:::-;30870:78;;30771:189;30996:22;30980:12;:38;;30972:95;;;;-1:-1:-1;;;30972:95:0;;;;;;;;;30254:821;;;;;;:::o;33141:334::-;33204:17;33224;:7;33236:4;33224:17;:11;:17;:::i;:::-;33204:37;;33252:19;33274:13;:11;:13::i;:::-;33252:35;-1:-1:-1;26932:14:0;33306:26;33252:35;33322:9;33306:26;:15;:26;:::i;:::-;:46;;33298:73;;;;-1:-1:-1;;;33298:73:0;;;;;;;;;33382:21;33388:3;33393:9;33382:5;:21::i;:::-;33438:15;;:29;;33458:7;33438:29;:19;:29;:::i;:::-;33420:15;:47;-1:-1:-1;;;;33141:334:0:o;35915:1432::-;36000:7;36925:66;36911:80;;;36903:127;;;;-1:-1:-1;;;36903:127:0;;;;;;;;;37049:1;:7;;37054:2;37049:7;:18;;;;37060:1;:7;;37065:2;37060:7;37049:18;37041:65;;;;-1:-1:-1;;;37041:65:0;;;;;;;;;37204:14;37221:24;37231:4;37237:1;37240;37243;37221:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;37221:24:0;;-1:-1:-1;;37221:24:0;;;-1:-1:-1;;;;;;;37264:20:0;;37256:57;;;;-1:-1:-1;;;37256:57:0;;;;;;;;;37333:6;35915:1432;-1:-1:-1;;;;;35915:1432:0:o;19507:378::-;-1:-1:-1;;;;;19591:21:0;;19583:65;;;;-1:-1:-1;;;19583:65:0;;;;;;;;;19661:49;19690:1;19694:7;19703:6;19661:20;:49::i;:::-;19738:12;;:24;;19755:6;19738:24;:16;:24;:::i;:::-;19723:12;:39;-1:-1:-1;;;;;19794:18:0;;:9;:18;;;;;;;;;;;:30;;19817:6;19794:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;19773:18:0;;:9;:18;;;;;;;;;;;:51;;;;19840:37;;19773:18;;:9;19840:37;;;;19870:6;;19840:37;;;;;;;;;;19507:378;;:::o;5:130:-1:-;72:20;;-1:-1;;;;;35758:54;;37346:35;;37336:2;;37395:1;;37385:12;889:707;;1006:3;999:4;991:6;987:17;983:27;973:2;;-1:-1;;1014:12;973:2;1061:6;1048:20;1083:80;1098:64;1155:6;1098:64;;;1083:80;;;1191:21;;;1074:89;-1:-1;1235:4;1248:14;;;;1223:17;;;1337;;;1328:27;;;;1325:36;-1:-1;1322:2;;;1374:1;;1364:12;1322:2;1399:1;1384:206;1409:6;1406:1;1403:13;1384:206;;;2120:20;;1477:50;;1541:14;;;;1569;;;;1431:1;1424:9;1384:206;;;1388:14;;;;;966:630;;;;;2331:241;;2435:2;2423:9;2414:7;2410:23;2406:32;2403:2;;;-1:-1;;2441:12;2403:2;2503:53;2548:7;2524:22;2503:53;;2579:366;;;2700:2;2688:9;2679:7;2675:23;2671:32;2668:2;;;-1:-1;;2706:12;2668:2;2768:53;2813:7;2789:22;2768:53;;;2758:63;;2876:53;2921:7;2858:2;2901:9;2897:22;2876:53;;;2866:63;;2662:283;;;;;;2952:491;;;;3090:2;3078:9;3069:7;3065:23;3061:32;3058:2;;;-1:-1;;3096:12;3058:2;85:6;72:20;97:33;124:5;97:33;;;3148:63;-1:-1;3248:2;3287:22;;72:20;97:33;72:20;97:33;;;3052:391;;3256:63;;-1:-1;;;3356:2;3395:22;;;;2120:20;;3052:391;3450:366;;;3571:2;3559:9;3550:7;3546:23;3542:32;3539:2;;;-1:-1;;3577:12;3539:2;3639:53;3684:7;3660:22;3639:53;;;3629:63;3729:2;3768:22;;;;2120:20;;-1:-1;;;3533:283;3823:917;;;;4045:2;4033:9;4024:7;4020:23;4016:32;4013:2;;;-1:-1;;4051:12;4013:2;4109:17;4096:31;4147:18;;4139:6;4136:30;4133:2;;;-1:-1;;4169:12;4133:2;4199:78;4269:7;4260:6;4249:9;4245:22;4199:78;;;4189:88;;4342:2;;;;4331:9;4327:18;4314:32;4147:18;4358:6;4355:30;4352:2;;;-1:-1;;4388:12;4352:2;4418:78;4488:7;4479:6;4468:9;4464:22;4418:78;;;4408:88;;;4561:2;4550:9;4546:18;4533:32;4147:18;4577:6;4574:30;4571:2;;;-1:-1;;4607:12;4571:2;4707:6;4696:9;4692:22;284:3;277:4;269:6;265:17;261:27;251:2;;-1:-1;;292:12;251:2;339:6;326:20;312:34;;361:89;376:73;442:6;376:73;;361:89;478:21;;;535:14;;;;510:17;;;-1:-1;615:242;640:6;637:1;634:13;615:242;;;723:3;710:17;514:6;698:30;1706:3;1687:17;698:30;1687:17;1683:27;1673:2;;-1:-1;;1714:12;1673:2;4342;698:30;;1748:20;4147:18;34673:6;34670:30;34667:2;;;-1:-1;;34703:12;34667:2;1783:64;34776:9;34757:17;;-1:-1;;34753:33;34834:15;;1783:64;;;1867:6;1860:5;1853:21;1971:3;4561:2;1962:6;698:30;1953:16;;1950:25;1947:2;;;-1:-1;;1978:12;1947:2;36752:6;4561:2;698:30;1891:17;4342:2;1929:5;1925:16;36729:30;36790:16;;;;;36783:27;;;735:59;;-1:-1;808:14;;;;836;;;;662:1;655:9;615:242;;;619:14;;4627:97;;;;;;;;;4007:733;;;;;;4747:241;;4851:2;4839:9;4830:7;4826:23;4822:32;4819:2;;;-1:-1;;4857:12;4819:2;-1:-1;2120:20;;4813:175;-1:-1;4813:175;4995:263;;5110:2;5098:9;5089:7;5085:23;5081:32;5078:2;;;-1:-1;;5116:12;5078:2;-1:-1;2268:13;;5072:186;-1:-1;5072:186;5265:366;;;5386:2;5374:9;5365:7;5361:23;5357:32;5354:2;;;-1:-1;;5392:12;5354:2;2133:6;2120:20;5444:63;;5562:53;5607:7;5544:2;5587:9;5583:22;5562:53;;5638:366;;;5759:2;5747:9;5738:7;5734:23;5730:32;5727:2;;;-1:-1;;5765:12;5727:2;-1:-1;;2120:20;;;5917:2;5956:22;;;2120:20;;-1:-1;5721:283;17403:511;9007:66;8987:87;;8971:2;9093:12;;6606:37;;;;17877:12;;;17611:303;17921:213;-1:-1;;;;;35758:54;;;;6247:45;;18039:2;18024:18;;18010:124;18377:340;-1:-1;;;;;35758:54;;;;6090:58;;18703:2;18688:18;;6606:37;18531:2;18516:18;;18502:215;18724:324;-1:-1;;;;;35758:54;;;6247:45;;35758:54;;19034:2;19019:18;;6247:45;18870:2;18855:18;;18841:207;19402:579;-1:-1;;;;;35758:54;;;6247:45;;35758:54;;;;19801:2;19786:18;;6247:45;19884:2;19869:18;;6606:37;19967:2;19952:18;;6606:37;;;;19620:3;19605:19;;19591:390;19988:201;35591:13;;35584:21;6489:34;;20100:2;20085:18;;20071:118;20196:539;6606:37;;;35974:4;35963:16;;;;20555:2;20540:18;;17356:35;20638:2;20623:18;;6606:37;20721:2;20706:18;;6606:37;20394:3;20379:19;;20365:370;21000:301;;21138:2;;21159:17;21152:47;7130:5;34954:12;35111:6;21138:2;21127:9;21123:18;35099:19;-1:-1;36897:101;36911:6;36908:1;36905:13;36897:101;;;36978:11;;;;;36972:18;36959:11;;;35139:14;36959:11;36952:39;36926:10;;36897:101;;;37013:6;37010:1;37007:13;37004:2;;;-1:-1;35139:14;37069:6;21127:9;37060:16;;37053:27;37004:2;-1:-1;34776:9;37250:14;-1:-1;;37246:28;7288:39;;;;35139:14;7288:39;;21109:192;-1:-1;;;21109:192;21308:407;21499:2;21513:47;;;7564:2;21484:18;;;35099:19;7600:26;35139:14;;;7580:47;7646:12;;;21470:245;21722:407;21913:2;21927:47;;;7897:1;21898:18;;;35099:19;-1:-1;;;35139:14;;;7912:32;7963:12;;;21884:245;22136:407;22327:2;22341:47;;;8214:2;22312:18;;;35099:19;8250:34;35139:14;;;8230:55;-1:-1;;;8305:12;;;8298:27;8344:12;;;22298:245;22550:407;22741:2;22755:47;;;8595:2;22726:18;;;35099:19;8631:33;35139:14;;;8611:54;8684:12;;;22712:245;22964:407;23155:2;23169:47;;;9344:2;23140:18;;;35099:19;9380:34;35139:14;;;9360:55;-1:-1;;;9435:12;;;9428:26;9473:12;;;23126:245;23378:407;23569:2;23583:47;;;9724:2;23554:18;;;35099:19;-1:-1;;;35139:14;;;9740:37;9796:12;;;23540:245;23792:407;23983:2;23997:47;;;10047:2;23968:18;;;35099:19;10083:29;35139:14;;;10063:50;10132:12;;;23954:245;24206:407;24397:2;24411:47;;;10383:2;24382:18;;;35099:19;10419:34;35139:14;;;10399:55;-1:-1;;;10474:12;;;10467:88;10574:12;;;24368:245;24620:407;24811:2;24825:47;;;10825:2;24796:18;;;35099:19;10861:32;35139:14;;;10841:53;10913:12;;;24782:245;25034:407;25225:2;25239:47;;;11164:2;25210:18;;;35099:19;11200:34;35139:14;;;11180:55;-1:-1;;;11255:12;;;11248:26;11293:12;;;25196:245;25448:407;25639:2;25653:47;;;11544:2;25624:18;;;35099:19;11580:28;35139:14;;;11560:49;11628:12;;;25610:245;25862:407;26053:2;26067:47;;;11879:2;26038:18;;;35099:19;-1:-1;;;35139:14;;;11895:38;11952:12;;;26024:245;26276:407;26467:2;26481:47;;;12203:2;26452:18;;;35099:19;12239:27;35139:14;;;12219:48;12286:12;;;26438:245;26690:407;26881:2;26895:47;;;12537:2;26866:18;;;35099:19;12573:34;35139:14;;;12553:55;-1:-1;;;12628:12;;;12621:26;12666:12;;;26852:245;27104:407;27295:2;27309:47;;;12917:2;27280:18;;;35099:19;12953:34;35139:14;;;12933:55;-1:-1;;;13008:12;;;13001:25;13045:12;;;27266:245;27518:407;27709:2;27723:47;;;13296:2;27694:18;;;35099:19;13332:34;35139:14;;;13312:55;-1:-1;;;13387:12;;;13380:35;13434:12;;;27680:245;27932:407;28123:2;28137:47;;;13685:2;28108:18;;;35099:19;-1:-1;;;35139:14;;;13701:39;13759:12;;;28094:245;28346:407;28537:2;28551:47;;;28522:18;;;35099:19;14046:34;35139:14;;;14026:55;14100:12;;;28508:245;28760:407;28951:2;28965:47;;;14351:2;28936:18;;;35099:19;14387:34;35139:14;;;14367:55;-1:-1;;;14442:12;;;14435:29;14483:12;;;28922:245;29174:407;29365:2;29379:47;;;14734:2;29350:18;;;35099:19;14770:34;35139:14;;;14750:55;-1:-1;;;14825:12;;;14818:36;14873:12;;;29336:245;29588:407;29779:2;29793:47;;;15124:2;29764:18;;;35099:19;15160:34;35139:14;;;15140:55;-1:-1;;;15215:12;;;15208:88;15315:12;;;29750:245;30002:407;30193:2;30207:47;;;15566:2;30178:18;;;35099:19;15602:34;35139:14;;;15582:55;-1:-1;;;15657:12;;;15650:28;15697:12;;;30164:245;30416:407;30607:2;30621:47;;;15948:2;30592:18;;;35099:19;15984:34;35139:14;;;15964:55;-1:-1;;;16039:12;;;16032:44;16095:12;;;30578:245;30830:407;31021:2;31035:47;;;16346:1;31006:18;;;35099:19;-1:-1;;;35139:14;;;16361:32;16412:12;;;30992:245;31244:407;31435:2;31449:47;;;16663:2;31420:18;;;35099:19;16699:34;35139:14;;;16679:55;-1:-1;;;16754:12;;;16747:37;16803:12;;;31406:245;31658:407;31849:2;31863:47;;;17054:2;31834:18;;;35099:19;17090:33;35139:14;;;17070:54;17143:12;;;31820:245;32072:213;6606:37;;;32190:2;32175:18;;32161:124;32292:451;6606:37;;;32638:2;32623:18;;6606:37;;;;-1:-1;;;;;35758:54;32729:2;32714:18;;6090:58;32474:2;32459:18;;32445:298;32750:675;6606:37;;;33153:2;33138:18;;6606:37;;;;-1:-1;;;;;35758:54;;;33244:2;33229:18;;6090:58;35758:54;33327:2;33312:18;;6247:45;33410:3;33395:19;;6606:37;32988:3;32973:19;;32959:466;33432:205;35974:4;35963:16;;;;17356:35;;33546:2;33531:18;;33517:120;33644:256;33706:2;33700:9;33732:17;;;33807:18;33792:34;;33828:22;;;33789:62;33786:2;;;33864:1;;33854:12;33786:2;33706;33873:22;33684:216;;-1:-1;33684:216;33907:313;;34075:18;34067:6;34064:30;34061:2;;;-1:-1;;34097:12;34061:2;-1:-1;34142:4;34130:17;;;34195:15;;33998:222;37287:117;-1:-1;;;;;35758:54;;37346:35;;37336:2;;37395:1;;37385:12;37336:2;37330:74;
Swarm Source
ipfs://f78f5057fb9c212424722f2b30d9fbde6fbd6b930a86242b722428bcf688fcec
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.