ETH Price: $3,108.08 (+1.16%)
Gas: 8 Gwei

Token

MAKE AMERICA CLEAN AGAIN (MACA)
 

Overview

Max Total Supply

1,000,000,000 MACA

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Null: 0x000...000
Balance
0 MACA

Value
$0.00
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MakeAmericaCleanAgain

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-06-11
*/

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

/*
tg: https://t.me/macaeth

*/

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

interface Router {
	function factory() external view returns (address);
	function positionManager() external view returns (address);
	function WETH9() external view returns (address);
}

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);
}


contract MakeAmericaCleanAgain {

	uint256 constant private FLOAT_SCALAR = 2**64;
	uint256 constant private UINT_MAX = type(uint256).max;
	uint128 constant private UINT128_MAX = type(uint128).max;
	uint256 constant private INITIAL_SUPPLY = 1e27; // 1 billion
	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);
	uint256 constant private INITIAL_ETH_MC = 1 ether; // 1 ETH initial market cap price
	uint256 constant private CONCENTRATED_PERCENT = 4; // 4% of tokens will be sold at the min price (20 ETH)
	uint256 constant private UPPER_ETH_MC = 1e6 ether; // 1,000,000 ETH max market cap price

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

	string constant public name = "MAKE AMERICA CLEAN AGAIN" ;
	string constant public symbol = "MACA";
	uint8 constant public decimals = 18;

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

	struct Info {
		address owner;
		address pool;
		uint256 totalSupply;
		mapping(address => User) users;
		uint256 lowerPositionId1;
		uint256 lowerPositionId2;
		uint256 upperPositionId1;
		uint256 upperPositionId2;
	}
	Info private info;


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


	constructor() {
		address _this = address(this);
		address _weth = ROUTER.WETH9();
		(uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth < _this, INITIAL_SUPPLY, INITIAL_ETH_MC);
		info.pool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000);
		Pool(pool()).initialize(_initialSqrtPrice);
		info.owner = msg.sender;
	}
	
	function initialize() payable external {
		require(totalSupply() == 0);
		address _this = address(this);
		address _weth = ROUTER.WETH9();
		bool _weth0 = _weth < _this;
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		info.totalSupply = INITIAL_SUPPLY;
		info.users[_this].balance = INITIAL_SUPPLY;
		emit Transfer(address(0x0), _this, INITIAL_SUPPLY);
		_approve(_this, address(_pm), INITIAL_SUPPLY);
		( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, INITIAL_ETH_MC);
		( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, UPPER_ETH_MC);
		uint256 _concentratedTokens = CONCENTRATED_PERCENT * INITIAL_SUPPLY / 100;
		(info.lowerPositionId1, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _minTick - 200 : _minTick,
			tickUpper: !_weth0 ? _minTick + 200 : _minTick,
			amount0Desired: _weth0 ? 0 : _concentratedTokens / 2,
			amount1Desired: !_weth0 ? 0 : _concentratedTokens / 2,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
		(info.lowerPositionId2, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _minTick - 200 : _minTick,
			tickUpper: !_weth0 ? _minTick + 200 : _minTick,
			amount0Desired: _weth0 ? 0 : _concentratedTokens / 2,
			amount1Desired: !_weth0 ? 0 : _concentratedTokens / 2,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
		(info.upperPositionId1, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _maxTick : _minTick + 200,
			tickUpper: !_weth0 ? _maxTick : _minTick - 200,
			amount0Desired: _weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2,
			amount1Desired: !_weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
		(info.upperPositionId2, , , ) = _pm.mint(PositionManager.MintParams({
			token0: _weth0 ? _weth : _this,
			token1: !_weth0 ? _weth : _this,
			fee: 10000,
			tickLower: _weth0 ? _maxTick : _minTick + 200,
			tickUpper: !_weth0 ? _maxTick : _minTick - 200,
			amount0Desired: _weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2,
			amount1Desired: !_weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2,
			amount0Min: 0,
			amount1Min: 0,
			recipient: _this,
			deadline: block.timestamp
		}));
	}

	function collectTradingFees() external {
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.lowerPositionId1,
			recipient: info.owner,
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.lowerPositionId2,
			recipient: info.owner,
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.upperPositionId1,
			recipient: info.owner,
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.upperPositionId2,
			recipient: info.owner,
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
	}

	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) {
		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 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 positions() external view returns (uint256 lower1, uint256 lower2, uint256 upper1, uint256 upper2) {
		return (info.lowerPositionId1, info.lowerPositionId2, info.upperPositionId1, info.upperPositionId2);
	}


	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(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);
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":[{"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"payable","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":"positions","outputs":[{"internalType":"uint256","name":"lower1","type":"uint256"},{"internalType":"uint256","name":"lower2","type":"uint256"},{"internalType":"uint256","name":"upper1","type":"uint256"},{"internalType":"uint256","name":"upper2","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_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"}]

608060405234801562000010575f80fd5b505f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000067573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200008d919062000986565b90505f620000bf6001600160a01b03808516908416106b033b2e3c9fd0803ce8000000670de0b6b3a76400006200024b565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000113573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000139919062000986565b60405163a167129560e01b81526001600160a01b03858116600483015284811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af115801562000191573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b7919062000986565b600180546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b15801562000219575f80fd5b505af11580156200022c573d5f803e3d5ffd5b50505f80546001600160a01b031916331790555062000a5f9350505050565b5f805f62000293866200025f578462000261565b855b87156200026f578562000271565b865b6200028190600160c01b620009dd565b6200028d9190620009f3565b620002d3565b9050620002a0816200031e565b9150620002af60c88362000a13565b620002bb908362000a37565b9150620002c88262000643565b925050935093915050565b80600260018201045b818110156200031857809150600281828581620002fd57620002fd620009b5565b0401816200030f576200030f620009b5565b049050620002dc565b50919050565b5f6401000276a36001600160a01b038316108015906200035a575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b620003905760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106200042457607f810383901c91506200042e565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1462000634576001600160a01b038916620006168262000643565b6001600160a01b031611156200062d578162000636565b8062000636565b815b9998505050505050505050565b5f805f8360020b126200065a578260020b62000661565b8260020b5f035b9050620d89e88111156200069c5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640162000387565b5f816001165f03620006b357600160801b620006c5565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615620006f0576ffff97272373d413259a46990580e213a0260801c5b600482161562000710576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161562000730576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161562000750576fffcb9843d60f6159c9db58835c9266440260801c5b602082161562000770576fff973b41fa98c081472e6896dfb254c00260801c5b604082161562000790576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615620007b0576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615620007d1576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615620007f2576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161562000813576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161562000834576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161562000855576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161562000876576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161562000897576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615620008b8576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615620008da576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615620008fb576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156200091b576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161562000939576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156200095c57805f1981620009585762000958620009b5565b0490505b6401000000008106156200097257600162000974565b5f5b60ff16602082901c0192505050919050565b5f6020828403121562000997575f80fd5b81516001600160a01b0381168114620009ae575f80fd5b9392505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f82620009ee57620009ee620009b5565b500490565b808202811582820484141762000a0d5762000a0d620009c9565b92915050565b5f8260020b8062000a285762000a28620009b5565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171562000a0d5762000a0d620009c9565b611b978062000a6d5f395ff3fe6080604052600436106100d9575f3560e01c806353f8b3031161007c57806395d89b411161005757806395d89b4114610265578063a9059cbb14610294578063ba5b7982146102b3578063dd62ed3e146102eb575f80fd5b806353f8b3031461021357806370a08231146102295780638129fc1c1461025d575f80fd5b806318160ddd116100b757806318160ddd1461019157806323b872dd146101af578063313ce567146101ce5780634000aea0146101f4575f80fd5b806306fdde03146100dd578063095ea7b31461013b57806316f0115b1461016a575b5f80fd5b3480156100e8575f80fd5b506101256040518060400160405280601881526020017f4d414b4520414d455249434120434c45414e20414741494e000000000000000081525081565b60405161013291906116fc565b60405180910390f35b348015610146575f80fd5b5061015a61015536600461175e565b610333565b6040519015158152602001610132565b348015610175575f80fd5b506001546040516001600160a01b039091168152602001610132565b34801561019c575f80fd5b506002545b604051908152602001610132565b3480156101ba575f80fd5b5061015a6101c9366004611788565b610348565b3480156101d9575f80fd5b506101e2601281565b60405160ff9091168152602001610132565b3480156101ff575f80fd5b5061015a61020e3660046117c6565b6103d1565b34801561021e575f80fd5b50610227610472565b005b348015610234575f80fd5b506101a1610243366004611848565b6001600160a01b03165f9081526003602052604090205490565b610227610749565b348015610270575f80fd5b50610125604051806040016040528060048152602001634d41434160e01b81525081565b34801561029f575f80fd5b5061015a6102ae36600461175e565b610efc565b3480156102be575f80fd5b50600454600554600654600754604080519485526020850193909352918301526060820152608001610132565b3480156102f6575f80fd5b506101a161030536600461186a565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f61033f338484610f08565b90505b92915050565b6001600160a01b0383165f9081526003602090815260408083203384526001019091528120548281101561037a575f80fd5b5f1981146103bd576001600160a01b0385165f908152600360209081526040808320338452600101909152812080548592906103b79084906118b5565b90915550505b6103c8858585610f74565b95945050505050565b5f6103dd338686610f74565b50843b63ffffffff81161561046657604051636be32e7360e01b81526001600160a01b03871690636be32e739061041e9033908990899089906004016118c8565b6020604051808303815f875af115801561043a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e919061190f565b610466575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e7919061192e565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f786592610540929101611949565b60408051808303815f875af115801561055b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057f919061198c565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916105d791600401611949565b60408051808303815f875af11580156105f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610616919061198c565b50506040805160808101825260065481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f78659161066e91600401611949565b60408051808303815f875af1158015610689573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061198c565b50506040805160808101825260075481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f78659161070591600401611949565b60408051808303815f875af1158015610720573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610744919061198c565b505050565b60025415610755575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ce919061192e565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610839573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085d919061192e565b676765c793fa10079d601b1b60028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916108bf91815260200190565b60405180910390a36108dd8482676765c793fa10079d601b1b610f08565b505f6108fd83676765c793fa10079d601b1b670de0b6b3a7640000610ff8565b9150505f61092184676765c793fa10079d601b1b69d3c21bcecceda1000000610ff8565b91505f9050606461093e676765c793fa10079d601b1b60046119ae565b61094891906119d9565b9050836001600160a01b0316638831645660405180610160016040528088610970578a610972565b895b6001600160a01b03168152602001881561098c578a61098e565b895b6001600160a01b031681526127106020820152604001886109af57866109ba565b6109ba60c8886119ec565b60020b815260200188156109ce57866109d9565b6109d98760c8611a11565b60020b8152602001886109f6576109f16002866119d9565b6109f8565b5f5b81526020018815610a1357610a0e6002866119d9565b610a15565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a559190611a36565b6080604051808303815f875af1158015610a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a959190611afa565b5050506004556040805161016081019091526001600160a01b038516906388316456908088610ac4578a610ac6565b895b6001600160a01b031681526020018815610ae0578a610ae2565b895b6001600160a01b03168152612710602082015260400188610b035786610b0e565b610b0e60c8886119ec565b60020b81526020018815610b225786610b2d565b610b2d8760c8611a11565b60020b815260200188610b4a57610b456002866119d9565b610b4c565b5f5b81526020018815610b6757610b626002866119d9565b610b69565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610ba99190611a36565b6080604051808303815f875af1158015610bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be99190611afa565b5050506005556040805161016081019091526001600160a01b038516906388316456908088610c18578a610c1a565b895b6001600160a01b031681526020018815610c34578a610c36565b895b6001600160a01b03168152612710602082015260400188610c6157610c5c8760c8611a11565b610c63565b855b60020b81526020018815610c8157610c7c60c8886119ec565b610c83565b855b60020b815260200188610cb6576002610ca786676765c793fa10079d601b1b6118b5565b610cb191906119d9565b610cb8565b5f5b81526020018815610ce9576002610cda86676765c793fa10079d601b1b6118b5565b610ce491906119d9565b610ceb565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610d2b9190611a36565b6080604051808303815f875af1158015610d47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6b9190611afa565b5050506006556040805161016081019091526001600160a01b038516906388316456908088610d9a578a610d9c565b895b6001600160a01b031681526020018815610db6578a610db8565b895b6001600160a01b03168152612710602082015260400188610de357610dde8760c8611a11565b610de5565b855b60020b81526020018815610e0357610dfe60c8886119ec565b610e05565b855b60020b815260200188610e38576002610e2986676765c793fa10079d601b1b6118b5565b610e3391906119d9565b610e3a565b5f5b81526020018815610e6b576002610e5c86676765c793fa10079d601b1b6118b5565b610e6691906119d9565b610e6d565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610ead9190611a36565b6080604051808303815f875af1158015610ec9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eed9190611afa565b50505060075550505050505050565b5f61033f338484610f74565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610f97575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f629086815260200190565b5f805f61103686611009578461100b565b855b87156110175785611019565b865b61102790600160c01b6119d9565b61103191906119ae565b61106e565b9050611041816110b1565b915061104e60c883611b40565b61105890836119ec565b9150611063826113ce565b925050935093915050565b80600260018201045b818110156110ab57809150600281828581611094576110946119c5565b0401816110a3576110a36119c5565b049050611077565b50919050565b5f6401000276a36001600160a01b038316108015906110ec575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6111215760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106111b557607f810383901c91506111bf565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146113bf57886001600160a01b03166113a4826113ce565b6001600160a01b031611156113b957816113c1565b806113c1565b815b9998505050505050505050565b5f805f8360020b126113e3578260020b6113ea565b8260020b5f035b9050620d89e88111156114235760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611118565b5f816001165f0361143857600160801b61144a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561147e576ffff97272373d413259a46990580e213a0260801c5b600482161561149d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156114bc576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156114db576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156114fa576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611519576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611538576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611558576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611578576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611598576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156115b8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156115d8576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156115f8576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611618576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611638576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611659576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611679576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611698576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156116b5576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156116d457805f19816116d0576116d06119c5565b0490505b6401000000008106156116e85760016116ea565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b818110156117275785810183015185820160400152820161170b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461175b575f80fd5b50565b5f806040838503121561176f575f80fd5b823561177a81611747565b946020939093013593505050565b5f805f6060848603121561179a575f80fd5b83356117a581611747565b925060208401356117b581611747565b929592945050506040919091013590565b5f805f80606085870312156117d9575f80fd5b84356117e481611747565b935060208501359250604085013567ffffffffffffffff80821115611807575f80fd5b818701915087601f83011261181a575f80fd5b813581811115611828575f80fd5b886020828501011115611839575f80fd5b95989497505060200194505050565b5f60208284031215611858575f80fd5b813561186381611747565b9392505050565b5f806040838503121561187b575f80fd5b823561188681611747565b9150602083013561189681611747565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610342576103426118a1565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f6020828403121561191f575f80fd5b81518015158114611863575f80fd5b5f6020828403121561193e575f80fd5b815161186381611747565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f806040838503121561199d575f80fd5b505080516020909101519092909150565b8082028115828204841417610342576103426118a1565b634e487b7160e01b5f52601260045260245ffd5b5f826119e7576119e76119c5565b500490565b600282810b9082900b03627fffff198112627fffff82131715610342576103426118a1565b600281810b9083900b01627fffff8113627fffff1982121715610342576103426118a1565b81516001600160a01b0316815261016081016020830151611a6260208401826001600160a01b03169052565b506040830151611a79604084018262ffffff169052565b506060830151611a8e606084018260020b9052565b506080830151611aa3608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611ae9828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215611b0d575f80fd5b8451935060208501516001600160801b0381168114611b2a575f80fd5b6040860151606090960151949790965092505050565b5f8260020b80611b5257611b526119c5565b808360020b079150509291505056fea264697066735822122042420fc751c241e2a36e6da5cbaeac39804eb5f200ac101c73843610328e707b64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106100d9575f3560e01c806353f8b3031161007c57806395d89b411161005757806395d89b4114610265578063a9059cbb14610294578063ba5b7982146102b3578063dd62ed3e146102eb575f80fd5b806353f8b3031461021357806370a08231146102295780638129fc1c1461025d575f80fd5b806318160ddd116100b757806318160ddd1461019157806323b872dd146101af578063313ce567146101ce5780634000aea0146101f4575f80fd5b806306fdde03146100dd578063095ea7b31461013b57806316f0115b1461016a575b5f80fd5b3480156100e8575f80fd5b506101256040518060400160405280601881526020017f4d414b4520414d455249434120434c45414e20414741494e000000000000000081525081565b60405161013291906116fc565b60405180910390f35b348015610146575f80fd5b5061015a61015536600461175e565b610333565b6040519015158152602001610132565b348015610175575f80fd5b506001546040516001600160a01b039091168152602001610132565b34801561019c575f80fd5b506002545b604051908152602001610132565b3480156101ba575f80fd5b5061015a6101c9366004611788565b610348565b3480156101d9575f80fd5b506101e2601281565b60405160ff9091168152602001610132565b3480156101ff575f80fd5b5061015a61020e3660046117c6565b6103d1565b34801561021e575f80fd5b50610227610472565b005b348015610234575f80fd5b506101a1610243366004611848565b6001600160a01b03165f9081526003602052604090205490565b610227610749565b348015610270575f80fd5b50610125604051806040016040528060048152602001634d41434160e01b81525081565b34801561029f575f80fd5b5061015a6102ae36600461175e565b610efc565b3480156102be575f80fd5b50600454600554600654600754604080519485526020850193909352918301526060820152608001610132565b3480156102f6575f80fd5b506101a161030536600461186a565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f61033f338484610f08565b90505b92915050565b6001600160a01b0383165f9081526003602090815260408083203384526001019091528120548281101561037a575f80fd5b5f1981146103bd576001600160a01b0385165f908152600360209081526040808320338452600101909152812080548592906103b79084906118b5565b90915550505b6103c8858585610f74565b95945050505050565b5f6103dd338686610f74565b50843b63ffffffff81161561046657604051636be32e7360e01b81526001600160a01b03871690636be32e739061041e9033908990899089906004016118c8565b6020604051808303815f875af115801561043a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e919061190f565b610466575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e7919061192e565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f786592610540929101611949565b60408051808303815f875af115801561055b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057f919061198c565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916105d791600401611949565b60408051808303815f875af11580156105f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610616919061198c565b50506040805160808101825260065481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f78659161066e91600401611949565b60408051808303815f875af1158015610689573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061198c565b50506040805160808101825260075481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f78659161070591600401611949565b60408051808303815f875af1158015610720573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610744919061198c565b505050565b60025415610755575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ce919061192e565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610839573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085d919061192e565b676765c793fa10079d601b1b60028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916108bf91815260200190565b60405180910390a36108dd8482676765c793fa10079d601b1b610f08565b505f6108fd83676765c793fa10079d601b1b670de0b6b3a7640000610ff8565b9150505f61092184676765c793fa10079d601b1b69d3c21bcecceda1000000610ff8565b91505f9050606461093e676765c793fa10079d601b1b60046119ae565b61094891906119d9565b9050836001600160a01b0316638831645660405180610160016040528088610970578a610972565b895b6001600160a01b03168152602001881561098c578a61098e565b895b6001600160a01b031681526127106020820152604001886109af57866109ba565b6109ba60c8886119ec565b60020b815260200188156109ce57866109d9565b6109d98760c8611a11565b60020b8152602001886109f6576109f16002866119d9565b6109f8565b5f5b81526020018815610a1357610a0e6002866119d9565b610a15565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a559190611a36565b6080604051808303815f875af1158015610a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a959190611afa565b5050506004556040805161016081019091526001600160a01b038516906388316456908088610ac4578a610ac6565b895b6001600160a01b031681526020018815610ae0578a610ae2565b895b6001600160a01b03168152612710602082015260400188610b035786610b0e565b610b0e60c8886119ec565b60020b81526020018815610b225786610b2d565b610b2d8760c8611a11565b60020b815260200188610b4a57610b456002866119d9565b610b4c565b5f5b81526020018815610b6757610b626002866119d9565b610b69565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610ba99190611a36565b6080604051808303815f875af1158015610bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be99190611afa565b5050506005556040805161016081019091526001600160a01b038516906388316456908088610c18578a610c1a565b895b6001600160a01b031681526020018815610c34578a610c36565b895b6001600160a01b03168152612710602082015260400188610c6157610c5c8760c8611a11565b610c63565b855b60020b81526020018815610c8157610c7c60c8886119ec565b610c83565b855b60020b815260200188610cb6576002610ca786676765c793fa10079d601b1b6118b5565b610cb191906119d9565b610cb8565b5f5b81526020018815610ce9576002610cda86676765c793fa10079d601b1b6118b5565b610ce491906119d9565b610ceb565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610d2b9190611a36565b6080604051808303815f875af1158015610d47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6b9190611afa565b5050506006556040805161016081019091526001600160a01b038516906388316456908088610d9a578a610d9c565b895b6001600160a01b031681526020018815610db6578a610db8565b895b6001600160a01b03168152612710602082015260400188610de357610dde8760c8611a11565b610de5565b855b60020b81526020018815610e0357610dfe60c8886119ec565b610e05565b855b60020b815260200188610e38576002610e2986676765c793fa10079d601b1b6118b5565b610e3391906119d9565b610e3a565b5f5b81526020018815610e6b576002610e5c86676765c793fa10079d601b1b6118b5565b610e6691906119d9565b610e6d565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610ead9190611a36565b6080604051808303815f875af1158015610ec9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eed9190611afa565b50505060075550505050505050565b5f61033f338484610f74565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610f97575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f629086815260200190565b5f805f61103686611009578461100b565b855b87156110175785611019565b865b61102790600160c01b6119d9565b61103191906119ae565b61106e565b9050611041816110b1565b915061104e60c883611b40565b61105890836119ec565b9150611063826113ce565b925050935093915050565b80600260018201045b818110156110ab57809150600281828581611094576110946119c5565b0401816110a3576110a36119c5565b049050611077565b50919050565b5f6401000276a36001600160a01b038316108015906110ec575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6111215760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106111b557607f810383901c91506111bf565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146113bf57886001600160a01b03166113a4826113ce565b6001600160a01b031611156113b957816113c1565b806113c1565b815b9998505050505050505050565b5f805f8360020b126113e3578260020b6113ea565b8260020b5f035b9050620d89e88111156114235760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611118565b5f816001165f0361143857600160801b61144a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561147e576ffff97272373d413259a46990580e213a0260801c5b600482161561149d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156114bc576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156114db576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156114fa576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611519576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611538576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611558576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611578576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611598576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156115b8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156115d8576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156115f8576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611618576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611638576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611659576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611679576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611698576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156116b5576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156116d457805f19816116d0576116d06119c5565b0490505b6401000000008106156116e85760016116ea565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b818110156117275785810183015185820160400152820161170b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461175b575f80fd5b50565b5f806040838503121561176f575f80fd5b823561177a81611747565b946020939093013593505050565b5f805f6060848603121561179a575f80fd5b83356117a581611747565b925060208401356117b581611747565b929592945050506040919091013590565b5f805f80606085870312156117d9575f80fd5b84356117e481611747565b935060208501359250604085013567ffffffffffffffff80821115611807575f80fd5b818701915087601f83011261181a575f80fd5b813581811115611828575f80fd5b886020828501011115611839575f80fd5b95989497505060200194505050565b5f60208284031215611858575f80fd5b813561186381611747565b9392505050565b5f806040838503121561187b575f80fd5b823561188681611747565b9150602083013561189681611747565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610342576103426118a1565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f6020828403121561191f575f80fd5b81518015158114611863575f80fd5b5f6020828403121561193e575f80fd5b815161186381611747565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f806040838503121561199d575f80fd5b505080516020909101519092909150565b8082028115828204841417610342576103426118a1565b634e487b7160e01b5f52601260045260245ffd5b5f826119e7576119e76119c5565b500490565b600282810b9082900b03627fffff198112627fffff82131715610342576103426118a1565b600281810b9083900b01627fffff8113627fffff1982121715610342576103426118a1565b81516001600160a01b0316815261016081016020830151611a6260208401826001600160a01b03169052565b506040830151611a79604084018262ffffff169052565b506060830151611a8e606084018260020b9052565b506080830151611aa3608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611ae9828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215611b0d575f80fd5b8451935060208501516001600160801b0381168114611b2a575f80fd5b6040860151606090960151949790965092505050565b5f8260020b80611b5257611b526119c5565b808360020b079150509291505056fea264697066735822122042420fc751c241e2a36e6da5cbaeac39804eb5f200ac101c73843610328e707b64736f6c63430008140033

Deployed Bytecode Sourcemap

1277:13728:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2163:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;6805:132;;;;;;;;;;-1:-1:-1;6805:132:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6805:132:0;1023:187:1;7599:72:0;;;;;;;;;;-1:-1:-1;7657:9:0;;7599:72;;-1:-1:-1;;;;;7657:9:0;;;1470:51:1;;1458:2;1443:18;7599:72:0;1324:203:1;7676:86:0;;;;;;;;;;-1:-1:-1;7741:16:0;;7676:86;;;1678:25:1;;;1666:2;1651:18;7676:86:0;1532:177:1;6942:321:0;;;;;;;;;;-1:-1:-1;6942:321:0;;;;;:::i;:::-;;:::i;2266:35::-;;;;;;;;;;;;2299:2;2266:35;;;;;2347:4:1;2335:17;;;2317:36;;2305:2;2290:18;2266:35:0;2175:184:1;7268:323:0;;;;;;;;;;-1:-1:-1;7268:323:0;;;;;:::i;:::-;;:::i;5859:812::-;;;;;;;;;;;;;:::i;:::-;;7767:106;;;;;;;;;;-1:-1:-1;7767:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;7843:17:0;7822:7;7843:17;;;:10;:17;;;;;:25;;7767:106;3161:2693;;;:::i;2224:38::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2224:38:0;;;;;6676:124;;;;;;;;;;-1:-1:-1;6676:124:0;;;;;:::i;:::-;;:::i;8019:217::-;;;;;;;;;;-1:-1:-1;8140:21:0;;8163;;8186;;8209;;8019:217;;;3646:25:1;;;3702:2;3687:18;;3680:34;;;;3730:18;;;3723:34;3788:2;3773:18;;3766:34;3633:3;3618:19;8019:217:0;3415:391:1;7878:136:0;;;;;;;;;;-1:-1:-1;7878:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;7972:17:0;;;7951:7;7972:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;7878:136;6805:132;6875:4;6893:39;6902:10;6914:8;6924:7;6893:8;:39::i;:::-;6886:46;;6805:132;;;;;:::o;6942:321::-;-1:-1:-1;;;;;7972:17:0;;7027:4;7972:17;;;:10;:17;;;;;;;;7076:10;7972:37;;:27;;:37;;;;;;7114:7;7100:10;:21;;7092:30;;;;;;-1:-1:-1;;7131:10:0;:22;7127:90;;-1:-1:-1;;;;;7161:17:0;;:4;:17;;;:10;:17;;;;;;;;7189:10;7161:39;;:27;;:39;;;;;:50;;7204:7;;7161:4;:50;;7204:7;;7161:50;:::i;:::-;;;;-1:-1:-1;;7127:90:0;7228:30;7238:5;7245:3;7250:7;7228:9;:30::i;:::-;7221:37;6942:321;-1:-1:-1;;;;;6942:321:0:o;7268:323::-;7363:4;7374:35;7384:10;7396:3;7401:7;7374:9;:35::i;:::-;-1:-1:-1;7455:16:0;;7484:9;;;;7480:91;;7509:55;;-1:-1:-1;;;7509:55:0;;-1:-1:-1;;;;;7509:27:0;;;;;:55;;7537:10;;7549:7;;7558:5;;;;7509:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7501:64;;;;;;-1:-1:-1;7582:4:0;;7268:323;-1:-1:-1;;;;;7268:323:0:o;5859:812::-;5903:19;1583:42;-1:-1:-1;;;;;5941:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5983:157;;;;;;;;6028:21;;;5983:157;;-1:-1:-1;6066:10:0;-1:-1:-1;;;;;6066:10:0;;;5983:157;;;;-1:-1:-1;;;;;5983:157:0;;;;;;;;;;5971:170;;-1:-1:-1;;;5971:170:0;;5903:63;;-1:-1:-1;5971:11:0;;;;;;:170;;5983:157;5971:170;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6158:157:0;;;;;;;;6203:21;;6158:157;;-1:-1:-1;6241:10:0;-1:-1:-1;;;;;6241:10:0;;;6158:157;;;;-1:-1:-1;;;;;6158:157:0;;;;;;;;;;6146:170;;-1:-1:-1;;;6146:170:0;;:11;;;;;;:170;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6333:157:0;;;;;;;;6378:21;;6333:157;;-1:-1:-1;6416:10:0;-1:-1:-1;;;;;6416:10:0;;;6333:157;;;;-1:-1:-1;;;;;6333:157:0;;;;;;;;;;6321:170;;-1:-1:-1;;;6321:170:0;;:11;;;;;;:170;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;6508:157:0;;;;;;;;6553:21;;6508:157;;-1:-1:-1;6591:10:0;-1:-1:-1;;;;;6591:10:0;;;6508:157;;;;-1:-1:-1;;;;;6508:157:0;;;;;;;;;;6496:170;;-1:-1:-1;;;6496:170:0;;:11;;;;;;:170;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;5898:773;5859:812::o;3161:2693::-;7741:16;;3213:18;3205:27;;;;;;3237:13;3261:4;3237:29;;3271:13;1583:42;-1:-1:-1;;;;;3287:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3271:30;;3306:11;3328:5;-1:-1:-1;;;;;3320:13:0;:5;-1:-1:-1;;;;;3320:13:0;;3306:27;;3338:19;1583:42;-1:-1:-1;;;;;3376:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;3406:16:0;:33;;;-1:-1:-1;;;;;3444:17:0;;3406:4;3444:17;;;:10;:17;;;;;;:42;;;3496:45;3338:63;;-1:-1:-1;3444:17:0;;3406:4;;3496:45;;;;1678:25:1;;1666:2;1651:18;;1532:177;3496:45:0;;;;;;;;3546;3555:5;3570:3;-1:-1:-1;;;3546:8:0;:45::i;:::-;;3600:14;3618:66;3645:6;-1:-1:-1;;;1672:7:0;3618:26;:66::i;:::-;3596:88;;;3693:14;3711:64;3738:6;-1:-1:-1;;;1865:9:0;3711:26;:64::i;:::-;3689:86;-1:-1:-1;3780:27:0;;-1:-1:-1;3850:3:0;3810:37;-1:-1:-1;;;1765:1:0;3810:37;:::i;:::-;:43;;;;:::i;:::-;3780:73;;3890:3;-1:-1:-1;;;;;3890:8:0;;3899:433;;;;;;;;3940:6;:22;;3957:5;3940:22;;;3949:5;3940:22;-1:-1:-1;;;;;3899:433:0;;;;;3977:6;3976:7;:23;;3994:5;3976:23;;;3986:5;3976:23;-1:-1:-1;;;;;3899:433:0;;;4010:5;3899:433;;;;;;4032:6;:34;;4058:8;4032:34;;;4041:14;4052:3;4041:8;:14;:::i;:::-;3899:433;;;;;;4084:6;4083:7;:35;;4110:8;4083:35;;;4093:14;:8;4104:3;4093:14;:::i;:::-;3899:433;;;;;;4140:6;:36;;4153:23;4175:1;4153:19;:23;:::i;:::-;4140:36;;;4149:1;4140:36;3899:433;;;;4199:6;4198:7;:37;;4212:23;4234:1;4212:19;:23;:::i;:::-;4198:37;;;4208:1;4198:37;3899:433;;;;4253:1;3899:433;;;;4272:1;3899:433;;;;4290:5;-1:-1:-1;;;;;3899:433:0;;;;;4311:15;3899:433;;;3890:443;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;3859:21:0;3858:475;4379:433;;;;;;;;;-1:-1:-1;;;;;4370:8:0;;;;;4379:433;4420:6;:22;;4437:5;4420:22;;;4429:5;4420:22;-1:-1:-1;;;;;4379:433:0;;;;;4457:6;4456:7;:23;;4474:5;4456:23;;;4466:5;4456:23;-1:-1:-1;;;;;4379:433:0;;;4490:5;4379:433;;;;;;4512:6;:34;;4538:8;4512:34;;;4521:14;4532:3;4521:8;:14;:::i;:::-;4379:433;;;;;;4564:6;4563:7;:35;;4590:8;4563:35;;;4573:14;:8;4584:3;4573:14;:::i;:::-;4379:433;;;;;;4620:6;:36;;4633:23;4655:1;4633:19;:23;:::i;:::-;4620:36;;;4629:1;4620:36;4379:433;;;;4679:6;4678:7;:37;;4692:23;4714:1;4692:19;:23;:::i;:::-;4678:37;;;4688:1;4678:37;4379:433;;;;4733:1;4379:433;;;;4752:1;4379:433;;;;4770:5;-1:-1:-1;;;;;4379:433:0;;;;;4791:15;4379:433;;;4370:443;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;4339:21:0;4338:475;4859:471;;;;;;;;;-1:-1:-1;;;;;4850:8:0;;;;;4859:471;4900:6;:22;;4917:5;4900:22;;;4909:5;4900:22;-1:-1:-1;;;;;4859:471:0;;;;;4937:6;4936:7;:23;;4954:5;4936:23;;;4946:5;4936:23;-1:-1:-1;;;;;4859:471:0;;;4970:5;4859:471;;;;;;4992:6;:34;;5012:14;:8;5023:3;5012:14;:::i;:::-;4992:34;;;5001:8;4992:34;4859:471;;;;;;5044:6;5043:7;:35;;5064:14;5075:3;5064:8;:14;:::i;:::-;5043:35;;;5053:8;5043:35;4859:471;;;;;;5100:6;:55;;5154:1;5114:36;5131:19;-1:-1:-1;;;5114:36:0;:::i;:::-;5113:42;;;;:::i;:::-;5100:55;;;5109:1;5100:55;4859:471;;;;5178:6;5177:7;:56;;5232:1;5192:36;5209:19;-1:-1:-1;;;5192:36:0;:::i;:::-;5191:42;;;;:::i;:::-;5177:56;;;5187:1;5177:56;4859:471;;;;5251:1;4859:471;;;;5270:1;4859:471;;;;5288:5;-1:-1:-1;;;;;4859:471:0;;;;;5309:15;4859:471;;;4850:481;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;4819:21:0;4818:513;5377:471;;;;;;;;;-1:-1:-1;;;;;5368:8:0;;;;;5377:471;5418:6;:22;;5435:5;5418:22;;;5427:5;5418:22;-1:-1:-1;;;;;5377:471:0;;;;;5455:6;5454:7;:23;;5472:5;5454:23;;;5464:5;5454:23;-1:-1:-1;;;;;5377:471:0;;;5488:5;5377:471;;;;;;5510:6;:34;;5530:14;:8;5541:3;5530:14;:::i;:::-;5510:34;;;5519:8;5510:34;5377:471;;;;;;5562:6;5561:7;:35;;5582:14;5593:3;5582:8;:14;:::i;:::-;5561:35;;;5571:8;5561:35;5377:471;;;;;;5618:6;:55;;5672:1;5632:36;5649:19;-1:-1:-1;;;5632:36:0;:::i;:::-;5631:42;;;;:::i;:::-;5618:55;;;5627:1;5618:55;5377:471;;;;5696:6;5695:7;:56;;5750:1;5710:36;5727:19;-1:-1:-1;;;5710:36:0;:::i;:::-;5709:42;;;;:::i;:::-;5695:56;;;5705:1;5695:56;5377:471;;;;5769:1;5377:471;;;;5788:1;5377:471;;;;5806:5;-1:-1:-1;;;;;5377:471:0;;;;;5827:15;5377:471;;;5368:481;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5337:21:0;5336:513;-1:-1:-1;;;;;;;3161:2693:0:o;6676:124::-;6742:4;6760:35;6770:10;6782:3;6787:7;6760:9;:35::i;8243:212::-;-1:-1:-1;;;;;8341:18:0;;;8330:4;8341:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;8399:35;1678:25:1;;;8330:4:0;;8341:38;:18;8399:35;;1651:18:1;8399:35:0;;;;;;;;-1:-1:-1;8446:4:0;8243:212;;;;;:::o;8461:294::-;-1:-1:-1;;;;;7843:17:0;;8543:4;7843:17;;;:10;:17;;;;;:25;8598:7;-1:-1:-1;8578:27:0;8570:36;;;;;;-1:-1:-1;;;;;8612:17:0;;;:4;:17;;;:10;:17;;;;;;:36;;;;;;;8654:15;;;;;;;;;;:34;;;;;;8699:29;;;;;;8641:7;1678:25:1;;1666:2;1651:18;;1532:177;14649:353:0;14753:13;14768:10;14785:17;14813:72;14859:6;:24;;14878:5;14859:24;;;14868:7;14859:24;14830:6;14829:7;:25;;14849:5;14829:25;;;14839:7;14829:25;14819:36;;-1:-1:-1;;;14819:36:0;:::i;:::-;:65;;;;:::i;:::-;14813:5;:72::i;:::-;14785:101;;14898:30;14918:9;14898:19;:30::i;:::-;14891:37;-1:-1:-1;14948:10:0;14955:3;14891:37;14948:10;:::i;:::-;14940:19;;:4;:19;:::i;:::-;14933:26;;14972:25;14992:4;14972:19;:25::i;:::-;14964:33;;14780:222;14649:353;;;;;;:::o;14413:231::-;14516:6;14526:1;14521;14516:6;;14515:12;14550:85;14564:6;14557:4;:13;14550:85;;;14588:4;14579:13;;14627:1;14619:4;14612;14607:2;:9;;;;;:::i;:::-;;:16;14606:22;;;;;:::i;:::-;;14599:29;;14550:85;;;14484:156;14413:231;;;:::o;10982:3426::-;11056:10;2052;-1:-1:-1;;;;;11097:30:0;;;;;;:63;;-1:-1:-1;2108:49:0;-1:-1:-1;;;;;11131:29:0;;;11097:63;11089:77;;;;-1:-1:-1;;;11089:77:0;;9501:2:1;11089:77:0;;;9483:21:1;9540:1;9520:18;;;9513:29;-1:-1:-1;;;9558:18:1;;;9551:31;9599:18;;11089:77:0;;;;;;;;;-1:-1:-1;;;;;11213:2:0;11188:27;;;;-1:-1:-1;;;;;11301:41:0;;11298:1;11294:49;11377:9;;;11435:18;11429:25;;11426:1;11422:33;11489:9;;;11547:10;11541:17;;11538:1;11534:25;11593:9;;;11651:6;11645:13;;11642:1;11638:21;11693:9;;;11751:4;11745:11;;11742:1;11738:19;;;11791:9;;;11849:3;11843:10;;11840:1;11836:18;11888:9;;;11940:10;;;11937:1;11933:18;;;11985:9;;;;12030:10;;;11468;;11572;;;11672;;;11770;11867;;;11964;12053;12087:3;12080:10;;12076:75;;12112:3;12106;:9;12096:5;:20;;12092:24;;12076:75;;;12147:3;12141;:9;12131:5;:20;;12127:24;;12076:75;12237:9;;;12232:3;12228:19;;;12262:11;;;;12320:9;;;;12370;;12361:19;;;12395:11;;;12453:9;12503;;12494:19;;;12528:11;;;12586:9;12636;;12627:19;;;12661:11;;;12719:9;12769;;12760:19;;;12794:11;;;12852:9;12902;;12893:19;;;12927:11;;;12985:9;13035;;13026:19;;;13060:11;;;13118:9;13168;;13159:19;;;13193:11;;;13251:9;13301;;13292:19;;;13326:11;;;13384:9;13434;;13425:19;;;13459:11;;;13517:9;13567;;13558:19;;;13592:11;;;13650:9;13700;;13691:19;;;13725:11;;;13783:9;13833;;13824:19;;;13858:11;;;;13916:9;;;;13966;;13957:19;;;;;12237:9;-1:-1:-1;;12175:17:0;;12197:2;12174:25;12298:10;;;;;;;12288:21;12431:10;;;;;;;12421:21;;;;12564:10;;;;;;;12554:21;;;;12697:10;;;;;;;12687:21;;;;12830:10;;;;;;;12820:21;;;;12963:10;;;;;;;12953:21;;;;13096:10;;;;;;;13086:21;13229:10;;;;;;;13219:21;13362:10;;;;;;;13352:21;13495:10;;;;;;;13485:21;13628:10;;;;;;;13618:21;13761:10;;;;;;;13751:21;13894:10;;;;;;;13884:21;14027:10;;;;;;;14017:21;14082:24;14074:32;;-1:-1:-1;;14137:53:0;;12189:3;14136:62;;;;14243:39;14227:55;;14226:64;;14306:17;;;;;;;;;:92;;14367:12;-1:-1:-1;;;;;14336:43:0;:27;14356:6;14336:19;:27::i;:::-;-1:-1:-1;;;;;14336:43:0;;;:62;;14391:7;14306:92;;14336:62;14382:6;14306:92;;;14326:7;14306:92;14299:99;10982:3426;-1:-1:-1;;;;;;;;;10982:3426:0:o;8762:2215::-;8826:20;8869:15;8894:1;8887:4;:8;;;:57;;8938:4;8931:12;;8887:57;;;8914:4;8907:12;;8906:13;;8887:57;8869:75;-1:-1:-1;1997:9:0;8958:36;;;8950:50;;;;-1:-1:-1;;;8950:50:0;;9830:2:1;8950:50:0;;;9812:21:1;9869:1;9849:18;;;9842:29;-1:-1:-1;;;9887:18:1;;;9880:31;9928:18;;8950:50:0;9628:324:1;8950:50:0;9008:13;9024:7;9034:3;9024:13;9041:1;9024:18;:93;;-1:-1:-1;;;9024:93:0;;;9045:34;9024:93;9008:109;;;-1:-1:-1;9137:3:0;9127:13;;:18;9123:83;;9164:34;9156:42;9203:3;9155:51;9123:83;9226:3;9216:13;;:18;9212:83;;9253:34;9245:42;9292:3;9244:51;9212:83;9315:3;9305:13;;:18;9301:83;;9342:34;9334:42;9381:3;9333:51;9301:83;9404:4;9394:14;;:19;9390:84;;9432:34;9424:42;9471:3;9423:51;9390:84;9494:4;9484:14;;:19;9480:84;;9522:34;9514:42;9561:3;9513:51;9480:84;9584:4;9574:14;;:19;9570:84;;9612:34;9604:42;9651:3;9603:51;9570:84;9674:4;9664:14;;:19;9660:84;;9702:34;9694:42;9741:3;9693:51;9660:84;9764:5;9754:15;;:20;9750:85;;9793:34;9785:42;9832:3;9784:51;9750:85;9855:5;9845:15;;:20;9841:85;;9884:34;9876:42;9923:3;9875:51;9841:85;9946:5;9936:15;;:20;9932:85;;9975:34;9967:42;10014:3;9966:51;9932:85;10037:5;10027:15;;:20;10023:85;;10066:34;10058:42;10105:3;10057:51;10023:85;10128:6;10118:16;;:21;10114:86;;10158:34;10150:42;10197:3;10149:51;10114:86;10220:6;10210:16;;:21;10206:86;;10250:34;10242:42;10289:3;10241:51;10206:86;10312:6;10302:16;;:21;10298:86;;10342:34;10334:42;10381:3;10333:51;10298:86;10404:6;10394:16;;:21;10390:86;;10434:34;10426:42;10473:3;10425:51;10390:86;10496:7;10486:17;;:22;10482:86;;10527:33;10519:41;10565:3;10518:50;10482:86;10588:7;10578:17;;:22;10574:85;;10619:32;10611:40;10656:3;10610:49;10574:85;10679:7;10669:17;;:22;10665:83;;10710:30;10702:38;10745:3;10701:47;10665:83;10768:7;10758:17;;:22;10754:78;;10799:25;10791:33;10829:3;10790:42;10754:78;10851:1;10844:4;:8;;;10840:47;;;10882:5;-1:-1:-1;;10862:25:0;;;;;:::i;:::-;;10854:33;;10840:47;10944:7;10935:5;:17;:22;:30;;10964:1;10935:30;;;10960:1;10935:30;10918:48;;10928:2;10919:5;:11;;10918:48;10895:72;;8853:2120;;8762:2215;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1714:456::-;1791:6;1799;1807;1860:2;1848:9;1839:7;1835:23;1831:32;1828:52;;;1876:1;1873;1866:12;1828:52;1915:9;1902:23;1934:31;1959:5;1934:31;:::i;:::-;1984:5;-1:-1:-1;2041:2:1;2026:18;;2013:32;2054:33;2013:32;2054:33;:::i;:::-;1714:456;;2106:7;;-1:-1:-1;;;2160:2:1;2145:18;;;;2132:32;;1714:456::o;2364:794::-;2452:6;2460;2468;2476;2529:2;2517:9;2508:7;2504:23;2500:32;2497:52;;;2545:1;2542;2535:12;2497:52;2584:9;2571:23;2603:31;2628:5;2603:31;:::i;:::-;2653:5;-1:-1:-1;2705:2:1;2690:18;;2677:32;;-1:-1:-1;2760:2:1;2745:18;;2732:32;2783:18;2813:14;;;2810:34;;;2840:1;2837;2830:12;2810:34;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:55;;2945:1;2942;2935:12;2894:55;2985:2;2972:16;3011:2;3003:6;3000:14;2997:34;;;3027:1;3024;3017:12;2997:34;3072:7;3067:2;3058:6;3054:2;3050:15;3046:24;3043:37;3040:57;;;3093:1;3090;3083:12;3040:57;2364:794;;;;-1:-1:-1;;3124:2:1;3116:11;;-1:-1:-1;;;2364:794:1:o;3163:247::-;3222:6;3275:2;3263:9;3254:7;3250:23;3246:32;3243:52;;;3291:1;3288;3281:12;3243:52;3330:9;3317:23;3349:31;3374:5;3349:31;:::i;:::-;3399:5;3163:247;-1:-1:-1;;;3163:247:1:o;3811:388::-;3879:6;3887;3940:2;3928:9;3919:7;3915:23;3911:32;3908:52;;;3956:1;3953;3946:12;3908:52;3995:9;3982:23;4014:31;4039:5;4014:31;:::i;:::-;4064:5;-1:-1:-1;4121:2:1;4106:18;;4093:32;4134:33;4093:32;4134:33;:::i;:::-;4186:7;4176:17;;;3811:388;;;;;:::o;4204:127::-;4265:10;4260:3;4256:20;4253:1;4246:31;4296:4;4293:1;4286:15;4320:4;4317:1;4310:15;4336:128;4403:9;;;4424:11;;;4421:37;;;4438:18;;:::i;4469:559::-;-1:-1:-1;;;;;4682:32:1;;4664:51;;4746:2;4731:18;;4724:34;;;4794:2;4789;4774:18;;4767:30;;;4813:18;;4806:34;;;4833:6;4883;4877:3;4862:19;;4849:49;4948:1;4918:22;;;4942:3;4914:32;;;4907:43;;;;5011:2;4990:15;;;-1:-1:-1;;4986:29:1;4971:45;4967:55;;4469:559;-1:-1:-1;;;4469:559:1:o;5033:277::-;5100:6;5153:2;5141:9;5132:7;5128:23;5124:32;5121:52;;;5169:1;5166;5159:12;5121:52;5201:9;5195:16;5254:5;5247:13;5240:21;5233:5;5230:32;5220:60;;5276:1;5273;5266:12;5315:251;5385:6;5438:2;5426:9;5417:7;5413:23;5409:32;5406:52;;;5454:1;5451;5444:12;5406:52;5486:9;5480:16;5505:31;5530:5;5505:31;:::i;5571:570::-;5794:13;;5776:32;;5868:4;5856:17;;;5850:24;-1:-1:-1;;;;;5846:50:1;5824:20;;;5817:80;5944:4;5932:17;;;5926:24;-1:-1:-1;;;;;6041:21:1;;;6019:20;;;6012:51;;;;6123:4;6111:17;;;6105:24;6101:33;6079:20;;;6072:63;;;;5763:3;5748:19;;5571:570::o;6146:245::-;6225:6;6233;6286:2;6274:9;6265:7;6261:23;6257:32;6254:52;;;6302:1;6299;6292:12;6254:52;-1:-1:-1;;6325:16:1;;6381:2;6366:18;;;6360:25;6325:16;;6360:25;;-1:-1:-1;6146:245:1:o;6396:168::-;6469:9;;;6500;;6517:15;;;6511:22;;6497:37;6487:71;;6538:18;;:::i;6569:127::-;6630:10;6625:3;6621:20;6618:1;6611:31;6661:4;6658:1;6651:15;6685:4;6682:1;6675:15;6701:120;6741:1;6767;6757:35;;6772:18;;:::i;:::-;-1:-1:-1;6806:9:1;;6701:120::o;6826:193::-;6924:1;6913:16;;;6895;;;;6891:39;-1:-1:-1;;6945:23:1;;6980:8;6970:19;;6942:48;6939:74;;;6993:18;;:::i;7024:189::-;7120:1;7091:16;;;7109;;;;7087:39;7174:7;7141:18;;-1:-1:-1;;7161:22:1;;7138:46;7135:72;;;7187:18;;:::i;7411:1218::-;7629:13;;-1:-1:-1;;;;;1281:31:1;1269:44;;7597:3;7582:19;;7701:4;7693:6;7689:17;7683:24;7716:54;7764:4;7753:9;7749:20;7735:12;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;7716:54;;7819:4;7811:6;7807:17;7801:24;7834:55;7883:4;7872:9;7868:20;7852:14;7294:8;7283:20;7271:33;;7218:92;7834:55;;7938:4;7930:6;7926:17;7920:24;7953:54;8001:4;7990:9;7986:20;7970:14;7390:1;7379:20;7367:33;;7315:91;7953:54;;8056:4;8048:6;8044:17;8038:24;8071:54;8119:4;8108:9;8104:20;8088:14;7390:1;7379:20;7367:33;;7315:91;8071:54;;8181:4;8173:6;8169:17;8163:24;8156:4;8145:9;8141:20;8134:54;8244:4;8236:6;8232:17;8226:24;8219:4;8208:9;8204:20;8197:54;8307:4;8299:6;8295:17;8289:24;8282:4;8271:9;8267:20;8260:54;8333:6;8393:2;8385:6;8381:15;8375:22;8370:2;8359:9;8355:18;8348:50;;8417:6;8472:2;8464:6;8460:15;8454:22;8485:54;8535:2;8524:9;8520:18;8504:14;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;8485:54;-1:-1:-1;;8558:6:1;8606:15;;;8600:22;8580:18;;;;8573:50;7411:1218;:::o;8634:489::-;8731:6;8739;8747;8755;8808:3;8796:9;8787:7;8783:23;8779:33;8776:53;;;8825:1;8822;8815:12;8776:53;8854:9;8848:16;8838:26;;8907:2;8896:9;8892:18;8886:25;-1:-1:-1;;;;;8944:5:1;8940:46;8933:5;8930:57;8920:85;;9001:1;8998;8991:12;8920:85;9069:2;9054:18;;9048:25;9113:2;9098:18;;;9092:25;8634:489;;9024:5;;-1:-1:-1;8634:489:1;-1:-1:-1;;;8634:489:1:o;9128:166::-;9158:1;9199;9196;9185:16;9220:3;9210:37;;9227:18;;:::i;:::-;9284:3;9280:1;9277;9266:16;9261:27;9256:32;;;9128:166;;;;:::o

Swarm Source

ipfs://42420fc751c241e2a36e6da5cbaeac39804eb5f200ac101c73843610328e707b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.