ETH Price: $2,438.91 (-0.77%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve210716842024-10-29 13:47:356 days ago1730209655IN
0x9a13024E...B74caBaaC
0 ETH0.0005958512.78660598
Transfer207846392024-09-19 12:28:1146 days ago1726748891IN
0x9a13024E...B74caBaaC
0 ETH0.0009194517.98759275
Approve200602422024-06-10 8:28:59147 days ago1718008139IN
0x9a13024E...B74caBaaC
0 ETH0.00022824.89705111
Approve200353912024-06-06 21:12:35151 days ago1717708355IN
0x9a13024E...B74caBaaC
0 ETH0.000962720.65899442
Approve198600472024-05-13 8:57:35175 days ago1715590655IN
0x9a13024E...B74caBaaC
0 ETH0.000334477.18692777
Approve198398752024-05-10 13:16:47178 days ago1715347007IN
0x9a13024E...B74caBaaC
0 ETH0.000348237.48258191
Approve198251672024-05-08 11:53:11180 days ago1715169191IN
0x9a13024E...B74caBaaC
0 ETH0.000206144.42945551
Approve197783522024-05-01 22:45:11187 days ago1714603511IN
0x9a13024E...B74caBaaC
0 ETH0.00023435.06315411
Approve197042882024-04-21 14:10:59197 days ago1713708659IN
0x9a13024E...B74caBaaC
0 ETH0.00046589.99581611
Approve196948072024-04-20 6:21:47199 days ago1713594107IN
0x9a13024E...B74caBaaC
0 ETH0.000309996.65220011
Approve196896602024-04-19 13:04:11199 days ago1713531851IN
0x9a13024E...B74caBaaC
0 ETH0.0008121417.42792703
Approve196614152024-04-15 14:10:35203 days ago1713190235IN
0x9a13024E...B74caBaaC
0 ETH0.0005751723.65403259
Approve196449722024-04-13 6:49:11206 days ago1712990951IN
0x9a13024E...B74caBaaC
0 ETH0.0004877610.46712104
Approve196382842024-04-12 8:18:23206 days ago1712909903IN
0x9a13024E...B74caBaaC
0 ETH0.0007958617.07856013
Approve196268692024-04-10 17:58:23208 days ago1712771903IN
0x9a13024E...B74caBaaC
0 ETH0.0009712920.84330509
Transfer196268542024-04-10 17:55:23208 days ago1712771723IN
0x9a13024E...B74caBaaC
0 ETH0.0007146721.00993473
Transfer196268362024-04-10 17:51:47208 days ago1712771507IN
0x9a13024E...B74caBaaC
0 ETH0.0007468321.95531394
Approve196200522024-04-09 19:05:23209 days ago1712689523IN
0x9a13024E...B74caBaaC
0 ETH0.0012295226.38464678
Approve196162602024-04-09 6:19:47210 days ago1712643587IN
0x9a13024E...B74caBaaC
0 ETH0.0008745718.7677332
Approve196144742024-04-09 0:19:47210 days ago1712621987IN
0x9a13024E...B74caBaaC
0 ETH0.0011000623.63698952
Approve196140992024-04-08 23:03:59210 days ago1712617439IN
0x9a13024E...B74caBaaC
0 ETH0.0009568220.55929787
Transfer196140772024-04-08 22:59:35210 days ago1712617175IN
0x9a13024E...B74caBaaC
0 ETH0.0007386121.7367308
Transfer196140712024-04-08 22:57:59210 days ago1712617079IN
0x9a13024E...B74caBaaC
0 ETH0.0007274521.40827666
Transfer196140512024-04-08 22:53:59210 days ago1712616839IN
0x9a13024E...B74caBaaC
0 ETH0.0007106220.91309141
Transfer196140362024-04-08 22:50:59210 days ago1712616659IN
0x9a13024E...B74caBaaC
0 ETH0.0007500822.07431197
View all transactions

Latest 4 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
195143152024-03-25 22:01:11224 days ago1711404071
0x9a13024E...B74caBaaC
1 ETH
195143152024-03-25 22:01:11224 days ago1711404071
0x9a13024E...B74caBaaC
 Contract Creation0 ETH
195143152024-03-25 22:01:11224 days ago1711404071
0x9a13024E...B74caBaaC
1 ETH
195143152024-03-25 22:01:11224 days ago1711404071  Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB2D31791...8dA10b9C0
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-06
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

// Created with Bossman's Bakery (bakery.mullet.capital)!

interface Callable {
	function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}

interface Router {
	struct ExactInputSingleParams {
		address tokenIn;
		address tokenOut;
		uint24 fee;
		address recipient;
		uint256 amountIn;
		uint256 amountOutMinimum;
		uint160 sqrtPriceLimitX96;
	}
	function factory() external view returns (address);
	function positionManager() external view returns (address);
	function WETH9() external view returns (address);
	function exactInputSingle(ExactInputSingleParams calldata) external payable returns (uint256);
}

interface Factory {
	function createPool(address _tokenA, address _tokenB, uint24 _fee) external returns (address);
}

interface Pool {
	function initialize(uint160 _sqrtPriceX96) external;
}

interface PositionManager {
	struct MintParams {
		address token0;
		address token1;
		uint24 fee;
		int24 tickLower;
		int24 tickUpper;
		uint256 amount0Desired;
		uint256 amount1Desired;
		uint256 amount0Min;
		uint256 amount1Min;
		address recipient;
		uint256 deadline;
	}
	struct CollectParams {
		uint256 tokenId;
		address recipient;
		uint128 amount0Max;
		uint128 amount1Max;
	}
	function mint(MintParams calldata) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
	function collect(CollectParams calldata) external payable returns (uint256 amount0, uint256 amount1);
}

interface ERC20 {
	function balanceOf(address) external view returns (uint256);
	function transfer(address, uint256) external returns (bool);
}

interface WETH is ERC20 {
	function withdraw(uint256) external;
}


contract Team {

	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);

	struct Share {
		address payable user;
		uint256 shares;
	}
	Share[] public shares;
	uint256 public totalShares;
	ERC20 public token;


	function initialize(address _creator) external {
		require(totalShares == 0);
		token = ERC20(msg.sender);
		_addShare(_creator, 10);
		_addShare(0xe6c791FBd46dB3f4EdA5f7Bb76474F4FA530733E, 6);
		_addShare(0x12fe289b7588dE4ee1f1392Ce086be100f7165ed, 3);
		_addShare(0xc28C9da0F8a500DFfC16Ff09a3DD1Cc4c530D346, 1);
	}

	receive() external payable {}

	function withdrawETH() public {
		uint256 _balance = address(this).balance;
		if (_balance > 0) {
			for (uint256 i = 0; i < shares.length; i++) {
				Share memory _share = shares[i];
				!_share.user.send(_balance * _share.shares / totalShares);
			}
		}
	}

	function withdrawToken(ERC20 _token) public {
		WETH _weth = WETH(ROUTER.WETH9());
		if (address(_token) == address(_weth)) {
			_weth.withdraw(_weth.balanceOf(address(this)));
			withdrawETH();
		} else {
			uint256 _balance = _token.balanceOf(address(this));
			if (_balance > 0) {
				for (uint256 i = 0; i < shares.length; i++) {
					Share memory _share = shares[i];
					_token.transfer(_share.user, _balance * _share.shares / totalShares);
				}
			}
		}
	}

	function withdrawWETH() public {
		withdrawToken(ERC20(ROUTER.WETH9()));
	}

	function withdrawFees() external {
		withdrawWETH();
		withdrawToken(token);
	}


	function _addShare(address _user, uint256 _shares) internal {
		shares.push(Share(payable(_user), _shares));
		totalShares += _shares;
	}
}


