Contract 0x83dc8423170e95ee18b770bbdd6b3becb73c9c30

 

TxHash Block Age From To Value [TxFee]
0x2a310a5d0dcfe355dd088723039bd3da065e07fe6cfef8c2f13dad79f52b0f95723755043 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000443575
0xb9a9b5bccc04983fb1d6a7a480b2a6b06aa0c2db1a989954820a499edb373d6d72365426 hrs 36 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.001039623016
0x3093b5264c66f146fb01d99330c6a51633fc13dfe094f80c0161c2adc50a2ac0723545712 hrs 43 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.00088715
0x7a7289745983bbd43bbc491a435e339c5c6df4cdca1ad174f872c5f25aabf668723439518 hrs 43 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.00088715
0x4919069e4bf38f80ee115e7413f4fa02058b78856bc25de15bd265544902267d72333831 day 43 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.00035486
0xde09f1e0f4851f39c7d59c9c58446ee398304b538757a7664618c4faf7614ec372323201 day 6 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000443575
0xc30b3dca4bfeaaeec307726db14056deca20d4a00ea37f1a3d05852dc7b1fa5972312701 day 12 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000443575
0x002de263f96551161db06a713bfdc02da9f625fe20bff98f0cd16593f67632ac72302431 day 18 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0002750165
0x5ca2aa85544330b319d663caff2f86861bc28ff0d2caf10d779478e120a1ad8b72291942 days 42 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000230659
0x63a4e9d0293569efad8b582b82295a80f5062fb124f900dd4c099d65297f5fd672281482 days 6 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000266145
0x232ac456b47289857c84ad100ad5031c0abd3cc3c47726538143abb4c13e967e72270822 days 12 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000266145
0xacd216d1d94aa039bb2d33a0ef34851661729869c65fb1c38cc50b19d04ea62072260352 days 18 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0003637315
0xfb5205b1408a5bf56f720754384d9df99c2d6dc25754994b987be4ce5133d95f72250163 days 41 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.00017743
0xfb8ff2241686f040ddc46d4b8c60badcedb844491b42b215dc5730efa097a6e272239573 days 6 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.001226858547
0x2a2449c35961a608a53c94a58c93ff79462f2432014771aae4beb87d3f68450b72219363 days 18 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0002750165
0x777325859f2d9baf3306be35d0ac332d59fa3d5517087b716ad62272e63072b772208004 days 43 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0002572735
0x1089281a162cbafaf41b7af3043468d5c43380d1bab462d4d1f6c99943e082d472197944 days 6 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0004524465
0xaf5e0a8d2d50a0fa08f1159b846e142b5add86d01a28507409fab7d8da5c931072187604 days 12 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000443575
0xeff74315fc5eaf92ab9ad1bef7a1a65573f8cc9f09488ed86d4220b6d230f2a872177164 days 18 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.000266145
0x3caa43fc864ee8bf11b53e0936e1640d813c83d90afd5b4c36dde0b6d7d15a0872166865 days 41 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.00017743
0x56b92dde1ff96a66ff93782272042951a0b670aff2ddf107729e663d47e0380f72156255 days 6 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0004524465
0x7bd16e19acb199237c416ff65047d0b20359702687652f3b3483a46de019a7fb72145485 days 12 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.00070972
0xd82362e13d387dc0f52f3a45eac84110260e911b54ba77de15e5bc632b371af972135185 days 18 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0002217875
0xd0be66fb7ba6eeced0d9dda57a785d87b0f8a7ac60594efcd43d5e8f55a998dc72124806 days 44 mins ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.00017743
0xfdac1a5b9bbdb80c83777e1a4e2ce4e99fa478637ce7b6b1a5885e223c15b6a472114186 days 6 hrs ago0x344f0e5555f0e11e523ffef4c503f29838cad6d4  IN   0x83dc8423170e95ee18b770bbdd6b3becb73c9c300 Ether0.0007718205
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x5cc7458f8d02e69a61ba073507538155b135bb023d5ddfcbc3825c6e9d7c3d086584119115 days 20 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.531578947368421052 Ether
0x5cc7458f8d02e69a61ba073507538155b135bb023d5ddfcbc3825c6e9d7c3d086584119115 days 20 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.531578947368421052 Ether
0x27f3a00fd80728849dd72350e18822665ffc94e19b9c8d74686e3421745268286525064125 days 12 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0x27f3a00fd80728849dd72350e18822665ffc94e19b9c8d74686e3421745268286525064125 days 12 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0xb964951072294ba35206d74798be1558dd59d178f305bde0f3b32d12549050236523117125 days 19 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.063157894736842105 Ether
0xb964951072294ba35206d74798be1558dd59d178f305bde0f3b32d12549050236523117125 days 19 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.063157894736842105 Ether
0x7c1d6739115a105318aa3cee1312eb7f2f9bb976f88fa24eaea6a07a6ffbcb5a6520824126 days 4 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0x7c1d6739115a105318aa3cee1312eb7f2f9bb976f88fa24eaea6a07a6ffbcb5a6520824126 days 4 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0x4a8c99bfc85170efbbb9c46cc6678f31762506b5c59bf4dbf14159a959f0b2b16520246126 days 6 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0x4a8c99bfc85170efbbb9c46cc6678f31762506b5c59bf4dbf14159a959f0b2b16520246126 days 6 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0xc0fc5177dd9b2aac91dd85ea2daf37cea2d995e2f5aaea6613682a831b00cab06519865126 days 8 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0xc0fc5177dd9b2aac91dd85ea2daf37cea2d995e2f5aaea6613682a831b00cab06519865126 days 8 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0xd4d7fe994d63f4d594c8dc2cf8eeda16d940a68020b2e3a67395fec2fbd2e39b6519758126 days 8 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0xd4d7fe994d63f4d594c8dc2cf8eeda16d940a68020b2e3a67395fec2fbd2e39b6519758126 days 8 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0x2e5d58e6e3cfccd632e88a83eed32f47ca6e9a19bb4c33b0b248bd7d9529b3bd6519756126 days 8 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0x2e5d58e6e3cfccd632e88a83eed32f47ca6e9a19bb4c33b0b248bd7d9529b3bd6519756126 days 8 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0x0af0dfb4dbaf14bb95cae5a4f0e9ad9daff4db41193e2a6207895e9b8cba698f6519448126 days 10 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.001052631578947367 Ether
0x917c79dd7da00e0438a3dabe73b9bbde303fb8db234d1d8501c17c6a230e996e6519437126 days 10 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0x917c79dd7da00e0438a3dabe73b9bbde303fb8db234d1d8501c17c6a230e996e6519437126 days 10 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0x9e2882ed74576a0c98757fd32f1946c796af41a764093977f191b21061aefa3e6519437126 days 10 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.001052631578947367 Ether
0x8d86dd96164c4bf8c457e8daa916f7054e3b12687939bcc74b9a222e386f45286519434126 days 10 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.05263157894736842 Ether
0x8d86dd96164c4bf8c457e8daa916f7054e3b12687939bcc74b9a222e386f45286519434126 days 10 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.05263157894736842 Ether
0x73a6a68e06a7368da6f5b7507547e8f2cb3b58dd23e4f0dd032f1835acc3c33f6519271126 days 10 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.053684210526315789 Ether
0x73a6a68e06a7368da6f5b7507547e8f2cb3b58dd23e4f0dd032f1835acc3c33f6519271126 days 10 hrs ago0x6329316475a98027e62246d25e4a5ed8d7f9fc510x83dc8423170e95ee18b770bbdd6b3becb73c9c300.053684210526315789 Ether
0xa47d6950e8900f616572bd06f42dd7030f34b37c59e672a17e54abef4200d3106519256126 days 10 hrs ago0x83dc8423170e95ee18b770bbdd6b3becb73c9c300x26aa63e9cb879d253e73261658e53fa9763e49270.063157894736842104 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: STC
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
contract SafeMath {
	  function safeMul(uint a, uint b) internal returns (uint) {
		uint c = a * b;
		assert(a == 0 || c / a == b);
		return c;
	  }
	  function safeSub(uint a, uint b) internal returns (uint) {
		assert(b <= a);
		return a - b;
	  }
	  function safeAdd(uint a, uint b) internal returns (uint) {
		uint c = a + b;
		assert(c>=a && c>=b);
		return c;
	  }
	  // mitigate short address attack
	  // thanks to https://github.com/numerai/contract/blob/c182465f82e50ced8dacb3977ec374a892f5fa8c/contracts/Safe.sol#L30-L34.
	  // TODO: doublecheck implication of >= compared to ==
	  modifier onlyPayloadSize(uint numWords) {
		 assert(msg.data.length >= numWords * 32 + 4);
		 _;
	  }
	}

	contract Token { // ERC20 standard
		function balanceOf(address _owner) public  view returns (uint256 balance);
		function transfer(address _to, uint256 _value) public  returns (bool success);
		function transferFrom(address _from, address _to, uint256 _value) public  returns (bool success);
		function approve(address _spender, uint256 _value)  returns (bool success);
		function allowance(address _owner, address _spender) public  view returns (uint256 remaining);
		event Transfer(address indexed _from, address indexed _to, uint256 _value);
		event Approval(address indexed _owner, address indexed _spender, uint256 _value);
	}

	contract StandardToken is Token, SafeMath {
		uint256 public totalSupply;
		// TODO: update tests to expect throw
		function transfer(address _to, uint256 _value) public  onlyPayloadSize(2) returns (bool success) {
			require(_to != address(0));
			require(balances[msg.sender] >= _value && _value > 0);
			balances[msg.sender] = safeSub(balances[msg.sender], _value);
			balances[_to] = safeAdd(balances[_to], _value);
			Transfer(msg.sender, _to, _value);
			return true;
		}
		// TODO: update tests to expect throw
		function transferFrom(address _from, address _to, uint256 _value) onlyPayloadSize(3) returns (bool success) {
			require(_to != address(0));
			require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0);
			balances[_from] = safeSub(balances[_from], _value);
			balances[_to] = safeAdd(balances[_to], _value);
			allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value);
			Transfer(_from, _to, _value);
			return true;
		}
		function balanceOf(address _owner) view returns (uint256 balance) {
			return balances[_owner];
		}
		// To change the approve amount you first have to reduce the addresses'
		//  allowance to zero by calling 'approve(_spender, 0)' if it is not
		//  already 0 to mitigate the race condition described here:
		//  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
		function approve(address _spender, uint256 _value) onlyPayloadSize(2) returns (bool success) {
			require((_value == 0) || (allowed[msg.sender][_spender] == 0));
			allowed[msg.sender][_spender] = _value;
			Approval(msg.sender, _spender, _value);
			return true;
		}
		function changeApproval(address _spender, uint256 _oldValue, uint256 _newValue) onlyPayloadSize(3) returns (bool success) {
			require(allowed[msg.sender][_spender] == _oldValue);
			allowed[msg.sender][_spender] = _newValue;
			Approval(msg.sender, _spender, _newValue);
			return true;
		}
		function allowance(address _owner, address _spender) public  view returns (uint256 remaining) {
		  return allowed[_owner][_spender];
		}
		mapping (address => uint256) public  balances;
		mapping (address => mapping (address => uint256)) public  allowed;
	}

	contract STC is StandardToken {
		// FIELDS
		string public name = "SmarterThanCrypto";
		string public symbol = "STC";
		uint256 public decimals = 18;
		string public version = "10.0";
		uint256 public tokenCap = 100000000 * 10**18;
		// crowdsale parameters
		uint256 public fundingStartTime;
		uint256 public fundingEndTime;
		// vesting fields
		address public vestingContract;
		bool private vestingSet = false;
		// root control
		address public fundWallet;
		// control of liquidity and limited control of updatePrice
		address public controlWallet;
		// time to wait between controlWallet price updates
		uint256 public waitTime = 1 hours;
		// fundWallet controlled state variables
		// halted: halt buying due to emergency, tradeable: signal that assets have been acquired
		bool public halted = false;
		bool public tradeable = false;
		// -- totalSupply defined in StandardToken
		// -- mapping to token balances done in StandardToken
		uint256 public previousUpdateTime = 0;
		Price public currentPrice;
		uint256 public minAmount = 0.04 ether;
		uint256 public OfferTime = 2592000;
	 

		// map participant address to a withdrawal request
		mapping (address => Withdrawal) public withdrawals;
		// maps previousUpdateTime to the next price
		mapping (uint256 => Price) public prices;
		// maps addresses
		mapping (address => bool) public whitelist;
		// TYPES
		struct Price { // tokensPerEth
			uint256 numerator;
			uint256 denominator;
		}
		struct Withdrawal {
			uint256 tokens;
			uint256 time; // time for each withdrawal is set to the previousUpdateTime
		}
		// EVENTS
		event Buy(address indexed participant, address indexed beneficiary, uint256 ethValue, uint256 amountTokens);
		event AllocatePresale(address indexed participant, uint256 amountTokens);
		event Whitelist(address indexed participant);
		event PriceUpdate(uint256 numerator, uint256 denominator);
		event AddLiquidity(uint256 ethAmount);
		event RemoveLiquidity(uint256 ethAmount);
		event WithdrawRequest(address indexed participant, uint256 amountTokens);
		event Withdraw(address indexed participant, uint256 amountTokens, uint256 etherAmount);
		// MODIFIERS
		modifier isTradeable { // exempt vestingContract and fundWallet to allow dev allocations
			require(tradeable || msg.sender == fundWallet || msg.sender == vestingContract);
			_;
		}
		modifier onlyWhitelist {
			require(whitelist[msg.sender]);
			_;
		}
		modifier onlyFundWallet {
			require(msg.sender == fundWallet);
			_;
		}
		modifier onlyManagingWallets {
			require(msg.sender == controlWallet || msg.sender == fundWallet);
			_;
		}
		modifier only_if_controlWallet {
			if (msg.sender == controlWallet) _;
		}
		modifier require_waited {
			require(safeSub(now, waitTime) >= previousUpdateTime);
			_;
		}
		modifier only_if_increase (uint256 newNumerator) {
			if (newNumerator > currentPrice.numerator) _;
		}
		// CONSTRUCTOR
		function STC(address controlWalletInput, uint256 priceNumeratorInput, uint256 startTimeInput, uint256 endTimeInput) public  {
			require(controlWalletInput != address(0));
			require(priceNumeratorInput > 0);
			require(endTimeInput > startTimeInput);
			fundWallet = msg.sender;
			controlWallet = controlWalletInput;
			whitelist[fundWallet] = true;
			whitelist[controlWallet] = true;
			currentPrice = Price(priceNumeratorInput, 10000); // 1 token = 1 usd at ICO start
			fundingStartTime = startTimeInput;
			fundingEndTime = endTimeInput;
			previousUpdateTime = now;
		}			
		// METHODS	
		function setOfferTime(uint256 newOfferTime) external onlyFundWallet {
			require(newOfferTime>0);
			require(newOfferTime<safeSub(fundingEndTime,fundingStartTime));
			OfferTime = newOfferTime;
		}		
		function setVestingContract(address vestingContractInput) external onlyFundWallet {
			require(vestingContractInput != address(0));
			vestingContract = vestingContractInput;
			whitelist[vestingContract] = true;
			vestingSet = true;
		}
		// allows controlWallet to update the price within a time contstraint, allows fundWallet complete control
		function updatePrice(uint256 newNumerator) external onlyManagingWallets {
			require(newNumerator > 0);
			require_limited_change(newNumerator);
			// either controlWallet command is compliant or transaction came from fundWallet
			currentPrice.numerator = newNumerator;
			// maps time to new Price (if not during ICO)
			prices[previousUpdateTime] = currentPrice;
			previousUpdateTime = now;
			PriceUpdate(newNumerator, currentPrice.denominator);
		}
		function require_limited_change (uint256 newNumerator)
			private
			only_if_controlWallet
			require_waited
			only_if_increase(newNumerator)
		{
			uint256 percentage_diff = 0;
			percentage_diff = safeMul(newNumerator, 10000) / currentPrice.numerator;
			percentage_diff = safeSub(percentage_diff, 10000);
			// controlWallet can only increase price by max 20% and only every waitTime
			//require(percentage_diff <= 20);
		}
		function updatePriceDenominator(uint256 newDenominator) external onlyManagingWallets {
			require(now > fundingEndTime);
			require(newDenominator > 0);
			currentPrice.denominator = newDenominator;
			// maps time to new Price
			prices[previousUpdateTime] = currentPrice;
			previousUpdateTime = now;
			PriceUpdate(currentPrice.numerator, newDenominator);
		}
		function updatePriceAndDenominator(uint256 newNumerator, uint256 newDenominator) external onlyManagingWallets {
			require(now > fundingEndTime);
			require(newDenominator > 0);
			require(newNumerator > 0);
			require(safeSub(now, waitTime) >= previousUpdateTime);
			currentPrice.denominator = newDenominator;
			currentPrice.numerator = newNumerator;
			// maps time to new Price
			prices[previousUpdateTime] = currentPrice;
			previousUpdateTime = now;
			PriceUpdate(currentPrice.numerator, newDenominator);
		}
		function allocateTokens(address participant, uint256 amountTokens) private {
			require(vestingSet);
			// 13% of total allocated for PR, Marketing, Team, Advisors
			uint256 developmentAllocation = safeMul(amountTokens, 14942528735632200) / 100000000000000000;
			// check that token cap is not exceeded
			uint256 newTokens = safeAdd(amountTokens, developmentAllocation);
			require(safeAdd(totalSupply, newTokens) <= tokenCap);
			// increase token supply, assign tokens to participant
			totalSupply = safeAdd(totalSupply, newTokens);
			balances[participant] = safeAdd(balances[participant], amountTokens);
			balances[vestingContract] = safeAdd(balances[vestingContract], developmentAllocation);
		}
		function allocatePresaleTokens(address participant, uint amountTokens) external onlyManagingWallets {
			require(!halted);
			require(participant != address(0));
			whitelist[participant] = true; // automatically whitelist accepted presale
			allocateTokens(participant, amountTokens);
			Whitelist(participant);
			AllocatePresale(participant, amountTokens);
		}
		function verifyParticipant(address participant) external onlyManagingWallets {
			whitelist[participant] = true;
			Whitelist(participant);
		}
		function buy() external payable {
			buyTo(msg.sender);
		}
		function buyTo(address participant) public payable onlyWhitelist {
			require(!halted);
			require(participant != address(0));
			require(msg.value >= minAmount);
			require(now >= fundingStartTime);
			uint256 icoDenominator = icoDenominatorPrice();
			uint256 tokensToBuy = safeMul(msg.value, currentPrice.numerator) / icoDenominator;
			allocateTokens(participant, tokensToBuy);
			// send ether to fundWallet
			fundWallet.transfer(msg.value);
			Buy(msg.sender, participant, msg.value, tokensToBuy);
		}
		// time based on blocknumbers, assuming a blocktime of 30s
		function icoDenominatorPrice() public view returns (uint256) {
			uint256 icoDuration = safeSub(now, fundingStartTime);
			uint256 denominator;
			if (icoDuration < 172800) { // time in sec = (48*60*60) = 172800
			   denominator = safeMul(currentPrice.denominator, 95) / 100;
			   return denominator;
			} else if (icoDuration < OfferTime ) { // time in sec = (((4*7)+2)*24*60*60) = 2592000
				denominator = safeMul(currentPrice.denominator, 100) / 100;
			   return denominator;
			} else if (now > fundingEndTime ) {
			   denominator = safeMul(currentPrice.denominator, 100) / 100;
			   return denominator;   
			} else {
				denominator = safeMul(currentPrice.denominator, 105) / 100;
			   return denominator;
			}
		}
		function requestWithdrawal(uint256 amountTokensToWithdraw) external isTradeable onlyWhitelist {
			require(now > fundingEndTime);
			require(amountTokensToWithdraw > 0);
			address participant = msg.sender;
			require(balanceOf(participant) >= amountTokensToWithdraw);
			require(withdrawals[participant].tokens == 0); // participant cannot have outstanding withdrawals
			balances[participant] = safeSub(balances[participant], amountTokensToWithdraw);
			withdrawals[participant] = Withdrawal({tokens: amountTokensToWithdraw, time: previousUpdateTime});
			WithdrawRequest(participant, amountTokensToWithdraw);
		}
		function withdraw() external {
			address participant = msg.sender;
			uint256 tokens = withdrawals[participant].tokens;
			require(tokens > 0); // participant must have requested a withdrawal
			uint256 requestTime = withdrawals[participant].time;
			// obtain the next price that was set after the request
			Price price = prices[requestTime];
			require(price.numerator > 0); // price must have been set
			uint256 withdrawValue  = safeMul(tokens, price.denominator) / price.numerator;
			// if contract ethbal > then send + transfer tokens to fundWallet, otherwise give tokens back
			withdrawals[participant].tokens = 0;
			if (this.balance >= withdrawValue)
				enact_withdrawal_greater_equal(participant, withdrawValue, tokens);
			else
				enact_withdrawal_less(participant, withdrawValue, tokens);
		}
		function enact_withdrawal_greater_equal(address participant, uint256 withdrawValue, uint256 tokens)
			private
		{
			assert(this.balance >= withdrawValue);
			balances[fundWallet] = safeAdd(balances[fundWallet], tokens);
			participant.transfer(withdrawValue);
			Withdraw(participant, tokens, withdrawValue);
		}
		function enact_withdrawal_less(address participant, uint256 withdrawValue, uint256 tokens)
			private
		{
			assert(this.balance < withdrawValue);
			balances[participant] = safeAdd(balances[participant], tokens);
			Withdraw(participant, tokens, 0); // indicate a failed withdrawal
		}
		function checkWithdrawValue(uint256 amountTokensToWithdraw) public  view returns (uint256 etherValue) {
			require(amountTokensToWithdraw > 0);
			require(balanceOf(msg.sender) >= amountTokensToWithdraw);
			uint256 withdrawValue = safeMul(amountTokensToWithdraw, currentPrice.denominator) / currentPrice.numerator;
			require(this.balance >= withdrawValue);
			return withdrawValue;
		}
		function checkWithdrawValueForAddress(address participant,uint256 amountTokensToWithdraw) public  view returns (uint256 etherValue) {
			require(amountTokensToWithdraw > 0);
			require(balanceOf(participant) >= amountTokensToWithdraw);
			uint256 withdrawValue = safeMul(amountTokensToWithdraw, currentPrice.denominator) / currentPrice.numerator;
			return withdrawValue;
		}
		// allow fundWallet or controlWallet to add ether to contract
		function addLiquidity() external onlyManagingWallets payable {
			require(msg.value > 0);
			AddLiquidity(msg.value);
		}
		// allow fundWallet to remove ether from contract
		function removeLiquidity(uint256 amount) external onlyManagingWallets {
			require(amount <= this.balance);
			fundWallet.transfer(amount);
			RemoveLiquidity(amount);
		}
		function changeFundWallet(address newFundWallet) external onlyFundWallet {
			require(newFundWallet != address(0));
			fundWallet = newFundWallet;
		}
		function changeControlWallet(address newControlWallet) external onlyFundWallet {
			require(newControlWallet != address(0));
			controlWallet = newControlWallet;
		}
		function changeWaitTime(uint256 newWaitTime) external onlyFundWallet {
			waitTime = newWaitTime;
		}
		function updatefundingStartTime(uint256 newfundingStartTime) external onlyFundWallet {
		   // require(now < fundingStartTime);
		   // require(now < newfundingStartTime);
			fundingStartTime = newfundingStartTime;
		}
		function updatefundingEndTime(uint256 newfundingEndTime) external onlyFundWallet {
		  //  require(now < fundingEndTime);
		  //  require(now < newfundingEndTime);
			fundingEndTime = newfundingEndTime;
		}
		function halt() external onlyFundWallet {
			halted = true;
		}
		function unhalt() external onlyFundWallet {
			halted = false;
		}
		function enableTrading() external onlyFundWallet {
			require(now > fundingEndTime);
			tradeable = true;
		}
		// fallback function
		function() payable {
			require(tx.origin == msg.sender);
			buyTo(msg.sender);
		}
		function claimTokens(address _token) external onlyFundWallet {
			require(_token != address(0));
			Token token = Token(_token);
			uint256 balance = token.balanceOf(this);
			token.transfer(fundWallet, balance);
		 }
		// prevent transfers until trading allowed
		function transfer(address _to, uint256 _value) isTradeable returns (bool success) {
			return super.transfer(_to, _value);
		}
		function transferFrom(address _from, address _to, uint256 _value) public  isTradeable returns (bool success) {
			return super.transferFrom(_from, _to, _value);
		}
	}

