ERC-20
Overview
Max Total Supply
66,888,000 WU
Holders
325
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 WUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BrettWU
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-11 */ /* Brett Wu WEBSITE: https://brettwu.vip/ TELEGRAM: https://t.me/BrettWUeth X: https://x.com/BrettWUethereum */ //SPDX-License-Identifier: NONE pragma solidity ^0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract BrettWU is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "BrettWU"; string private constant _symbol = "WU"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 66_888_000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 30; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 30; uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x3F4789B38043f2D948e515A06a9641F4D09B7ee4); address payable private _marketingAddress = payable(0x3F4789B38043f2D948e515A06a9641F4D09B7ee4); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 private sellCount = 0; uint256 public maxsellCount = 3; uint256 private lastSellBlock = 0; uint256 public _maxTxAmount = 1_337_760 * 10**9; uint256 public _maxWalletSize = 1_337_760 * 10**9; uint256 public _swapTokensAtAmount = 1_003_320 * 10**9; uint256 public _initMaxTxAmount = 1_003_320 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _initMaxTxAmount) { contractTokenBalance = min(amount,min(contractTokenBalance,_initMaxTxAmount)); } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { if (block.number > lastSellBlock) { sellCount = 0; } require(sellCount < maxsellCount, "Block sell limit"); swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } sellCount++; lastSellBlock = block.number; } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function launch(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function setMaxSellBlockAmount(uint256 _maxsells) public onlyOwner { maxsellCount = _maxsells; } function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function EnableTrading() public onlyOwner { _maxTxAmount = _initMaxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxsellCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxsells","type":"uint256"}],"name":"setMaxSellBlockAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261001666eda24817bc80005f19610355565b610021905f19610374565b6006555f6008819055601e6009819055600a829055600b819055600c829055600d819055600e829055600f5560128054733f4789b38043f2d948e515a06a9641f4d09b7ee46001600160a01b031991821681179092556013805490911690911790556015805462ffffff60a01b19166201000160a01b179055601681905560036017556018556604c0af859840006019819055601a5566039083a4323000601b819055601c553480156100d2575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801561018b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101af9190610399565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021e9190610399565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028c9190610399565b601580546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66eda24817bc800060405161034791815260200190565b60405180910390a3506103c6565b5f8261036f57634e487b7160e01b5f52601260045260245ffd5b500690565b8181038181111561039357634e487b7160e01b5f52601160045260245ffd5b92915050565b5f602082840312156103a9575f80fd5b81516001600160a01b03811681146103bf575f80fd5b9392505050565b611e82806103d35f395ff3fe6080604052600436106101f3575f3560e01c806374010ece11610108578063a2a957bb1161009d578063c3c8cd801161006d578063c3c8cd801461059d578063c492f046146105b1578063dd62ed3e146105d0578063ea1644d514610614578063f2fde38b14610633575f80fd5b8063a2a957bb14610512578063a9059cbb14610531578063b00b55e014610550578063bfd792841461056f575f80fd5b80638f9a55c0116100d85780638f9a55c01461049f57806395d89b41146104b457806398a5c315146104de5780639f431789146104fd575f80fd5b806374010ece146104245780637d1db4a5146104435780637f2feddc146104585780638da5cb5b14610483575f80fd5b80632fd689e3116101895780636d8aa8f8116101595780636d8aa8f81461039f5780636fc3eaec146103be57806370a08231146103d2578063715018a6146103f157806371916a6b14610405575f80fd5b80632fd689e314610331578063313ce5671461034657806349bd5a5e146103615780636b99905314610380575f80fd5b80631694505e116101c45780631694505e146102ae57806318160ddd146102e55780631d97b7cd146102fe57806323b872dd14610312575f80fd5b8062b8cf2a146101fe57806304050d511461021f57806306fdde0314610247578063095ea7b31461027f575f80fd5b366101fa57005b5f80fd5b348015610209575f80fd5b5061021d610218366004611a21565b610652565b005b34801561022a575f80fd5b5061023460175481565b6040519081526020015b60405180910390f35b348015610252575f80fd5b506040805180820190915260078152664272657474575560c81b60208201525b60405161023e9190611aec565b34801561028a575f80fd5b5061029e610299366004611b21565b6106e3565b604051901515815260200161023e565b3480156102b9575f80fd5b506014546102cd906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b3480156102f0575f80fd5b5066eda24817bc8000610234565b348015610309575f80fd5b5061021d6106f9565b34801561031d575f80fd5b5061029e61032c366004611b4b565b61072a565b34801561033c575f80fd5b50610234601b5481565b348015610351575f80fd5b506040516009815260200161023e565b34801561036c575f80fd5b506015546102cd906001600160a01b031681565b34801561038b575f80fd5b5061021d61039a366004611b89565b610791565b3480156103aa575f80fd5b5061021d6103b9366004611bb3565b6107da565b3480156103c9575f80fd5b5061021d610821565b3480156103dd575f80fd5b506102346103ec366004611b89565b61086b565b3480156103fc575f80fd5b5061021d61088c565b348015610410575f80fd5b5061021d61041f366004611bb3565b6108fd565b34801561042f575f80fd5b5061021d61043e366004611bcc565b610944565b34801561044e575f80fd5b5061023460195481565b348015610463575f80fd5b50610234610472366004611b89565b60116020525f908152604090205481565b34801561048e575f80fd5b505f546001600160a01b03166102cd565b3480156104aa575f80fd5b50610234601a5481565b3480156104bf575f80fd5b50604080518082019091526002815261575560f01b6020820152610272565b3480156104e9575f80fd5b5061021d6104f8366004611bcc565b610972565b348015610508575f80fd5b50610234601c5481565b34801561051d575f80fd5b5061021d61052c366004611be3565b6109a0565b34801561053c575f80fd5b5061029e61054b366004611b21565b6109dd565b34801561055b575f80fd5b5061021d61056a366004611bcc565b6109e9565b34801561057a575f80fd5b5061029e610589366004611b89565b60106020525f908152604090205460ff1681565b3480156105a8575f80fd5b5061021d610a17565b3480156105bc575f80fd5b5061021d6105cb366004611c12565b610a69565b3480156105db575f80fd5b506102346105ea366004611c91565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561061f575f80fd5b5061021d61062e366004611bcc565b610afc565b34801561063e575f80fd5b5061021d61064d366004611b89565b610b2a565b5f546001600160a01b031633146106845760405162461bcd60e51b815260040161067b90611cc8565b60405180910390fd5b5f5b81518110156106df57600160105f8484815181106106a6576106a6611cfd565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610686565b5050565b5f6106ef338484610c11565b5060015b92915050565b5f546001600160a01b031633146107225760405162461bcd60e51b815260040161067b90611cc8565b601c54601955565b5f610736848484610d34565b610787843361078285604051806060016040528060288152602001611e25602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906112e3565b610c11565b5060019392505050565b5f546001600160a01b031633146107ba5760405162461bcd60e51b815260040161067b90611cc8565b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146108035760405162461bcd60e51b815260040161067b90611cc8565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061085657506013546001600160a01b0316336001600160a01b0316145b61085e575f80fd5b476108688161131b565b50565b6001600160a01b0381165f908152600260205260408120546106f390611352565b5f546001600160a01b031633146108b55760405162461bcd60e51b815260040161067b90611cc8565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109265760405162461bcd60e51b815260040161067b90611cc8565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b0316331461096d5760405162461bcd60e51b815260040161067b90611cc8565b601955565b5f546001600160a01b0316331461099b5760405162461bcd60e51b815260040161067b90611cc8565b601b55565b5f546001600160a01b031633146109c95760405162461bcd60e51b815260040161067b90611cc8565b600893909355600a91909155600955600b55565b5f6106ef338484610d34565b5f546001600160a01b03163314610a125760405162461bcd60e51b815260040161067b90611cc8565b601755565b6012546001600160a01b0316336001600160a01b03161480610a4c57506013546001600160a01b0316336001600160a01b0316145b610a54575f80fd5b5f610a5e3061086b565b9050610868816113d4565b5f546001600160a01b03163314610a925760405162461bcd60e51b815260040161067b90611cc8565b5f5b82811015610af6578160055f868685818110610ab257610ab2611cfd565b9050602002016020810190610ac79190611b89565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610a94565b50505050565b5f546001600160a01b03163314610b255760405162461bcd60e51b815260040161067b90611cc8565b601a55565b5f546001600160a01b03163314610b535760405162461bcd60e51b815260040161067b90611cc8565b6001600160a01b038116610bb85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161067b565b6001600160a01b038216610cd45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161067b565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161067b565b6001600160a01b038216610dfa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161067b565b5f8111610e5b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161067b565b5f546001600160a01b03848116911614801590610e8557505f546001600160a01b03838116911614155b156111df57601554600160a01b900460ff16610f1d575f546001600160a01b03848116911614610f1d5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161067b565b601954811115610f6f5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161067b565b6001600160a01b0383165f9081526010602052604090205460ff16158015610faf57506001600160a01b0382165f9081526010602052604090205460ff16155b6110075760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161067b565b6015546001600160a01b0383811691161461108c57601a54816110298461086b565b6110339190611d25565b1061108c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161067b565b5f6110963061086b565b601b54601c549192508210159082106110c1576110be836110b984601c54611544565b611544565b91505b8080156110d85750601554600160a81b900460ff16155b80156110f257506015546001600160a01b03868116911614155b80156111075750601554600160b01b900460ff165b801561112b57506001600160a01b0385165f9081526005602052604090205460ff16155b801561114f57506001600160a01b0384165f9081526005602052604090205460ff16155b156111dc57601854431115611163575f6016555b601754601654106111a95760405162461bcd60e51b815260206004820152601060248201526f109b1bd8dac81cd95b1b081b1a5b5a5d60821b604482015260640161067b565b6111b2826113d4565b4780156111c2576111c24761131b565b60168054905f6111d183611d38565b909155505043601855505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061121f57506001600160a01b0383165f9081526005602052604090205460ff165b8061125157506015546001600160a01b0385811691161480159061125157506015546001600160a01b03848116911614155b1561125d57505f6112d7565b6015546001600160a01b03858116911614801561128857506014546001600160a01b03848116911614155b1561129a57600854600c55600954600d555b6015546001600160a01b0384811691161480156112c557506014546001600160a01b03858116911614155b156112d757600a54600c55600b54600d555b610af684848484611558565b5f81848411156113065760405162461bcd60e51b815260040161067b9190611aec565b505f6113128486611d50565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156106df573d5f803e3d5ffd5b5f6006548211156113b85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161067b565b5f6113c1611586565b90506113cd83826115a7565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061141a5761141a611cfd565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611471573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114959190611d63565b816001815181106114a8576114a8611cfd565b6001600160a01b0392831660209182029290920101526014546114ce9130911684610c11565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906115069085905f90869030904290600401611d7e565b5f604051808303815f87803b15801561151d575f80fd5b505af115801561152f573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b5f81831161155257826113cd565b50919050565b80611565576115656115e8565b611570848484611615565b80610af657610af6600e54600c55600f54600d55565b5f805f611591611706565b90925090506115a082826115a7565b9250505090565b5f6113cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611743565b600c541580156115f85750600d54155b156115ff57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806116248761176f565b6001600160a01b038f165f90815260026020526040902054959b5093995091975095509350915061165590876117c4565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546116839086611805565b6001600160a01b0389165f908152600260205260409020556116a481611863565b6116ae84836118a9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116f391815260200190565b60405180910390a3505050505050505050565b6006545f90819066eda24817bc800061171f82826115a7565b82101561173a5750506006549266eda24817bc800092509050565b90939092509050565b5f81836117635760405162461bcd60e51b815260040161067b9190611aec565b505f6113128486611dee565b5f805f805f805f805f6117878a600c54600d546118cd565b9250925092505f611796611586565b90505f805f6117a78e87878761191f565b919e509c509a509598509396509194505050505091939550919395565b5f6113cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e3565b5f806118118385611d25565b9050838110156113cd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161067b565b5f61186c611586565b90505f611879838361196b565b305f908152600260205260409020549091506118959082611805565b305f90815260026020526040902055505050565b6006546118b690836117c4565b6006556007546118c69082611805565b6007555050565b5f8080806118e660646118e0898961196b565b906115a7565b90505f6118f860646118e08a8961196b565b90505f61190f826119098b866117c4565b906117c4565b9992985090965090945050505050565b5f80808061192d888661196b565b90505f61193a888761196b565b90505f611947888861196b565b90505f6119588261190986866117c4565b939b939a50919850919650505050505050565b5f825f0361197a57505f6106f3565b5f6119858385611e0d565b9050826119928583611dee565b146113cd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161067b565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381168114610868575f80fd5b8035611a1c816119fd565b919050565b5f60208284031215611a31575f80fd5b813567ffffffffffffffff811115611a47575f80fd5b8201601f81018413611a57575f80fd5b803567ffffffffffffffff811115611a7157611a716119e9565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611a9e57611a9e6119e9565b604052918252602081840181019290810187841115611abb575f80fd5b6020850194505b83851015611ae157611ad385611a11565b815260209485019401611ac2565b509695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215611b32575f80fd5b8235611b3d816119fd565b946020939093013593505050565b5f805f60608486031215611b5d575f80fd5b8335611b68816119fd565b92506020840135611b78816119fd565b929592945050506040919091013590565b5f60208284031215611b99575f80fd5b81356113cd816119fd565b80358015158114611a1c575f80fd5b5f60208284031215611bc3575f80fd5b6113cd82611ba4565b5f60208284031215611bdc575f80fd5b5035919050565b5f805f8060808587031215611bf6575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611c24575f80fd5b833567ffffffffffffffff811115611c3a575f80fd5b8401601f81018613611c4a575f80fd5b803567ffffffffffffffff811115611c60575f80fd5b8660208260051b8401011115611c74575f80fd5b602091820194509250611c88908501611ba4565b90509250925092565b5f8060408385031215611ca2575f80fd5b8235611cad816119fd565b91506020830135611cbd816119fd565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106f3576106f3611d11565b5f60018201611d4957611d49611d11565b5060010190565b818103818111156106f3576106f3611d11565b5f60208284031215611d73575f80fd5b81516113cd816119fd565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dce5783516001600160a01b0316835260209384019390920191600101611da7565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611e0857634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176106f3576106f3611d1156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f9e4f508314f56b14ab0a0a88f768750f526b9422cc6654606b809ed10d6768164736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106101f3575f3560e01c806374010ece11610108578063a2a957bb1161009d578063c3c8cd801161006d578063c3c8cd801461059d578063c492f046146105b1578063dd62ed3e146105d0578063ea1644d514610614578063f2fde38b14610633575f80fd5b8063a2a957bb14610512578063a9059cbb14610531578063b00b55e014610550578063bfd792841461056f575f80fd5b80638f9a55c0116100d85780638f9a55c01461049f57806395d89b41146104b457806398a5c315146104de5780639f431789146104fd575f80fd5b806374010ece146104245780637d1db4a5146104435780637f2feddc146104585780638da5cb5b14610483575f80fd5b80632fd689e3116101895780636d8aa8f8116101595780636d8aa8f81461039f5780636fc3eaec146103be57806370a08231146103d2578063715018a6146103f157806371916a6b14610405575f80fd5b80632fd689e314610331578063313ce5671461034657806349bd5a5e146103615780636b99905314610380575f80fd5b80631694505e116101c45780631694505e146102ae57806318160ddd146102e55780631d97b7cd146102fe57806323b872dd14610312575f80fd5b8062b8cf2a146101fe57806304050d511461021f57806306fdde0314610247578063095ea7b31461027f575f80fd5b366101fa57005b5f80fd5b348015610209575f80fd5b5061021d610218366004611a21565b610652565b005b34801561022a575f80fd5b5061023460175481565b6040519081526020015b60405180910390f35b348015610252575f80fd5b506040805180820190915260078152664272657474575560c81b60208201525b60405161023e9190611aec565b34801561028a575f80fd5b5061029e610299366004611b21565b6106e3565b604051901515815260200161023e565b3480156102b9575f80fd5b506014546102cd906001600160a01b031681565b6040516001600160a01b03909116815260200161023e565b3480156102f0575f80fd5b5066eda24817bc8000610234565b348015610309575f80fd5b5061021d6106f9565b34801561031d575f80fd5b5061029e61032c366004611b4b565b61072a565b34801561033c575f80fd5b50610234601b5481565b348015610351575f80fd5b506040516009815260200161023e565b34801561036c575f80fd5b506015546102cd906001600160a01b031681565b34801561038b575f80fd5b5061021d61039a366004611b89565b610791565b3480156103aa575f80fd5b5061021d6103b9366004611bb3565b6107da565b3480156103c9575f80fd5b5061021d610821565b3480156103dd575f80fd5b506102346103ec366004611b89565b61086b565b3480156103fc575f80fd5b5061021d61088c565b348015610410575f80fd5b5061021d61041f366004611bb3565b6108fd565b34801561042f575f80fd5b5061021d61043e366004611bcc565b610944565b34801561044e575f80fd5b5061023460195481565b348015610463575f80fd5b50610234610472366004611b89565b60116020525f908152604090205481565b34801561048e575f80fd5b505f546001600160a01b03166102cd565b3480156104aa575f80fd5b50610234601a5481565b3480156104bf575f80fd5b50604080518082019091526002815261575560f01b6020820152610272565b3480156104e9575f80fd5b5061021d6104f8366004611bcc565b610972565b348015610508575f80fd5b50610234601c5481565b34801561051d575f80fd5b5061021d61052c366004611be3565b6109a0565b34801561053c575f80fd5b5061029e61054b366004611b21565b6109dd565b34801561055b575f80fd5b5061021d61056a366004611bcc565b6109e9565b34801561057a575f80fd5b5061029e610589366004611b89565b60106020525f908152604090205460ff1681565b3480156105a8575f80fd5b5061021d610a17565b3480156105bc575f80fd5b5061021d6105cb366004611c12565b610a69565b3480156105db575f80fd5b506102346105ea366004611c91565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561061f575f80fd5b5061021d61062e366004611bcc565b610afc565b34801561063e575f80fd5b5061021d61064d366004611b89565b610b2a565b5f546001600160a01b031633146106845760405162461bcd60e51b815260040161067b90611cc8565b60405180910390fd5b5f5b81518110156106df57600160105f8484815181106106a6576106a6611cfd565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610686565b5050565b5f6106ef338484610c11565b5060015b92915050565b5f546001600160a01b031633146107225760405162461bcd60e51b815260040161067b90611cc8565b601c54601955565b5f610736848484610d34565b610787843361078285604051806060016040528060288152602001611e25602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906112e3565b610c11565b5060019392505050565b5f546001600160a01b031633146107ba5760405162461bcd60e51b815260040161067b90611cc8565b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146108035760405162461bcd60e51b815260040161067b90611cc8565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061085657506013546001600160a01b0316336001600160a01b0316145b61085e575f80fd5b476108688161131b565b50565b6001600160a01b0381165f908152600260205260408120546106f390611352565b5f546001600160a01b031633146108b55760405162461bcd60e51b815260040161067b90611cc8565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146109265760405162461bcd60e51b815260040161067b90611cc8565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b0316331461096d5760405162461bcd60e51b815260040161067b90611cc8565b601955565b5f546001600160a01b0316331461099b5760405162461bcd60e51b815260040161067b90611cc8565b601b55565b5f546001600160a01b031633146109c95760405162461bcd60e51b815260040161067b90611cc8565b600893909355600a91909155600955600b55565b5f6106ef338484610d34565b5f546001600160a01b03163314610a125760405162461bcd60e51b815260040161067b90611cc8565b601755565b6012546001600160a01b0316336001600160a01b03161480610a4c57506013546001600160a01b0316336001600160a01b0316145b610a54575f80fd5b5f610a5e3061086b565b9050610868816113d4565b5f546001600160a01b03163314610a925760405162461bcd60e51b815260040161067b90611cc8565b5f5b82811015610af6578160055f868685818110610ab257610ab2611cfd565b9050602002016020810190610ac79190611b89565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610a94565b50505050565b5f546001600160a01b03163314610b255760405162461bcd60e51b815260040161067b90611cc8565b601a55565b5f546001600160a01b03163314610b535760405162461bcd60e51b815260040161067b90611cc8565b6001600160a01b038116610bb85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161067b565b6001600160a01b038216610cd45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161067b565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d985760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161067b565b6001600160a01b038216610dfa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161067b565b5f8111610e5b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161067b565b5f546001600160a01b03848116911614801590610e8557505f546001600160a01b03838116911614155b156111df57601554600160a01b900460ff16610f1d575f546001600160a01b03848116911614610f1d5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161067b565b601954811115610f6f5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161067b565b6001600160a01b0383165f9081526010602052604090205460ff16158015610faf57506001600160a01b0382165f9081526010602052604090205460ff16155b6110075760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161067b565b6015546001600160a01b0383811691161461108c57601a54816110298461086b565b6110339190611d25565b1061108c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161067b565b5f6110963061086b565b601b54601c549192508210159082106110c1576110be836110b984601c54611544565b611544565b91505b8080156110d85750601554600160a81b900460ff16155b80156110f257506015546001600160a01b03868116911614155b80156111075750601554600160b01b900460ff165b801561112b57506001600160a01b0385165f9081526005602052604090205460ff16155b801561114f57506001600160a01b0384165f9081526005602052604090205460ff16155b156111dc57601854431115611163575f6016555b601754601654106111a95760405162461bcd60e51b815260206004820152601060248201526f109b1bd8dac81cd95b1b081b1a5b5a5d60821b604482015260640161067b565b6111b2826113d4565b4780156111c2576111c24761131b565b60168054905f6111d183611d38565b909155505043601855505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061121f57506001600160a01b0383165f9081526005602052604090205460ff165b8061125157506015546001600160a01b0385811691161480159061125157506015546001600160a01b03848116911614155b1561125d57505f6112d7565b6015546001600160a01b03858116911614801561128857506014546001600160a01b03848116911614155b1561129a57600854600c55600954600d555b6015546001600160a01b0384811691161480156112c557506014546001600160a01b03858116911614155b156112d757600a54600c55600b54600d555b610af684848484611558565b5f81848411156113065760405162461bcd60e51b815260040161067b9190611aec565b505f6113128486611d50565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156106df573d5f803e3d5ffd5b5f6006548211156113b85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161067b565b5f6113c1611586565b90506113cd83826115a7565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061141a5761141a611cfd565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611471573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114959190611d63565b816001815181106114a8576114a8611cfd565b6001600160a01b0392831660209182029290920101526014546114ce9130911684610c11565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906115069085905f90869030904290600401611d7e565b5f604051808303815f87803b15801561151d575f80fd5b505af115801561152f573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b5f81831161155257826113cd565b50919050565b80611565576115656115e8565b611570848484611615565b80610af657610af6600e54600c55600f54600d55565b5f805f611591611706565b90925090506115a082826115a7565b9250505090565b5f6113cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611743565b600c541580156115f85750600d54155b156115ff57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806116248761176f565b6001600160a01b038f165f90815260026020526040902054959b5093995091975095509350915061165590876117c4565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546116839086611805565b6001600160a01b0389165f908152600260205260409020556116a481611863565b6116ae84836118a9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116f391815260200190565b60405180910390a3505050505050505050565b6006545f90819066eda24817bc800061171f82826115a7565b82101561173a5750506006549266eda24817bc800092509050565b90939092509050565b5f81836117635760405162461bcd60e51b815260040161067b9190611aec565b505f6113128486611dee565b5f805f805f805f805f6117878a600c54600d546118cd565b9250925092505f611796611586565b90505f805f6117a78e87878761191f565b919e509c509a509598509396509194505050505091939550919395565b5f6113cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112e3565b5f806118118385611d25565b9050838110156113cd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161067b565b5f61186c611586565b90505f611879838361196b565b305f908152600260205260409020549091506118959082611805565b305f90815260026020526040902055505050565b6006546118b690836117c4565b6006556007546118c69082611805565b6007555050565b5f8080806118e660646118e0898961196b565b906115a7565b90505f6118f860646118e08a8961196b565b90505f61190f826119098b866117c4565b906117c4565b9992985090965090945050505050565b5f80808061192d888661196b565b90505f61193a888761196b565b90505f611947888861196b565b90505f6119588261190986866117c4565b939b939a50919850919650505050505050565b5f825f0361197a57505f6106f3565b5f6119858385611e0d565b9050826119928583611dee565b146113cd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161067b565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381168114610868575f80fd5b8035611a1c816119fd565b919050565b5f60208284031215611a31575f80fd5b813567ffffffffffffffff811115611a47575f80fd5b8201601f81018413611a57575f80fd5b803567ffffffffffffffff811115611a7157611a716119e9565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611a9e57611a9e6119e9565b604052918252602081840181019290810187841115611abb575f80fd5b6020850194505b83851015611ae157611ad385611a11565b815260209485019401611ac2565b509695505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215611b32575f80fd5b8235611b3d816119fd565b946020939093013593505050565b5f805f60608486031215611b5d575f80fd5b8335611b68816119fd565b92506020840135611b78816119fd565b929592945050506040919091013590565b5f60208284031215611b99575f80fd5b81356113cd816119fd565b80358015158114611a1c575f80fd5b5f60208284031215611bc3575f80fd5b6113cd82611ba4565b5f60208284031215611bdc575f80fd5b5035919050565b5f805f8060808587031215611bf6575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611c24575f80fd5b833567ffffffffffffffff811115611c3a575f80fd5b8401601f81018613611c4a575f80fd5b803567ffffffffffffffff811115611c60575f80fd5b8660208260051b8401011115611c74575f80fd5b602091820194509250611c88908501611ba4565b90509250925092565b5f8060408385031215611ca2575f80fd5b8235611cad816119fd565b91506020830135611cbd816119fd565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106f3576106f3611d11565b5f60018201611d4957611d49611d11565b5060010190565b818103818111156106f3576106f3611d11565b5f60208284031215611d73575f80fd5b81516113cd816119fd565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dce5783516001600160a01b0316835260209384019390920191600101611da7565b50506001600160a01b039590951660608401525050608001529392505050565b5f82611e0857634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176106f3576106f3611d1156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f9e4f508314f56b14ab0a0a88f768750f526b9422cc6654606b809ed10d6768164736f6c634300081a0033
Deployed Bytecode Sourcemap
4188:14162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13424:169;;;;;;;;;;-1:-1:-1;13424:169:0;;;;;:::i;:::-;;:::i;:::-;;5738:31;;;;;;;;;;;;;;;;;;;1699:25:1;;;1687:2;1672:18;5738:31:0;;;;;;;;6840:83;;;;;;;;;;-1:-1:-1;6910:5:0;;;;;;;;;;;;-1:-1:-1;;;6910:5:0;;;;6840:83;;;;;;;:::i;7765:193::-;;;;;;;;;;-1:-1:-1;7765:193:0;;;;;:::i;:::-;;:::i;:::-;;;2695:14:1;;2688:22;2670:41;;2658:2;2643:18;7765:193:0;2530:187:1;5507:41:0;;;;;;;;;;-1:-1:-1;5507:41:0;;;;-1:-1:-1;;;;;5507:41:0;;;;;;-1:-1:-1;;;;;2912:32:1;;;2894:51;;2882:2;2867:18;5507:41:0;2722:229:1;7117:95:0;;;;;;;;;;-1:-1:-1;4731:18:0;7117:95;;17888:92;;;;;;;;;;;;;:::i;7966:446::-;;;;;;;;;;-1:-1:-1;7966:446:0;;;;;:::i;:::-;;:::i;5928:54::-;;;;;;;;;;;;;;;;7026:83;;;;;;;;;;-1:-1:-1;7026:83:0;;4405:1;3611:36:1;;3599:2;3584:18;7026:83:0;3469:184:1;5555:28:0;;;;;;;;;;-1:-1:-1;5555:28:0;;;;-1:-1:-1;;;;;5555:28:0;;;13601:92;;;;;;;;;;-1:-1:-1;13601:92:0;;;;;:::i;:::-;;:::i;17545:101::-;;;;;;;;;;-1:-1:-1;17545:101:0;;;;;:::i;:::-;;:::i;13181:235::-;;;;;;;;;;;;;:::i;7220:138::-;;;;;;;;;;-1:-1:-1;7220:138:0;;;;;:::i;:::-;;:::i;1675:148::-;;;;;;;;;;;;;:::i;12832:97::-;;;;;;;;;;-1:-1:-1;12832:97:0;;;;;:::i;:::-;;:::i;17772:108::-;;;;;;;;;;-1:-1:-1;17772:108:0;;;;;:::i;:::-;;:::i;5818:47::-;;;;;;;;;;;;;;;;5249:43;;;;;;;;;;-1:-1:-1;5249:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1461:79;;;;;;;;;;-1:-1:-1;1499:7:0;1526:6;-1:-1:-1;;;;;1526:6:0;1461:79;;5872:49;;;;;;;;;;;;;;;;6931:87;;;;;;;;;;-1:-1:-1;7003:7:0;;;;;;;;;;;;-1:-1:-1;;;7003:7:0;;;;6931:87;;17398:139;;;;;;;;;;-1:-1:-1;17398:139:0;;;;;:::i;:::-;;:::i;5989:51::-;;;;;;;;;;;;;;;;17099:291;;;;;;;;;;-1:-1:-1;17099:291:0;;;;;:::i;:::-;;:::i;7366:199::-;;;;;;;;;;-1:-1:-1;7366:199:0;;;;;:::i;:::-;;:::i;17654:110::-;;;;;;;;;;-1:-1:-1;17654:110:0;;;;;:::i;:::-;;:::i;5211:36::-;;;;;;;;;;-1:-1:-1;5211:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12937:236;;;;;;;;;;;;;:::i;18111:234::-;;;;;;;;;;-1:-1:-1;18111:234:0;;;;;:::i;:::-;;:::i;7573:184::-;;;;;;;;;;-1:-1:-1;7573:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7722:18:0;;;7690:7;7722:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7573:184;17988:115;;;;;;;;;;-1:-1:-1;17988:115:0;;;;;:::i;:::-;;:::i;1831:244::-;;;;;;;;;;-1:-1:-1;1831:244:0;;;;;:::i;:::-;;:::i;13424:169::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;;;;;;;;;13500:9:::1;13495:91;13519:5;:12;13515:1;:16;13495:91;;;13570:4;13553;:14;13558:5;13564:1;13558:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13553:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13553:14:0;:21;;-1:-1:-1;;13553:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;13533:3:0::1;13495:91;;;;13424:169:::0;:::o;7765:193::-;7867:4;7889:39;300:10;7912:7;7921:6;7889:8;:39::i;:::-;-1:-1:-1;7946:4:0;7765:193;;;;;:::o;17888:92::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;17956:16:::1;::::0;17941:12:::1;:31:::0;17888:92::o;7966:446::-;8098:4;8115:36;8125:6;8133:9;8144:6;8115:9;:36::i;:::-;8162:220;8185:6;300:10;8233:138;8289:6;8233:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8233:19:0;;;;;;:11;:19;;;;;;;;300:10;8233:33;;;;;;;;;;:37;:138::i;:::-;8162:8;:220::i;:::-;-1:-1:-1;8400:4:0;7966:446;;;;;:::o;13601:92::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13665:12:0::1;13680:5;13665:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13665:20:0::1;::::0;;13601:92::o;17545:101::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;17612:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17612:26:0::1;-1:-1:-1::0;;;;17612:26:0;;::::1;::::0;;;::::1;::::0;;17545:101::o;13181:235::-;13247:19;;-1:-1:-1;;;;;13247:19:0;300:10;-1:-1:-1;;;;;13231:35:0;;:72;;;-1:-1:-1;13286:17:0;;-1:-1:-1;;;;;13286:17:0;300:10;-1:-1:-1;;;;;13270:33:0;;13231:72;13223:81;;;;;;13344:21;13376:32;13344:21;13376:12;:32::i;:::-;13212:204;13181:235::o;7220:138::-;-1:-1:-1;;;;;7333:16:0;;7286:7;7333:16;;;:7;:16;;;;;;7313:37;;:19;:37::i;1675:148::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;1782:1:::1;1766:6:::0;;1745:40:::1;::::0;-1:-1:-1;;;;;1766:6:0;;::::1;::::0;1745:40:::1;::::0;1782:1;;1745:40:::1;1813:1;1796:19:::0;;-1:-1:-1;;;;;;1796:19:0::1;::::0;;1675:148::o;12832:97::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;12895:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12895:26:0::1;-1:-1:-1::0;;;;12895:26:0;;::::1;::::0;;;::::1;::::0;;12832:97::o;17772:108::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;17846:12:::1;:26:::0;17772:108::o;17398:139::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;17489:19:::1;:40:::0;17398:139::o;17099:291::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;17233:14:::1;:30:::0;;;;17274:15:::1;:32:::0;;;;17317:12:::1;:26:::0;17354:13:::1;:28:::0;17099:291::o;7366:199::-;7471:4;7493:42;300:10;7517:9;7528:6;7493:9;:42::i;17654:110::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;17732:12:::1;:24:::0;17654:110::o;12937:236::-;13003:19;;-1:-1:-1;;;;;13003:19:0;300:10;-1:-1:-1;;;;;12987:35:0;;:72;;;-1:-1:-1;13042:17:0;;-1:-1:-1;;;;;13042:17:0;300:10;-1:-1:-1;;;;;13026:33:0;;12987:72;12979:81;;;;;;13071:23;13097:24;13115:4;13097:9;:24::i;:::-;13071:50;;13132:33;13149:15;13132:16;:33::i;18111:234::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;18228:9:::1;18224:114;18243:19:::0;;::::1;18224:114;;;18318:8;18284:18;:31;18303:8;;18312:1;18303:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18284:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18284:31:0;:42;;-1:-1:-1;;18284:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18264:3:0::1;18224:114;;;;18111:234:::0;;;:::o;17988:115::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;18065:14:::1;:30:::0;17988:115::o;1831:244::-;1588:6;;-1:-1:-1;;;;;1588:6:0;300:10;1588:22;1580:67;;;;-1:-1:-1;;;1580:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1920:22:0;::::1;1912:73;;;::::0;-1:-1:-1;;;1912:73:0;;7068:2:1;1912:73:0::1;::::0;::::1;7050:21:1::0;7107:2;7087:18;;;7080:30;7146:34;7126:18;;;7119:62;-1:-1:-1;;;7197:18:1;;;7190:36;7243:19;;1912:73:0::1;6866:402:1::0;1912:73:0::1;2022:6;::::0;;2001:38:::1;::::0;-1:-1:-1;;;;;2001:38:0;;::::1;::::0;2022:6;::::1;::::0;2001:38:::1;::::0;::::1;2050:6;:17:::0;;-1:-1:-1;;;;;;2050:17:0::1;-1:-1:-1::0;;;;;2050:17:0;;;::::1;::::0;;;::::1;::::0;;1831:244::o;9103:369::-;-1:-1:-1;;;;;9230:19:0;;9222:68;;;;-1:-1:-1;;;9222:68:0;;7475:2:1;9222:68:0;;;7457:21:1;7514:2;7494:18;;;7487:30;7553:34;7533:18;;;7526:62;-1:-1:-1;;;7604:18:1;;;7597:34;7648:19;;9222:68:0;7273:400:1;9222:68:0;-1:-1:-1;;;;;9309:21:0;;9301:68;;;;-1:-1:-1;;;9301:68:0;;7880:2:1;9301:68:0;;;7862:21:1;7919:2;7899:18;;;7892:30;7958:34;7938:18;;;7931:62;-1:-1:-1;;;8009:18:1;;;8002:32;8051:19;;9301:68:0;7678:398:1;9301:68:0;-1:-1:-1;;;;;9380:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9432:32;;1699:25:1;;;9432:32:0;;1672:18:1;9432:32:0;;;;;;;9103:369;;;:::o;9480:2640::-;-1:-1:-1;;;;;9602:18:0;;9594:68;;;;-1:-1:-1;;;9594:68:0;;8283:2:1;9594:68:0;;;8265:21:1;8322:2;8302:18;;;8295:30;8361:34;8341:18;;;8334:62;-1:-1:-1;;;8412:18:1;;;8405:35;8457:19;;9594:68:0;8081:401:1;9594:68:0;-1:-1:-1;;;;;9681:16:0;;9673:64;;;;-1:-1:-1;;;9673:64:0;;8689:2:1;9673:64:0;;;8671:21:1;8728:2;8708:18;;;8701:30;8767:34;8747:18;;;8740:62;-1:-1:-1;;;8818:18:1;;;8811:33;8861:19;;9673:64:0;8487:399:1;9673:64:0;9765:1;9756:6;:10;9748:64;;;;-1:-1:-1;;;9748:64:0;;9093:2:1;9748:64:0;;;9075:21:1;9132:2;9112:18;;;9105:30;9171:34;9151:18;;;9144:62;-1:-1:-1;;;9222:18:1;;;9215:39;9271:19;;9748:64:0;8891:405:1;9748:64:0;1499:7;1526:6;-1:-1:-1;;;;;9829:15:0;;;1526:6;;9829:15;;;;:32;;-1:-1:-1;1499:7:0;1526:6;-1:-1:-1;;;;;9848:13:0;;;1526:6;;9848:13;;9829:32;9825:1569;;;9918:11;;-1:-1:-1;;;9918:11:0;;;;9913:144;;1499:7;1526:6;-1:-1:-1;;;;;9958:15:0;;;1526:6;;9958:15;9950:91;;;;-1:-1:-1;;;9950:91:0;;9503:2:1;9950:91:0;;;9485:21:1;9542:2;9522:18;;;9515:30;9581:34;9561:18;;;9554:62;9652:33;9632:18;;;9625:61;9703:19;;9950:91:0;9301:427:1;9950:91:0;10091:12;;10081:6;:22;;10073:63;;;;-1:-1:-1;;;10073:63:0;;9935:2:1;10073:63:0;;;9917:21:1;9974:2;9954:18;;;9947:30;10013;9993:18;;;9986:58;10061:18;;10073:63:0;9733:352:1;10073:63:0;-1:-1:-1;;;;;10160:10:0;;;;;;:4;:10;;;;;;;;10159:11;:24;;;;-1:-1:-1;;;;;;10175:8:0;;;;;;:4;:8;;;;;;;;10174:9;10159:24;10151:72;;;;-1:-1:-1;;;10151:72:0;;10292:2:1;10151:72:0;;;10274:21:1;10331:2;10311:18;;;10304:30;10370:34;10350:18;;;10343:62;-1:-1:-1;;;10421:18:1;;;10414:33;10464:19;;10151:72:0;10090:399:1;10151:72:0;10249:13;;-1:-1:-1;;;;;10243:19:0;;;10249:13;;10243:19;10240:146;;10316:14;;10307:6;10291:13;10301:2;10291:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10283:87;;;;-1:-1:-1;;;10283:87:0;;10958:2:1;10283:87:0;;;10940:21:1;10997:2;10977:18;;;10970:30;11036:34;11016:18;;;11009:62;-1:-1:-1;;;11087:18:1;;;11080:33;11130:19;;10283:87:0;10756:399:1;10283:87:0;10402:28;10433:24;10451:4;10433:9;:24::i;:::-;10511:19;;10574:16;;10402:55;;-1:-1:-1;10487:43:0;;;;10550:40;;10547:157;;10634:54;10638:6;10645:42;10649:20;10670:16;;10645:3;:42::i;:::-;10634:3;:54::i;:::-;10611:77;;10547:157;10724:7;:18;;;;-1:-1:-1;10736:6:0;;-1:-1:-1;;;10736:6:0;;;;10735:7;10724:18;:43;;;;-1:-1:-1;10754:13:0;;-1:-1:-1;;;;;10746:21:0;;;10754:13;;10746:21;;10724:43;:58;;;;-1:-1:-1;10771:11:0;;-1:-1:-1;;;10771:11:0;;;;10724:58;:87;;;;-1:-1:-1;;;;;;10787:24:0;;;;;;:18;:24;;;;;;;;10786:25;10724:87;:114;;;;-1:-1:-1;;;;;;10816:22:0;;;;;;:18;:22;;;;;;;;10815:23;10724:114;10720:663;;;10878:13;;10863:12;:28;10859:90;;;10928:1;10916:9;:13;10859:90;11005:12;;10993:9;;:24;10985:53;;;;-1:-1:-1;;;10985:53:0;;11362:2:1;10985:53:0;;;11344:21:1;11401:2;11381:18;;;11374:30;-1:-1:-1;;;11420:18:1;;;11413:46;11476:18;;10985:53:0;11160:340:1;10985:53:0;11057:38;11074:20;11057:16;:38::i;:::-;11143:21;11187:22;;11183:106;;11234:35;11247:21;11234:12;:35::i;:::-;11309:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;11355:12:0;11339:13;:28;-1:-1:-1;10720:663:0;9863:1531;;9825:1569;-1:-1:-1;;;;;11470:24:0;;11406:12;11470:24;;;:18;:24;;;;;;11421:4;;11470:24;;;:50;;-1:-1:-1;;;;;;11498:22:0;;;;;;:18;:22;;;;;;;;11470:50;11469:102;;;-1:-1:-1;11534:13:0;;-1:-1:-1;;;;;11526:21:0;;;11534:13;;11526:21;;;;:44;;-1:-1:-1;11557:13:0;;-1:-1:-1;;;;;11551:19:0;;;11557:13;;11551:19;;11526:44;11465:594;;;-1:-1:-1;11598:5:0;11465:594;;;11681:13;;-1:-1:-1;;;;;11673:21:0;;;11681:13;;11673:21;:55;;;;-1:-1:-1;11712:15:0;;-1:-1:-1;;;;;11698:30:0;;;11712:15;;11698:30;;11673:55;11670:162;;;11761:14;;11749:9;:26;11804:12;;11794:7;:22;11670:162;11891:13;;-1:-1:-1;;;;;11885:19:0;;;11891:13;;11885:19;:55;;;;-1:-1:-1;11924:15:0;;-1:-1:-1;;;;;11908:32:0;;;11924:15;;11908:32;;11885:55;11881:165;;;11973:15;;11961:9;:27;12017:13;;12007:7;:23;11881:165;12071:41;12086:4;12092:2;12096:6;12104:7;12071:14;:41::i;2439:224::-;2559:7;2595:12;2587:6;;;;2579:29;;;;-1:-1:-1;;;2579:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2619:9:0;2631:5;2635:1;2631;:5;:::i;:::-;2619:17;2439:224;-1:-1:-1;;;;;2439:224:0:o;12725:99::-;12782:17;;:34;;-1:-1:-1;;;;;12782:17:0;;;;:34;;;;;12809:6;;12782:17;:34;:17;:34;12809:6;12782:17;:34;;;;;;;;;;;;;;;;;;;8420:323;8515:7;8573;;8562;:18;;8540:110;;;;-1:-1:-1;;;8540:110:0;;11980:2:1;8540:110:0;;;11962:21:1;12019:2;11999:18;;;11992:30;12058:34;12038:18;;;12031:62;-1:-1:-1;;;12109:18:1;;;12102:40;12159:19;;8540:110:0;11778:406:1;8540:110:0;8661:19;8683:10;:8;:10::i;:::-;8661:32;-1:-1:-1;8711:24:0;:7;8661:32;8711:11;:24::i;:::-;8704:31;8420:323;-1:-1:-1;;;8420:323:0:o;12234:483::-;6134:6;:13;;-1:-1:-1;;;;6134:13:0;-1:-1:-1;;;6134:13:0;;;12336:16:::1;::::0;;12350:1:::1;12336:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12336:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12336:16:0::1;12312:40;;12381:4;12363;12368:1;12363:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12363:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12407:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12407:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12363:7;;12407:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12397:4;12402:1;12397:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12397:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12472:15:::1;::::0;12440:62:::1;::::0;12457:4:::1;::::0;12472:15:::1;12490:11:::0;12440:8:::1;:62::i;:::-;12513:15;::::0;:196:::1;::::0;-1:-1:-1;;;12513:196:0;;-1:-1:-1;;;;;12513:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12594:11;;12513:15:::1;::::0;12636:4;;12663::::1;::::0;12683:15:::1;::::0;12513:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6170:6:0;:14;;-1:-1:-1;;;;6170:14:0;;;-1:-1:-1;;;;12234:483:0:o;12128:98::-;12185:7;12212:1;12210;:3;12209:9;;12217:1;12209:9;;;-1:-1:-1;12215:1:0;12202:16;-1:-1:-1;12128:98:0:o;13701:282::-;13857:7;13852:28;;13866:14;:12;:14::i;:::-;13891:44;13909:6;13917:9;13928:6;13891:17;:44::i;:::-;13951:7;13946:29;;13960:15;9034:17;;9022:9;:29;9072:15;;9062:7;:25;8978:117;16662:164;16704:7;16725:15;16742;16761:19;:17;:19::i;:::-;16724:56;;-1:-1:-1;16724:56:0;-1:-1:-1;16798:20:0;16724:56;;16798:11;:20::i;:::-;16791:27;;;;16662:164;:::o;2925:132::-;2983:7;3010:39;3014:1;3017;3010:39;;;;;;;;;;;;;;;;;:3;:39::i;8751:219::-;8798:9;;:14;:30;;;;-1:-1:-1;8816:7:0;;:12;8798:30;8794:43;;;8751:219::o;8794:43::-;8869:9;;;8849:17;:29;8907:7;;;8889:15;:25;-1:-1:-1;8927:13:0;;;;8951:11;8751:219::o;13991:610::-;14138:15;14168:23;14206:12;14233:23;14271:12;14298:13;14325:19;14336:7;14325:10;:19::i;:::-;-1:-1:-1;;;;;14373:15:0;;;;;;:7;:15;;;;;;14123:221;;-1:-1:-1;14123:221:0;;-1:-1:-1;14123:221:0;;-1:-1:-1;14123:221:0;-1:-1:-1;14123:221:0;-1:-1:-1;14123:221:0;-1:-1:-1;14373:28:0;;14123:221;14373:19;:28::i;:::-;-1:-1:-1;;;;;14355:15:0;;;;;;;:7;:15;;;;;;:46;;;;14433:18;;;;;;;:39;;14456:15;14433:22;:39::i;:::-;-1:-1:-1;;;;;14412:18:0;;;;;;:7;:18;;;;;:60;14483:16;14493:5;14483:9;:16::i;:::-;14510:23;14522:4;14528;14510:11;:23::i;:::-;14566:9;-1:-1:-1;;;;;14549:44:0;14558:6;-1:-1:-1;;;;;14549:44:0;;14577:15;14549:44;;;;1699:25:1;;1687:2;1672:18;;1553:177;14549:44:0;;;;;;;;14112:489;;;;;;13991:610;;;:::o;16834:257::-;16932:7;;16885;;;;4731:18;17000:20;16932:7;4731:18;17000:11;:20::i;:::-;16990:7;:30;16986:61;;;-1:-1:-1;;17030:7:0;;;4731:18;;-1:-1:-1;16834:257:0;-1:-1:-1;16834:257:0:o;16986:61::-;17066:7;;17075;;-1:-1:-1;16834:257:0;-1:-1:-1;16834:257:0:o;3065:223::-;3185:7;3220:12;3213:5;3205:28;;;;-1:-1:-1;;;3205:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3244:9:0;3256:5;3260:1;3256;:5;:::i;15020:615::-;15120:7;15142;15164;15186;15208;15230;15266:23;15291:12;15305:13;15335:40;15347:7;15356:9;;15367:7;;15335:11;:40::i;:::-;15265:110;;;;;;15386:19;15408:10;:8;:10::i;:::-;15386:32;;15430:15;15447:23;15472:12;15501:46;15513:7;15522:4;15528:5;15535:11;15501;:46::i;:::-;15429:118;;-1:-1:-1;15429:118:0;-1:-1:-1;15429:118:0;-1:-1:-1;15598:15:0;;-1:-1:-1;15615:4:0;;-1:-1:-1;15621:5:0;;-1:-1:-1;;;;;15020:615:0;;;;;;;:::o;2295:136::-;2353:7;2380:43;2384:1;2387;2380:43;;;;;;;;;;;;;;;;;:3;:43::i;2108:179::-;2166:7;;2198:5;2202:1;2198;:5;:::i;:::-;2186:17;;2227:1;2222;:6;;2214:46;;;;-1:-1:-1;;;2214:46:0;;13833:2:1;2214:46:0;;;13815:21:1;13872:2;13852:18;;;13845:30;13911:29;13891:18;;;13884:57;13958:18;;2214:46:0;13631:351:1;14609:211:0;14662:19;14684:10;:8;:10::i;:::-;14662:32;-1:-1:-1;14705:13:0;14721:22;:5;14662:32;14721:9;:22::i;:::-;14795:4;14779:22;;;;:7;:22;;;;;;14705:38;;-1:-1:-1;14779:33:0;;14705:38;14779:26;:33::i;:::-;14770:4;14754:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14609:211:0:o;14828:147::-;14906:7;;:17;;14918:4;14906:11;:17::i;:::-;14896:7;:27;14947:10;;:20;;14962:4;14947:14;:20::i;:::-;14934:10;:33;-1:-1:-1;;14828:147:0:o;15643:469::-;15812:7;;;;15906:30;15932:3;15906:21;:7;15918:8;15906:11;:21::i;:::-;:25;;:30::i;:::-;15891:45;-1:-1:-1;15947:13:0;15963:28;15987:3;15963:19;:7;15975:6;15963:11;:19::i;:28::-;15947:44;-1:-1:-1;16002:23:0;16028:28;15947:44;16028:17;:7;16040:4;16028:11;:17::i;:::-;:21;;:28::i;:::-;16002:54;16092:4;;-1:-1:-1;16098:5:0;;-1:-1:-1;15643:469:0;;-1:-1:-1;;;;;15643:469:0:o;16120:534::-;16314:7;;;;16411:24;:7;16423:11;16411;:24::i;:::-;16393:42;-1:-1:-1;16446:12:0;16461:21;:4;16470:11;16461:8;:21::i;:::-;16446:36;-1:-1:-1;16493:13:0;16509:22;:5;16519:11;16509:9;:22::i;:::-;16493:38;-1:-1:-1;16542:23:0;16568:28;16493:38;16568:17;:7;16580:4;16568:11;:17::i;:28::-;16615:7;;;;-1:-1:-1;16641:4:0;;-1:-1:-1;16120:534:0;;-1:-1:-1;;;;;;;16120:534:0:o;2671:246::-;2729:7;2753:1;2758;2753:6;2749:47;;-1:-1:-1;2783:1:0;2776:8;;2749:47;2806:9;2818:5;2822:1;2818;:5;:::i;:::-;2806:17;-1:-1:-1;2851:1:0;2842:5;2846:1;2806:17;2842:5;:::i;:::-;:10;2834:56;;;;-1:-1:-1;;;2834:56:0;;14362:2:1;2834:56:0;;;14344:21:1;14401:2;14381:18;;;14374:30;14440:34;14420:18;;;14413:62;-1:-1:-1;;;14491:18:1;;;14484:31;14532:19;;2834:56:0;14160:397:1;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:134;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1127::-;505:6;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;614:9;601:23;647:18;639:6;636:30;633:50;;;679:1;676;669:12;633:50;702:22;;755:4;747:13;;743:27;-1:-1:-1;733:55:1;;784:1;781;774:12;733:55;824:2;811:16;850:18;842:6;839:30;836:56;;;872:18;;:::i;:::-;918:6;915:1;911:14;954:2;948:9;1017:2;1013:7;1008:2;1004;1000:11;996:25;988:6;984:38;1088:6;1076:10;1073:22;1052:18;1040:10;1037:34;1034:62;1031:88;;;1099:18;;:::i;:::-;1135:2;1128:22;1185;;;1235:2;1265:11;;;1261:20;;;1185:22;1223:15;;1293:19;;;1290:39;;;1325:1;1322;1315:12;1290:39;1357:2;1353;1349:11;1338:22;;1369:148;1385:6;1380:3;1377:15;1369:148;;;1451:23;1470:3;1451:23;:::i;:::-;1439:36;;1504:2;1402:12;;;;1495;1369:148;;;-1:-1:-1;1536:6:1;421:1127;-1:-1:-1;;;;;;421:1127:1:o;1735:418::-;1884:2;1873:9;1866:21;1847:4;1916:6;1910:13;1959:6;1954:2;1943:9;1939:18;1932:34;2018:6;2013:2;2005:6;2001:15;1996:2;1985:9;1981:18;1975:50;2074:1;2069:2;2060:6;2049:9;2045:22;2041:31;2034:42;2144:2;2137;2133:7;2128:2;2120:6;2116:15;2112:29;2101:9;2097:45;2093:54;2085:62;;;1735:418;;;;:::o;2158:367::-;2226:6;2234;2287:2;2275:9;2266:7;2262:23;2258:32;2255:52;;;2303:1;2300;2293:12;2255:52;2342:9;2329:23;2361:31;2386:5;2361:31;:::i;:::-;2411:5;2489:2;2474:18;;;;2461:32;;-1:-1:-1;;;2158:367:1:o;2956:508::-;3033:6;3041;3049;3102:2;3090:9;3081:7;3077:23;3073:32;3070:52;;;3118:1;3115;3108:12;3070:52;3157:9;3144:23;3176:31;3201:5;3176:31;:::i;:::-;3226:5;-1:-1:-1;3283:2:1;3268:18;;3255:32;3296:33;3255:32;3296:33;:::i;:::-;2956:508;;3348:7;;-1:-1:-1;;;3428:2:1;3413:18;;;;3400:32;;2956:508::o;3866:247::-;3925:6;3978:2;3966:9;3957:7;3953:23;3949:32;3946:52;;;3994:1;3991;3984:12;3946:52;4033:9;4020:23;4052:31;4077:5;4052:31;:::i;4118:160::-;4183:20;;4239:13;;4232:21;4222:32;;4212:60;;4268:1;4265;4258:12;4283:180;4339:6;4392:2;4380:9;4371:7;4367:23;4363:32;4360:52;;;4408:1;4405;4398:12;4360:52;4431:26;4447:9;4431:26;:::i;4468:226::-;4527:6;4580:2;4568:9;4559:7;4555:23;4551:32;4548:52;;;4596:1;4593;4586:12;4548:52;-1:-1:-1;4641:23:1;;4468:226;-1:-1:-1;4468:226:1:o;4699:587::-;4785:6;4793;4801;4809;4862:3;4850:9;4841:7;4837:23;4833:33;4830:53;;;4879:1;4876;4869:12;4830:53;-1:-1:-1;;4924:23:1;;;5044:2;5029:18;;5016:32;;-1:-1:-1;5147:2:1;5132:18;;5119:32;;5250:2;5235:18;5222:32;;-1:-1:-1;4699:587:1;-1:-1:-1;4699:587:1:o;5291:684::-;5383:6;5391;5399;5452:2;5440:9;5431:7;5427:23;5423:32;5420:52;;;5468:1;5465;5458:12;5420:52;5508:9;5495:23;5541:18;5533:6;5530:30;5527:50;;;5573:1;5570;5563:12;5527:50;5596:22;;5649:4;5641:13;;5637:27;-1:-1:-1;5627:55:1;;5678:1;5675;5668:12;5627:55;5718:2;5705:16;5744:18;5736:6;5733:30;5730:50;;;5776:1;5773;5766:12;5730:50;5831:7;5824:4;5814:6;5811:1;5807:14;5803:2;5799:23;5795:34;5792:47;5789:67;;;5852:1;5849;5842:12;5789:67;5883:4;5875:13;;;;-1:-1:-1;5907:6:1;-1:-1:-1;5932:37:1;;5948:20;;5932:37;:::i;:::-;5922:47;;5291:684;;;;;:::o;5980:388::-;6048:6;6056;6109:2;6097:9;6088:7;6084:23;6080:32;6077:52;;;6125:1;6122;6115:12;6077:52;6164:9;6151:23;6183:31;6208:5;6183:31;:::i;:::-;6233:5;-1:-1:-1;6290:2:1;6275:18;;6262:32;6303:33;6262:32;6303:33;:::i;:::-;6355:7;6345:17;;;5980:388;;;;;:::o;6373:356::-;6575:2;6557:21;;;6594:18;;;6587:30;6653:34;6648:2;6633:18;;6626:62;6720:2;6705:18;;6373:356::o;6734:127::-;6795:10;6790:3;6786:20;6783:1;6776:31;6826:4;6823:1;6816:15;6850:4;6847:1;6840:15;10494:127;10555:10;10550:3;10546:20;10543:1;10536:31;10586:4;10583:1;10576:15;10610:4;10607:1;10600:15;10626:125;10691:9;;;10712:10;;;10709:36;;;10725:18;;:::i;11505:135::-;11544:3;11565:17;;;11562:43;;11585:18;;:::i;:::-;-1:-1:-1;11632:1:1;11621:13;;11505:135::o;11645:128::-;11712:9;;;11733:11;;;11730:37;;;11747:18;;:::i;12189:251::-;12259:6;12312:2;12300:9;12291:7;12287:23;12283:32;12280:52;;;12328:1;12325;12318:12;12280:52;12360:9;12354:16;12379:31;12404:5;12379:31;:::i;12445:959::-;12707:4;12755:3;12744:9;12740:19;12786:6;12775:9;12768:25;12829:6;12824:2;12813:9;12809:18;12802:34;12872:3;12867:2;12856:9;12852:18;12845:31;12896:6;12931;12925:13;12962:6;12954;12947:22;13000:3;12989:9;12985:19;12978:26;;13039:2;13031:6;13027:15;13013:29;;13060:1;13070:195;13084:6;13081:1;13078:13;13070:195;;;13149:13;;-1:-1:-1;;;;;13145:39:1;13133:52;;13214:2;13240:15;;;;13205:12;;;;13181:1;13099:9;13070:195;;;-1:-1:-1;;;;;;;13321:32:1;;;;13316:2;13301:18;;13294:60;-1:-1:-1;;13385:3:1;13370:19;13363:35;13282:3;12445:959;-1:-1:-1;;;12445:959:1:o;13409:217::-;13449:1;13475;13465:132;;13519:10;13514:3;13510:20;13507:1;13500:31;13554:4;13551:1;13544:15;13582:4;13579:1;13572:15;13465:132;-1:-1:-1;13611:9:1;;13409:217::o;13987:168::-;14060:9;;;14091;;14108:15;;;14102:22;;14088:37;14078:71;;14129:18;;:::i
Swarm Source
ipfs://f9e4f508314f56b14ab0a0a88f768750f526b9422cc6654606b809ed10d67681
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.