Source Code
Overview
ETH Balance
10 wei
Eth Value
Less Than $0.01 (@ $2,063.72/ETH)Latest 11 from a total of 11 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271115 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer | 8271112 | 2406 days ago | IN | 1 wei | 0.00002104 | ||||
| Transfer Ownersh... | 7110823 | 2597 days ago | IN | 0 ETH | 0.00009128 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GladiatorBattleSpectators
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-01-22
*/
pragma solidity 0.4.25;
library SafeMath256 {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
function pow(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) return 0;
if (b == 0) return 1;
uint256 c = a ** b;
assert(c / (a ** (b - 1)) == a);
return c;
}
}
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
function _validateAddress(address _addr) internal pure {
require(_addr != address(0), "invalid address");
}
constructor() public {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner, "not a contract owner");
_;
}
function transferOwnership(address newOwner) public onlyOwner {
_validateAddress(newOwner);
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
modifier whenNotPaused() {
require(!paused, "contract is paused");
_;
}
modifier whenPaused() {
require(paused, "contract is not paused");
_;
}
function pause() public onlyOwner whenNotPaused {
paused = true;
emit Pause();
}
function unpause() public onlyOwner whenPaused {
paused = false;
emit Unpause();
}
}
contract Controllable is Ownable {
mapping(address => bool) controllers;
modifier onlyController {
require(_isController(msg.sender), "no controller rights");
_;
}
function _isController(address _controller) internal view returns (bool) {
return controllers[_controller];
}
function _setControllers(address[] _controllers) internal {
for (uint256 i = 0; i < _controllers.length; i++) {
_validateAddress(_controllers[i]);
controllers[_controllers[i]] = true;
}
}
}
contract Upgradable is Controllable {
address[] internalDependencies;
address[] externalDependencies;
function getInternalDependencies() public view returns(address[]) {
return internalDependencies;
}
function getExternalDependencies() public view returns(address[]) {
return externalDependencies;
}
function setInternalDependencies(address[] _newDependencies) public onlyOwner {
for (uint256 i = 0; i < _newDependencies.length; i++) {
_validateAddress(_newDependencies[i]);
}
internalDependencies = _newDependencies;
}
function setExternalDependencies(address[] _newDependencies) public onlyOwner {
externalDependencies = _newDependencies;
_setControllers(_newDependencies);
}
}
contract Gold {
function remoteTransfer(address _to, uint256 _value) external;
}
contract GladiatorBattleStorage {
function challengesAmount() external view returns (uint256);
function battleOccurred(uint256) external view returns (bool);
function challenges(uint256) external view returns (bool, uint256, uint256);
function battleBlockNumber(uint256) external view returns (uint256);
function creator(uint256) external view returns (address, uint256);
function opponent(uint256) external view returns (address, uint256);
function winner(uint256) external view returns (address, uint256);
}
contract GladiatorBattleSpectatorsStorage {
function challengeBetsValue(uint256, bool) external view returns (uint256);
function challengeBalance(uint256) external view returns (uint256);
function challengeBetsAmount(uint256, bool) external view returns (uint256);
function betsAmount() external view returns (uint256);
function allBets(uint256) external view returns (address, uint256, bool, uint256, bool);
function payOut(address, bool, uint256) external;
function setChallengeBalance(uint256, uint256) external;
function setChallengeBetsAmount(uint256, bool, uint256) external;
function setChallengeBetsValue(uint256, bool, uint256) external;
function addBet(address, uint256, bool, uint256) external returns (uint256);
function deactivateBet(uint256) external;
function addChallengeBet(uint256, uint256) external;
function removeChallengeBet(uint256, uint256) external;
function addUserChallenge(address, uint256, uint256) external;
function removeUserChallenge(address, uint256) external;
function userChallengeBetId(address, uint256) external view returns (uint256);
function challengeWinningBetsAmount(uint256) external view returns (uint256);
function setChallengeWinningBetsAmount(uint256, uint256) external;
function getUserBet(address, uint256) external view returns (uint256, bool, uint256, bool);
}
contract GladiatorBattleSpectators is Upgradable {
using SafeMath256 for uint256;
Gold goldTokens;
GladiatorBattleSpectatorsStorage _storage_;
GladiatorBattleStorage battleStorage;
uint256 constant MULTIPLIER = 10**6; // for more accurate calculations
function _safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
return b > a ? 0 : a.sub(b);
}
function _validateChallengeId(uint256 _challengeId) internal view {
require(
_challengeId > 0 &&
_challengeId < battleStorage.challengesAmount(),
"wrong challenge id"
);
}
function _validateBetId(uint256 _betId) internal view {
require(
_betId > 0 &&
_betId < _storage_.betsAmount(),
"wrong bet id"
);
( , , , , bool _active) = _storage_.allBets(_betId);
require(_active, "the bet is not active");
}
function _getChallengeCurrency(
uint256 _challengeId
) internal view returns (bool isGold) {
(isGold, , ) = battleStorage.challenges(_challengeId);
}
function _getChallengeBetsAmount(
uint256 _challengeId,
bool _willCreatorWin
) internal view returns (uint256) {
return _storage_.challengeBetsAmount(_challengeId, _willCreatorWin);
}
function _getChallengeBetsValue(
uint256 _challengeId,
bool _willCreatorWin
) internal view returns (uint256) {
return _storage_.challengeBetsValue(_challengeId, _willCreatorWin);
}
function _getChallengeBalance(
uint256 _challengeId
) internal view returns (uint256) {
return _storage_.challengeBalance(_challengeId);
}
function _setChallengeBetsAmount(
uint256 _challengeId,
bool _willCreatorWin,
uint256 _value
) internal {
_storage_.setChallengeBetsAmount(_challengeId, _willCreatorWin, _value);
}
function _setChallengeBetsValue(
uint256 _challengeId,
bool _willCreatorWin,
uint256 _value
) internal {
_storage_.setChallengeBetsValue(_challengeId, _willCreatorWin, _value);
}
function _setChallengeBalance(
uint256 _challengeId,
uint256 _value
) internal {
_storage_.setChallengeBalance(_challengeId, _value);
}
function _updateBetsValues(
uint256 _challengeId,
bool _willCreatorWin,
uint256 _value,
bool _increase // or decrease
) internal {
uint256 _betsAmount = _getChallengeBetsAmount(_challengeId, _willCreatorWin);
uint256 _betsValue = _getChallengeBetsValue(_challengeId, _willCreatorWin);
uint256 _betsTotalValue = _getChallengeBalance(_challengeId);
if (_increase) {
_betsAmount = _betsAmount.add(1);
_betsValue = _betsValue.add(_value);
_betsTotalValue = _betsTotalValue.add(_value);
} else {
_betsAmount = _betsAmount.sub(1);
_betsValue = _betsValue.sub(_value);
_betsTotalValue = _betsTotalValue.sub(_value);
}
_setChallengeBetsAmount(_challengeId, _willCreatorWin, _betsAmount);
_setChallengeBetsValue(_challengeId, _willCreatorWin, _betsValue);
_setChallengeBalance(_challengeId, _betsTotalValue);
}
function _checkThatOpponentIsSelected(
uint256 _challengeId
) internal view returns (bool) {
( , uint256 _dragonId) = battleStorage.opponent(_challengeId);
require(_dragonId != 0, "the opponent is not selected");
}
function _hasBattleOccurred(uint256 _challengeId) internal view returns (bool) {
return battleStorage.battleOccurred(_challengeId);
}
function _checkThatBattleHasNotOccurred(
uint256 _challengeId
) internal view {
require(!_hasBattleOccurred(_challengeId), "the battle has already occurred");
}
function _checkThatBattleHasOccurred(
uint256 _challengeId
) internal view {
require(_hasBattleOccurred(_challengeId), "the battle has not yet occurred");
}
function _checkThatWeDoNotKnowTheResult(
uint256 _challengeId
) internal view {
uint256 _blockNumber = battleStorage.battleBlockNumber(_challengeId);
require(
_blockNumber > block.number || _blockNumber < _safeSub(block.number, 256),
"we already know the result"
);
}
function _isWinningBet(
uint256 _challengeId,
bool _willCreatorWin
) internal view returns (bool) {
(address _winner, ) = battleStorage.winner(_challengeId);
(address _creator, ) = battleStorage.creator(_challengeId);
bool _isCreatorWinner = _winner == _creator;
return _isCreatorWinner == _willCreatorWin;
}
function _checkWinner(
uint256 _challengeId,
bool _willCreatorWin
) internal view {
require(_isWinningBet(_challengeId, _willCreatorWin), "you did not win the bet");
}
function _checkThatBetIsActive(bool _active) internal pure {
require(_active, "bet is not active");
}
function _payForBet(
uint256 _value,
bool _isGold,
uint256 _bet
) internal {
if (_isGold) {
require(_value == 0, "specify isGold as false to send eth");
goldTokens.remoteTransfer(address(_storage_), _bet);
} else {
require(_value == _bet, "wrong eth amount");
address(_storage_).transfer(_value);
}
}
function() external payable {}
function _create(
address _user,
uint256 _challengeId,
bool _willCreatorWin,
uint256 _value
) internal {
uint256 _betId = _storage_.addBet(_user, _challengeId, _willCreatorWin, _value);
_storage_.addChallengeBet(_challengeId, _betId);
_storage_.addUserChallenge(_user, _challengeId, _betId);
}
function placeBet(
address _user,
uint256 _challengeId,
bool _willCreatorWin,
uint256 _value,
uint256 _ethValue
) external onlyController returns (bool isGold) {
_validateChallengeId(_challengeId);
_checkThatOpponentIsSelected(_challengeId);
_checkThatBattleHasNotOccurred(_challengeId);
_checkThatWeDoNotKnowTheResult(_challengeId);
require(_value > 0, "a bet must be more than 0");
isGold = _getChallengeCurrency(_challengeId);
_payForBet(_ethValue, isGold, _value);
uint256 _existingBetId = _storage_.userChallengeBetId(_user, _challengeId);
require(_existingBetId == 0, "you have already placed a bet");
_create(_user, _challengeId, _willCreatorWin, _value);
_updateBetsValues(_challengeId, _willCreatorWin, _value, true);
}
function _remove(
address _user,
uint256 _challengeId,
uint256 _betId
) internal {
_storage_.deactivateBet(_betId);
_storage_.removeChallengeBet(_challengeId, _betId);
_storage_.removeUserChallenge(_user, _challengeId);
}
function removeBet(
address _user,
uint256 _challengeId
) external onlyController {
_validateChallengeId(_challengeId);
uint256 _betId = _storage_.userChallengeBetId(_user, _challengeId);
(
address _realUser,
uint256 _realChallengeId,
bool _willCreatorWin,
uint256 _value,
bool _active
) = _storage_.allBets(_betId);
require(_realUser == _user, "not your bet");
require(_realChallengeId == _challengeId, "wrong challenge");
_checkThatBetIsActive(_active);
if (_hasBattleOccurred(_challengeId)) {
require(!_isWinningBet(_challengeId, _willCreatorWin), "request a reward instead");
uint256 _opponentBetsAmount = _getChallengeBetsAmount(_challengeId, !_willCreatorWin);
require(_opponentBetsAmount == 0, "your bet lost");
} else {
_checkThatWeDoNotKnowTheResult(_challengeId);
}
_remove(_user, _challengeId, _betId);
bool _isGold = _getChallengeCurrency(_challengeId);
_storage_.payOut(_user, _isGold, _value);
_updateBetsValues(_challengeId, _willCreatorWin, _value, false);
}
function _updateWinningBetsAmount(
uint256 _challengeId,
bool _willCreatorWin
) internal returns (bool) {
uint256 _betsAmount = _getChallengeBetsAmount(_challengeId, _willCreatorWin);
uint256 _existingWinningBetsAmount = _storage_.challengeWinningBetsAmount(_challengeId);
uint256 _winningBetsAmount = _existingWinningBetsAmount == 0 ? _betsAmount : _existingWinningBetsAmount;
_winningBetsAmount = _winningBetsAmount.sub(1);
_storage_.setChallengeWinningBetsAmount(_challengeId, _winningBetsAmount);
return _winningBetsAmount == 0;
}
function requestReward(
address _user,
uint256 _challengeId
) external onlyController returns (uint256 reward, bool isGold) {
_validateChallengeId(_challengeId);
_checkThatBattleHasOccurred(_challengeId);
(
uint256 _betId,
bool _willCreatorWin,
uint256 _value,
bool _active
) = _storage_.getUserBet(_user, _challengeId);
_checkThatBetIsActive(_active);
_checkWinner(_challengeId, _willCreatorWin);
bool _isLast = _updateWinningBetsAmount(_challengeId, _willCreatorWin);
uint256 _betsValue = _getChallengeBetsValue(_challengeId, _willCreatorWin);
uint256 _opponentBetsValue = _getChallengeBetsValue(_challengeId, !_willCreatorWin);
uint256 _percentage = _value.mul(MULTIPLIER).div(_betsValue);
reward = _opponentBetsValue.mul(85).div(100).mul(_percentage).div(MULTIPLIER); // 15% to winner in the battle
reward = reward.add(_value);
uint256 _challengeBalance = _getChallengeBalance(_challengeId);
require(_challengeBalance >= reward, "not enough coins, something went wrong");
reward = _isLast ? _challengeBalance : reward; // get rid of inaccuracies of calculations
isGold = _getChallengeCurrency(_challengeId);
_storage_.payOut(_user, isGold, reward);
_setChallengeBalance(_challengeId, _challengeBalance.sub(reward));
_storage_.deactivateBet(_betId);
}
// UPDATE CONTRACT
function setInternalDependencies(address[] _newDependencies) public onlyOwner {
super.setInternalDependencies(_newDependencies);
goldTokens = Gold(_newDependencies[0]);
_storage_ = GladiatorBattleSpectatorsStorage(_newDependencies[1]);
battleStorage = GladiatorBattleStorage(_newDependencies[2]);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_challengeId","type":"uint256"},{"name":"_willCreatorWin","type":"bool"},{"name":"_value","type":"uint256"},{"name":"_ethValue","type":"uint256"}],"name":"placeBet","outputs":[{"name":"isGold","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setExternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newDependencies","type":"address[]"}],"name":"setInternalDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExternalDependencies","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_challengeId","type":"uint256"}],"name":"removeBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_challengeId","type":"uint256"}],"name":"requestReward","outputs":[{"name":"reward","type":"uint256"},{"name":"isGold","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613492806100536000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063519168c61461009b57806365fc12531461012057806369c0ad93146101865780638da5cb5b146101ec578063b75c4f8014610243578063e6458f6e146102af578063eb2138a51461031b578063f2fde38b14610368578063f8f5ca3a146103ab575b005b3480156100a757600080fd5b50610106600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035151590602001909291908035906020019092919080359060200190929190505050610417565b604051808215151515815260200191505060405180910390f35b34801561012c57600080fd5b50610184600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106e7565b005b34801561019257600080fd5b506101ea600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107ce565b005b3480156101f857600080fd5b506102016109a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024f57600080fd5b506102586109ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561029b578082015181840152602081019050610280565b505050509050019250505060405180910390f35b3480156102bb57600080fd5b506102c4610a5c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103075780820151818401526020810190506102ec565b505050509050019250505060405180910390f35b34801561032757600080fd5b50610366600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aea565b005b34801561037457600080fd5b506103a9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d8565b005b3480156103b757600080fd5b506103f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611263565b60405180838152602001821515151581526020019250505060405180910390f35b60008061042333611771565b1515610497576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b6104a0866117c7565b6104a98661190d565b506104b386611a67565b6104bc86611ae8565b600084111515610534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6120626574206d757374206265206d6f7265207468616e20300000000000000081525060200191505060405180910390fd5b61053d86611c47565b915061054a838386611d35565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636deee6fa88886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561060f57600080fd5b505af1158015610623573d6000803e3d6000fd5b505050506040513d602081101561063957600080fd5b810190808051906020019092919050505090506000811415156106c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f796f75206861766520616c726561647920706c6163656420612062657400000081525060200191505060405180910390fd5b6106d087878787611fc3565b6106dd8686866001612278565b5095945050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600390805190602001906107c1929190613399565b506107cb81612355565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b61089b81612403565b8060008151811015156108aa57fe5b90602001906020020151600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110151561090357fe5b90602001906020020151600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281518110151561095c57fe5b90602001906020020151600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610a5257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a08575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610ae057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a96575b5050505050905090565b600080600080600080600080610aff33611771565b1515610b73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b610b7c896117c7565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636deee6fa8b8b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b505050506040513d6020811015610c6b57600080fd5b81019080805190602001909291905050509750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e0ced0e1896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b158015610d0f57600080fd5b505af1158015610d23573d6000803e3d6000fd5b505050506040513d60a0811015610d3957600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096508973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f7420796f757220626574000000000000000000000000000000000000000081525060200191505060405180910390fd5b8886141515610e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f77726f6e67206368616c6c656e6765000000000000000000000000000000000081525060200191505060405180910390fd5b610e9f8361251f565b610ea889612597565b15610fb657610eb7898661266c565b151515610f2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f7265717565737420612072657761726420696e7374656164000000000000000081525060200191505060405180910390fd5b610f37898615612865565b9150600082141515610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f796f757220626574206c6f73740000000000000000000000000000000000000081525060200191505060405180910390fd5b610fc0565b610fbf89611ae8565b5b610fcb8a8a8a612947565b610fd489611c47565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632da2dd1b8b83876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018281526020019350505050600060405180830381600087803b1580156110a757600080fd5b505af11580156110bb573d6000803e3d6000fd5b505050506110cc8986866000612278565b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b6111a581612b83565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080600061127d33611771565b15156112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b6112fa8c6117c7565b6113038c612c2b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de87b07d8e8e6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050608060405180830381600087803b1580156113c857600080fd5b505af11580156113dc573d6000803e3d6000fd5b505050506040513d60808110156113f257600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505098509850985098506114328661251f565b61143c8c89612cab565b6114468c89612d2d565b94506114528c89612ef5565b935061145f8c8915612ef5565b92506114898461147b620f42408a612fd790919063ffffffff16565b61301290919063ffffffff16565b91506114d9620f42406114cb846114bd60646114af60558a612fd790919063ffffffff16565b61301290919063ffffffff16565b612fd790919063ffffffff16565b61301290919063ffffffff16565b9a506114ee878c61302890919063ffffffff16565b9a506114f98c613046565b90508a8110151515611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f6e6f7420656e6f75676820636f696e732c20736f6d657468696e672077656e7481526020017f2077726f6e67000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b846115a4578a6115a6565b805b9a506115b18c611c47565b9950600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632da2dd1b8e8c8e6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018281526020019350505050600060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b505050506116b88c6116b38d8461311b90919063ffffffff16565b613134565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633adfb5488a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561174957600080fd5b505af115801561175d573d6000803e3d6000fd5b505050505050505050505050509250929050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000811180156118965750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce9a47206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561185857600080fd5b505af115801561186c573d6000803e3d6000fd5b505050506040513d602081101561188257600080fd5b810190808051906020019092919050505081105b151561190a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77726f6e67206368616c6c656e6765206964000000000000000000000000000081525060200191505060405180910390fd5b50565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc1d755a846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b505050506040513d60408110156119ca57600080fd5b81019080805190602001909291908051906020019092919050505091505060008114151515611a61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f746865206f70706f6e656e74206973206e6f742073656c65637465640000000081525060200191505060405180910390fd5b50919050565b611a7081612597565b151515611ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f74686520626174746c652068617320616c7265616479206f636375727265640081525060200191505060405180910390fd5b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16626f9c57836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611b7a57600080fd5b505af1158015611b8e573d6000803e3d6000fd5b505050506040513d6020811015611ba457600080fd5b8101908080519060200190929190505050905043811180611bcf5750611bcc436101006131e9565b81105b1515611c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f776520616c7265616479206b6e6f772074686520726573756c7400000000000081525060200191505060405180910390fd5b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f1d3776836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b158015611cda57600080fd5b505af1158015611cee573d6000803e3d6000fd5b505050506040513d6060811015611d0457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505090505080915050919050565b8115611edd57600083141515611dd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f73706563696679206973476f6c642061732066616c736520746f2073656e642081526020017f657468000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab05b844600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ec057600080fd5b505af1158015611ed4573d6000803e3d6000fd5b50505050611fbe565b8083141515611f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f77726f6e672065746820616d6f756e740000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611fbc573d6000803e3d6000fd5b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632dbc9a81868686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828152602001945050505050602060405180830381600087803b15801561209e57600080fd5b505af11580156120b2573d6000803e3d6000fd5b505050506040513d60208110156120c857600080fd5b81019080805190602001909291905050509050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f4a691185836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b15801561217457600080fd5b505af1158015612188573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372c89ff38686846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b505050505050505050565b60008060006122878787612865565b92506122938787612ef5565b915061229e87613046565b905083156122eb576122ba60018461302890919063ffffffff16565b92506122cf858361302890919063ffffffff16565b91506122e4858261302890919063ffffffff16565b905061232c565b6122ff60018461311b90919063ffffffff16565b9250612314858361311b90919063ffffffff16565b9150612329858261311b90919063ffffffff16565b90505b612337878785613215565b6123428787846132d7565b61234c8782613134565b50505050505050565b60008090505b81518110156123ff57612384828281518110151561237557fe5b90602001906020020151612b83565b6001806000848481518110151561239757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061235b565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600090505b8151811015612504576124f782828151811015156124e857fe5b90602001906020020151612b83565b80806001019150506124ce565b816002908051906020019061251a929190613399565b505050565b801515612594576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f626574206973206e6f742061637469766500000000000000000000000000000081525060200191505060405180910390fd5b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c73bcff9836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561262a57600080fd5b505af115801561263e573d6000803e3d6000fd5b505050506040513d602081101561265457600080fd5b81019080805190602001909291905050509050919050565b600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cbeae5e876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b15801561270257600080fd5b505af1158015612716573d6000803e3d6000fd5b505050506040513d604081101561272c57600080fd5b810190808051906020019092919080519060200190929190505050509250600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663510b5158876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b1580156127da57600080fd5b505af11580156127ee573d6000803e3d6000fd5b505050506040513d604081101561280457600080fd5b8101908080519060200190929190805190602001909291905050505091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905084151581151514935050505092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639cb26d1684846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050602060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050506040513d602081101561292e57600080fd5b8101908080519060200190929190505050905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633adfb548826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156129d857600080fd5b505af11580156129ec573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc1560b683836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612a8957600080fd5b505af1158015612a9d573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6c98fc084846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612b6657600080fd5b505af1158015612b7a573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b50565b612c3481612597565b1515612ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f74686520626174746c6520686173206e6f7420796574206f636375727265640081525060200191505060405180910390fd5b50565b612cb5828261266c565b1515612d29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646964206e6f742077696e207468652062657400000000000000000081525060200191505060405180910390fd5b5050565b600080600080612d3d8686612865565b9250600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369276826876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612dd057600080fd5b505af1158015612de4573d6000803e3d6000fd5b505050506040513d6020811015612dfa57600080fd5b8101908080519060200190929190505050915060008214612e1b5781612e1d565b825b9050612e3360018261311b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b91992187836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612ece57600080fd5b505af1158015612ee2573d6000803e3d6000fd5b5050505060008114935050505092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d32853084846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050602060405180830381600087803b158015612f9457600080fd5b505af1158015612fa8573d6000803e3d6000fd5b505050506040513d6020811015612fbe57600080fd5b8101908080519060200190929190505050905092915050565b6000806000841415612fec576000915061300b565b8284029050828482811515612ffd57fe5b0414151561300757fe5b8091505b5092915050565b6000818381151561301f57fe5b04905092915050565b600080828401905083811015151561303c57fe5b8091505092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d45a54f836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156130d957600080fd5b505af11580156130ed573d6000803e3d6000fd5b505050506040513d602081101561310357600080fd5b81019080805190602001909291905050509050919050565b600082821115151561312957fe5b818303905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307ff4cc883836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b1580156131cd57600080fd5b505af11580156131e1573d6000803e3d6000fd5b505050505050565b600082821161320a57613205828461311b90919063ffffffff16565b61320d565b60005b905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b1454748484846040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001831515151581526020018281526020019350505050600060405180830381600087803b1580156132ba57600080fd5b505af11580156132ce573d6000803e3d6000fd5b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b58129be8484846040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001831515151581526020018281526020019350505050600060405180830381600087803b15801561337c57600080fd5b505af1158015613390573d6000803e3d6000fd5b50505050505050565b828054828255906000526020600020908101928215613412579160200282015b828111156134115782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906133b9565b5b50905061341f9190613423565b5090565b61346391905b8082111561345f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613429565b5090565b905600a165627a7a72305820393151178f4ff42a99ffdb8bcbc2ffa0654618575d9846540b30022064216f710029
Deployed Bytecode
0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063519168c61461009b57806365fc12531461012057806369c0ad93146101865780638da5cb5b146101ec578063b75c4f8014610243578063e6458f6e146102af578063eb2138a51461031b578063f2fde38b14610368578063f8f5ca3a146103ab575b005b3480156100a757600080fd5b50610106600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035151590602001909291908035906020019092919080359060200190929190505050610417565b604051808215151515815260200191505060405180910390f35b34801561012c57600080fd5b50610184600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106e7565b005b34801561019257600080fd5b506101ea600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506107ce565b005b3480156101f857600080fd5b506102016109a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024f57600080fd5b506102586109ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561029b578082015181840152602081019050610280565b505050509050019250505060405180910390f35b3480156102bb57600080fd5b506102c4610a5c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103075780820151818401526020810190506102ec565b505050509050019250505060405180910390f35b34801561032757600080fd5b50610366600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aea565b005b34801561037457600080fd5b506103a9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d8565b005b3480156103b757600080fd5b506103f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611263565b60405180838152602001821515151581526020019250505060405180910390f35b60008061042333611771565b1515610497576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b6104a0866117c7565b6104a98661190d565b506104b386611a67565b6104bc86611ae8565b600084111515610534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6120626574206d757374206265206d6f7265207468616e20300000000000000081525060200191505060405180910390fd5b61053d86611c47565b915061054a838386611d35565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636deee6fa88886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561060f57600080fd5b505af1158015610623573d6000803e3d6000fd5b505050506040513d602081101561063957600080fd5b810190808051906020019092919050505090506000811415156106c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f796f75206861766520616c726561647920706c6163656420612062657400000081525060200191505060405180910390fd5b6106d087878787611fc3565b6106dd8686866001612278565b5095945050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600390805190602001906107c1929190613399565b506107cb81612355565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b61089b81612403565b8060008151811015156108aa57fe5b90602001906020020151600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600181518110151561090357fe5b90602001906020020151600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281518110151561095c57fe5b90602001906020020151600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610a5257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a08575b5050505050905090565b60606003805480602002602001604051908101604052809291908181526020018280548015610ae057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a96575b5050505050905090565b600080600080600080600080610aff33611771565b1515610b73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b610b7c896117c7565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636deee6fa8b8b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c4157600080fd5b505af1158015610c55573d6000803e3d6000fd5b505050506040513d6020811015610c6b57600080fd5b81019080805190602001909291905050509750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e0ced0e1896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060a060405180830381600087803b158015610d0f57600080fd5b505af1158015610d23573d6000803e3d6000fd5b505050506040513d60a0811015610d3957600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050965096509650965096508973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6e6f7420796f757220626574000000000000000000000000000000000000000081525060200191505060405180910390fd5b8886141515610e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f77726f6e67206368616c6c656e6765000000000000000000000000000000000081525060200191505060405180910390fd5b610e9f8361251f565b610ea889612597565b15610fb657610eb7898661266c565b151515610f2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f7265717565737420612072657761726420696e7374656164000000000000000081525060200191505060405180910390fd5b610f37898615612865565b9150600082141515610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f796f757220626574206c6f73740000000000000000000000000000000000000081525060200191505060405180910390fd5b610fc0565b610fbf89611ae8565b5b610fcb8a8a8a612947565b610fd489611c47565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632da2dd1b8b83876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018281526020019350505050600060405180830381600087803b1580156110a757600080fd5b505af11580156110bb573d6000803e3d6000fd5b505050506110cc8986866000612278565b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b6111a581612b83565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080600061127d33611771565b15156112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f20636f6e74726f6c6c65722072696768747300000000000000000000000081525060200191505060405180910390fd5b6112fa8c6117c7565b6113038c612c2b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de87b07d8e8e6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050608060405180830381600087803b1580156113c857600080fd5b505af11580156113dc573d6000803e3d6000fd5b505050506040513d60808110156113f257600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505098509850985098506114328661251f565b61143c8c89612cab565b6114468c89612d2d565b94506114528c89612ef5565b935061145f8c8915612ef5565b92506114898461147b620f42408a612fd790919063ffffffff16565b61301290919063ffffffff16565b91506114d9620f42406114cb846114bd60646114af60558a612fd790919063ffffffff16565b61301290919063ffffffff16565b612fd790919063ffffffff16565b61301290919063ffffffff16565b9a506114ee878c61302890919063ffffffff16565b9a506114f98c613046565b90508a8110151515611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f6e6f7420656e6f75676820636f696e732c20736f6d657468696e672077656e7481526020017f2077726f6e67000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b846115a4578a6115a6565b805b9a506115b18c611c47565b9950600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632da2dd1b8e8c8e6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018281526020019350505050600060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b505050506116b88c6116b38d8461311b90919063ffffffff16565b613134565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633adfb5488a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561174957600080fd5b505af115801561175d573d6000803e3d6000fd5b505050505050505050505050509250929050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000811180156118965750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce9a47206040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561185857600080fd5b505af115801561186c573d6000803e3d6000fd5b505050506040513d602081101561188257600080fd5b810190808051906020019092919050505081105b151561190a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77726f6e67206368616c6c656e6765206964000000000000000000000000000081525060200191505060405180910390fd5b50565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc1d755a846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b505050506040513d60408110156119ca57600080fd5b81019080805190602001909291908051906020019092919050505091505060008114151515611a61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f746865206f70706f6e656e74206973206e6f742073656c65637465640000000081525060200191505060405180910390fd5b50919050565b611a7081612597565b151515611ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f74686520626174746c652068617320616c7265616479206f636375727265640081525060200191505060405180910390fd5b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16626f9c57836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015611b7a57600080fd5b505af1158015611b8e573d6000803e3d6000fd5b505050506040513d6020811015611ba457600080fd5b8101908080519060200190929190505050905043811180611bcf5750611bcc436101006131e9565b81105b1515611c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f776520616c7265616479206b6e6f772074686520726573756c7400000000000081525060200191505060405180910390fd5b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f1d3776836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050606060405180830381600087803b158015611cda57600080fd5b505af1158015611cee573d6000803e3d6000fd5b505050506040513d6060811015611d0457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505090505080915050919050565b8115611edd57600083141515611dd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f73706563696679206973476f6c642061732066616c736520746f2073656e642081526020017f657468000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab05b844600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611ec057600080fd5b505af1158015611ed4573d6000803e3d6000fd5b50505050611fbe565b8083141515611f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f77726f6e672065746820616d6f756e740000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611fbc573d6000803e3d6000fd5b505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632dbc9a81868686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828152602001945050505050602060405180830381600087803b15801561209e57600080fd5b505af11580156120b2573d6000803e3d6000fd5b505050506040513d60208110156120c857600080fd5b81019080805190602001909291905050509050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f4a691185836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b15801561217457600080fd5b505af1158015612188573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372c89ff38686846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b505050505050505050565b60008060006122878787612865565b92506122938787612ef5565b915061229e87613046565b905083156122eb576122ba60018461302890919063ffffffff16565b92506122cf858361302890919063ffffffff16565b91506122e4858261302890919063ffffffff16565b905061232c565b6122ff60018461311b90919063ffffffff16565b9250612314858361311b90919063ffffffff16565b9150612329858261311b90919063ffffffff16565b90505b612337878785613215565b6123428787846132d7565b61234c8782613134565b50505050505050565b60008090505b81518110156123ff57612384828281518110151561237557fe5b90602001906020020151612b83565b6001806000848481518110151561239757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061235b565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6e6f74206120636f6e7472616374206f776e657200000000000000000000000081525060200191505060405180910390fd5b600090505b8151811015612504576124f782828151811015156124e857fe5b90602001906020020151612b83565b80806001019150506124ce565b816002908051906020019061251a929190613399565b505050565b801515612594576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f626574206973206e6f742061637469766500000000000000000000000000000081525060200191505060405180910390fd5b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c73bcff9836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561262a57600080fd5b505af115801561263e573d6000803e3d6000fd5b505050506040513d602081101561265457600080fd5b81019080805190602001909291905050509050919050565b600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cbeae5e876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b15801561270257600080fd5b505af1158015612716573d6000803e3d6000fd5b505050506040513d604081101561272c57600080fd5b810190808051906020019092919080519060200190929190505050509250600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663510b5158876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506040805180830381600087803b1580156127da57600080fd5b505af11580156127ee573d6000803e3d6000fd5b505050506040513d604081101561280457600080fd5b8101908080519060200190929190805190602001909291905050505091508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905084151581151514935050505092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639cb26d1684846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050602060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050506040513d602081101561292e57600080fd5b8101908080519060200190929190505050905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633adfb548826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156129d857600080fd5b505af11580156129ec573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc1560b683836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612a8957600080fd5b505af1158015612a9d573d6000803e3d6000fd5b50505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6c98fc084846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612b6657600080fd5b505af1158015612b7a573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f696e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b50565b612c3481612597565b1515612ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f74686520626174746c6520686173206e6f7420796574206f636375727265640081525060200191505060405180910390fd5b50565b612cb5828261266c565b1515612d29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f796f7520646964206e6f742077696e207468652062657400000000000000000081525060200191505060405180910390fd5b5050565b600080600080612d3d8686612865565b9250600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369276826876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612dd057600080fd5b505af1158015612de4573d6000803e3d6000fd5b505050506040513d6020811015612dfa57600080fd5b8101908080519060200190929190505050915060008214612e1b5781612e1d565b825b9050612e3360018261311b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b91992187836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b158015612ece57600080fd5b505af1158015612ee2573d6000803e3d6000fd5b5050505060008114935050505092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d32853084846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050602060405180830381600087803b158015612f9457600080fd5b505af1158015612fa8573d6000803e3d6000fd5b505050506040513d6020811015612fbe57600080fd5b8101908080519060200190929190505050905092915050565b6000806000841415612fec576000915061300b565b8284029050828482811515612ffd57fe5b0414151561300757fe5b8091505b5092915050565b6000818381151561301f57fe5b04905092915050565b600080828401905083811015151561303c57fe5b8091505092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d45a54f836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156130d957600080fd5b505af11580156130ed573d6000803e3d6000fd5b505050506040513d602081101561310357600080fd5b81019080805190602001909291905050509050919050565b600082821115151561312957fe5b818303905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307ff4cc883836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050600060405180830381600087803b1580156131cd57600080fd5b505af11580156131e1573d6000803e3d6000fd5b505050505050565b600082821161320a57613205828461311b90919063ffffffff16565b61320d565b60005b905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b1454748484846040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001831515151581526020018281526020019350505050600060405180830381600087803b1580156132ba57600080fd5b505af11580156132ce573d6000803e3d6000fd5b50505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b58129be8484846040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001831515151581526020018281526020019350505050600060405180830381600087803b15801561337c57600080fd5b505af1158015613390573d6000803e3d6000fd5b50505050505050565b828054828255906000526020600020908101928215613412579160200282015b828111156134115782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906133b9565b5b50905061341f9190613423565b5090565b61346391905b8082111561345f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101613429565b5090565b905600a165627a7a72305820393151178f4ff42a99ffdb8bcbc2ffa0654618575d9846540b30022064216f710029
Swarm Source
bzzr://393151178f4ff42a99ffdb8bcbc2ffa0654618575d9846540b30022064216f71
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,063.72 | 0.00000000000000001 | <$0.000001 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.