contract Token {

	uint256 constant private UINT_MAX = type(uint256).max;
	uint128 constant private UINT128_MAX = type(uint128).max;
	uint256 constant private MAX_NAME_LENGTH = 32;
	uint256 constant private MIN_SUPPLY = 1e16; // 0.01 tokens
	uint256 constant private MAX_SUPPLY = 1e33; // 1 quadrillion tokens
	uint256 constant private PERCENT_PRECISION = 1000; // 1 = 0.1%
	uint256 constant private MAX_TIME_LIMIT = 24 hours;
	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);

	int24 constant internal MIN_TICK = -887272;
	int24 constant internal MAX_TICK = -MIN_TICK;
	uint160 constant internal MIN_SQRT_RATIO = 4295128739;
	uint160 constant internal MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;

	string public name;
	string public symbol;
	uint8 constant public decimals = 18;

	string constant public source = "Created with Bossman's Bakery (bakery.mullet.capital)!";


	struct User {
		uint256 balance;
		mapping(address => uint256) allowance;
	}

	struct Info {
		bool locked;
		Team team;
		address pool;
		address creator;
		uint256 totalSupply;
		uint256 initialMarketCap;
		uint256 upperMarketCap;
		uint256 concentratedPercent;
		uint256 creatorFee;
		uint256 transferLimit;
		uint256 transferLimitEnd;
		mapping(address => User) users;
		uint256 positionId;
		string website;
		string twitter;
		string telegram;
		string discord;
		string additionalInfo;
	}
	Info private info;


	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);


	modifier _onlyCreator() {
		require(msg.sender == creator());
		_;
	}

	
	function lock() external {
		require(!info.locked);
		require(totalSupply() == 0);
		info.locked = true;
	}
	
	function initialize(address _creator, string memory _name, string memory _symbol, uint256 _totalSupply, uint256 _initialMarketCap, uint256 _upperMarketCap, uint256 _creatorFee, uint256 _transferLimit, uint256 _transferLimitTime) external payable {
		require(!info.locked);
		require(totalSupply() == 0);
		require(bytes(_name).length > 0 && bytes(_name).length <= MAX_NAME_LENGTH);
		require(bytes(_symbol).length > 0 && bytes(_symbol).length <= MAX_NAME_LENGTH);
		require(_totalSupply >= MIN_SUPPLY && _totalSupply <= MAX_SUPPLY);
		require(_initialMarketCap > 0 && _upperMarketCap > _initialMarketCap);
		require(_creatorFee <= PERCENT_PRECISION / 10);
		require(_transferLimitTime <= MAX_TIME_LIMIT);
		info.team = new Team();
		info.team.initialize(_creator);
		info.creator = _creator;
		name = _name;
		symbol = _symbol;
		info.totalSupply = _totalSupply;
		info.users[address(this)].balance = _totalSupply;
		emit Transfer(address(0x0), address(this), _totalSupply);
		info.initialMarketCap = _initialMarketCap;
		info.upperMarketCap = _upperMarketCap;
		info.creatorFee = _creatorFee;
		_createLP(_initialMarketCap, _upperMarketCap, _creatorFee);
		info.transferLimit = _transferLimit;
		info.transferLimitEnd = block.timestamp + _transferLimitTime;
	}

	function updateAll(string memory _website, string memory _twitter, string memory _telegram, string memory _discord, string memory _info) external _onlyCreator {
		info.website = _website;
		info.twitter = _twitter;
		info.telegram = _telegram;
		info.discord = _discord;
		info.additionalInfo = _info;
	}

	function updateWebsite(string memory _website) external _onlyCreator {
		info.website = _website;
	}

	function updateTwitter(string memory _twitter) external _onlyCreator {
		info.twitter = _twitter;
	}

	function updateTelegram(string memory _telegram) external _onlyCreator {
		info.telegram = _telegram;
	}

	function updateDiscord(string memory _discord) external _onlyCreator {
		info.discord = _discord;
	}

	function updateInfo(string memory _info) external _onlyCreator {
		info.additionalInfo = _info;
	}

	function collectTradingFees() external {
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.positionId,
			recipient: team(),
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		info.team.withdrawFees();
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		return _transfer(msg.sender, _to, _tokens);
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		return _approve(msg.sender, _spender, _tokens);
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		unchecked {
			uint256 _allowance = allowance(_from, msg.sender);
			require(_allowance >= _tokens);
			if (_allowance != UINT_MAX) {
				info.users[_from].allowance[msg.sender] -= _tokens;
			}
			return _transfer(_from, _to, _tokens);
		}
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _tokens, _data));
		}
		return true;
	}
	

	function creator() public view returns (address) {
		return info.creator;
	}
	
	function team() public view returns (address) {
		return address(info.team);
	}

	function pool() public view returns (address) {
		return info.pool;
	}

	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}

	function position() external view returns (uint256) {
		return info.positionId;
	}

	function initialMarketCap() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.initialMarketCap, 18, 5), " ETH"));
	}

	function upperMarketCap() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.upperMarketCap, 18, 5), " ETH"));
	}

	function creatorFee() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.creatorFee * 100, 3, 3), "%"));
	}

	function transferLimit() public view returns (uint256 limit, uint256 until, bool active) {
		limit = info.transferLimit;
		until = info.transferLimitEnd;
		active = limit > 0 && block.timestamp < until;
	}

	function website() external view returns (string memory) {
		return info.website;
	}

	function twitter() external view returns (string memory) {
		return info.twitter;
	}

	function telegram() external view returns (string memory) {
		return info.telegram;
	}

	function discord() external view returns (string memory) {
		return info.discord;
	}

	function additionalInfo() external view returns (string memory) {
		return info.additionalInfo;
	}


	function _createLP(uint256 _initialMarketCap, uint256 _upperMarketCap, uint256 _creatorFee) internal {
		unchecked {
			address _this = address(this);
			address _weth = ROUTER.WETH9();
			bool _weth0 = _weth < _this;
			(uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth0, totalSupply(), _initialMarketCap);
			info.pool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000);
			Pool(pool()).initialize(_initialSqrtPrice);
			PositionManager _pm = PositionManager(ROUTER.positionManager());
			_approve(_this, address(_pm), totalSupply());
			( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, totalSupply(), _initialMarketCap);
			( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, totalSupply(), _upperMarketCap);
			if (_creatorFee > 0) {
				_pm.mint(PositionManager.MintParams({
					token0: _weth0 ? _weth : _this,
					token1: !_weth0 ? _weth : _this,
					fee: 10000,
					tickLower: _weth0 ? _maxTick : _minTick,
					tickUpper: !_weth0 ? _maxTick : _minTick,
					amount0Desired: _weth0 ? 0 :  totalSupply() * _creatorFee / PERCENT_PRECISION,
					amount1Desired: !_weth0 ? 0 : totalSupply() * _creatorFee / PERCENT_PRECISION,
					amount0Min: 0,
					amount1Min: 0,
					recipient: creator(),
					deadline: block.timestamp
				}));
			}
			(info.positionId, , , ) = _pm.mint(PositionManager.MintParams({
				token0: _weth0 ? _weth : _this,
				token1: !_weth0 ? _weth : _this,
				fee: 10000,
				tickLower: _weth0 ? _maxTick : _minTick,
				tickUpper: !_weth0 ? _maxTick : _minTick,
				amount0Desired: _weth0 ? 0 :  totalSupply() * (PERCENT_PRECISION - _creatorFee) / PERCENT_PRECISION,
				amount1Desired: !_weth0 ? 0 : totalSupply() * (PERCENT_PRECISION - _creatorFee) / PERCENT_PRECISION,
				amount0Min: 0,
				amount1Min: 0,
				recipient: _this,
				deadline: block.timestamp
			}));
			if (_this.balance > 0) {
				ROUTER.exactInputSingle{value:_this.balance}(Router.ExactInputSingleParams({
					tokenIn: _weth,
					tokenOut: _this,
					fee: 10000,
					recipient: creator(),
					amountIn: _this.balance,
					amountOutMinimum: 0,
					sqrtPriceLimitX96: 0
				}));
			}
		}
	}
	
	function _approve(address _owner, address _spender, uint256 _tokens) internal returns (bool) {
		info.users[_owner].allowance[_spender] = _tokens;
		emit Approval(_owner, _spender, _tokens);
		return true;
	}
	
	function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) {
		unchecked {
			require(_tokens > 0);
			(uint256 _limit, , bool _active) = transferLimit();
			if (_active) {
				require(_tokens <= _limit);
			}
			require(balanceOf(_from) >= _tokens);
			info.users[_from].balance -= _tokens;
			info.users[_to].balance += _tokens;
			emit Transfer(_from, _to, _tokens);
			return true;
		}
	}


	function _getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {
		unchecked {
			uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));
			require(absTick <= uint256(int256(MAX_TICK)), 'T');

			uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;
			if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;
			if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;
			if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;
			if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;
			if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;
			if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;
			if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;
			if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;
			if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;
			if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;
			if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;
			if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;
			if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;
			if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;
			if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;
			if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;
			if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;
			if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;
			if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;

			if (tick > 0) ratio = type(uint256).max / ratio;

			sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));
		}
	}

	function _getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {
		unchecked {
			require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');
			uint256 ratio = uint256(sqrtPriceX96) << 32;

			uint256 r = ratio;
			uint256 msb = 0;

			assembly {
				let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(5, gt(r, 0xFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(4, gt(r, 0xFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(3, gt(r, 0xFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(2, gt(r, 0xF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(1, gt(r, 0x3))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := gt(r, 0x1)
				msb := or(msb, f)
			}

			if (msb >= 128) r = ratio >> (msb - 127);
			else r = ratio << (127 - msb);

			int256 log_2 = (int256(msb) - 128) << 64;

			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(63, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(62, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(61, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(60, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(59, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(58, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(57, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(56, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(55, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(54, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(53, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(52, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(51, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(50, f))
			}

			int256 log_sqrt10001 = log_2 * 255738958999603826347141;

			int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);
			int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);

			tick = tickLow == tickHi ? tickLow : _getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;
		}
	}

	function _sqrt(uint256 _n) internal pure returns (uint256 result) {
		unchecked {
			uint256 _tmp = (_n + 1) / 2;
			result = _n;
			while (_tmp < result) {
				result = _tmp;
				_tmp = (_n / _tmp + _tmp) / 2;
			}
		}
	}

	function _getPriceAndTickFromValues(bool _weth0, uint256 _tokens, uint256 _weth) internal pure returns (uint160 price, int24 tick) {
		uint160 _tmpPrice = uint160(_sqrt(2**192 / (!_weth0 ? _tokens : _weth) * (_weth0 ? _tokens : _weth)));
		tick = _getTickAtSqrtRatio(_tmpPrice);
		tick = tick - (tick % 200);
		price = _getSqrtRatioAtTick(tick);
	}

	function _uint2str(uint256 _value, uint256 _scale, uint256 _maxDecimals) internal pure returns (string memory str) {
		uint256 _d = _scale > _maxDecimals ? _maxDecimals : _scale;
		uint256 _n = _value / 10**(_scale > _d ? _scale - _d : 0);
		if (_n == 0) {
			return "0";
		}
		uint256 _digits = 1;
		uint256 _tmp = _n;
		while (_tmp > 9) {
			_tmp /= 10;
			_digits++;
		}
		_tmp = _digits > _d ? _digits : _d + 1;
		uint256 _offset = (_tmp > _d + 1 ? _tmp - _d - 1 > _d ? _d : _tmp - _d - 1 : 0);
		for (uint256 i = 0; i < _tmp - _offset; i++) {
			uint256 _dec = i < _tmp - _digits ? 0 : (_n / (10**(_tmp - i - 1))) % 10;
			bytes memory _char = new bytes(1);
			_char[0] = bytes1(uint8(_dec) + 48);
			str = string(abi.encodePacked(str, string(_char)));
			if (i < _tmp - _d - 1) {
				if ((i + 1) % 3 == (_tmp - _d) % 3) {
					str = string(abi.encodePacked(str, ","));
				}
			} else {
				if ((_n / 10**_offset) % 10**(_tmp - _offset - i - 1) == 0) {
					break;
				} else if (i == _tmp - _d - 1) {
					str = string(abi.encodePacked(str, "."));
				}
			}
		}
	}
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"additionalInfo","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorFee","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"discord","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialMarketCap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_initialMarketCap","type":"uint256"},{"internalType":"uint256","name":"_upperMarketCap","type":"uint256"},{"internalType":"uint256","name":"_creatorFee","type":"uint256"},{"internalType":"uint256","name":"_transferLimit","type":"uint256"},{"internalType":"uint256","name":"_transferLimitTime","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"position","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"source","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"telegram","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferLimit","outputs":[{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"until","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"twitter","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_website","type":"string"},{"internalType":"string","name":"_twitter","type":"string"},{"internalType":"string","name":"_telegram","type":"string"},{"internalType":"string","name":"_discord","type":"string"},{"internalType":"string","name":"_info","type":"string"}],"name":"updateAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_discord","type":"string"}],"name":"updateDiscord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_info","type":"string"}],"name":"updateInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_telegram","type":"string"}],"name":"updateTelegram","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_twitter","type":"string"}],"name":"updateTwitter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_website","type":"string"}],"name":"updateWebsite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upperMarketCap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c806367e828bf11610108578063bdaaa6401161009d578063e88958dc1161006d578063e88958dc14610544578063e8bd71e114610558578063f1b54ff91461056c578063f83d08ba1461058b578063f94325171461059f575f80fd5b8063bdaaa640146104b5578063beb0a416146104c9578063d3f64664146104dd578063dd62ed3e146104fc575f80fd5b806397d6c43c116100d857806397d6c43c14610444578063a9059cbb14610463578063ab29511b14610482578063abfaeee0146104a1575f80fd5b806367e828bf146103c657806370a08231146103da57806385f2aef21461040e57806395d89b4114610430575f80fd5b80632b0f17621161017e5780634063c8651161014e5780634063c8651461036b57806347ecb6651461037f57806353f8b3031461039357806367475859146103a7575f80fd5b80632b0f1762146102ff578063313ce567146103125780633b5f1935146103385780634000aea01461034c575f80fd5b806316f0115b116101b957806316f0115b1461028e57806318160ddd146102ab57806323b872dd146102bf578063246d84e0146102de575f80fd5b806302d05d3f146101ea57806306fdde031461022057806309218e9114610241578063095ea7b31461025f575b5f80fd5b3480156101f5575f80fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022b575f80fd5b506102346105d0565b60405161021791906120ab565b34801561024c575f80fd5b50600d545b604051908152602001610217565b34801561026a575f80fd5b5061027e6102793660046120f4565b61065b565b6040519015158152602001610217565b348015610299575f80fd5b506003546001600160a01b0316610203565b3480156102b6575f80fd5b50600554610251565b3480156102ca575f80fd5b5061027e6102d936600461211e565b610670565b3480156102e9575f80fd5b506102fd6102f83660046121f9565b6106ed565b005b6102fd61030d366004612233565b610713565b34801561031d575f80fd5b50610326601281565b60405160ff9091168152602001610217565b348015610343575f80fd5b5061023461091e565b348015610357575f80fd5b5061027e6103663660046122d9565b610956565b348015610376575f80fd5b506102346109f7565b34801561038a575f80fd5b50610234610a8a565b34801561039e575f80fd5b506102fd610a9c565b3480156103b2575f80fd5b506102fd6103c13660046121f9565b610c5e565b3480156103d1575f80fd5b50610234610c80565b3480156103e5575f80fd5b506102516103f436600461235b565b6001600160a01b03165f908152600c602052604090205490565b348015610419575f80fd5b5060025461010090046001600160a01b0316610203565b34801561043b575f80fd5b50610234610c9c565b34801561044f575f80fd5b506102fd61045e366004612376565b610ca9565b34801561046e575f80fd5b5061027e61047d3660046120f4565b610d07565b34801561048d575f80fd5b506102fd61049c3660046121f9565b610d13565b3480156104ac575f80fd5b50610234610d35565b3480156104c0575f80fd5b50610234610d47565b3480156104d4575f80fd5b50610234610d5b565b3480156104e8575f80fd5b506102fd6104f73660046121f9565b610d6d565b348015610507575f80fd5b5061025161051636600461243f565b6001600160a01b039182165f908152600c602090815260408083209390941682526001909201909152205490565b34801561054f575f80fd5b50610234610d8f565b348015610563575f80fd5b50610234610dbc565b348015610577575f80fd5b506102fd6105863660046121f9565b610dce565b348015610596575f80fd5b506102fd610df0565b3480156105aa575f80fd5b506105b3610e1a565b604080519384526020840192909252151590820152606001610217565b5f80546105dc90612476565b80601f016020809104026020016040519081016040528092919081815260200182805461060890612476565b80156106535780601f1061062a57610100808354040283529160200191610653565b820191905f5260205f20905b81548152906001019060200180831161063657829003601f168201915b505050505081565b5f610667338484610e36565b90505b92915050565b6001600160a01b0383165f908152600c60209081526040808320338452600101909152812054828110156106a2575f80fd5b5f1981146106d7576001600160a01b0385165f908152600c602090815260408083203384526001019091529020805484900390555b6106e2858585610ea1565b9150505b9392505050565b6004546001600160a01b03163314610703575f80fd5b601161070f82826124f1565b5050565b60025460ff1615610722575f80fd5b6005541561072e575f80fd5b5f885111801561074057506020885111155b610748575f80fd5b5f875111801561075a57506020875111155b610762575f80fd5b662386f26fc10000861015801561078757506d314dc6448d9338c15b0a000000008611155b61078f575f80fd5b5f8511801561079d57508484115b6107a5575f80fd5b6107b2600a6103e86125d5565b8311156107bd575f80fd5b620151808111156107cc575f80fd5b6040516107d89061207c565b604051809103905ff0801580156107f1573d5f803e3d5ffd5b5060028054610100600160a81b0319166101006001600160a01b039384168102919091179182905560405163189acdbd60e31b81528c8416600482015291049091169063c4d66de8906024015f604051808303815f87803b158015610854575f80fd5b505af1158015610866573d5f803e3d5ffd5b5050600480546001600160a01b0319166001600160a01b038d16179055505f905061089189826124f1565b50600161089e88826124f1565b506005869055305f818152600c602090815260408083208a9055518981527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600685905560078490556009839055610901858585610f6c565b600a82905561091081426125e8565b600b55505050505050505050565b60606109326002600401546012600561166b565b60405160200161094291906125fb565b604051602081830303815290604052905090565b5f610962338686610ea1565b50843b63ffffffff8116156109eb57604051636be32e7360e01b81526001600160a01b03871690636be32e73906109a3903390899089908990600401612622565b6020604051808303815f875af11580156109bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e39190612669565b6109eb575f80fd5b50600195945050505050565b606060026010018054610a0990612476565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3590612476565b8015610a805780601f10610a5757610100808354040283529160200191610a80565b820191905f5260205f20905b815481529060010190602001808311610a6357829003601f168201915b5050505050905090565b60606002600e018054610a0990612476565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b119190612688565b9050806001600160a01b031663fc6f786560405180608001604052806002600b01548152602001610b506002546001600160a01b036101009091041690565b6001600160a01b0390811682526001600160801b0360208084018290526040938401829052835160e087901b6001600160e01b031916815285516004820152908501519092166024830152918301518216604482015260609092015116606482015260840160408051808303815f875af1158015610bd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf491906126a3565b505060025f0160019054906101000a90046001600160a01b03166001600160a01b031663476343ee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c45575f80fd5b505af1158015610c57573d5f803e3d5ffd5b5050505050565b6004546001600160a01b03163314610c74575f80fd5b600f61070f82826124f1565b6040518060600160405280603681526020016132926036913981565b600180546105dc90612476565b6004546001600160a01b03163314610cbf575f80fd5b600e610ccb86826124f1565b50600f610cd885826124f1565b506010610ce584826124f1565b506011610cf283826124f1565b506012610cff82826124f1565b505050505050565b5f610667338484610ea1565b6004546001600160a01b03163314610d29575f80fd5b601261070f82826124f1565b60606002600d018054610a0990612476565b60606109326002600501546012600561166b565b60606002600c018054610a0990612476565b6004546001600160a01b03163314610d83575f80fd5b601061070f82826124f1565b600954606090610dac90610da49060646126c5565b60038061166b565b60405160200161094291906126dc565b60606002600f018054610a0990612476565b6004546001600160a01b03163314610de4575f80fd5b600e61070f82826124f1565b60025460ff1615610dff575f80fd5b60055415610e0b575f80fd5b6002805460ff19166001179055565b600a54600b545f8215801590610e2f57508142105b9050909192565b6001600160a01b038381165f818152600c602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f808211610ead575f80fd5b5f80610eb7610e1a565b92505091508015610ece5781841115610ece575f80fd5b83610eed876001600160a01b03165f908152600c602052604090205490565b1015610ef7575f80fd5b6001600160a01b038087165f818152600c6020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f589088815260200190565b60405180910390a350600195945050505050565b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe59190612688565b90506001600160a01b03808316908216105f61100a8261100460055490565b89611978565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110819190612688565b60405163a167129560e01b81526001600160a01b03868116600483015285811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af11580156110d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fc9190612688565b600380546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b15801561115d575f80fd5b505af115801561116f573d5f803e3d5ffd5b505050505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e89190612688565b90506111fd85826111f860055490565b610e36565b505f6112128461120c60055490565b8b611978565b9150505f6112238561120c60055490565b915050871561139d57826001600160a01b0316638831645660405180610160016040528088611252578a611254565b895b6001600160a01b03168152602001881561126e578a611270565b895b6001600160a01b031681526127106020820152604001886112915785611293565b845b60020b815260200188156112a757856112a9565b845b60020b8152602001886112d7576103e88c6112c360055490565b02816112d1576112d16125ad565b046112d9565b5f5b81526020018815611305576103e88c6112f160055490565b02816112ff576112ff6125ad565b04611307565b5f5b81526020015f81526020015f815260200161132a6004546001600160a01b031690565b6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016113589190612700565b6080604051808303815f875af1158015611374573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139891906127c4565b505050505b826001600160a01b03166388316456604051806101600160405280886113c3578a6113c5565b895b6001600160a01b0316815260200188156113df578a6113e1565b895b6001600160a01b031681526127106020820152604001886114025785611404565b845b60020b81526020018815611418578561141a565b845b60020b81526020018861144c576103e88c6103e80361143860055490565b0281611446576114466125ad565b0461144e565b5f5b8152602001881561147e576103e88c6103e80361146a60055490565b0281611478576114786125ad565b04611480565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016114c09190612700565b6080604051808303815f875af11580156114dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150091906127c4565b505050600d556001600160a01b038716311561165f577368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03166304e45aaf886001600160a01b0316316040518060e001604052808a6001600160a01b031681526020018b6001600160a01b0316815260200161271062ffffff16815260200161158c6004546001600160a01b031690565b6001600160a01b0390811682528c8116316020808401919091525f604080850182905260609485019190915280516001600160e01b031960e089901b168152855184166004820152918501518316602483015284015162ffffff16604482015291830151811660648301526080830151608483015260a083015160a483015260c09092015190911660c482015260e40160206040518083038185885af1158015611638573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061165d919061280a565b505b50505050505050505050565b60605f82841161167b578361167d565b825b90505f81851161168d575f611697565b6116978286612821565b6116a290600a612914565b6116ac90876125d5565b9050805f036116d857604051806040016040528060018152602001600360fc1b815250925050506106e6565b6001815b6009811115611704576116f0600a826125d5565b9050816116fc8161291f565b9250506116dc565b83821161171b576117168460016125e8565b61171d565b815b90505f61172b8560016125e8565b8211611737575f611770565b8460016117448285612821565b61174e9190612821565b1161176e57600161175f8684612821565b6117699190612821565b611770565b845b90505f5b61177e8284612821565b81101561196b575f6117908585612821565b82106117d257600a60016117a48487612821565b6117ae9190612821565b6117b990600a612914565b6117c390886125d5565b6117cd9190612937565b6117d4565b5f5b6040805160018082528183019092529192505f919060208201818036833701905050905061180382603061294a565b60f81b815f8151811061181857611818612963565b60200101906001600160f81b03191690815f1a9053508881604051602001611841929190612977565b60408051601f198184030181529190529850600161185f8987612821565b6118699190612821565b8310156118ca57600361187c8987612821565b6118869190612937565b60036118938560016125e8565b61189d9190612937565b036118c557886040516020016118b391906129a5565b60405160208183030381529060405298505b611961565b6001836118d78688612821565b6118e19190612821565b6118eb9190612821565b6118f690600a612914565b61190185600a612914565b61190b90896125d5565b6119159190612937565b5f0361192257505061196b565b600161192e8987612821565b6119389190612821565b8303611961578860405160200161194f91906129c9565b60405160208183030381529060405298505b5050600101611774565b5050505050509392505050565b5f805f6119b686611989578461198b565b855b87156119975785611999565b865b6119a790600160c01b6125d5565b6119b191906126c5565b6119ee565b90506119c181611a31565b91506119ce60c8836129ed565b6119d89083612a0e565b91506119e382611d4e565b925050935093915050565b80600260018201045b81811015611a2b57809150600281828581611a1457611a146125ad565b040181611a2357611a236125ad565b0490506119f7565b50919050565b5f6401000276a36001600160a01b03831610801590611a6c575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b611aa15760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110611b3557607f810383901c9150611b3f565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611d3f57886001600160a01b0316611d2482611d4e565b6001600160a01b03161115611d395781611d41565b80611d41565b815b9998505050505050505050565b5f805f8360020b12611d63578260020b611d6a565b8260020b5f035b9050620d89e8811115611da35760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611a98565b5f816001165f03611db857600160801b611dca565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611dfe576ffff97272373d413259a46990580e213a0260801c5b6004821615611e1d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611e3c576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611e5b576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611e7a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611e99576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611eb8576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611ed8576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611ef8576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611f18576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611f38576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611f58576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611f78576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611f98576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611fb8576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611fd9576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611ff9576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612018576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612035576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561205457805f1981612050576120506125ad565b0490505b64010000000081061561206857600161206a565b5f5b60ff16602082901c0192505050919050565b61085e80612a3483390190565b5f5b838110156120a357818101518382015260200161208b565b50505f910152565b602081525f82518060208401526120c9816040850160208701612089565b601f01601f19169190910160400192915050565b6001600160a01b03811681146120f1575f80fd5b50565b5f8060408385031215612105575f80fd5b8235612110816120dd565b946020939093013593505050565b5f805f60608486031215612130575f80fd5b833561213b816120dd565b9250602084013561214b816120dd565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261217f575f80fd5b813567ffffffffffffffff8082111561219a5761219a61215c565b604051601f8301601f19908116603f011681019082821181831017156121c2576121c261215c565b816040528381528660208588010111156121da575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215612209575f80fd5b813567ffffffffffffffff81111561221f575f80fd5b61222b84828501612170565b949350505050565b5f805f805f805f805f6101208a8c03121561224c575f80fd5b8935612257816120dd565b985060208a013567ffffffffffffffff80821115612273575f80fd5b61227f8d838e01612170565b995060408c0135915080821115612294575f80fd5b506122a18c828d01612170565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e0820135965061010090910135945092505050565b5f805f80606085870312156122ec575f80fd5b84356122f7816120dd565b935060208501359250604085013567ffffffffffffffff8082111561231a575f80fd5b818701915087601f83011261232d575f80fd5b81358181111561233b575f80fd5b88602082850101111561234c575f80fd5b95989497505060200194505050565b5f6020828403121561236b575f80fd5b81356106e6816120dd565b5f805f805f60a0868803121561238a575f80fd5b853567ffffffffffffffff808211156123a1575f80fd5b6123ad89838a01612170565b965060208801359150808211156123c2575f80fd5b6123ce89838a01612170565b955060408801359150808211156123e3575f80fd5b6123ef89838a01612170565b94506060880135915080821115612404575f80fd5b61241089838a01612170565b93506080880135915080821115612425575f80fd5b5061243288828901612170565b9150509295509295909350565b5f8060408385031215612450575f80fd5b823561245b816120dd565b9150602083013561246b816120dd565b809150509250929050565b600181811c9082168061248a57607f821691505b602082108103611a2b57634e487b7160e01b5f52602260045260245ffd5b601f8211156124ec57805f5260205f20601f840160051c810160208510156124cd5750805b601f840160051c820191505b81811015610c57575f81556001016124d9565b505050565b815167ffffffffffffffff81111561250b5761250b61215c565b61251f816125198454612476565b846124a8565b602080601f831160018114612552575f841561253b5750858301515b5f19600386901b1c1916600185901b178555610cff565b5f85815260208120601f198616915b8281101561258057888601518255948401946001909101908401612561565b508582101561259d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f826125e3576125e36125ad565b500490565b8082018082111561066a5761066a6125c1565b5f825161260c818460208701612089565b630408aa8960e31b920191825250600401919050565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215612679575f80fd5b815180151581146106e6575f80fd5b5f60208284031215612698575f80fd5b81516106e6816120dd565b5f80604083850312156126b4575f80fd5b505080516020909101519092909150565b808202811582820484141761066a5761066a6125c1565b5f82516126ed818460208701612089565b602560f81b920191825250600101919050565b81516001600160a01b031681526101608101602083015161272c60208401826001600160a01b03169052565b506040830151612743604084018262ffffff169052565b506060830151612758606084018260020b9052565b50608083015161276d608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516127b3828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f80608085870312156127d7575f80fd5b8451935060208501516001600160801b03811681146127f4575f80fd5b6040860151606090960151949790965092505050565b5f6020828403121561281a575f80fd5b5051919050565b8181038181111561066a5761066a6125c1565b600181815b8085111561286e57815f1904821115612854576128546125c1565b8085161561286157918102915b93841c9390800290612839565b509250929050565b5f826128845750600161066a565b8161289057505f61066a565b81600181146128a657600281146128b0576128cc565b600191505061066a565b60ff8411156128c1576128c16125c1565b50506001821b61066a565b5060208310610133831016604e8410600b84101617156128ef575081810a61066a565b6128f98383612834565b805f190482111561290c5761290c6125c1565b029392505050565b5f6106678383612876565b5f60018201612930576129306125c1565b5060010190565b5f82612945576129456125ad565b500690565b60ff818116838216019081111561066a5761066a6125c1565b634e487b7160e01b5f52603260045260245ffd5b5f8351612988818460208801612089565b83519083019061299c818360208801612089565b01949350505050565b5f82516129b6818460208701612089565b600b60fa1b920191825250600101919050565b5f82516129da818460208701612089565b601760f91b920191825250600101919050565b5f8260020b806129ff576129ff6125ad565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561066a5761066a6125c156fe608060405234801561000f575f80fd5b506108418061001d5f395ff3fe60806040526004361061007c575f3560e01c8063894760691161004c5780638947606914610117578063c4d66de814610136578063e086e5ec14610155578063fc0c546a14610169575f80fd5b80633a98ef3914610087578063476343ee146100af5780634c02f62e146100c557806357a858fc146100d9575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b5061009c60015481565b6040519081526020015b60405180910390f35b3480156100ba575f80fd5b506100c36101a0565b005b3480156100d0575f80fd5b506100c36101bf565b3480156100e4575f80fd5b506100f86100f33660046106f6565b610236565b604080516001600160a01b0390931683526020830191909152016100a6565b348015610122575f80fd5b506100c3610131366004610721565b61026b565b348015610141575f80fd5b506100c3610150366004610721565b610524565b348015610160575f80fd5b506100c36105ad565b348015610174575f80fd5b50600254610188906001600160a01b031681565b6040516001600160a01b0390911681526020016100a6565b6101a86101bf565b6002546101bd906001600160a01b031661026b565b565b6101bd7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101319190610743565b5f8181548110610244575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610743565b9050806001600160a01b0316826001600160a01b0316036103c0576040516370a0823160e01b81523060048201526001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610369919061075e565b6040518263ffffffff1660e01b815260040161038791815260200190565b5f604051808303815f87803b15801561039e575f80fd5b505af11580156103b0573d5f803e3d5ffd5b505050506103bc6105ad565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610404573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610428919061075e565b9050801561051f575f5b5f5481101561051d575f80828154811061044e5761044e610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945088169263a9059cbb929061049d908861079d565b6104a791906107ba565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156104ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906107d9565b5050600101610432565b505b505050565b60015415610530575f80fd5b600280546001600160a01b0319163317905561054d81600a610648565b61056c73e6c791fbd46db3f4eda5f7bb76474f4fa530733e6006610648565b61058b7312fe289b7588de4ee1f1392ce086be100f7165ed6003610648565b6105aa73c28c9da0f8a500dffc16ff09a3dd1cc4c530d3466001610648565b50565b4780156105aa575f5b5f548110156103bc575f8082815481106105d2576105d2610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc919061061b908761079d565b61062591906107ba565b6040518115909202915f818181858888f15050600190940193506105b692505050565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564909201919091558154839291906106ed9084906107f8565b90915550505050565b5f60208284031215610706575f80fd5b5035919050565b6001600160a01b03811681146105aa575f80fd5b5f60208284031215610731575f80fd5b813561073c8161070d565b9392505050565b5f60208284031215610753575f80fd5b815161073c8161070d565b5f6020828403121561076e575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b4576107b4610789565b92915050565b5f826107d457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107e9575f80fd5b8151801515811461073c575f80fd5b808201808211156107b4576107b461078956fea2646970667358221220adfdaca0e91cd4d2c70d5661c772350f7a50a2dfd14eb9704f7df5331de8f38e64736f6c6343000816003343726561746564207769746820426f73736d616e27732042616b657279202862616b6572792e6d756c6c65742e6361706974616c2921a2646970667358221220d3b784ebb78494dacb3a79d1b15ab524e79f2c857812cf103095ac10b3ebc58d64736f6c63430008160033

Deployed Bytecode Sourcemap

3505:17303:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8770:78;;;;;;;;;;-1:-1:-1;8831:12:0;;-1:-1:-1;;;;;8831:12:0;8770:78;;;-1:-1:-1;;;;;287:32:1;;;269:51;;257:2;242:18;8770:78:0;;;;;;;;4280:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9360:84::-;;;;;;;;;;-1:-1:-1;9424:15:0;;9360:84;;;1133:25:1;;;1121:2;1106:18;9360:84:0;987:177:1;7950:132:0;;;;;;;;;;-1:-1:-1;7950:132:0;;;;;:::i;:::-;;:::i;:::-;;;1790:14:1;;1783:22;1765:41;;1753:2;1738:18;7950:132:0;1625:187:1;8940:72:0;;;;;;;;;;-1:-1:-1;8998:9:0;;-1:-1:-1;;;;;8998:9:0;8940:72;;9017:86;;;;;;;;;;-1:-1:-1;9082:16:0;;9017:86;;8087:347;;;;;;;;;;-1:-1:-1;8087:347:0;;;;;:::i;:::-;;:::i;7298:102::-;;;;;;;;;;-1:-1:-1;7298:102:0;;;;;:::i;:::-;;:::i;:::-;;5369:1284;;;;;;:::i;:::-;;:::i;4326:35::-;;;;;;;;;;;;4359:2;4326:35;;;;;4730:4:1;4718:17;;;4700:36;;4688:2;4673:18;4326:35:0;4558:184:1;9449:156:0;;;;;;;;;;;;;:::i;8439:323::-;;;;;;;;;;-1:-1:-1;8439:323:0;;;;;:::i;:::-;;:::i;10498:100::-;;;;;;;;;;;;;:::i;10314:88::-;;;;;;;;;;;;;:::i;7510:306::-;;;;;;;;;;;;;:::i;7080:102::-;;;;;;;;;;-1:-1:-1;7080:102:0;;;;;:::i;:::-;;:::i;4367:88::-;;;;;;;;;;;;;:::i;9108:106::-;;;;;;;;;;-1:-1:-1;9108:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;9184:17:0;9163:7;9184:17;;;:10;:17;;;;;:25;;9108:106;8854:81;;;;;;;;;;-1:-1:-1;8920:4:0;:9;;;;-1:-1:-1;;;;;8920:9:0;8854:81;;4302:20;;;;;;;;;;;;;:::i;6658:310::-;;;;;;;;;;-1:-1:-1;6658:310:0;;;;;:::i;:::-;;:::i;7821:124::-;;;;;;;;;;-1:-1:-1;7821:124:0;;;;;:::i;:::-;;:::i;7405:100::-;;;;;;;;;;-1:-1:-1;7405:100:0;;;;;:::i;:::-;;:::i;10223:86::-;;;;;;;;;;;;;:::i;9610:152::-;;;;;;;;;;;;;:::i;10132:86::-;;;;;;;;;;;;;:::i;7187:106::-;;;;;;;;;;-1:-1:-1;7187:106:0;;;;;:::i;:::-;;:::i;9219:136::-;;;;;;;;;;-1:-1:-1;9219:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;9313:17:0;;;9292:7;9313:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;9219:136;9767:146;;;;;;;;;;;;;:::i;10407:86::-;;;;;;;;;;;;;:::i;6973:102::-;;;;;;;;;;-1:-1:-1;6973:102:0;;;;;:::i;:::-;;:::i;5252:111::-;;;;;;;;;;;;;:::i;9918:209::-;;;;;;;;;;;;;:::i;:::-;;;;7537:25:1;;;7593:2;7578:18;;7571:34;;;;7648:14;7641:22;7621:18;;;7614:50;7525:2;7510:18;9918:209:0;7341:329:1;4280:18:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7950:132::-;8020:4;8038:39;8047:10;8059:8;8069:7;8038:8;:39::i;:::-;8031:46;;7950:132;;;;;:::o;8087:347::-;-1:-1:-1;;;;;9313:17:0;;8172:4;9313:17;;;:10;:17;;;;;;;;8237:10;9313:37;;:27;;:37;;;;;;8276:7;8262:10;:21;;8254:30;;;;;;-1:-1:-1;;8294:10:0;:22;8290:92;;-1:-1:-1;;;;;8325:17:0;;;;;;:10;:17;;;;;;;;8353:10;8325:39;;:27;;:39;;;;;:50;;;;;;;8290:92;8394:30;8404:5;8411:3;8416:7;8394:9;:30::i;:::-;8387:37;;;8087:347;;;;;;:::o;7298:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7372:12;:23:::1;7387:8:::0;7372:12;:23:::1;:::i;:::-;;7298:102:::0;:::o;5369:1284::-;5629:4;:11;;;5628:12;5620:21;;;;;;9082:16;;5654:18;5646:27;;;;;;5708:1;5692:5;5686:19;:23;:65;;;;;3686:2;5719:5;5713:19;:38;;5686:65;5678:74;;;;;;5789:1;5771:7;5765:21;:25;:69;;;;;3686:2;5800:7;5794:21;:40;;5765:69;5757:78;;;;;;3730:4;5848:12;:26;;:56;;;;;3791:4;5878:12;:26;;5848:56;5840:65;;;;;;5938:1;5918:17;:21;:60;;;;;5961:17;5943:15;:35;5918:60;5910:69;;;;;;6007:22;6027:2;3868:4;6007:22;:::i;:::-;5992:11;:37;;5984:46;;;;;;3930:8;6043:18;:36;;6035:45;;;;;;6097:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6085:4:0;:22;;-1:-1:-1;;;;;;6085:22:0;;-1:-1:-1;;;;;6085:22:0;;;;;;;;;;;;;6112:30;;-1:-1:-1;;;6112:30:0;;287:32:1;;;6112:30:0;;;269:51:1;6112:9:0;;;;;;:20;;242:18:1;;6112:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6147:12:0;:23;;-1:-1:-1;;;;;;6147:23:0;-1:-1:-1;;;;;6147:23:0;;;;;-1:-1:-1;;;;6175:12:0;6182:5;-1:-1:-1;6175:12:0;:::i;:::-;-1:-1:-1;6192:6:0;:16;6201:7;6192:6;:16;:::i;:::-;-1:-1:-1;6213:16:0;:31;;;6268:4;6249:25;;;;:10;:25;;;;;;;;:48;;;6307:51;1133:25:1;;;6307:51:0;;1106:18:1;6307:51:0;;;;;;;6363:21;:41;;;6409:19;:37;;;6451:15;:29;;;6485:58;6387:17;6431:15;6469:11;6485:9;:58::i;:::-;6548:18;:35;;;6612:36;6630:18;6612:15;:36;:::i;:::-;6588:21;:60;-1:-1:-1;;;;;;;;;5369:1284:0:o;9449:156::-;9500:13;9551:39;9561:4;:21;;;9584:2;9588:1;9551:9;:39::i;:::-;9534:65;;;;;;;;:::i;:::-;;;;;;;;;;;;;9520:80;;9449:156;:::o;8439:323::-;8534:4;8545:35;8555:10;8567:3;8572:7;8545:9;:35::i;:::-;-1:-1:-1;8626:16:0;;8655:9;;;;8651:91;;8680:55;;-1:-1:-1;;;8680:55:0;;-1:-1:-1;;;;;8680:27:0;;;;;:55;;8708:10;;8720:7;;8729:5;;;;8680:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8672:64;;;;;;-1:-1:-1;8753:4:0;;8439:323;-1:-1:-1;;;;;8439:323:0:o;10498:100::-;10547:13;10574:4;:19;;10567:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10498:100;:::o;10314:88::-;10357:13;10384:4;:13;;10377:20;;;;;:::i;7510:306::-;7554:19;3982:42;-1:-1:-1;;;;;7592:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7554:63;;7622:3;-1:-1:-1;;;;;7622:11:0;;7634:147;;;;;;;;7679:4;:15;;;7634:147;;;;7711:6;8920:4;:9;-1:-1:-1;;;;;8920:9:0;;;;;;8854:81;7711:6;-1:-1:-1;;;;;7634:147:0;;;;;-1:-1:-1;;;;;7634:147:0;;;;;;;;;;;;;;7622:160;;;;;;-1:-1:-1;;;;;;7622:160:0;;;12536:13:1;;7622:160:0;;;12518:32:1;12598:17;;;12592:24;12588:50;;;12566:20;;;12559:80;12674:17;;;12668:24;12783:21;;12761:20;;;12754:51;12865:4;12853:17;;;12847:24;12843:33;12821:20;;;12814:63;12490:19;;7622:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7787:4;:9;;;;;;;;;;-1:-1:-1;;;;;7787:9:0;-1:-1:-1;;;;;7787:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7549:267;7510:306::o;7080:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7154:12;:23:::1;7169:8:::0;7154:12;:23:::1;:::i;4367:88::-:0;;;;;;;;;;;;;;;;;;;:::o;4302:20::-;;;;;;;:::i;6658:310::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;6822:12;:23:::1;6837:8:::0;6822:12;:23:::1;:::i;:::-;-1:-1:-1::0;6850:12:0;:23:::1;6865:8:::0;6850:12;:23:::1;:::i;:::-;-1:-1:-1::0;6878:13:0;:25:::1;6894:9:::0;6878:13;:25:::1;:::i;:::-;-1:-1:-1::0;6908:12:0;:23:::1;6923:8:::0;6908:12;:23:::1;:::i;:::-;-1:-1:-1::0;6936:19:0;:27:::1;6958:5:::0;6936:19;:27:::1;:::i;:::-;;6658:310:::0;;;;;:::o;7821:124::-;7887:4;7905:35;7915:10;7927:3;7932:7;7905:9;:35::i;7405:100::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7473:19;:27:::1;7495:5:::0;7473:19;:27:::1;:::i;10223:86::-:0;10265:13;10292:4;:12;;10285:19;;;;;:::i;9610:152::-;9659:13;9710:37;9720:4;:19;;;9741:2;9745:1;9710:9;:37::i;10132:86::-;10174:13;10201:4;:12;;10194:19;;;;;:::i;7187:106::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7263:13;:25:::1;7279:9:::0;7263:13;:25:::1;:::i;9767:146::-:0;9873:15;;9812:13;;9863:38;;9873:21;;9891:3;9873:21;:::i;:::-;9896:1;9899;9863:9;:38::i;:::-;9846:61;;;;;;;;:::i;10407:86::-;10449:13;10476:4;:12;;10469:19;;;;;:::i;6973:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7047:12;:23:::1;7062:8:::0;7047:12;:23:::1;:::i;5252:111::-:0;5291:4;:11;;;5290:12;5282:21;;;;;;9082:16;;5316:18;5308:27;;;;;;5340:4;:18;;-1:-1:-1;;5340:18:0;5354:4;5340:18;;;5252:111::o;9918:209::-;10020:18;;10051:21;;9964:13;10086:9;;;;;:36;;;10117:5;10099:15;:23;10086:36;10077:45;;9918:209;;;:::o;12798:212::-;-1:-1:-1;;;;;12896:18:0;;;12885:4;12896:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;12954:35;1133:25:1;;;12885:4:0;;12896:38;:18;12954:35;;1106:18:1;12954:35:0;;;;;;;-1:-1:-1;13001:4:0;12798:212;;;;;:::o;13016:434::-;13098:4;13143:1;13133:7;:11;13125:20;;;;;;13152:14;13170:12;13186:15;:13;:15::i;:::-;13151:50;;;;;13211:7;13207:53;;;13246:6;13235:7;:17;;13227:26;;;;;;13293:7;13273:16;13283:5;-1:-1:-1;;;;;9184:17:0;9163:7;9184:17;;;:10;:17;;;;;:25;;9108:106;13273:16;:27;;13265:36;;;;;;-1:-1:-1;;;;;13307:17:0;;;;;;;:10;:17;;;;;;:36;;;;;;;13349:15;;;;;;;;;;:34;;;;;;13394:29;;;;;;13336:7;1133:25:1;;1121:2;1106:18;;987:177;13394:29:0;;;;;;;;-1:-1:-1;13436:4:0;;13016:434;-1:-1:-1;;;;;13016:434:0:o;10605:2187::-;10727:13;10751:4;10727:29;;10762:13;3982:42;-1:-1:-1;;;;;10778:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10762:30;-1:-1:-1;;;;;;10812:13:0;;;;;;;10798:11;10863:68;10812:13;10898;9082:16;;;9017:86;10898:13;10913:17;10863:26;:68::i;:::-;10831:100;;;3982:42;-1:-1:-1;;;;;10957:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10949:57;;-1:-1:-1;;;10949:57:0;;-1:-1:-1;;;;;14139:15:1;;;10949:57:0;;;14121:34:1;14191:15;;;14171:18;;;14164:43;11000:5:0;14223:18:1;;;14216:49;10949:36:0;;;;;;;14056:18:1;;10949:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10937:9;:69;;-1:-1:-1;;;;;;10937:69:0;-1:-1:-1;;;;;10937:69:0;;;;;;;;;11012:42;;-1:-1:-1;;;11012:42:0;;-1:-1:-1;;;;;287:32:1;;;11012:42:0;;;269:51:1;11012:23:0;;;;;;;242:18:1;;11012:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11060:19;3982:42;-1:-1:-1;;;;;11098:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11060:63;;11129:44;11138:5;11153:3;11159:13;9082:16;;;9017:86;11159:13;11129:8;:44::i;:::-;;11183:14;11201:68;11228:6;11236:13;9082:16;;;9017:86;11236:13;11251:17;11201:26;:68::i;:::-;11179:90;;;11279:14;11297:66;11324:6;11332:13;9082:16;;;9017:86;11297:66;11275:88;-1:-1:-1;;11373:15:0;;11369:543;;11397:3;-1:-1:-1;;;;;11397:8:0;;11406:498;;;;;;;;11449:6;:22;;11466:5;11449:22;;;11458:5;11449:22;-1:-1:-1;;;;;11406:498:0;;;;;11488:6;11487:7;:23;;11505:5;11487:23;;;11497:5;11487:23;-1:-1:-1;;;;;11406:498:0;;;11523:5;11406:498;;;;;;11547:6;:28;;11567:8;11547:28;;;11556:8;11547:28;11406:498;;;;;;11595:6;11594:7;:29;;11615:8;11594:29;;;11604:8;11594:29;11406:498;;;;;;11647:6;:61;;3868:4;11677:11;11661:13;9082:16;;;9017:86;11661:13;:27;:47;;;;;:::i;:::-;;11647:61;;;11656:1;11647:61;11406:498;;;;11733:6;11732:7;:61;;3868:4;11762:11;11746:13;9082:16;;;9017:86;11746:13;:27;:47;;;;;:::i;:::-;;11732:61;;;11742:1;11732:61;11406:498;;;;11813:1;11406:498;;;;11834:1;11406:498;;;;11854:9;8831:12;;-1:-1:-1;;;;;8831:12:0;;8770:78;11854:9;-1:-1:-1;;;;;11406:498:0;;;;;11881:15;11406:498;;;11397:508;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;11369:543;11943:3;-1:-1:-1;;;;;11943:8:0;;11952:526;;;;;;;;11994:6;:22;;12011:5;11994:22;;;12003:5;11994:22;-1:-1:-1;;;;;11952:526:0;;;;;12032:6;12031:7;:23;;12049:5;12031:23;;;12041:5;12031:23;-1:-1:-1;;;;;11952:526:0;;;12066:5;11952:526;;;;;;12089:6;:28;;12109:8;12089:28;;;12098:8;12089:28;11952:526;;;;;;12136:6;12135:7;:29;;12156:8;12135:29;;;12145:8;12135:29;11952:526;;;;;;12187:6;:83;;3868:4;12238:11;3868:4;12218:31;12201:13;9082:16;;;9017:86;12201:13;:49;:69;;;;;:::i;:::-;;12187:83;;;12196:1;12187:83;11952:526;;;;12294:6;12293:7;:83;;3868:4;12344:11;3868:4;12324:31;12307:13;9082:16;;;9017:86;12307:13;:49;:69;;;;;:::i;:::-;;12293:83;;;12303:1;12293:83;11952:526;;;;12395:1;11952:526;;;;12415:1;11952:526;;;;12434:5;-1:-1:-1;;;;;11952:526:0;;;;;12456:15;11952:526;;;11943:536;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;11918:15:0;11917:562;-1:-1:-1;;;;;12489:13:0;;;:17;12485:298;;3982:42;-1:-1:-1;;;;;12515:23:0;;12545:5;-1:-1:-1;;;;;12545:13:0;;12560:215;;;;;;;;12607:5;-1:-1:-1;;;;;12560:215:0;;;;;12630:5;-1:-1:-1;;;;;12560:215:0;;;;;12648:5;12560:215;;;;;;12672:9;8831:12;;-1:-1:-1;;;;;8831:12:0;;8770:78;12672:9;-1:-1:-1;;;;;12560:215:0;;;;;12699:13;;;;12560:215;;;;;;;;-1:-1:-1;12560:215:0;;;;;;;;;;;;;;;12515:261;;-1:-1:-1;;;;;;12515:261:0;;;;;;;16585:13:1;;16581:22;;12515:261:0;;;16563:41:1;16652:17;;;16646:24;16642:33;;16620:20;;;16613:63;16724:17;;16718:24;16744:8;16714:39;16692:20;;;16685:69;16802:17;;;16796:24;16792:33;;16770:20;;;16763:63;16882:4;16870:17;;16864:24;16842:20;;;16835:54;16543:3;16933:17;;16927:24;16905:20;;;16898:54;17012:4;17000:17;;;16994:24;16990:33;;;16968:20;;;16961:63;16497:19;;12515:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12485:298;10711:2077;;;;;;;10605:2187;;;:::o;19702:1103::-;19798:17;19822:10;19844:12;19835:6;:21;:45;;19874:6;19835:45;;;19859:12;19835:45;19822:58;;19885:10;19921:2;19912:6;:11;:29;;19940:1;19912:29;;;19926:11;19935:2;19926:6;:11;:::i;:::-;19907:35;;:2;:35;:::i;:::-;19898:44;;:6;:44;:::i;:::-;19885:57;;19951:2;19957:1;19951:7;19947:35;;19966:10;;;;;;;;;;;;;-1:-1:-1;;;19966:10:0;;;;;;;;;19947:35;20004:1;20025:2;20032:54;20046:1;20039:4;:8;20032:54;;;20055:10;20063:2;20055:10;;:::i;:::-;;-1:-1:-1;20071:9:0;;;;:::i;:::-;;;;20032:54;;;20107:2;20097:7;:12;:31;;20122:6;:2;20127:1;20122:6;:::i;:::-;20097:31;;;20112:7;20097:31;20090:38;-1:-1:-1;20133:15:0;20159:6;:2;20164:1;20159:6;:::i;:::-;20152:4;:13;:59;;20210:1;20152:59;;;20184:2;20180:1;20168:9;20184:2;20168:4;:9;:::i;:::-;:13;;;;:::i;:::-;:18;:39;;20206:1;20194:9;20201:2;20194:4;:9;:::i;:::-;:13;;;;:::i;:::-;20168:39;;;20189:2;20168:39;20133:79;;20222:9;20217:584;20241:14;20248:7;20241:4;:14;:::i;:::-;20237:1;:18;20217:584;;;20268:12;20287:14;20294:7;20287:4;:14;:::i;:::-;20283:1;:18;:57;;20338:2;20331:1;20320:8;20327:1;20320:4;:8;:::i;:::-;:12;;;;:::i;:::-;20315:18;;:2;:18;:::i;:::-;20309:25;;:2;:25;:::i;:::-;20308:32;;;;:::i;:::-;20283:57;;;20304:1;20283:57;20367:12;;;20377:1;20367:12;;;;;;;;;20268:72;;-1:-1:-1;20346:18:0;;20367:12;;;;;;;;;;;-1:-1:-1;;20346:33:0;-1:-1:-1;20403:16:0;20409:4;20417:2;20403:16;:::i;:::-;20396:24;;20385:5;20391:1;20385:8;;;;;;;;:::i;:::-;;;;:35;-1:-1:-1;;;;;20385:35:0;;;;;;;;;20456:3;20468:5;20439:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;20439:36:0;;;;;;;;;;-1:-1:-1;20502:1:0;20490:9;20497:2;20490:4;:9;:::i;:::-;:13;;;;:::i;:::-;20486:1;:17;20482:314;;;20545:1;20532:9;20539:2;20532:4;:9;:::i;:::-;20531:15;;;;:::i;:::-;20526:1;20517:5;:1;20521;20517:5;:::i;:::-;20516:11;;;;:::i;:::-;:30;20512:92;;20586:3;20569:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;20556:40;;20512:92;20482:314;;;20674:1;20670;20653:14;20660:7;20653:4;:14;:::i;:::-;:18;;;;:::i;:::-;:22;;;;:::i;:::-;20648:28;;:2;:28;:::i;:::-;20633:11;20637:7;20633:2;:11;:::i;:::-;20628:16;;:2;:16;:::i;:::-;20627:49;;;;:::i;:::-;20680:1;20627:54;20623:167;;20691:5;;;;20623:167;20731:1;20719:9;20726:2;20719:4;:9;:::i;:::-;:13;;;;:::i;:::-;20714:1;:18;20710:80;;20772:3;20755:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;20742:40;;20710:80;-1:-1:-1;;20257:3:0;;20217:584;;;;19817:988;;;;;19702:1103;;;;;:::o;19344:353::-;19448:13;19463:10;19480:17;19508:72;19554:6;:24;;19573:5;19554:24;;;19563:7;19554:24;19525:6;19524:7;:25;;19544:5;19524:25;;;19534:7;19524:25;19514:36;;-1:-1:-1;;;19514:36:0;:::i;:::-;:65;;;;:::i;:::-;19508:5;:72::i;:::-;19480:101;;19593:30;19613:9;19593:19;:30::i;:::-;19586:37;-1:-1:-1;19643:10:0;19650:3;19586:37;19643:10;:::i;:::-;19635:19;;:4;:19;:::i;:::-;19628:26;;19667:25;19687:4;19667:19;:25::i;:::-;19659:33;;19475:222;19344:353;;;;;;:::o;19108:231::-;19211:6;19221:1;19216;19211:6;;19210:12;19245:85;19259:6;19252:4;:13;19245:85;;;19283:4;19274:13;;19322:1;19314:4;19307;19302:2;:9;;;;;:::i;:::-;;:16;19301:22;;;;;:::i;:::-;;19294:29;;19245:85;;;19179:156;19108:231;;;:::o;15677:3426::-;15751:10;4168;-1:-1:-1;;;;;15792:30:0;;;;;;:63;;-1:-1:-1;4225:49:0;-1:-1:-1;;;;;15826:29:0;;;15792:63;15784:77;;;;-1:-1:-1;;;15784:77:0;;21253:2:1;15784:77:0;;;21235:21:1;21292:1;21272:18;;;21265:29;-1:-1:-1;;;21310:18:1;;;21303:31;21351:18;;15784:77:0;;;;;;;;;-1:-1:-1;;;;;15908:2:0;15883:27;;;;-1:-1:-1;;;;;15996:41:0;;15993:1;15989:49;16072:9;;;16130:18;16124:25;;16121:1;16117:33;16184:9;;;16242:10;16236:17;;16233:1;16229:25;16288:9;;;16346:6;16340:13;;16337:1;16333:21;16388:9;;;16446:4;16440:11;;16437:1;16433:19;;;16486:9;;;16544:3;16538:10;;16535:1;16531:18;16583:9;;;16635:10;;;16632:1;16628:18;;;16680:9;;;;16725:10;;;16163;;16267;;;16367;;;16465;16562;;;16659;16748;16782:3;16775:10;;16771:75;;16807:3;16801;:9;16791:5;:20;;16787:24;;16771:75;;;16842:3;16836;:9;16826:5;:20;;16822:24;;16771:75;16932:9;;;16927:3;16923:19;;;16957:11;;;;17015:9;;;;17065;;17056:19;;;17090:11;;;17148:9;17198;;17189:19;;;17223:11;;;17281:9;17331;;17322:19;;;17356:11;;;17414:9;17464;;17455:19;;;17489:11;;;17547:9;17597;;17588:19;;;17622:11;;;17680:9;17730;;17721:19;;;17755:11;;;17813:9;17863;;17854:19;;;17888:11;;;17946:9;17996;;17987:19;;;18021:11;;;18079:9;18129;;18120:19;;;18154:11;;;18212:9;18262;;18253:19;;;18287:11;;;18345:9;18395;;18386:19;;;18420:11;;;18478:9;18528;;18519:19;;;18553:11;;;;18611:9;;;;18661;;18652:19;;;;;16932:9;-1:-1:-1;;16870:17:0;;16892:2;16869:25;16993:10;;;;;;;16983:21;17126:10;;;;;;;17116:21;;;;17259:10;;;;;;;17249:21;;;;17392:10;;;;;;;17382:21;;;;17525:10;;;;;;;17515:21;;;;17658:10;;;;;;;17648:21;;;;17791:10;;;;;;;17781:21;17924:10;;;;;;;17914:21;18057:10;;;;;;;18047:21;18190:10;;;;;;;18180:21;18323:10;;;;;;;18313:21;18456:10;;;;;;;18446:21;18589:10;;;;;;;18579:21;18722:10;;;;;;;18712:21;18777:24;18769:32;;-1:-1:-1;;18832:53:0;;16884:3;18831:62;;;;18938:39;18922:55;;18921:64;;19001:17;;;;;;;;;:92;;19062:12;-1:-1:-1;;;;;19031:43:0;:27;19051:6;19031:19;:27::i;:::-;-1:-1:-1;;;;;19031:43:0;;;:62;;19086:7;19001:92;;19031:62;19077:6;19001:92;;;19021:7;19001:92;18994:99;15677:3426;-1:-1:-1;;;;;;;;;15677:3426:0:o;13457:2215::-;13521:20;13564:15;13589:1;13582:4;:8;;;:57;;13633:4;13626:12;;13582:57;;;13609:4;13602:12;;13601:13;;13582:57;13564:75;-1:-1:-1;4112:9:0;13653:36;;;13645:50;;;;-1:-1:-1;;;13645:50:0;;21582:2:1;13645:50:0;;;21564:21:1;21621:1;21601:18;;;21594:29;-1:-1:-1;;;21639:18:1;;;21632:31;21680:18;;13645:50:0;21380:324:1;13645:50:0;13703:13;13719:7;13729:3;13719:13;13736:1;13719:18;:93;;-1:-1:-1;;;13719:93:0;;;13740:34;13719:93;13703:109;;;-1:-1:-1;13832:3:0;13822:13;;:18;13818:83;;13859:34;13851:42;13898:3;13850:51;13818:83;13921:3;13911:13;;:18;13907:83;;13948:34;13940:42;13987:3;13939:51;13907:83;14010:3;14000:13;;:18;13996:83;;14037:34;14029:42;14076:3;14028:51;13996:83;14099:4;14089:14;;:19;14085:84;;14127:34;14119:42;14166:3;14118:51;14085:84;14189:4;14179:14;;:19;14175:84;;14217:34;14209:42;14256:3;14208:51;14175:84;14279:4;14269:14;;:19;14265:84;;14307:34;14299:42;14346:3;14298:51;14265:84;14369:4;14359:14;;:19;14355:84;;14397:34;14389:42;14436:3;14388:51;14355:84;14459:5;14449:15;;:20;14445:85;;14488:34;14480:42;14527:3;14479:51;14445:85;14550:5;14540:15;;:20;14536:85;;14579:34;14571:42;14618:3;14570:51;14536:85;14641:5;14631:15;;:20;14627:85;;14670:34;14662:42;14709:3;14661:51;14627:85;14732:5;14722:15;;:20;14718:85;;14761:34;14753:42;14800:3;14752:51;14718:85;14823:6;14813:16;;:21;14809:86;;14853:34;14845:42;14892:3;14844:51;14809:86;14915:6;14905:16;;:21;14901:86;;14945:34;14937:42;14984:3;14936:51;14901:86;15007:6;14997:16;;:21;14993:86;;15037:34;15029:42;15076:3;15028:51;14993:86;15099:6;15089:16;;:21;15085:86;;15129:34;15121:42;15168:3;15120:51;15085:86;15191:7;15181:17;;:22;15177:86;;15222:33;15214:41;15260:3;15213:50;15177:86;15283:7;15273:17;;:22;15269:85;;15314:32;15306:40;15351:3;15305:49;15269:85;15374:7;15364:17;;:22;15360:83;;15405:30;15397:38;15440:3;15396:47;15360:83;15463:7;15453:17;;:22;15449:78;;15494:25;15486:33;15524:3;15485:42;15449:78;15546:1;15539:4;:8;;;15535:47;;;15577:5;-1:-1:-1;;15557:25:0;;;;;:::i;:::-;;15549:33;;15535:47;15639:7;15630:5;:17;:22;:30;;15659:1;15630:30;;;15655:1;15630:30;15613:48;;15623:2;15614:5;:11;;15613:48;15590:72;;13548:2120;;13457:2215;;;:::o;-1:-1:-1:-;;;;;;;;:::o;331:250:1:-;416:1;426:113;440:6;437:1;434:13;426:113;;;516:11;;;510:18;497:11;;;490:39;462:2;455:10;426:113;;;-1:-1:-1;;573:1:1;555:16;;548:27;331:250::o;586:396::-;735:2;724:9;717:21;698:4;767:6;761:13;810:6;805:2;794:9;790:18;783:34;826:79;898:6;893:2;882:9;878:18;873:2;865:6;861:15;826:79;:::i;:::-;966:2;945:15;-1:-1:-1;;941:29:1;926:45;;;;973:2;922:54;;586:396;-1:-1:-1;;586:396:1:o;1169:131::-;-1:-1:-1;;;;;1244:31:1;;1234:42;;1224:70;;1290:1;1287;1280:12;1224:70;1169:131;:::o;1305:315::-;1373:6;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1489:9;1476:23;1508:31;1533:5;1508:31;:::i;:::-;1558:5;1610:2;1595:18;;;;1582:32;;-1:-1:-1;;;1305:315:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2278:127::-;2339:10;2334:3;2330:20;2327:1;2320:31;2370:4;2367:1;2360:15;2394:4;2391:1;2384:15;2410:719;2453:5;2506:3;2499:4;2491:6;2487:17;2483:27;2473:55;;2524:1;2521;2514:12;2473:55;2560:6;2547:20;2586:18;2623:2;2619;2616:10;2613:36;;;2629:18;;:::i;:::-;2704:2;2698:9;2672:2;2758:13;;-1:-1:-1;;2754:22:1;;;2778:2;2750:31;2746:40;2734:53;;;2802:18;;;2822:22;;;2799:46;2796:72;;;2848:18;;:::i;:::-;2888:10;2884:2;2877:22;2923:2;2915:6;2908:18;2969:3;2962:4;2957:2;2949:6;2945:15;2941:26;2938:35;2935:55;;;2986:1;2983;2976:12;2935:55;3050:2;3043:4;3035:6;3031:17;3024:4;3016:6;3012:17;2999:54;3097:1;3090:4;3085:2;3077:6;3073:15;3069:26;3062:37;3117:6;3108:15;;;;;;2410:719;;;;:::o;3134:322::-;3203:6;3256:2;3244:9;3235:7;3231:23;3227:32;3224:52;;;3272:1;3269;3262:12;3224:52;3312:9;3299:23;3345:18;3337:6;3334:30;3331:50;;;3377:1;3374;3367:12;3331:50;3400;3442:7;3433:6;3422:9;3418:22;3400:50;:::i;:::-;3390:60;3134:322;-1:-1:-1;;;;3134:322:1:o;3461:1092::-;3612:6;3620;3628;3636;3644;3652;3660;3668;3676;3729:3;3717:9;3708:7;3704:23;3700:33;3697:53;;;3746:1;3743;3736:12;3697:53;3785:9;3772:23;3804:31;3829:5;3804:31;:::i;:::-;3854:5;-1:-1:-1;3910:2:1;3895:18;;3882:32;3933:18;3963:14;;;3960:34;;;3990:1;3987;3980:12;3960:34;4013:50;4055:7;4046:6;4035:9;4031:22;4013:50;:::i;:::-;4003:60;;4116:2;4105:9;4101:18;4088:32;4072:48;;4145:2;4135:8;4132:16;4129:36;;;4161:1;4158;4151:12;4129:36;;4184:52;4228:7;4217:8;4206:9;4202:24;4184:52;:::i;:::-;3461:1092;;;;-1:-1:-1;4174:62:1;;4283:2;4268:18;;4255:32;;-1:-1:-1;4334:3:1;4319:19;;4306:33;;4386:3;4371:19;;4358:33;;-1:-1:-1;4438:3:1;4423:19;;4410:33;;-1:-1:-1;4490:3:1;4475:19;;4462:33;;-1:-1:-1;4542:3:1;4527:19;;;4514:33;;-1:-1:-1;3461:1092:1;-1:-1:-1;;;3461:1092:1:o;4747:794::-;4835:6;4843;4851;4859;4912:2;4900:9;4891:7;4887:23;4883:32;4880:52;;;4928:1;4925;4918:12;4880:52;4967:9;4954:23;4986:31;5011:5;4986:31;:::i;:::-;5036:5;-1:-1:-1;5088:2:1;5073:18;;5060:32;;-1:-1:-1;5143:2:1;5128:18;;5115:32;5166:18;5196:14;;;5193:34;;;5223:1;5220;5213:12;5193:34;5261:6;5250:9;5246:22;5236:32;;5306:7;5299:4;5295:2;5291:13;5287:27;5277:55;;5328:1;5325;5318:12;5277:55;5368:2;5355:16;5394:2;5386:6;5383:14;5380:34;;;5410:1;5407;5400:12;5380:34;5455:7;5450:2;5441:6;5437:2;5433:15;5429:24;5426:37;5423:57;;;5476:1;5473;5466:12;5423:57;4747:794;;;;-1:-1:-1;;5507:2:1;5499:11;;-1:-1:-1;;;4747:794:1:o;5546:247::-;5605:6;5658:2;5646:9;5637:7;5633:23;5629:32;5626:52;;;5674:1;5671;5664:12;5626:52;5713:9;5700:23;5732:31;5757:5;5732:31;:::i;5798:1145::-;5943:6;5951;5959;5967;5975;6028:3;6016:9;6007:7;6003:23;5999:33;5996:53;;;6045:1;6042;6035:12;5996:53;6085:9;6072:23;6114:18;6155:2;6147:6;6144:14;6141:34;;;6171:1;6168;6161:12;6141:34;6194:50;6236:7;6227:6;6216:9;6212:22;6194:50;:::i;:::-;6184:60;;6297:2;6286:9;6282:18;6269:32;6253:48;;6326:2;6316:8;6313:16;6310:36;;;6342:1;6339;6332:12;6310:36;6365:52;6409:7;6398:8;6387:9;6383:24;6365:52;:::i;:::-;6355:62;;6470:2;6459:9;6455:18;6442:32;6426:48;;6499:2;6489:8;6486:16;6483:36;;;6515:1;6512;6505:12;6483:36;6538:52;6582:7;6571:8;6560:9;6556:24;6538:52;:::i;:::-;6528:62;;6643:2;6632:9;6628:18;6615:32;6599:48;;6672:2;6662:8;6659:16;6656:36;;;6688:1;6685;6678:12;6656:36;6711:52;6755:7;6744:8;6733:9;6729:24;6711:52;:::i;:::-;6701:62;;6816:3;6805:9;6801:19;6788:33;6772:49;;6846:2;6836:8;6833:16;6830:36;;;6862:1;6859;6852:12;6830:36;;6885:52;6929:7;6918:8;6907:9;6903:24;6885:52;:::i;:::-;6875:62;;;5798:1145;;;;;;;;:::o;6948:388::-;7016:6;7024;7077:2;7065:9;7056:7;7052:23;7048:32;7045:52;;;7093:1;7090;7083:12;7045:52;7132:9;7119:23;7151:31;7176:5;7151:31;:::i;:::-;7201:5;-1:-1:-1;7258:2:1;7243:18;;7230:32;7271:33;7230:32;7271:33;:::i;:::-;7323:7;7313:17;;;6948:388;;;;;:::o;7675:380::-;7754:1;7750:12;;;;7797;;;7818:61;;7872:4;7864:6;7860:17;7850:27;;7818:61;7925:2;7917:6;7914:14;7894:18;7891:38;7888:161;;7971:10;7966:3;7962:20;7959:1;7952:31;8006:4;8003:1;7996:15;8034:4;8031:1;8024:15;8186:518;8288:2;8283:3;8280:11;8277:421;;;8324:5;8321:1;8314:16;8368:4;8365:1;8355:18;8438:2;8426:10;8422:19;8419:1;8415:27;8409:4;8405:38;8474:4;8462:10;8459:20;8456:47;;;-1:-1:-1;8497:4:1;8456:47;8552:2;8547:3;8543:12;8540:1;8536:20;8530:4;8526:31;8516:41;;8607:81;8625:2;8618:5;8615:13;8607:81;;;8684:1;8670:16;;8651:1;8640:13;8607:81;;8277:421;8186:518;;;:::o;8880:1345::-;9006:3;9000:10;9033:18;9025:6;9022:30;9019:56;;;9055:18;;:::i;:::-;9084:97;9174:6;9134:38;9166:4;9160:11;9134:38;:::i;:::-;9128:4;9084:97;:::i;:::-;9236:4;;9293:2;9282:14;;9310:1;9305:663;;;;10012:1;10029:6;10026:89;;;-1:-1:-1;10081:19:1;;;10075:26;10026:89;-1:-1:-1;;8837:1:1;8833:11;;;8829:24;8825:29;8815:40;8861:1;8857:11;;;8812:57;10128:81;;9275:944;;9305:663;8133:1;8126:14;;;8170:4;8157:18;;-1:-1:-1;;9341:20:1;;;9459:236;9473:7;9470:1;9467:14;9459:236;;;9562:19;;;9556:26;9541:42;;9654:27;;;;9622:1;9610:14;;;;9489:19;;9459:236;;;9463:3;9723:6;9714:7;9711:19;9708:201;;;9784:19;;;9778:26;-1:-1:-1;;9867:1:1;9863:14;;;9879:3;9859:24;9855:37;9851:42;9836:58;9821:74;;9708:201;-1:-1:-1;;;;;9955:1:1;9939:14;;;9935:22;9922:36;;-1:-1:-1;8880:1345:1:o;10230:127::-;10291:10;10286:3;10282:20;10279:1;10272:31;10322:4;10319:1;10312:15;10346:4;10343:1;10336:15;10362:127;10423:10;10418:3;10414:20;10411:1;10404:31;10454:4;10451:1;10444:15;10478:4;10475:1;10468:15;10494:120;10534:1;10560;10550:35;;10565:18;;:::i;:::-;-1:-1:-1;10599:9:1;;10494:120::o;10619:125::-;10684:9;;;10705:10;;;10702:36;;;10718:18;;:::i;10749:455::-;10981:3;11019:6;11013:13;11035:66;11094:6;11089:3;11082:4;11074:6;11070:17;11035:66;:::i;:::-;-1:-1:-1;;;11123:16:1;;11148:21;;;-1:-1:-1;11196:1:1;11185:13;;10749:455;-1:-1:-1;10749:455:1:o;11209:559::-;-1:-1:-1;;;;;11422:32:1;;11404:51;;11486:2;11471:18;;11464:34;;;11534:2;11529;11514:18;;11507:30;;;11553:18;;11546:34;;;11573:6;11623;11617:3;11602:19;;11589:49;11688:1;11658:22;;;11682:3;11654:32;;;11647:43;;;;11751:2;11730:15;;;-1:-1:-1;;11726:29:1;11711:45;11707:55;;11209:559;-1:-1:-1;;;11209:559:1:o;11773:277::-;11840:6;11893:2;11881:9;11872:7;11868:23;11864:32;11861:52;;;11909:1;11906;11899:12;11861:52;11941:9;11935:16;11994:5;11987:13;11980:21;11973:5;11970:32;11960:60;;12016:1;12013;12006:12;12055:251;12125:6;12178:2;12166:9;12157:7;12153:23;12149:32;12146:52;;;12194:1;12191;12184:12;12146:52;12226:9;12220:16;12245:31;12270:5;12245:31;:::i;12888:245::-;12967:6;12975;13028:2;13016:9;13007:7;13003:23;12999:32;12996:52;;;13044:1;13041;13034:12;12996:52;-1:-1:-1;;13067:16:1;;13123:2;13108:18;;;13102:25;13067:16;;13102:25;;-1:-1:-1;12888:245:1:o;13138:168::-;13211:9;;;13242;;13259:15;;;13253:22;;13239:37;13229:71;;13280:18;;:::i;13311:452::-;13543:3;13581:6;13575:13;13597:66;13656:6;13651:3;13644:4;13636:6;13632:17;13597:66;:::i;:::-;-1:-1:-1;;;13685:16:1;;13710:18;;;-1:-1:-1;13755:1:1;13744:13;;13311:452;-1:-1:-1;13311:452:1:o;14580:1223::-;14798:13;;-1:-1:-1;;;;;80:31:1;68:44;;14766:3;14751:19;;14870:4;14862:6;14858:17;14852:24;14885:54;14933:4;14922:9;14918:20;14904:12;-1:-1:-1;;;;;80:31:1;68:44;;14:104;14885:54;;14988:4;14980:6;14976:17;14970:24;15003:60;15057:4;15046:9;15042:20;15026:14;13849:8;13838:20;13826:33;;13768:97;15003:60;;15112:4;15104:6;15100:17;15094:24;15127:54;15175:4;15164:9;15160:20;15144:14;14559:1;14548:20;14536:33;;14484:91;15127:54;;15230:4;15222:6;15218:17;15212:24;15245:54;15293:4;15282:9;15278:20;15262:14;14559:1;14548:20;14536:33;;14484:91;15245:54;;15355:4;15347:6;15343:17;15337:24;15330:4;15319:9;15315:20;15308:54;15418:4;15410:6;15406:17;15400:24;15393:4;15382:9;15378:20;15371:54;15481:4;15473:6;15469:17;15463:24;15456:4;15445:9;15441:20;15434:54;15507:6;15567:2;15559:6;15555:15;15549:22;15544:2;15533:9;15529:18;15522:50;;15591:6;15646:2;15638:6;15634:15;15628:22;15659:54;15709:2;15698:9;15694:18;15678:14;-1:-1:-1;;;;;80:31:1;68:44;;14:104;15659:54;-1:-1:-1;;15732:6:1;15780:15;;;15774:22;15754:18;;;;15747:50;14580:1223;:::o;15808:489::-;15905:6;15913;15921;15929;15982:3;15970:9;15961:7;15957:23;15953:33;15950:53;;;15999:1;15996;15989:12;15950:53;16028:9;16022:16;16012:26;;16081:2;16070:9;16066:18;16060:25;-1:-1:-1;;;;;16118:5:1;16114:46;16107:5;16104:57;16094:85;;16175:1;16172;16165:12;16094:85;16243:2;16228:18;;16222:25;16287:2;16272:18;;;16266:25;15808:489;;16198:5;;-1:-1:-1;15808:489:1;-1:-1:-1;;;15808:489:1:o;17035:184::-;17105:6;17158:2;17146:9;17137:7;17133:23;17129:32;17126:52;;;17174:1;17171;17164:12;17126:52;-1:-1:-1;17197:16:1;;17035:184;-1:-1:-1;17035:184:1:o;17224:128::-;17291:9;;;17312:11;;;17309:37;;;17326:18;;:::i;17357:416::-;17446:1;17483:5;17446:1;17497:270;17518:7;17508:8;17505:21;17497:270;;;17577:4;17573:1;17569:6;17565:17;17559:4;17556:27;17553:53;;;17586:18;;:::i;:::-;17636:7;17626:8;17622:22;17619:55;;;17656:16;;;;17619:55;17735:22;;;;17695:15;;;;17497:270;;;17501:3;17357:416;;;;;:::o;17778:806::-;17827:5;17857:8;17847:80;;-1:-1:-1;17898:1:1;17912:5;;17847:80;17946:4;17936:76;;-1:-1:-1;17983:1:1;17997:5;;17936:76;18028:4;18046:1;18041:59;;;;18114:1;18109:130;;;;18021:218;;18041:59;18071:1;18062:10;;18085:5;;;18109:130;18146:3;18136:8;18133:17;18130:43;;;18153:18;;:::i;:::-;-1:-1:-1;;18209:1:1;18195:16;;18224:5;;18021:218;;18323:2;18313:8;18310:16;18304:3;18298:4;18295:13;18291:36;18285:2;18275:8;18272:16;18267:2;18261:4;18258:12;18254:35;18251:77;18248:159;;;-1:-1:-1;18360:19:1;;;18392:5;;18248:159;18439:34;18464:8;18458:4;18439:34;:::i;:::-;18509:6;18505:1;18501:6;18497:19;18488:7;18485:32;18482:58;;;18520:18;;:::i;:::-;18558:20;;17778:806;-1:-1:-1;;;17778:806:1:o;18589:131::-;18649:5;18678:36;18705:8;18699:4;18678:36;:::i;18725:135::-;18764:3;18785:17;;;18782:43;;18805:18;;:::i;:::-;-1:-1:-1;18852:1:1;18841:13;;18725:135::o;18865:112::-;18897:1;18923;18913:35;;18928:18;;:::i;:::-;-1:-1:-1;18962:9:1;;18865:112::o;18982:148::-;19070:4;19049:12;;;19063;;;19045:31;;19088:13;;19085:39;;;19104:18;;:::i;19135:127::-;19196:10;19191:3;19187:20;19184:1;19177:31;19227:4;19224:1;19217:15;19251:4;19248:1;19241:15;19267:496;19446:3;19484:6;19478:13;19500:66;19559:6;19554:3;19547:4;19539:6;19535:17;19500:66;:::i;:::-;19629:13;;19588:16;;;;19651:70;19629:13;19588:16;19698:4;19686:17;;19651:70;:::i;:::-;19737:20;;19267:496;-1:-1:-1;;;;19267:496:1:o;19768:452::-;20000:3;20038:6;20032:13;20054:66;20113:6;20108:3;20101:4;20093:6;20089:17;20054:66;:::i;:::-;-1:-1:-1;;;20142:16:1;;20167:18;;;-1:-1:-1;20212:1:1;20201:13;;19768:452;-1:-1:-1;19768:452:1:o;20225:::-;20457:3;20495:6;20489:13;20511:66;20570:6;20565:3;20558:4;20550:6;20546:17;20511:66;:::i;:::-;-1:-1:-1;;;20599:16:1;;20624:18;;;-1:-1:-1;20669:1:1;20658:13;;20225:452;-1:-1:-1;20225:452:1:o;20682:166::-;20712:1;20753;20750;20739:16;20774:3;20764:37;;20781:18;;:::i;:::-;20838:3;20834:1;20831;20820:16;20815:27;20810:32;;;20682:166;;;;:::o;20853:193::-;20951:1;20940:16;;;20922;;;;20918:39;-1:-1:-1;;20972:23:1;;21007:8;20997:19;;20969:48;20966:74;;;21020:18;;:::i

Swarm Source

ipfs://d3b784ebb78494dacb3a79d1b15ab524e79f2c857812cf103095ac10b3ebc58d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.