Contract ABI
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newWaitTime","type":"uint256"}],"name":"changeWaitTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOfferTime","type":"uint256"}],"name":"setOfferTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundingStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"},{"name":"newDenominator","type":"uint256"}],"name":"updatePriceAndDenominator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"previousUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"OfferTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newControlWallet","type":"address"}],"name":"changeControlWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"participant","type":"address"},{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"checkWithdrawValueForAddress","outputs":[{"name":"etherValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"verifyParticipant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFundWallet","type":"address"}],"name":"changeFundWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"vestingContractInput","type":"address"}],"name":"setVestingContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundingEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawals","outputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controlWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newfundingStartTime","type":"uint256"}],"name":"updatefundingStartTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableTrading","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"}],"name":"updatePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"checkWithdrawValue","outputs":[{"name":"etherValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"},{"name":"amountTokens","type":"uint256"}],"name":"allocatePresaleTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_oldValue","type":"uint256"},{"name":"_newValue","type":"uint256"}],"name":"changeApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentPrice","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"requestWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"prices","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"waitTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newfundingEndTime","type":"uint256"}],"name":"updatefundingEndTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newDenominator","type":"uint256"}],"name":"updatePriceDenominator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"buyTo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tokenCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"addLiquidity","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tradeable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoDenominatorPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"controlWalletInput","type":"address"},{"name":"priceNumeratorInput","type":"uint256"},{"name":"startTimeInput","type":"uint256"},{"name":"endTimeInput","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"ethValue","type":"uint256"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"AllocatePresale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numerator","type":"uint256"},{"indexed":false,"name":"denominator","type":"uint256"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"WithdrawRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"},{"indexed":false,"name":"etherAmount","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

Contract Creation Code
60806040526040805190810160405280601181526020017f536d61727465725468616e43727970746f0000000000000000000000000000008152506003908051906020019062000051929190620003e0565b506040805190810160405280600381526020017f5354430000000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f929190620003e0565b5060126005556040805190810160405280600481526020017f31302e300000000000000000000000000000000000000000000000000000000081525060069080519060200190620000f2929190620003e0565b506a52b7d2dcc80cd2e40000006007556000600a60146101000a81548160ff021916908315150217905550610e10600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f55668e1bc9bf04000060125562278d006013553480156200017d57600080fd5b506040516080806200451983398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620001fc57600080fd5b6000831115156200020c57600080fd5b81811115156200021b57600080fd5b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160166000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550604080519081016040528084815260200161271081525060106000820151816000015560208201518160010155905050816008819055508060098190555042600f81905550505050506200048f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042357805160ff191683800117855562000454565b8280016001018555821562000454579182015b828111156200045357825182559160200191906001019062000436565b5b50905062000463919062000467565b5090565b6200048c91905b80821115620004885760008160009055506001016200046e565b5090565b90565b61407a806200049f6000396000f300608060405260043610610288576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146102cd57806306fe22121461035d578063095ea7b31461038a57806318160ddd146103ef5780631df411a61461041a5780631df935581461044757806323b872dd1461047257806324038339146104f757806327e235e31461052e578063313ce56714610585578063347820eb146105b05780633ccfd60b146105db5780634a96d129146105f257806354fd4d501461061d5780635a8cf571146106ad5780635c658165146106f05780635e6f6045146107675780635ed7ca5b146107be57806363f114f2146107d5578063643a769514610836578063664a1ad6146108795780636fb4adff146108d057806370a0823114610913578063749915691461096a57806374eedd46146109ad5780637a9262a2146109d8578063823e569e14610a36578063861654f714610a8d5780638a8c523c14610aba5780638d6cc56d14610ad15780638f11e5f914610afe5780638fee768714610b3f5780639281cd6514610b8c57806395d89b4114610bfb5780639b19251a14610c8b5780639b2cb5d814610ce65780639c8f9f2314610d115780639d1b464a14610d3e5780639ee679e814610d70578063a6f2ae3a14610d9d578063a9059cbb14610da7578063b9b8af0b14610e0c578063bc31c1c114610e3b578063cb3e64fd14610e83578063ccca123b14610e9a578063cef9436014610ec5578063dbb2455414610ef2578063dcf72c1014610f1f578063dd54291b14610f55578063dd62ed3e14610f80578063df8de3e714610ff7578063e8078d941461103a578063f5ac9db614611044578063fa0d80fc14611073575b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102c257600080fd5b6102cb3361109e565b005b3480156102d957600080fd5b506102e261127e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610322578082015181840152602081019050610307565b50505050905090810190601f16801561034f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036957600080fd5b506103886004803603810190808035906020019092919050505061131c565b005b34801561039657600080fd5b506103d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611382565b604051808215151515815260200191505060405180910390f35b3480156103fb57600080fd5b50610404611523565b6040518082815260200191505060405180910390f35b34801561042657600080fd5b5061044560048036038101908080359060200190929190505050611529565b005b34801561045357600080fd5b5061045c6115b9565b6040518082815260200191505060405180910390f35b34801561047e57600080fd5b506104dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115bf565b604051808215151515815260200191505060405180910390f35b34801561050357600080fd5b5061052c60048036038101908080359060200190929190803590602001909291905050506116a0565b005b34801561053a57600080fd5b5061056f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182f565b6040518082815260200191505060405180910390f35b34801561059157600080fd5b5061059a611847565b6040518082815260200191505060405180910390f35b3480156105bc57600080fd5b506105c561184d565b6040518082815260200191505060405180910390f35b3480156105e757600080fd5b506105f0611853565b005b3480156105fe57600080fd5b506106076119c9565b6040518082815260200191505060405180910390f35b34801561062957600080fd5b506106326119cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610672578082015181840152602081019050610657565b50505050905090810190601f16801561069f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106b957600080fd5b506106ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6d565b005b3480156106fc57600080fd5b50610751600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b49565b6040518082815260200191505060405180910390f35b34801561077357600080fd5b5061077c611b6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ca57600080fd5b506107d3611b94565b005b3480156107e157600080fd5b50610820600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c0d565b6040518082815260200191505060405180910390f35b34801561084257600080fd5b50610877600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c61565b005b34801561088557600080fd5b5061088e611db3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108dc57600080fd5b50610911600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dd9565b005b34801561091f57600080fd5b50610954600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eb5565b6040518082815260200191505060405180910390f35b34801561097657600080fd5b506109ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611efe565b005b3480156109b957600080fd5b506109c261206f565b6040518082815260200191505060405180910390f35b3480156109e457600080fd5b50610a19600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612075565b604051808381526020018281526020019250505060405180910390f35b348015610a4257600080fd5b50610a4b612099565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9957600080fd5b50610ab8600480360381019080803590602001909291905050506120bf565b005b348015610ac657600080fd5b50610acf612125565b005b348015610add57600080fd5b50610afc600480360381019080803590602001909291905050506121ae565b005b348015610b0a57600080fd5b50610b2960048036038101908080359060200190929190505050612300565b6040518082815260200191505060405180910390f35b348015610b4b57600080fd5b50610b8a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612379565b005b348015610b9857600080fd5b50610be1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061257c565b604051808215151515815260200191505060405180910390f35b348015610c0757600080fd5b50610c10612712565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c50578082015181840152602081019050610c35565b50505050905090810190601f168015610c7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c9757600080fd5b50610ccc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127b0565b604051808215151515815260200191505060405180910390f35b348015610cf257600080fd5b50610cfb6127d0565b6040518082815260200191505060405180910390f35b348015610d1d57600080fd5b50610d3c600480360381019080803590602001909291905050506127d6565b005b348015610d4a57600080fd5b50610d53612953565b604051808381526020018281526020019250505060405180910390f35b348015610d7c57600080fd5b50610d9b60048036038101908080359060200190929190505050612965565b005b610da5612c5f565b005b348015610db357600080fd5b50610df2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c6a565b604051808215151515815260200191505060405180910390f35b348015610e1857600080fd5b50610e21612d49565b604051808215151515815260200191505060405180910390f35b348015610e4757600080fd5b50610e6660048036038101908080359060200190929190505050612d5c565b604051808381526020018281526020019250505060405180910390f35b348015610e8f57600080fd5b50610e98612d80565b005b348015610ea657600080fd5b50610eaf612df9565b6040518082815260200191505060405180910390f35b348015610ed157600080fd5b50610ef060048036038101908080359060200190929190505050612dff565b005b348015610efe57600080fd5b50610f1d60048036038101908080359060200190929190505050612e65565b005b610f53600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061109e565b005b348015610f6157600080fd5b50610f6a612fbe565b6040518082815260200191505060405180910390f35b348015610f8c57600080fd5b50610fe1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fc4565b6040518082815260200191505060405180910390f35b34801561100357600080fd5b50611038600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061304b565b005b6110426132c7565b005b34801561105057600080fd5b506110596133c3565b604051808215151515815260200191505060405180910390f35b34801561107f57600080fd5b506110886133d6565b6040518082815260200191505060405180910390f35b600080601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156110f957600080fd5b600e60009054906101000a900460ff1615151561111557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561115157600080fd5b601254341015151561116257600080fd5b600854421015151561117357600080fd5b61117b6133d6565b91508161118d346010600001546134a1565b81151561119657fe5b0490506111a383826134d4565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561120b573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a3505050565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113145780601f106112e957610100808354040283529160200191611314565b820191906000526020600020905b8154815290600101906020018083116112f757829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561137857600080fd5b80600d8190555050565b600060026004602082020160003690501015151561139c57fe5b600083148061142757506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b151561143257600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505092915050565b60005481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561158557600080fd5b60008111151561159457600080fd5b6115a26009546008546136b4565b811015156115af57600080fd5b8060138190555050565b60085481565b6000600e60019054906101000a900460ff16806116295750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806116815750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561168c57600080fd5b6116978484846136cd565b90509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117495750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561175457600080fd5b6009544211151561176457600080fd5b60008111151561177357600080fd5b60008211151561178257600080fd5b600f5461179142600d546136b4565b1015151561179e57600080fd5b8060106001018190555081601060000181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15050565b60016020528060005260406000206000915090505481565b60055481565b600f5481565b6000806000806000339450601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015493506000841115156118b257600080fd5b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506015600084815260200190815260200160002091506000826000015411151561191f57600080fd5b81600001546119328584600101546134a1565b81151561193b57fe5b0490506000601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156119b6576119b1858286613a94565b6119c2565b6119c1858286613c29565b5b5050505050565b60135481565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a655780601f10611a3a57610100808354040283529160200191611a65565b820191906000526020600020905b815481529060010190602001808311611a4857829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611b0557600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bf057600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600080600083111515611c1f57600080fd5b82611c2985611eb5565b10151515611c3657600080fd5b601060000154611c4b846010600101546134a1565b811515611c5457fe5b0490508091505092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d0a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d1557600080fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a250565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e3557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e7157600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f5a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f9657600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160166000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff02191690831515021790555050565b60095481565b60146020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561211b57600080fd5b8060088190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561218157600080fd5b6009544211151561219157600080fd5b6001600e60016101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122575750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561226257600080fd5b60008111151561227157600080fd5b61227a81613d33565b80601060000181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a150565b60008060008311151561231257600080fd5b8261231c33611eb5565b1015151561232957600080fd5b60106000015461233e846010600101546134a1565b81151561234757fe5b049050803073ffffffffffffffffffffffffffffffffffffffff16311015151561237057600080fd5b80915050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806124225750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561242d57600080fd5b600e60009054906101000a900460ff1615151561244957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561248557600080fd5b6001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506124e782826134d4565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25050565b600060036004602082020160003690501015151561259657fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561262057600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a360019150509392505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127a85780601f1061277d576101008083540402835291602001916127a8565b820191906000526020600020905b81548152906001019060200180831161278b57829003601f168201915b505050505081565b60166020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061287f5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561288a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156128b057600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612918573d6000803e3d6000fd5b507f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a150565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806129cf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612a275750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612a3257600080fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612a8a57600080fd5b60095442111515612a9a57600080fd5b600082111515612aa957600080fd5b33905081612ab682611eb5565b10151515612ac357600080fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515612b1457600080fd5b612b5d600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836136b4565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506040805190810160405280838152602001600f54815250601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25050565b612c683361109e565b565b6000600e60019054906101000a900460ff1680612cd45750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612d2c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612d3757600080fd5b612d418383613dec565b905092915050565b600e60009054906101000a900460ff1681565b60156020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ddc57600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b600d5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e5b57600080fd5b8060098190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612f0e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612f1957600080fd5b60095442111515612f2957600080fd5b600081111515612f3857600080fd5b80601060010181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a150565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130aa57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156130e657600080fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561318457600080fd5b505af1158015613198573d6000803e3d6000fd5b505050506040513d60208110156131ae57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561328657600080fd5b505af115801561329a573d6000803e3d6000fd5b505050506040513d60208110156132b057600080fd5b810190808051906020019092919050505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806133705750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561337b57600080fd5b60003411151561338a57600080fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a1565b600e60019054906101000a900460ff1681565b60008060006133e7426008546136b4565b91506202a30082101561341a576064613406601060010154605f6134a1565b81151561340f57fe5b04905080925061349c565b60135482101561344a57606461343660106001015460646134a1565b81151561343f57fe5b04905080925061349c565b60095442111561347a57606461346660106001015460646134a1565b81151561346f57fe5b04905080925061349c565b606461348c60106001015460696134a1565b81151561349557fe5b0490508092505b505090565b600080828402905060008414806134c257508284828115156134bf57fe5b04145b15156134ca57fe5b8091505092915050565b600080600a60149054906101000a900460ff1615156134f257600080fd5b67016345785d8a000061350c846635162695555b486134a1565b81151561351557fe5b0491506135228383614024565b905060075461353360005483614024565b1115151561354057600080fd5b61354c60005482614024565b60008190555061359b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364960016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483614024565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b60008282111515156136c257fe5b818303905092915050565b60006003600460208202016000369050101515156136e757fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561372357600080fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137ee575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156137fa5750600083115b151561380557600080fd5b61384e600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138da600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139a3600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151515613ab757fe5b613b2260016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614024565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613bcd573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a2505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515613c4b57fe5b613c94600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614024565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a2505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415613de857600f54613d9a42600d546136b4565b10151515613da757600080fd5b81601060000154811115613de65760009150601060000154613dcb846127106134a1565b811515613dd457fe5b049150613de3826127106136b4565b91505b505b5050565b6000600260046020820201600036905010151515613e0657fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613e4257600080fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613e915750600083115b1515613e9c57600080fd5b613ee5600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f71600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600080828401905083811015801561403c5750828110155b151561404457fe5b80915050929150505600a165627a7a723058203032deea60836f9d8140d5b32abcb94e30ef00c78e387606c325a1b1d904b09e0029000000000000000000000000344f0e5555f0e11e523ffef4c503f29838cad6d4000000000000000000000000000000000000000000000000000000001585e223000000000000000000000000000000000000000000000000000000005b9eee80000000000000000000000000000000000000000000000000000000005bc3d880


    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000344f0e5555f0e11e523ffef4c503f29838cad6d4000000000000000000000000000000000000000000000000000000001585e223000000000000000000000000000000000000000000000000000000005b9eee80000000000000000000000000000000000000000000000000000000005bc3d880

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000344f0e5555f0e11e523ffef4c503f29838cad6d4
Arg [1] : 000000000000000000000000000000000000000000000000000000001585e223
Arg [2] : 000000000000000000000000000000000000000000000000000000005b9eee80
Arg [3] : 000000000000000000000000000000000000000000000000000000005bc3d880


   Swarm Source:
bzzr://3032deea60836f9d8140d5b32abcb94e30ef00c78e387606c325a1b1d904b09e
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.