Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15400282 | 834 days ago | IN | 0 ETH | 0.00037336 | ||||
Update Fees | 15400278 | 834 days ago | IN | 0 ETH | 0.00054292 | ||||
Approve | 15400277 | 834 days ago | IN | 0 ETH | 0.00063394 | ||||
Enable Trading | 15400260 | 834 days ago | IN | 0 ETH | 0.00058981 | ||||
Approve | 15400254 | 834 days ago | IN | 0 ETH | 0.00027819 | ||||
Airdrop To Walle... | 15400241 | 834 days ago | IN | 0 ETH | 0.00048844 | ||||
Airdrop To Walle... | 15400240 | 834 days ago | IN | 0 ETH | 0.00046062 | ||||
Airdrop To Walle... | 15400236 | 834 days ago | IN | 0 ETH | 0.00058876 | ||||
Airdrop To Walle... | 15400235 | 834 days ago | IN | 0 ETH | 0.00052969 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Frankenstein
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-24 */ /** Frankenstein; or, The Modern Prometheus is an 1818 novel written by English author Mary Shelley. Frankenstein tells the story of Victor Frankenstein, a young scientist who creates a sapient creature in an unorthodox scientific experiment. Shelley started writing the story when she was 18, and the first edition was published anonymously in London on 1 January 1818, when she was 20. */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IBEP20 { 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); } interface IBEP20Metadata is IBEP20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract BEP20 is Context, IBEP20, IBEP20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount,"BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "BEP20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} } abstract contract Ownable is Context { address private _owner; 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; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts); function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; } contract Frankenstein is BEP20, Ownable { // using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public DEAD = 0x000000000000000000000000000000000000dEaD; bool private swapping; bool public tradingEnabled = false; uint256 internal sellAmount = 0; uint256 internal buyAmount = 0; uint256 private totalSellFees; uint256 private totalBuyFees; address payable public marketingWallet; // address payable public devWallet; // uint256 public maxWallet; bool public maxWalletEnabled = true; uint256 public swapTokensAtAmount; uint256 public sellMarketingFees; uint256 public sellBurnFee; uint256 public buyMarketingFees; uint256 public buyBurnFee; uint256 public buyDevFee; uint256 public sellDevFee; bool public swapAndLiquifyEnabled = true; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) private canTransferBeforeTradingIsEnabled; bool public limitsInEffect = false; uint256 private gasPriceLimit = 7 * 1 gwei; // MAX GWEI mapping(address => uint256) private _holderLastTransferBlock; // FOR 1TX PER BLOCK mapping(address => uint256) private _holderLastTransferTimestamp; // FOR COOLDOWN uint256 public launchblock; // FOR DEADBLOCKS uint256 public launchtimestamp; // FOR LAUNCH TIMESTAMP uint256 public cooldowntimer = 30; // DEFAULT COOLDOWN TIMER event EnableSwapAndLiquify(bool enabled); event SetPreSaleWallet(address wallet); event updateMarketingWallet(address wallet); event updateDevWallet(address wallet); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event TradingEnabled(); event UpdateFees(uint256 sellMarketingFees, uint256 sellBurnFee, uint256 buyMarketingFees, uint256 buyBurnFee, uint256 buyDevFee, uint256 sellDevFee); event Airdrop(address holder, uint256 amount); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event SendDividends(uint256 opAmount, bool success); constructor() BEP20("Frankenstein", "Frankenstein") { // marketingWallet = payable(0x176119cbCA3E619a65f631310E23362aB6E7ea89); // devWallet = payable(0x176119cbCA3E619a65f631310E23362aB6E7ea89); // address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //INITIAL FEE VALUES HERE buyMarketingFees = 0; sellMarketingFees = 15; buyBurnFee = 0; sellBurnFee = 0; buyDevFee = 0; sellDevFee = 0; // TOTAL BUY AND TOTAL SELL FEE CALCS totalBuyFees = buyMarketingFees.add(buyDevFee); totalSellFees = sellMarketingFees.add(sellDevFee); uniswapV2Router = IUniswapV2Router02(router); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(uniswapV2Pair, true); _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[msg.sender] = true; _isExcludedFromFees[marketingWallet] = true; uint256 totalSupply = (1_000_000_000) * (10**18); // TOTAL SUPPLY IS SET HERE _mint(owner(), totalSupply); // only time internal mint function is ever called is to create supply maxWallet = _totalSupply / 50; // 1% swapTokensAtAmount = _totalSupply / 100; // 1%; canTransferBeforeTradingIsEnabled[owner()] = true; canTransferBeforeTradingIsEnabled[address(this)] = true; } function decimals() public view virtual override returns (uint8) { return 18; } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingEnabled); tradingEnabled = true; launchblock = block.number; launchtimestamp = block.timestamp; emit TradingEnabled(); } function setMarketingWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; marketingWallet = payable(wallet); emit updateMarketingWallet(wallet); } function setDevWallet(address wallet) external onlyOwner { _isExcludedFromFees[wallet] = true; devWallet = payable(wallet); emit updateDevWallet(wallet); } function setExcludeFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setCanTransferBefore(address wallet, bool enable) external onlyOwner { canTransferBeforeTradingIsEnabled[wallet] = enable; } function setLimitsInEffect(bool value) external onlyOwner { limitsInEffect = value; } function setMaxWalletEnabled(bool value) external onlyOwner { maxWalletEnabled = value; } function setcooldowntimer(uint256 value) external onlyOwner { require(value <= 300, "cooldown timer cannot exceed 5 minutes"); cooldowntimer = value; } function setmaxWallet(uint256 value) external onlyOwner { value = value * (10**18); require(value >= _totalSupply / 100, "max wallet cannot be set to less than 1%"); maxWallet = value; } // TAKES ALL BNB FROM THE CONTRACT ADDRESS AND SENDS IT TO OWNERS WALLET function Sweep() external onlyOwner { uint256 amountBNB = address(this).balance; payable(msg.sender).transfer(amountBNB); } function setSwapTriggerAmount(uint256 amount) public onlyOwner { swapTokensAtAmount = amount * (10**18); } function enableSwapAndLiquify(bool enabled) public onlyOwner { require(swapAndLiquifyEnabled != enabled); swapAndLiquifyEnabled = enabled; emit EnableSwapAndLiquify(enabled); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } // THIS IS THE ONE YOU USE TO TRASNFER OWNER IF U EVER DO function transferAdmin(address newOwner) public onlyOwner { _isExcludedFromFees[newOwner] = true; canTransferBeforeTradingIsEnabled[newOwner] = true; transferOwnership(newOwner); } function updateFees(uint256 marketingBuy, uint256 marketingSell, uint256 burnBuy, uint256 burnSell, uint256 devBuy, uint256 devSell) public onlyOwner { buyMarketingFees = marketingBuy; buyBurnFee = burnBuy; sellMarketingFees = marketingSell; sellBurnFee = burnSell; buyDevFee = devBuy; sellDevFee = devSell; totalSellFees = sellMarketingFees.add(sellDevFee); totalBuyFees = buyMarketingFees.add(buyDevFee); // require(totalSellFees <= 99 && totalBuyFees <= 99, "t"); emit UpdateFees(sellMarketingFees, sellBurnFee, sellDevFee, buyMarketingFees, buyBurnFee, buyDevFee); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "IBEP20: transfer from the zero address"); require(to != address(0), "IBEP20: transfer to the zero address"); uint256 marketingFees; uint256 burnFee; uint256 devFee; if (!canTransferBeforeTradingIsEnabled[from]) { require(tradingEnabled, "Trading has not yet been enabled"); } if (amount == 0) { super._transfer(from, to, 0); return; } else if ( !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { bool isSelling = automatedMarketMakerPairs[to]; if (isSelling) { marketingFees = sellMarketingFees; burnFee = sellBurnFee; devFee = sellDevFee; if (limitsInEffect) { require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferTimestamp[tx.origin] = block.timestamp; } } else { marketingFees = buyMarketingFees; burnFee = buyBurnFee; devFee = buyDevFee; if (limitsInEffect) { require(block.number > launchblock + 2,"you shall not pass"); require(tx.gasprice <= gasPriceLimit,"Gas price exceeds limit."); require(_holderLastTransferBlock[tx.origin] != block.number,"Too many TX in block"); require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer, "cooldown period active"); _holderLastTransferBlock[tx.origin] = block.number; _holderLastTransferTimestamp[tx.origin] = block.timestamp; } if (maxWalletEnabled) { uint256 contractBalanceRecipient = balanceOf(to); require(contractBalanceRecipient + amount <= maxWallet, "Exceeds maximum wallet token amount." ); } } uint256 totalFees = marketingFees.add(devFee); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !automatedMarketMakerPairs[from]) { swapping = true; uint256 swapBalance = swapTokensAtAmount; swapAndSendDividends(swapBalance); buyAmount = 0; sellAmount = 0; swapping = false; } uint256 fees = amount.mul(totalFees).div(100); uint256 burntokens = amount.mul(burnFee).div(100); amount = amount.sub(fees + burntokens); if (isSelling) { sellAmount = sellAmount.add(fees); } else { buyAmount = buyAmount.add(fees); } super._transfer(from, address(this), fees); if (burntokens > 0) { super._transfer(from, DEAD, burntokens); _totalSupply = _totalSupply.sub(burntokens); } } super._transfer(from, to, amount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function forceSwapAndSendDividends(uint256 tokens) public onlyOwner { tokens = tokens * (10**18); uint256 totalAmount = buyAmount.add(sellAmount); uint256 fromBuy = tokens.mul(buyAmount).div(totalAmount); uint256 fromSell = tokens.mul(sellAmount).div(totalAmount); swapAndSendDividends(tokens); buyAmount = buyAmount.sub(fromBuy); sellAmount = sellAmount.sub(fromSell); } // TAX PAYOUT CODE function swapAndSendDividends(uint256 tokens) private { if (tokens == 0) { return; } swapTokensForEth(tokens); bool success = true; bool successOp1 = true; uint256 _marketDevTotal = sellMarketingFees.add(sellDevFee) + buyMarketingFees.add(buyDevFee); uint256 feePortions; if (_marketDevTotal > 0) { feePortions = address(this).balance.div(_marketDevTotal); } uint256 marketingPayout = buyMarketingFees.add(sellMarketingFees) * feePortions; uint256 devPayout = buyDevFee.add(sellDevFee) * feePortions; if (marketingPayout > 0) { (success, ) = address(marketingWallet).call{value: marketingPayout}(""); } if (devPayout > 0) { (successOp1, ) = address(devWallet).call{value: devPayout}(""); } emit SendDividends( marketingPayout, success && successOp1 ); } function airdropToWallets( address[] memory airdropWallets, uint256[] memory amount ) external onlyOwner { require(airdropWallets.length == amount.length, "Arrays must be the same length"); require(airdropWallets.length <= 200, "Wallets list length must be <= 200"); for (uint256 i = 0; i < airdropWallets.length; i++) { address wallet = airdropWallets[i]; uint256 airdropAmount = amount[i] * (10**18); super._transfer(msg.sender, wallet, airdropAmount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"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":"bool","name":"enabled","type":"bool"}],"name":"EnableSwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"opAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellDevFee","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateMarketingWallet","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldowntimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"forceSwapAndSendDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLimitsInEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setcooldowntimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"newOwner","type":"address"}],"name":"transferAdmin","outputs":[],"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":[],"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"},{"inputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"burnBuy","type":"uint256"},{"internalType":"uint256","name":"burnSell","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260088054600161ff0160a01b03191661dead17905560006009819055600a556010805460ff199081166001908117909255601880548216909217909155601c805490911690556401a13b8600601d55601e6022553480156200006557600080fd5b50604080518082018252600c8082526b233930b735b2b739ba32b4b760a11b602080840182815285518087019096529285528401528151919291620000ad916003916200063a565b508051620000c39060049060208401906200063a565b5050506000620000d86200047860201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d805473176119cbca3e619a65f631310e23362ab6e7ea896001600160a01b03199182168117909255600e8054909116909117905560006014819055600f6012556015819055601381905560168190556017819055737a250d5630b4cf539739df2c5dacb4c659f2488d90620001aa90806200047c602090811b6200161017901c565b600c81905550620001ce6017546012546200047c60201b620016101790919060201c565b600b55600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002519190620006e0565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da9190620006e0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e9190620006e0565b600780546001600160a01b0319166001600160a01b039290921691821790556200037a906001620004ea565b306000908152601960205260408082208054600160ff1991821681179092553384528284208054821683179055600d546001600160a01b0316845291909220805490911690911790556b033b2e3c9fd0803ce8000000620003ee620003e76005546001600160a01b031690565b826200053e565b6032600254620003ff91906200070b565b600f5560025462000413906064906200070b565b6011556001601b60006200042f6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152601b90925290208054909116600117905550620007919050565b3390565b6000806200048b83856200072e565b905083811015620004e35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b9392505050565b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620005965760405162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004da565b620005b2816002546200047c60201b620016101790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620005e5918390620016106200047c821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620006489062000755565b90600052602060002090601f0160209004810192826200066c5760008555620006b7565b82601f106200068757805160ff1916838001178555620006b7565b82800160010185558215620006b7579182015b82811115620006b75782518255916020019190600101906200069a565b50620006c5929150620006c9565b5090565b5b80821115620006c55760008155600101620006ca565b600060208284031215620006f357600080fd5b81516001600160a01b0381168114620004e357600080fd5b6000826200072957634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200075057634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200076a57607f821691505b6020821081036200078b57634e487b7160e01b600052602260045260246000fd5b50919050565b6129a180620007a16000396000f3fe60806040526004361061031e5760003560e01c806375f0a874116101ab578063a614ff75116100f7578063d5e3725111610095578063e71dc3f51161006f578063e71dc3f514610942578063f2fde38b14610958578063f8b45b0514610978578063fc6b151c1461098e57600080fd5b8063d5e37251146108c6578063dd62ed3e146108e6578063e2f456051461092c57600080fd5b8063b4942988116100d1578063b494298814610846578063b62496f51461085c578063b74e3b111461088c578063d045a329146108ac57600080fd5b8063a614ff75146107f0578063a9059cbb14610810578063adb873bd1461083057600080fd5b806395451c29116101645780639a7a23d61161013e5780639a7a23d6146107845780639c3b4fdc146107a4578063a0d82dc5146107ba578063a457c2d7146107d057600080fd5b806395451c291461073957806395d89b411461074f578063992c58e41461076457600080fd5b806375f0a874146106905780637fdde05c146106b05780638a8c523c146106d05780638c3c82b2146106e55780638da5cb5b146106fb5780638ea5220f1461071957600080fd5b806349bd5a5e1161026a5780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461061057806370a0823114610625578063715018a61461065b57806375829def1461067057600080fd5b80635d098b38146105b05780635eee4bae146105d0578063679ca6e9146105f057600080fd5b806349bd5a5e146104ec5780634a62bb651461050c5780634a74bb02146105265780634ada218b146105405780634fbee193146105615780635124f8741461059a57600080fd5b806318160ddd116102d75780632307b441116102b15780632307b4411461047057806323b872dd14610490578063313ce567146104b057806339509351146104cc57600080fd5b806318160ddd1461041b5780631d7b1fb41461043a5780631f53ac021461045057600080fd5b806303fd2a451461032a57806305ca5f081461036757806306fdde031461038957806308dfe8a5146103ab578063095ea7b3146103cb5780631694505e146103fb57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5060085461034a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561037357600080fd5b506103876103823660046123c0565b6109ae565b005b34801561039557600080fd5b5061039e610a7f565b60405161035e91906123d9565b3480156103b757600080fd5b506103876103c6366004612458565b610b11565b3480156103d757600080fd5b506103eb6103e636600461248d565b610b9a565b604051901515815260200161035e565b34801561040757600080fd5b5060065461034a906001600160a01b031681565b34801561042757600080fd5b506002545b60405190815260200161035e565b34801561044657600080fd5b5061042c60225481565b34801561045c57600080fd5b5061038761046b3660046124b9565b610bb1565b34801561047c57600080fd5b5061038761048b3660046125ac565b610c48565b34801561049c57600080fd5b506103eb6104ab36600461266e565b610da0565b3480156104bc57600080fd5b506040516012815260200161035e565b3480156104d857600080fd5b506103eb6104e736600461248d565b610e09565b3480156104f857600080fd5b5060075461034a906001600160a01b031681565b34801561051857600080fd5b50601c546103eb9060ff1681565b34801561053257600080fd5b506018546103eb9060ff1681565b34801561054c57600080fd5b506008546103eb90600160a81b900460ff1681565b34801561056d57600080fd5b506103eb61057c3660046124b9565b6001600160a01b031660009081526019602052604090205460ff1690565b3480156105a657600080fd5b5061042c60145481565b3480156105bc57600080fd5b506103876105cb3660046124b9565b610e3f565b3480156105dc57600080fd5b506103876105eb3660046123c0565b610ecf565b3480156105fc57600080fd5b5061038761060b3660046126af565b610f11565b34801561061c57600080fd5b50610387610f4e565b34801561063157600080fd5b5061042c6106403660046124b9565b6001600160a01b031660009081526020819052604090205490565b34801561066757600080fd5b50610387610fab565b34801561067c57600080fd5b5061038761068b3660046124b9565b61101f565b34801561069c57600080fd5b50600d5461034a906001600160a01b031681565b3480156106bc57600080fd5b506103876106cb366004612458565b611090565b3480156106dc57600080fd5b506103876110e5565b3480156106f157600080fd5b5061042c60215481565b34801561070757600080fd5b506005546001600160a01b031661034a565b34801561072557600080fd5b50600e5461034a906001600160a01b031681565b34801561074557600080fd5b5061042c60125481565b34801561075b57600080fd5b5061039e61116c565b34801561077057600080fd5b5061038761077f3660046126ca565b61117b565b34801561079057600080fd5b5061038761079f366004612458565b611294565b3480156107b057600080fd5b5061042c60165481565b3480156107c657600080fd5b5061042c60175481565b3480156107dc57600080fd5b506103eb6107eb36600461248d565b6112c8565b3480156107fc57600080fd5b5061038761080b3660046126af565b611317565b34801561081c57600080fd5b506103eb61082b36600461248d565b611354565b34801561083c57600080fd5b5061042c60135481565b34801561085257600080fd5b5061042c60205481565b34801561086857600080fd5b506103eb6108773660046124b9565b601a6020526000908152604090205460ff1681565b34801561089857600080fd5b506103876108a73660046123c0565b611361565b3480156108b857600080fd5b506010546103eb9060ff1681565b3480156108d257600080fd5b506103876108e13660046126af565b6113f1565b3480156108f257600080fd5b5061042c61090136600461270d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561093857600080fd5b5061042c60115481565b34801561094e57600080fd5b5061042c60155481565b34801561096457600080fd5b506103876109733660046124b9565b611473565b34801561098457600080fd5b5061042c600f5481565b34801561099a57600080fd5b506103876109a93660046123c0565b61155e565b6005546001600160a01b031633146109e15760405162461bcd60e51b81526004016109d890612746565b60405180910390fd5b6109f381670de0b6b3a7640000612791565b90506000610a0e600954600a5461161090919063ffffffff16565b90506000610a3182610a2b600a548661167690919063ffffffff16565b906116f8565b90506000610a4e83610a2b6009548761167690919063ffffffff16565b9050610a598461173a565b600a54610a6690836118eb565b600a55600954610a7690826118eb565b60095550505050565b606060038054610a8e906127b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610aba906127b0565b8015610b075780601f10610adc57610100808354040283529160200191610b07565b820191906000526020600020905b815481529060010190602001808311610aea57829003601f168201915b5050505050905090565b6005546001600160a01b03163314610b3b5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000610ba733848461192d565b5060015b92915050565b6005546001600160a01b03163314610bdb5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b038116600081815260196020908152604091829020805460ff19166001179055600e80546001600160a01b0319168417905590519182527f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa91015b60405180910390a150565b6005546001600160a01b03163314610c725760405162461bcd60e51b81526004016109d890612746565b8051825114610cc35760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e677468000060448201526064016109d8565b60c882511115610d205760405162461bcd60e51b815260206004820152602260248201527f57616c6c657473206c697374206c656e677468206d757374206265203c3d2032604482015261030360f41b60648201526084016109d8565b60005b8251811015610d9b576000838281518110610d4057610d406127ea565b602002602001015190506000838381518110610d5e57610d5e6127ea565b6020026020010151670de0b6b3a7640000610d799190612791565b9050610d86338383611a52565b50508080610d9390612800565b915050610d23565b505050565b6000610dad848484611bd5565b610dff8433610dfa856040518060600160405280602881526020016128f9602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121b2565b61192d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ba7918590610dfa9086611610565b6005546001600160a01b03163314610e695760405162461bcd60e51b81526004016109d890612746565b6001600160a01b038116600081815260196020908152604091829020805460ff19166001179055600d80546001600160a01b0319168417905590519182527faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c2244339101610c3d565b6005546001600160a01b03163314610ef95760405162461bcd60e51b81526004016109d890612746565b610f0b81670de0b6b3a7640000612791565b60115550565b6005546001600160a01b03163314610f3b5760405162461bcd60e51b81526004016109d890612746565b601c805460ff1916911515919091179055565b6005546001600160a01b03163314610f785760405162461bcd60e51b81526004016109d890612746565b6040514790339082156108fc029083906000818181858888f19350505050158015610fa7573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610fd55760405162461bcd60e51b81526004016109d890612746565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110495760405162461bcd60e51b81526004016109d890612746565b6001600160a01b03811660009081526019602090815260408083208054600160ff199182168117909255601b90935292208054909116909117905561108d81611473565b50565b6005546001600160a01b031633146110ba5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109d890612746565b600854600160a81b900460ff161561112657600080fd5b6008805460ff60a81b1916600160a81b17905543602055426021556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a1565b606060048054610a8e906127b0565b6005546001600160a01b031633146111a55760405162461bcd60e51b81526004016109d890612746565b6014869055601584905560128590556013839055601682905560178190556111cd8582611610565b600b556016546014546111df91611610565b600c55600b546063108015906111f857506063600c5411155b6112285760405162461bcd60e51b81526020600482015260016024820152601d60fa1b60448201526064016109d8565b601254601354601754601454601554601654604080519687526020870195909552938501929092526060840152608083015260a08201527ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff9060c00160405180910390a1505050505050565b6005546001600160a01b031633146112be5760405162461bcd60e51b81526004016109d890612746565b610fa782826121ec565b6000610ba73384610dfa85604051806060016040528060258152602001612947602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906121b2565b6005546001600160a01b031633146113415760405162461bcd60e51b81526004016109d890612746565b6010805460ff1916911515919091179055565b6000610ba7338484611bd5565b6005546001600160a01b0316331461138b5760405162461bcd60e51b81526004016109d890612746565b61012c8111156113ec5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b60648201526084016109d8565b602255565b6005546001600160a01b0316331461141b5760405162461bcd60e51b81526004016109d890612746565b60185481151560ff90911615150361143257600080fd5b6018805460ff19168215159081179091556040519081527fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef90602001610c3d565b6005546001600160a01b0316331461149d5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b0381166115025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115885760405162461bcd60e51b81526004016109d890612746565b61159a81670de0b6b3a7640000612791565b905060646002546115ab9190612819565b81101561160b5760405162461bcd60e51b815260206004820152602860248201527f6d61782077616c6c65742063616e6e6f742062652073657420746f206c657373604482015267207468616e20312560c01b60648201526084016109d8565b600f55565b60008061161d838561283b565b90508381101561166f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109d8565b9392505050565b60008260000361168857506000610bab565b60006116948385612791565b9050826116a18583612819565b1461166f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109d8565b600061166f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612240565b806000036117455750565b61174e8161226e565b60165460145460019182916000916117669190611610565b60175460125461177591611610565b61177f919061283b565b9050600081156117965761179347836116f8565b90505b6000816117b060125460145461161090919063ffffffff16565b6117ba9190612791565b90506000826117d660175460165461161090919063ffffffff16565b6117e09190612791565b9050811561184057600d546040516001600160a01b03909116908390600081818185875af1925050503d8060008114611835576040519150601f19603f3d011682016040523d82523d6000602084013e61183a565b606091505b50909650505b801561189e57600e546040516001600160a01b03909116908290600081818185875af1925050503d8060008114611893576040519150601f19603f3d011682016040523d82523d6000602084013e611898565b606091505b50909550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea9828780156118ca5750865b6040805192835290151560208301520160405180910390a150505050505050565b600061166f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121b2565b6001600160a01b03831661198f5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109d8565b6001600160a01b0382166119f05760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109d8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ab65760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109d8565b6001600160a01b038216611b185760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109d8565b611b5581604051806060016040528060268152602001612921602691396001600160a01b03861660009081526020819052604090205491906121b2565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611b849082611610565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611a45565b6001600160a01b038316611c3a5760405162461bcd60e51b815260206004820152602660248201527f4942455032303a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016109d8565b6001600160a01b038216611c9c5760405162461bcd60e51b8152602060048201526024808201527f4942455032303a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109d8565b6001600160a01b0383166000908152601b60205260408120548190819060ff16611d1957600854600160a81b900460ff16611d195760405162461bcd60e51b815260206004820181905260248201527f54726164696e6720686173206e6f7420796574206265656e20656e61626c656460448201526064016109d8565b83600003611d3557611d2d86866000611a52565b505050505050565b600854600160a01b900460ff16158015611d6857506001600160a01b03861660009081526019602052604090205460ff16155b8015611d8d57506001600160a01b03851660009081526019602052604090205460ff16155b156121a7576001600160a01b0385166000908152601a602052604090205460ff168015611e4d57601254601354601754601c54929650909450925060ff1615611e4857602254326000908152601f6020526040902054611ded919061283b565b421015611e355760405162461bcd60e51b8152602060048201526016602482015275636f6f6c646f776e20706572696f642061637469766560501b60448201526064016109d8565b326000908152601f602052604090204290555b612074565b601454601554601654601c54929650909450925060ff1615611fe757602054611e7790600261283b565b4311611eba5760405162461bcd60e51b8152602060048201526012602482015271796f75207368616c6c206e6f74207061737360701b60448201526064016109d8565b601d543a1115611f0c5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e000000000000000060448201526064016109d8565b326000908152601e6020526040902054439003611f625760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e7920545820696e20626c6f636b60601b60448201526064016109d8565b602254326000908152601f6020526040902054611f7f919061283b565b421015611fc75760405162461bcd60e51b8152602060048201526016602482015275636f6f6c646f776e20706572696f642061637469766560501b60448201526064016109d8565b326000908152601e60209081526040808320439055601f90915290204290555b60105460ff1615612074576001600160a01b038616600090815260208190526040902054600f54612018878361283b565b11156120725760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b60648201526084016109d8565b505b60006120808584611610565b3060009081526020819052604090205460115491925090811080159081906120c157506001600160a01b038a166000908152601a602052604090205460ff16155b156120fe576008805460ff60a01b1916600160a01b1790556011546120e58161173a565b506000600a8190556009556008805460ff60a01b191690555b600061210f6064610a2b8b87611676565b905060006121226064610a2b8c8b611676565b9050612138612131828461283b565b8b906118eb565b995085156121555760095461214d9083611610565b600955612166565b600a546121629083611610565b600a555b6121718c3084611a52565b80156121a05760085461218f908d906001600160a01b031683611a52565b60025461219c90826118eb565b6002555b5050505050505b611d2d868686611a52565b600081848411156121d65760405162461bcd60e51b81526004016109d891906123d9565b5060006121e38486612853565b95945050505050565b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600081836122615760405162461bcd60e51b81526004016109d891906123d9565b5060006121e38486612819565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122a3576122a36127ea565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612320919061286a565b81600181518110612333576123336127ea565b6001600160a01b039283166020918202929092010152600654612359913091168461192d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612392908590600090869030904290600401612887565b600060405180830381600087803b1580156123ac57600080fd5b505af1158015611d2d573d6000803e3d6000fd5b6000602082840312156123d257600080fd5b5035919050565b600060208083528351808285015260005b81811015612406578581018301518582016040015282016123ea565b81811115612418576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461108d57600080fd5b8035801515811461245357600080fd5b919050565b6000806040838503121561246b57600080fd5b82356124768161242e565b915061248460208401612443565b90509250929050565b600080604083850312156124a057600080fd5b82356124ab8161242e565b946020939093013593505050565b6000602082840312156124cb57600080fd5b813561166f8161242e565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612515576125156124d6565b604052919050565b600067ffffffffffffffff821115612537576125376124d6565b5060051b60200190565b600082601f83011261255257600080fd5b813560206125676125628361251d565b6124ec565b82815260059290921b8401810191818101908684111561258657600080fd5b8286015b848110156125a1578035835291830191830161258a565b509695505050505050565b600080604083850312156125bf57600080fd5b823567ffffffffffffffff808211156125d757600080fd5b818501915085601f8301126125eb57600080fd5b813560206125fb6125628361251d565b82815260059290921b8401810191818101908984111561261a57600080fd5b948201945b838610156126415785356126328161242e565b8252948201949082019061261f565b9650508601359250508082111561265757600080fd5b5061266485828601612541565b9150509250929050565b60008060006060848603121561268357600080fd5b833561268e8161242e565b9250602084013561269e8161242e565b929592945050506040919091013590565b6000602082840312156126c157600080fd5b61166f82612443565b60008060008060008060c087890312156126e357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561272057600080fd5b823561272b8161242e565b9150602083013561273b8161242e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156127ab576127ab61277b565b500290565b600181811c908216806127c457607f821691505b6020821081036127e457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000600182016128125761281261277b565b5060010190565b60008261283657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561284e5761284e61277b565b500190565b6000828210156128655761286561277b565b500390565b60006020828403121561287c57600080fd5b815161166f8161242e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128d75784516001600160a01b0316835293830193918301916001016128b2565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f5d40bc22315db694f6c3f2bdffa1e448e689b579ece38e0e7aae84b81f569964736f6c634300080d0033
Deployed Bytecode
0x60806040526004361061031e5760003560e01c806375f0a874116101ab578063a614ff75116100f7578063d5e3725111610095578063e71dc3f51161006f578063e71dc3f514610942578063f2fde38b14610958578063f8b45b0514610978578063fc6b151c1461098e57600080fd5b8063d5e37251146108c6578063dd62ed3e146108e6578063e2f456051461092c57600080fd5b8063b4942988116100d1578063b494298814610846578063b62496f51461085c578063b74e3b111461088c578063d045a329146108ac57600080fd5b8063a614ff75146107f0578063a9059cbb14610810578063adb873bd1461083057600080fd5b806395451c29116101645780639a7a23d61161013e5780639a7a23d6146107845780639c3b4fdc146107a4578063a0d82dc5146107ba578063a457c2d7146107d057600080fd5b806395451c291461073957806395d89b411461074f578063992c58e41461076457600080fd5b806375f0a874146106905780637fdde05c146106b05780638a8c523c146106d05780638c3c82b2146106e55780638da5cb5b146106fb5780638ea5220f1461071957600080fd5b806349bd5a5e1161026a5780635d098b38116102235780637088fb7f116101fd5780637088fb7f1461061057806370a0823114610625578063715018a61461065b57806375829def1461067057600080fd5b80635d098b38146105b05780635eee4bae146105d0578063679ca6e9146105f057600080fd5b806349bd5a5e146104ec5780634a62bb651461050c5780634a74bb02146105265780634ada218b146105405780634fbee193146105615780635124f8741461059a57600080fd5b806318160ddd116102d75780632307b441116102b15780632307b4411461047057806323b872dd14610490578063313ce567146104b057806339509351146104cc57600080fd5b806318160ddd1461041b5780631d7b1fb41461043a5780631f53ac021461045057600080fd5b806303fd2a451461032a57806305ca5f081461036757806306fdde031461038957806308dfe8a5146103ab578063095ea7b3146103cb5780631694505e146103fb57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5060085461034a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561037357600080fd5b506103876103823660046123c0565b6109ae565b005b34801561039557600080fd5b5061039e610a7f565b60405161035e91906123d9565b3480156103b757600080fd5b506103876103c6366004612458565b610b11565b3480156103d757600080fd5b506103eb6103e636600461248d565b610b9a565b604051901515815260200161035e565b34801561040757600080fd5b5060065461034a906001600160a01b031681565b34801561042757600080fd5b506002545b60405190815260200161035e565b34801561044657600080fd5b5061042c60225481565b34801561045c57600080fd5b5061038761046b3660046124b9565b610bb1565b34801561047c57600080fd5b5061038761048b3660046125ac565b610c48565b34801561049c57600080fd5b506103eb6104ab36600461266e565b610da0565b3480156104bc57600080fd5b506040516012815260200161035e565b3480156104d857600080fd5b506103eb6104e736600461248d565b610e09565b3480156104f857600080fd5b5060075461034a906001600160a01b031681565b34801561051857600080fd5b50601c546103eb9060ff1681565b34801561053257600080fd5b506018546103eb9060ff1681565b34801561054c57600080fd5b506008546103eb90600160a81b900460ff1681565b34801561056d57600080fd5b506103eb61057c3660046124b9565b6001600160a01b031660009081526019602052604090205460ff1690565b3480156105a657600080fd5b5061042c60145481565b3480156105bc57600080fd5b506103876105cb3660046124b9565b610e3f565b3480156105dc57600080fd5b506103876105eb3660046123c0565b610ecf565b3480156105fc57600080fd5b5061038761060b3660046126af565b610f11565b34801561061c57600080fd5b50610387610f4e565b34801561063157600080fd5b5061042c6106403660046124b9565b6001600160a01b031660009081526020819052604090205490565b34801561066757600080fd5b50610387610fab565b34801561067c57600080fd5b5061038761068b3660046124b9565b61101f565b34801561069c57600080fd5b50600d5461034a906001600160a01b031681565b3480156106bc57600080fd5b506103876106cb366004612458565b611090565b3480156106dc57600080fd5b506103876110e5565b3480156106f157600080fd5b5061042c60215481565b34801561070757600080fd5b506005546001600160a01b031661034a565b34801561072557600080fd5b50600e5461034a906001600160a01b031681565b34801561074557600080fd5b5061042c60125481565b34801561075b57600080fd5b5061039e61116c565b34801561077057600080fd5b5061038761077f3660046126ca565b61117b565b34801561079057600080fd5b5061038761079f366004612458565b611294565b3480156107b057600080fd5b5061042c60165481565b3480156107c657600080fd5b5061042c60175481565b3480156107dc57600080fd5b506103eb6107eb36600461248d565b6112c8565b3480156107fc57600080fd5b5061038761080b3660046126af565b611317565b34801561081c57600080fd5b506103eb61082b36600461248d565b611354565b34801561083c57600080fd5b5061042c60135481565b34801561085257600080fd5b5061042c60205481565b34801561086857600080fd5b506103eb6108773660046124b9565b601a6020526000908152604090205460ff1681565b34801561089857600080fd5b506103876108a73660046123c0565b611361565b3480156108b857600080fd5b506010546103eb9060ff1681565b3480156108d257600080fd5b506103876108e13660046126af565b6113f1565b3480156108f257600080fd5b5061042c61090136600461270d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561093857600080fd5b5061042c60115481565b34801561094e57600080fd5b5061042c60155481565b34801561096457600080fd5b506103876109733660046124b9565b611473565b34801561098457600080fd5b5061042c600f5481565b34801561099a57600080fd5b506103876109a93660046123c0565b61155e565b6005546001600160a01b031633146109e15760405162461bcd60e51b81526004016109d890612746565b60405180910390fd5b6109f381670de0b6b3a7640000612791565b90506000610a0e600954600a5461161090919063ffffffff16565b90506000610a3182610a2b600a548661167690919063ffffffff16565b906116f8565b90506000610a4e83610a2b6009548761167690919063ffffffff16565b9050610a598461173a565b600a54610a6690836118eb565b600a55600954610a7690826118eb565b60095550505050565b606060038054610a8e906127b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610aba906127b0565b8015610b075780601f10610adc57610100808354040283529160200191610b07565b820191906000526020600020905b815481529060010190602001808311610aea57829003601f168201915b5050505050905090565b6005546001600160a01b03163314610b3b5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000610ba733848461192d565b5060015b92915050565b6005546001600160a01b03163314610bdb5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b038116600081815260196020908152604091829020805460ff19166001179055600e80546001600160a01b0319168417905590519182527f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa91015b60405180910390a150565b6005546001600160a01b03163314610c725760405162461bcd60e51b81526004016109d890612746565b8051825114610cc35760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e677468000060448201526064016109d8565b60c882511115610d205760405162461bcd60e51b815260206004820152602260248201527f57616c6c657473206c697374206c656e677468206d757374206265203c3d2032604482015261030360f41b60648201526084016109d8565b60005b8251811015610d9b576000838281518110610d4057610d406127ea565b602002602001015190506000838381518110610d5e57610d5e6127ea565b6020026020010151670de0b6b3a7640000610d799190612791565b9050610d86338383611a52565b50508080610d9390612800565b915050610d23565b505050565b6000610dad848484611bd5565b610dff8433610dfa856040518060600160405280602881526020016128f9602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121b2565b61192d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ba7918590610dfa9086611610565b6005546001600160a01b03163314610e695760405162461bcd60e51b81526004016109d890612746565b6001600160a01b038116600081815260196020908152604091829020805460ff19166001179055600d80546001600160a01b0319168417905590519182527faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c2244339101610c3d565b6005546001600160a01b03163314610ef95760405162461bcd60e51b81526004016109d890612746565b610f0b81670de0b6b3a7640000612791565b60115550565b6005546001600160a01b03163314610f3b5760405162461bcd60e51b81526004016109d890612746565b601c805460ff1916911515919091179055565b6005546001600160a01b03163314610f785760405162461bcd60e51b81526004016109d890612746565b6040514790339082156108fc029083906000818181858888f19350505050158015610fa7573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610fd55760405162461bcd60e51b81526004016109d890612746565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110495760405162461bcd60e51b81526004016109d890612746565b6001600160a01b03811660009081526019602090815260408083208054600160ff199182168117909255601b90935292208054909116909117905561108d81611473565b50565b6005546001600160a01b031633146110ba5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109d890612746565b600854600160a81b900460ff161561112657600080fd5b6008805460ff60a81b1916600160a81b17905543602055426021556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a1565b606060048054610a8e906127b0565b6005546001600160a01b031633146111a55760405162461bcd60e51b81526004016109d890612746565b6014869055601584905560128590556013839055601682905560178190556111cd8582611610565b600b556016546014546111df91611610565b600c55600b546063108015906111f857506063600c5411155b6112285760405162461bcd60e51b81526020600482015260016024820152601d60fa1b60448201526064016109d8565b601254601354601754601454601554601654604080519687526020870195909552938501929092526060840152608083015260a08201527ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff9060c00160405180910390a1505050505050565b6005546001600160a01b031633146112be5760405162461bcd60e51b81526004016109d890612746565b610fa782826121ec565b6000610ba73384610dfa85604051806060016040528060258152602001612947602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906121b2565b6005546001600160a01b031633146113415760405162461bcd60e51b81526004016109d890612746565b6010805460ff1916911515919091179055565b6000610ba7338484611bd5565b6005546001600160a01b0316331461138b5760405162461bcd60e51b81526004016109d890612746565b61012c8111156113ec5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b60648201526084016109d8565b602255565b6005546001600160a01b0316331461141b5760405162461bcd60e51b81526004016109d890612746565b60185481151560ff90911615150361143257600080fd5b6018805460ff19168215159081179091556040519081527fff5917043f8453af413305b2dbd1ed9748a37df481beb71ba4b9b212a07b9bef90602001610c3d565b6005546001600160a01b0316331461149d5760405162461bcd60e51b81526004016109d890612746565b6001600160a01b0381166115025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115885760405162461bcd60e51b81526004016109d890612746565b61159a81670de0b6b3a7640000612791565b905060646002546115ab9190612819565b81101561160b5760405162461bcd60e51b815260206004820152602860248201527f6d61782077616c6c65742063616e6e6f742062652073657420746f206c657373604482015267207468616e20312560c01b60648201526084016109d8565b600f55565b60008061161d838561283b565b90508381101561166f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109d8565b9392505050565b60008260000361168857506000610bab565b60006116948385612791565b9050826116a18583612819565b1461166f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109d8565b600061166f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612240565b806000036117455750565b61174e8161226e565b60165460145460019182916000916117669190611610565b60175460125461177591611610565b61177f919061283b565b9050600081156117965761179347836116f8565b90505b6000816117b060125460145461161090919063ffffffff16565b6117ba9190612791565b90506000826117d660175460165461161090919063ffffffff16565b6117e09190612791565b9050811561184057600d546040516001600160a01b03909116908390600081818185875af1925050503d8060008114611835576040519150601f19603f3d011682016040523d82523d6000602084013e61183a565b606091505b50909650505b801561189e57600e546040516001600160a01b03909116908290600081818185875af1925050503d8060008114611893576040519150601f19603f3d011682016040523d82523d6000602084013e611898565b606091505b50909550505b7f31ea026303a62d39c4ad14716f9621f1afe3242309c2ed761d4e241ae4bf2ea9828780156118ca5750865b6040805192835290151560208301520160405180910390a150505050505050565b600061166f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121b2565b6001600160a01b03831661198f5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109d8565b6001600160a01b0382166119f05760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109d8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ab65760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109d8565b6001600160a01b038216611b185760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109d8565b611b5581604051806060016040528060268152602001612921602691396001600160a01b03861660009081526020819052604090205491906121b2565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611b849082611610565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611a45565b6001600160a01b038316611c3a5760405162461bcd60e51b815260206004820152602660248201527f4942455032303a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016109d8565b6001600160a01b038216611c9c5760405162461bcd60e51b8152602060048201526024808201527f4942455032303a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016109d8565b6001600160a01b0383166000908152601b60205260408120548190819060ff16611d1957600854600160a81b900460ff16611d195760405162461bcd60e51b815260206004820181905260248201527f54726164696e6720686173206e6f7420796574206265656e20656e61626c656460448201526064016109d8565b83600003611d3557611d2d86866000611a52565b505050505050565b600854600160a01b900460ff16158015611d6857506001600160a01b03861660009081526019602052604090205460ff16155b8015611d8d57506001600160a01b03851660009081526019602052604090205460ff16155b156121a7576001600160a01b0385166000908152601a602052604090205460ff168015611e4d57601254601354601754601c54929650909450925060ff1615611e4857602254326000908152601f6020526040902054611ded919061283b565b421015611e355760405162461bcd60e51b8152602060048201526016602482015275636f6f6c646f776e20706572696f642061637469766560501b60448201526064016109d8565b326000908152601f602052604090204290555b612074565b601454601554601654601c54929650909450925060ff1615611fe757602054611e7790600261283b565b4311611eba5760405162461bcd60e51b8152602060048201526012602482015271796f75207368616c6c206e6f74207061737360701b60448201526064016109d8565b601d543a1115611f0c5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e000000000000000060448201526064016109d8565b326000908152601e6020526040902054439003611f625760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e7920545820696e20626c6f636b60601b60448201526064016109d8565b602254326000908152601f6020526040902054611f7f919061283b565b421015611fc75760405162461bcd60e51b8152602060048201526016602482015275636f6f6c646f776e20706572696f642061637469766560501b60448201526064016109d8565b326000908152601e60209081526040808320439055601f90915290204290555b60105460ff1615612074576001600160a01b038616600090815260208190526040902054600f54612018878361283b565b11156120725760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b60648201526084016109d8565b505b60006120808584611610565b3060009081526020819052604090205460115491925090811080159081906120c157506001600160a01b038a166000908152601a602052604090205460ff16155b156120fe576008805460ff60a01b1916600160a01b1790556011546120e58161173a565b506000600a8190556009556008805460ff60a01b191690555b600061210f6064610a2b8b87611676565b905060006121226064610a2b8c8b611676565b9050612138612131828461283b565b8b906118eb565b995085156121555760095461214d9083611610565b600955612166565b600a546121629083611610565b600a555b6121718c3084611a52565b80156121a05760085461218f908d906001600160a01b031683611a52565b60025461219c90826118eb565b6002555b5050505050505b611d2d868686611a52565b600081848411156121d65760405162461bcd60e51b81526004016109d891906123d9565b5060006121e38486612853565b95945050505050565b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600081836122615760405162461bcd60e51b81526004016109d891906123d9565b5060006121e38486612819565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122a3576122a36127ea565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612320919061286a565b81600181518110612333576123336127ea565b6001600160a01b039283166020918202929092010152600654612359913091168461192d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612392908590600090869030904290600401612887565b600060405180830381600087803b1580156123ac57600080fd5b505af1158015611d2d573d6000803e3d6000fd5b6000602082840312156123d257600080fd5b5035919050565b600060208083528351808285015260005b81811015612406578581018301518582016040015282016123ea565b81811115612418576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461108d57600080fd5b8035801515811461245357600080fd5b919050565b6000806040838503121561246b57600080fd5b82356124768161242e565b915061248460208401612443565b90509250929050565b600080604083850312156124a057600080fd5b82356124ab8161242e565b946020939093013593505050565b6000602082840312156124cb57600080fd5b813561166f8161242e565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612515576125156124d6565b604052919050565b600067ffffffffffffffff821115612537576125376124d6565b5060051b60200190565b600082601f83011261255257600080fd5b813560206125676125628361251d565b6124ec565b82815260059290921b8401810191818101908684111561258657600080fd5b8286015b848110156125a1578035835291830191830161258a565b509695505050505050565b600080604083850312156125bf57600080fd5b823567ffffffffffffffff808211156125d757600080fd5b818501915085601f8301126125eb57600080fd5b813560206125fb6125628361251d565b82815260059290921b8401810191818101908984111561261a57600080fd5b948201945b838610156126415785356126328161242e565b8252948201949082019061261f565b9650508601359250508082111561265757600080fd5b5061266485828601612541565b9150509250929050565b60008060006060848603121561268357600080fd5b833561268e8161242e565b9250602084013561269e8161242e565b929592945050506040919091013590565b6000602082840312156126c157600080fd5b61166f82612443565b60008060008060008060c087890312156126e357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561272057600080fd5b823561272b8161242e565b9150602083013561273b8161242e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156127ab576127ab61277b565b500290565b600181811c908216806127c457607f821691505b6020821081036127e457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000600182016128125761281261277b565b5060010190565b60008261283657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561284e5761284e61277b565b500190565b6000828210156128655761286561277b565b500390565b60006020828403121561287c57600080fd5b815161166f8161242e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128d75784516001600160a01b0316835293830193918301916001016128b2565b50506001600160a01b0396909616606085015250505060800152939250505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f5d40bc22315db694f6c3f2bdffa1e448e689b579ece38e0e7aae84b81f569964736f6c634300080d0033
Deployed Bytecode Sourcemap
15814:14883:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15985:64;;;;;;;;;;-1:-1:-1;15985:64:0;;;;-1:-1:-1;;;;;15985:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;15985:64:0;;;;;;;;28624:443;;;;;;;;;;-1:-1:-1;28624:443:0;;;;;:::i;:::-;;:::i;:::-;;3697:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20552:181::-;;;;;;;;;;-1:-1:-1;20552:181:0;;;;;:::i;:::-;;:::i;4611:169::-;;;;;;;;;;-1:-1:-1;4611:169:0;;;;;:::i;:::-;;:::i;:::-;;;2115:14:1;;2108:22;2090:41;;2078:2;2063:18;4611:169:0;1950:187:1;15900:41:0;;;;;;;;;;-1:-1:-1;15900:41:0;;;;-1:-1:-1;;;;;15900:41:0;;;4018:108;;;;;;;;;;-1:-1:-1;4106:12:0;;4018:108;;;2523:25:1;;;2511:2;2496:18;4018:108:0;2377:177:1;17327:33:0;;;;;;;;;;;;;;;;20353:187;;;;;;;;;;-1:-1:-1;20353:187:0;;;;;:::i;:::-;;:::i;30133:561::-;;;;;;;;;;-1:-1:-1;30133:561:0;;;;;:::i;:::-;;:::i;4788:345::-;;;;;;;;;;-1:-1:-1;4788:345:0;;;;;:::i;:::-;;:::i;19758:93::-;;;;;;;;;;-1:-1:-1;19758:93:0;;19841:2;5901:36:1;;5889:2;5874:18;19758:93:0;5759:184:1;5141:218:0;;;;;;;;;;-1:-1:-1;5141:218:0;;;;;:::i;:::-;;:::i;15950:28::-;;;;;;;;;;-1:-1:-1;15950:28:0;;;;-1:-1:-1;;;;;15950:28:0;;;16936:34;;;;;;;;;;-1:-1:-1;16936:34:0;;;;;;;;16689:40;;;;;;;;;;-1:-1:-1;16689:40:0;;;;;;;;16084:34;;;;;;;;;;-1:-1:-1;16084:34:0;;;;-1:-1:-1;;;16084:34:0;;;;;;23472:126;;;;;;;;;;-1:-1:-1;23472:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;23562:28:0;23538:4;23562:28;;;:19;:28;;;;;;;;;23472:126;16554:31;;;;;;;;;;;;;;;;20140:205;;;;;;;;;;-1:-1:-1;20140:205:0;;;;;:::i;:::-;;:::i;21760:120::-;;;;;;;;;;-1:-1:-1;21760:120:0;;;;;:::i;:::-;;:::i;20896:99::-;;;;;;;;;;-1:-1:-1;20896:99:0;;;;;:::i;:::-;;:::i;21606:146::-;;;;;;;;;;;;;:::i;4134:127::-;;;;;;;;;;-1:-1:-1;4134:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4235:18:0;4208:7;4235:18;;;;;;;;;;;;4134:127;7589:148;;;;;;;;;;;;;:::i;22511:212::-;;;;;;;;;;-1:-1:-1;22511:212:0;;;;;:::i;:::-;;:::i;16277:38::-;;;;;;;;;;-1:-1:-1;16277:38:0;;;;-1:-1:-1;;;;;16277:38:0;;;20741:147;;;;;;;;;;-1:-1:-1;20741:147:0;;;;;:::i;:::-;;:::i;19896:232::-;;;;;;;;;;;;;:::i;17265:30::-;;;;;;;;;;;;;;;;7375:79;;;;;;;;;;-1:-1:-1;7440:6:0;;-1:-1:-1;;;;;7440:6:0;7375:79;;16325:32;;;;;;;;;;-1:-1:-1;16325:32:0;;;;-1:-1:-1;;;;;16325:32:0;;;16482;;;;;;;;;;;;;;;;3805:104;;;;;;;;;;;;;:::i;22731:733::-;;;;;;;;;;-1:-1:-1;22731:733:0;;;;;:::i;:::-;;:::i;22104:140::-;;;;;;;;;;-1:-1:-1;22104:140:0;;;;;:::i;:::-;;:::i;16624:24::-;;;;;;;;;;;;;;;;16655:25;;;;;;;;;;;;;;;;5367:286;;;;;;;;;;-1:-1:-1;5367:286:0;;;;;:::i;:::-;;:::i;21003:103::-;;;;;;;;;;-1:-1:-1;21003:103:0;;;;;:::i;:::-;;:::i;4269:175::-;;;;;;;;;;-1:-1:-1;4269:175:0;;;;;:::i;:::-;;:::i;16521:26::-;;;;;;;;;;;;;;;;17214;;;;;;;;;;;;;;;;16797:57;;;;;;;;;;-1:-1:-1;16797:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21114:174;;;;;;;;;;-1:-1:-1;21114:174:0;;;;;:::i;:::-;;:::i;16400:35::-;;;;;;;;;;-1:-1:-1;16400:35:0;;;;;;;;21888:208;;;;;;;;;;-1:-1:-1;21888:208:0;;;;;:::i;:::-;;:::i;4452:151::-;;;;;;;;;;-1:-1:-1;4452:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4568:18:0;;;4541:7;4568:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4452:151;16442:33;;;;;;;;;;;;;;;;16592:25;;;;;;;;;;;;;;;;7745:244;;;;;;;;;;-1:-1:-1;7745:244:0;;;;;:::i;:::-;;:::i;16369:24::-;;;;;;;;;;;;;;;;21302:218;;;;;;;;;;-1:-1:-1;21302:218:0;;;;;:::i;:::-;;:::i;28624:443::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;;;;;;;;;28712:17:::1;:6:::0;28722::::1;28712:17;:::i;:::-;28703:26;;28740:19;28762:25;28776:10;;28762:9;;:13;;:25;;;;:::i;:::-;28740:47;;28798:15;28816:38;28842:11;28816:21;28827:9;;28816:6;:10;;:21;;;;:::i;:::-;:25:::0;::::1;:38::i;:::-;28798:56;;28865:16;28884:39;28911:11;28884:22;28895:10;;28884:6;:10;;:22;;;;:::i;:39::-;28865:58;;28936:28;28957:6;28936:20;:28::i;:::-;28989:9;::::0;:22:::1;::::0;29003:7;28989:13:::1;:22::i;:::-;28977:9;:34:::0;29035:10:::1;::::0;:24:::1;::::0;29050:8;29035:14:::1;:24::i;:::-;29022:10;:37:::0;-1:-1:-1;;;;28624:443:0:o;3697:100::-;3751:13;3784:5;3777:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3697:100;:::o;20552:181::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20636:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20636:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20691:34;;2090:41:1;;;20691:34:0::1;::::0;2063:18:1;20691:34:0::1;;;;;;;20552:181:::0;;:::o;4611:169::-;4694:4;4711:39;635:10;4734:7;4743:6;4711:8;:39::i;:::-;-1:-1:-1;4768:4:0;4611:169;;;;;:::o;20353:187::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20421:27:0;::::1;;::::0;;;:19:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;20421:34:0::1;20451:4;20421:34;::::0;;20466:9:::1;:27:::0;;-1:-1:-1;;;;;;20466:27:0::1;::::0;::::1;::::0;;20509:23;;160:51:1;;;20509:23:0::1;::::0;133:18:1;20509:23:0::1;;;;;;;;20353:187:::0;:::o;30133:561::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;30305:6:::1;:13;30280:14;:21;:38;30272:81;;;::::0;-1:-1:-1;;;30272:81:0;;8531:2:1;30272:81:0::1;::::0;::::1;8513:21:1::0;8570:2;8550:18;;;8543:30;8609:32;8589:18;;;8582:60;8659:18;;30272:81:0::1;8329:354:1::0;30272:81:0::1;30397:3;30372:14;:21;:28;;30364:75;;;::::0;-1:-1:-1;;;30364:75:0;;8890:2:1;30364:75:0::1;::::0;::::1;8872:21:1::0;8929:2;8909:18;;;8902:30;8968:34;8948:18;;;8941:62;-1:-1:-1;;;9019:18:1;;;9012:32;9061:19;;30364:75:0::1;8688:398:1::0;30364:75:0::1;30455:9;30450:237;30474:14;:21;30470:1;:25;30450:237;;;30517:14;30534;30549:1;30534:17;;;;;;;;:::i;:::-;;;;;;;30517:34;;30566:21;30590:6;30597:1;30590:9;;;;;;;;:::i;:::-;;;;;;;30603:6;30590:20;;;;:::i;:::-;30566:44;;30625:50;30641:10;30653:6;30661:13;30625:15;:50::i;:::-;30502:185;;30497:3;;;;;:::i;:::-;;;;30450:237;;;;30133:561:::0;;:::o;4788:345::-;4901:4;4918:36;4928:6;4936:9;4947:6;4918:9;:36::i;:::-;4965:138;4974:6;635:10;4996:106;5034:6;4996:106;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4996:19:0;;;;;;:11;:19;;;;;;;;635:10;4996:33;;;;;;;;;;:37;:106::i;:::-;4965:8;:138::i;:::-;-1:-1:-1;5121:4:0;4788:345;;;;;:::o;5141:218::-;635:10;5229:4;5278:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5278:34:0;;;;;;;;;;5229:4;;5246:83;;5269:7;;5278:50;;5317:10;5278:38;:50::i;20140:205::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20214:27:0;::::1;;::::0;;;:19:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;20214:34:0::1;20244:4;20214:34;::::0;;20259:15:::1;:33:::0;;-1:-1:-1;;;;;;20259:33:0::1;::::0;::::1;::::0;;20308:29;;160:51:1;;;20308:29:0::1;::::0;133:18:1;20308:29:0::1;14:203:1::0;21760:120:0;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;21855:17:::1;:6:::0;21865::::1;21855:17;:::i;:::-;21834:18;:38:::0;-1:-1:-1;21760:120:0:o;20896:99::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;20965:14:::1;:22:::0;;-1:-1:-1;;20965:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20896:99::o;21606:146::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;21705:39:::1;::::0;21673:21:::1;::::0;21713:10:::1;::::0;21705:39;::::1;;;::::0;21673:21;;21653:17:::1;21705:39:::0;21653:17;21705:39;21673:21;21713:10;21705:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21642:110;21606:146::o:0;7589:148::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;7680:6:::1;::::0;7659:40:::1;::::0;7696:1:::1;::::0;-1:-1:-1;;;;;7680:6:0::1;::::0;7659:40:::1;::::0;7696:1;;7659:40:::1;7710:6;:19:::0;;-1:-1:-1;;;;;;7710:19:0::1;::::0;;7589:148::o;22511:212::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22580:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;;:36;;22612:4:::1;-1:-1:-1::0;;22580:36:0;;::::1;::::0;::::1;::::0;;;22627:33:::1;:43:::0;;;;;:50;;;;::::1;::::0;;::::1;::::0;;22688:27:::1;22580:29:::0;22688:17:::1;:27::i;:::-;22511:212:::0;:::o;20741:147::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20830:41:0;;;::::1;;::::0;;;:33:::1;:41;::::0;;;;:50;;-1:-1:-1;;20830:50:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20741:147::o;19896:232::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;19960:14:::1;::::0;-1:-1:-1;;;19960:14:0;::::1;;;19959:15;19951:24;;;::::0;::::1;;19986:14;:21:::0;;-1:-1:-1;;;;19986:21:0::1;-1:-1:-1::0;;;19986:21:0::1;::::0;;20032:12:::1;20018:11;:26:::0;20073:15:::1;20055;:33:::0;20104:16:::1;::::0;::::1;::::0;19986:21;;20104:16:::1;19896:232::o:0;3805:104::-;3861:13;3894:7;3887:14;;;;;:::i;22731:733::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;22919:16:::1;:31:::0;;;22961:10:::1;:20:::0;;;22992:17:::1;:33:::0;;;23036:11:::1;:22:::0;;;23069:9:::1;:18:::0;;;23098:10:::1;:20:::0;;;23147:33:::1;23012:13:::0;23111:7;23147:21:::1;:33::i;:::-;23131:13;:49:::0;23227:9:::1;::::0;23206:16:::1;::::0;:31:::1;::::0;:20:::1;:31::i;:::-;23191:12;:46:::0;23271:13:::1;::::0;23288:2:::1;-1:-1:-1::0;23271:19:0;::::1;::::0;:41:::1;;;23310:2;23294:12;;:18;;23271:41;23263:55;;;::::0;-1:-1:-1;;;23263:55:0;;9565:2:1;23263:55:0::1;::::0;::::1;9547:21:1::0;9604:1;9584:18;;;9577:29;-1:-1:-1;;;9622:18:1;;;9615:31;9663:18;;23263:55:0::1;9363:324:1::0;23263:55:0::1;23347:17;::::0;23366:11:::1;::::0;23379:10:::1;::::0;23391:16:::1;::::0;23434:10:::1;::::0;23446:9:::1;::::0;23336:120:::1;::::0;;9979:25:1;;;10035:2;10020:18;;10013:34;;;;10063:18;;;10056:34;;;;10121:2;10106:18;;10099:34;10164:3;10149:19;;10142:35;10208:3;10193:19;;10186:35;23336:120:0::1;::::0;9966:3:1;9951:19;23336:120:0::1;;;;;;;22731:733:::0;;;;;;:::o;22104:140::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;22195:41:::1;22224:4;22230:5;22195:28;:41::i;5367:286::-:0;5460:4;5477:146;635:10;5500:7;5509:113;5548:15;5509:113;;;;;;;;;;;;;;;;;635:10;5509:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5509:34:0;;;;;;;;;;;;:38;:113::i;21003:103::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;21074:16:::1;:24:::0;;-1:-1:-1;;21074:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21003:103::o;4269:175::-;4355:4;4372:42;635:10;4396:9;4407:6;4372:9;:42::i;21114:174::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;21202:3:::1;21193:5;:12;;21185:63;;;::::0;-1:-1:-1;;;21185:63:0;;10434:2:1;21185:63:0::1;::::0;::::1;10416:21:1::0;10473:2;10453:18;;;10446:30;10512:34;10492:18;;;10485:62;-1:-1:-1;;;10563:18:1;;;10556:36;10609:19;;21185:63:0::1;10232:402:1::0;21185:63:0::1;21259:13;:21:::0;21114:174::o;21888:208::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;21968:21:::1;::::0;:32;::::1;;:21;::::0;;::::1;:32;;::::0;21960:41:::1;;;::::0;::::1;;22012:21;:31:::0;;-1:-1:-1;;22012:31:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22059:29:::1;::::0;2090:41:1;;;22059:29:0::1;::::0;2078:2:1;2063:18;22059:29:0::1;1950:187:1::0;7745:244:0;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7834:22:0;::::1;7826:73;;;::::0;-1:-1:-1;;;7826:73:0;;10841:2:1;7826:73:0::1;::::0;::::1;10823:21:1::0;10880:2;10860:18;;;10853:30;10919:34;10899:18;;;10892:62;-1:-1:-1;;;10970:18:1;;;10963:36;11016:19;;7826:73:0::1;10639:402:1::0;7826:73:0::1;7936:6;::::0;7915:38:::1;::::0;-1:-1:-1;;;;;7915:38:0;;::::1;::::0;7936:6:::1;::::0;7915:38:::1;::::0;7936:6:::1;::::0;7915:38:::1;7964:6;:17:::0;;-1:-1:-1;;;;;;7964:17:0::1;-1:-1:-1::0;;;;;7964:17:0;;;::::1;::::0;;;::::1;::::0;;7745:244::o;21302:218::-;7502:6;;-1:-1:-1;;;;;7502:6:0;635:10;7502:22;7494:67;;;;-1:-1:-1;;;7494:67:0;;;;;;;:::i;:::-;21377:16:::1;:5:::0;21386:6:::1;21377:16;:::i;:::-;21369:24;;21436:3;21421:12;;:18;;;;:::i;:::-;21412:5;:27;;21404:80;;;::::0;-1:-1:-1;;;21404:80:0;;11470:2:1;21404:80:0::1;::::0;::::1;11452:21:1::0;11509:2;11489:18;;;11482:30;11548:34;11528:18;;;11521:62;-1:-1:-1;;;11599:18:1;;;11592:38;11647:19;;21404:80:0::1;11268:404:1::0;21404:80:0::1;21495:9;:17:::0;21302:218::o;931:179::-;989:7;;1021:5;1025:1;1021;:5;:::i;:::-;1009:17;;1050:1;1045;:6;;1037:46;;;;-1:-1:-1;;;1037:46:0;;12012:2:1;1037:46:0;;;11994:21:1;12051:2;12031:18;;;12024:30;12090:29;12070:18;;;12063:57;12137:18;;1037:46:0;11810:351:1;1037:46:0;1101:1;931:179;-1:-1:-1;;;931:179:0:o;1460:248::-;1518:7;1542:1;1547;1542:6;1538:47;;-1:-1:-1;1572:1:0;1565:8;;1538:47;1597:9;1609:5;1613:1;1609;:5;:::i;:::-;1597:17;-1:-1:-1;1642:1:0;1633:5;1637:1;1597:17;1633:5;:::i;:::-;:10;1625:56;;;;-1:-1:-1;;;1625:56:0;;12368:2:1;1625:56:0;;;12350:21:1;12407:2;12387:18;;;12380:30;12446:34;12426:18;;;12419:62;-1:-1:-1;;;12497:18:1;;;12490:31;12538:19;;1625:56:0;12166:397:1;1716:132:0;1774:7;1801:39;1805:1;1808;1801:39;;;;;;;;;;;;;;;;;:3;:39::i;29100:1025::-;29169:6;29179:1;29169:11;29165:50;;29100:1025;:::o;29165:50::-;29225:24;29242:6;29225:16;:24::i;:::-;29418:9;;29397:16;;29277:4;;;;29262:12;;29397:31;;:16;:20;:31::i;:::-;29383:10;;29361:17;;:33;;:21;:33::i;:::-;:67;;;;:::i;:::-;29335:93;-1:-1:-1;29441:19:0;29475;;29471:108;;29525:42;:21;29551:15;29525:25;:42::i;:::-;29511:56;;29471:108;29589:23;29657:11;29615:39;29636:17;;29615:16;;:20;;:39;;;;:::i;:::-;:53;;;;:::i;:::-;29589:79;;29679:17;29727:11;29699:25;29713:10;;29699:9;;:13;;:25;;;;:::i;:::-;:39;;;;:::i;:::-;29679:59;-1:-1:-1;29763:19:0;;29759:123;;29821:15;;29813:57;;-1:-1:-1;;;;;29821:15:0;;;;29850;;29813:57;;;;29850:15;29821;29813:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29799:71:0;;-1:-1:-1;;29759:123:0;29906:13;;29902:108;;29961:9;;29953:45;;-1:-1:-1;;;;;29961:9:0;;;;29984;;29953:45;;;;29984:9;29961;29953:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29936:62:0;;-1:-1:-1;;29902:108:0;30027:90;30055:15;30085:7;:21;;;;;30096:10;30085:21;30027:90;;;12946:25:1;;;13014:14;;13007:22;13002:2;12987:18;;12980:50;12919:18;30027:90:0;;;;;;;29154:971;;;;;;29100:1025;:::o;1118:136::-;1176:7;1203:43;1207:1;1210;1203:43;;;;;;;;;;;;;;;;;:3;:43::i;6593:346::-;-1:-1:-1;;;;;6695:19:0;;6687:68;;;;-1:-1:-1;;;6687:68:0;;13243:2:1;6687:68:0;;;13225:21:1;13282:2;13262:18;;;13255:30;13321:34;13301:18;;;13294:62;-1:-1:-1;;;13372:18:1;;;13365:34;13416:19;;6687:68:0;13041:400:1;6687:68:0;-1:-1:-1;;;;;6774:21:0;;6766:68;;;;-1:-1:-1;;;6766:68:0;;13648:2:1;6766:68:0;;;13630:21:1;13687:2;13667:18;;;13660:30;13726:34;13706:18;;;13699:62;-1:-1:-1;;;13777:18:1;;;13770:32;13819:19;;6766:68:0;13446:398:1;6766:68:0;-1:-1:-1;;;;;6847:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6899:32;;2523:25:1;;;6899:32:0;;2496:18:1;6899:32:0;;;;;;;;6593:346;;;:::o;5661:538::-;-1:-1:-1;;;;;5767:20:0;;5759:70;;;;-1:-1:-1;;;5759:70:0;;14051:2:1;5759:70:0;;;14033:21:1;14090:2;14070:18;;;14063:30;14129:34;14109:18;;;14102:62;-1:-1:-1;;;14180:18:1;;;14173:35;14225:19;;5759:70:0;13849:401:1;5759:70:0;-1:-1:-1;;;;;5848:23:0;;5840:71;;;;-1:-1:-1;;;5840:71:0;;14457:2:1;5840:71:0;;;14439:21:1;14496:2;14476:18;;;14469:30;14535:34;14515:18;;;14508:62;-1:-1:-1;;;14586:18:1;;;14579:33;14629:19;;5840:71:0;14255:399:1;5840:71:0;6004:70;6026:6;6004:70;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6004:17:0;;:9;:17;;;;;;;;;;;;:70;:21;:70::i;:::-;-1:-1:-1;;;;;5984:17:0;;;:9;:17;;;;;;;;;;;:90;;;;6108:20;;;;;;;:32;;6133:6;6108:24;:32::i;:::-;-1:-1:-1;;;;;6085:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;6156:35;2523:25:1;;;6085:20:0;;6156:35;;;;;;2496:18:1;6156:35:0;2377:177:1;23606:3494:0;-1:-1:-1;;;;;23706:18:0;;23698:69;;;;-1:-1:-1;;;23698:69:0;;14861:2:1;23698:69:0;;;14843:21:1;14900:2;14880:18;;;14873:30;14939:34;14919:18;;;14912:62;-1:-1:-1;;;14990:18:1;;;14983:36;15036:19;;23698:69:0;14659:402:1;23698:69:0;-1:-1:-1;;;;;23786:16:0;;23778:65;;;;-1:-1:-1;;;23778:65:0;;15268:2:1;23778:65:0;;;15250:21:1;15307:2;15287:18;;;15280:30;15346:34;15326:18;;;15319:62;-1:-1:-1;;;15397:18:1;;;15390:34;15441:19;;23778:65:0;15066:400:1;23778:65:0;-1:-1:-1;;;;;23946:39:0;;23856:21;23946:39;;;:33;:39;;;;;;23856:21;;;;23946:39;;23941:142;;24010:14;;-1:-1:-1;;;24010:14:0;;;;24002:59;;;;-1:-1:-1;;;24002:59:0;;15673:2:1;24002:59:0;;;15655:21:1;;;15692:18;;;15685:30;15751:34;15731:18;;;15724:62;15803:18;;24002:59:0;15471:356:1;24002:59:0;24099:6;24109:1;24099:11;24095:2942;;24127:28;24143:4;24149:2;24153:1;24127:15;:28::i;:::-;24170:7;;;23606:3494;;;:::o;24095:2942::-;24233:8;;-1:-1:-1;;;24233:8:0;;;;24232:9;:39;;;;-1:-1:-1;;;;;;24246:25:0;;;;;;:19;:25;;;;;;;;24245:26;24232:39;:67;;;;-1:-1:-1;;;;;;24276:23:0;;;;;;:19;:23;;;;;;;;24275:24;24232:67;24214:2823;;;-1:-1:-1;;;;;24343:29:0;;24326:14;24343:29;;;:25;:29;;;;;;;;24387:1494;;;;24437:17;;24483:11;;24522:10;;24557:14;;24437:17;;-1:-1:-1;24483:11:0;;-1:-1:-1;24522:10:0;-1:-1:-1;24557:14:0;;24553:269;;;24661:13;;24648:9;24619:39;;;;:28;:39;;;;;;:55;;24661:13;24619:55;:::i;:::-;24600:15;:74;;24592:134;;;;-1:-1:-1;;;24592:134:0;;16034:2:1;24592:134:0;;;16016:21:1;16073:2;16053:18;;;16046:30;-1:-1:-1;;;16092:18:1;;;16085:52;16154:18;;24592:134:0;15832:346:1;24592:134:0;24774:9;24745:39;;;;:28;:39;;;;;24787:15;24745:57;;24553:269;24387:1494;;;24906:16;;24951:10;;24989:9;;25023:14;;24906:16;;-1:-1:-1;24951:10:0;;-1:-1:-1;24989:9:0;-1:-1:-1;25023:14:0;;25019:598;;;25081:11;;:15;;25095:1;25081:15;:::i;:::-;25066:12;:30;25058:60;;;;-1:-1:-1;;;25058:60:0;;16385:2:1;25058:60:0;;;16367:21:1;16424:2;16404:18;;;16397:30;-1:-1:-1;;;16443:18:1;;;16436:48;16501:18;;25058:60:0;16183:342:1;25058:60:0;25160:13;;25145:11;:28;;25137:64;;;;-1:-1:-1;;;25137:64:0;;16732:2:1;25137:64:0;;;16714:21:1;16771:2;16751:18;;;16744:30;16810:26;16790:18;;;16783:54;16854:18;;25137:64:0;16530:348:1;25137:64:0;25253:9;25228:35;;;;:24;:35;;;;;;25267:12;25228:51;;25220:83;;;;-1:-1:-1;;;25220:83:0;;17085:2:1;25220:83:0;;;17067:21:1;17124:2;17104:18;;;17097:30;-1:-1:-1;;;17143:18:1;;;17136:50;17203:18;;25220:83:0;16883:344:1;25220:83:0;25391:13;;25378:9;25349:39;;;;:28;:39;;;;;;:55;;25391:13;25349:55;:::i;:::-;25330:15;:74;;25322:134;;;;-1:-1:-1;;;25322:134:0;;16034:2:1;25322:134:0;;;16016:21:1;16073:2;16053:18;;;16046:30;-1:-1:-1;;;16092:18:1;;;16085:52;16154:18;;25322:134:0;15832:346:1;25322:134:0;25500:9;25475:35;;;;:24;:35;;;;;;;;25513:12;25475:50;;25544:28;:39;;;;;25586:15;25544:57;;25019:598;25637:16;;;;25633:233;;;-1:-1:-1;;;;;4235:18:0;;25670:32;4235:18;;;;;;;;;;;25778:9;;25741:33;25768:6;4235:18;25741:33;:::i;:::-;:46;;25733:117;;;;-1:-1:-1;;;25733:117:0;;17434:2:1;25733:117:0;;;17416:21:1;17473:2;17453:18;;;17446:30;17512:34;17492:18;;;17485:62;-1:-1:-1;;;17563:18:1;;;17556:34;17607:19;;25733:117:0;17232:400:1;25733:117:0;25655:211;25633:233;25897:17;25917:25;:13;25935:6;25917:17;:25::i;:::-;26008:4;25959:28;4235:18;;;;;;;;;;;26070;;25897:45;;-1:-1:-1;4235:18:0;26046:42;;;;;;;26109:43;;-1:-1:-1;;;;;;26121:31:0;;;;;;:25;:31;;;;;;;;26120:32;26109:43;26105:325;;;26173:8;:15;;-1:-1:-1;;;;26173:15:0;-1:-1:-1;;;26173:15:0;;;26244:18;;26281:33;26244:18;26281:20;:33::i;:::-;-1:-1:-1;26345:1:0;26333:9;:13;;;26365:10;:14;26398:8;:16;;-1:-1:-1;;;;26398:16:0;;;26105:325;26446:12;26461:30;26487:3;26461:21;:6;26472:9;26461:10;:21::i;:30::-;26446:45;-1:-1:-1;26506:18:0;26527:28;26551:3;26527:19;:6;26538:7;26527:10;:19::i;:28::-;26506:49;-1:-1:-1;26581:29:0;26592:17;26506:49;26592:4;:17;:::i;:::-;26581:6;;:10;:29::i;:::-;26572:38;;26631:9;26627:155;;;26674:10;;:20;;26689:4;26674:14;:20::i;:::-;26661:10;:33;26627:155;;;26747:9;;:19;;26761:4;26747:13;:19::i;:::-;26735:9;:31;26627:155;26798:42;26814:4;26828;26835;26798:15;:42::i;:::-;26861:14;;26857:156;;26918:4;;26896:39;;26912:4;;-1:-1:-1;;;;;26918:4:0;26924:10;26896:15;:39::i;:::-;26969:12;;:28;;26986:10;26969:16;:28::i;:::-;26954:12;:43;26857:156;24311:2726;;;;;;24214:2823;27049:33;27065:4;27071:2;27075:6;27049:15;:33::i;1262:190::-;1348:7;1384:12;1376:6;;;;1368:29;;;;-1:-1:-1;;;1368:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1408:9:0;1420:5;1424:1;1420;:5;:::i;:::-;1408:17;1262:190;-1:-1:-1;;;;;1262:190:0:o;22252:188::-;-1:-1:-1;;;;;22335:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;22335:39:0;;;;;;;;;;22392:40;;22335:39;;:31;22392:40;;;22252:188;;:::o;1856:189::-;1942:7;1977:12;1970:5;1962:28;;;;-1:-1:-1;;;1962:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2001:9:0;2013:5;2017:1;2013;:5;:::i;27596:499::-;27686:16;;;27700:1;27686:16;;;;;;;;27662:21;;27686:16;;;;;;;;;;-1:-1:-1;27686:16:0;27662:40;;27731:4;27713;27718:1;27713:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27713:23:0;;;:7;;;;;;;;;;:23;;;;27757:15;;:22;;;-1:-1:-1;;;27757:22:0;;;;:15;;;;;:20;;:22;;;;;27713:7;;27757:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27747:4;27752:1;27747:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27747:32:0;;;:7;;;;;;;;;:32;27822:15;;27790:62;;27807:4;;27822:15;27840:11;27790:8;:62::i;:::-;27863:15;;:224;;-1:-1:-1;;;27863:224:0;;-1:-1:-1;;;;;27863:15:0;;;;:66;;:224;;27944:11;;27863:15;;28014:4;;28041;;28061:15;;27863:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;222:180:1;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;-1:-1:-1;373:23:1;;222:180;-1:-1:-1;222:180:1:o;407:597::-;519:4;548:2;577;566:9;559:21;609:6;603:13;652:6;647:2;636:9;632:18;625:34;677:1;687:140;701:6;698:1;695:13;687:140;;;796:14;;;792:23;;786:30;762:17;;;781:2;758:26;751:66;716:10;;687:140;;;845:6;842:1;839:13;836:91;;;915:1;910:2;901:6;890:9;886:22;882:31;875:42;836:91;-1:-1:-1;988:2:1;967:15;-1:-1:-1;;963:29:1;948:45;;;;995:2;944:54;;407:597;-1:-1:-1;;;407:597:1:o;1009:131::-;-1:-1:-1;;;;;1084:31:1;;1074:42;;1064:70;;1130:1;1127;1120:12;1145:160;1210:20;;1266:13;;1259:21;1249:32;;1239:60;;1295:1;1292;1285:12;1239:60;1145:160;;;:::o;1310:315::-;1375:6;1383;1436:2;1424:9;1415:7;1411:23;1407:32;1404:52;;;1452:1;1449;1442:12;1404:52;1491:9;1478:23;1510:31;1535:5;1510:31;:::i;:::-;1560:5;-1:-1:-1;1584:35:1;1615:2;1600:18;;1584:35;:::i;:::-;1574:45;;1310:315;;;;;:::o;1630:::-;1698:6;1706;1759:2;1747:9;1738:7;1734:23;1730:32;1727:52;;;1775:1;1772;1765:12;1727:52;1814:9;1801:23;1833:31;1858:5;1833:31;:::i;:::-;1883:5;1935:2;1920:18;;;;1907:32;;-1:-1:-1;;;1630:315:1:o;2559:247::-;2618:6;2671:2;2659:9;2650:7;2646:23;2642:32;2639:52;;;2687:1;2684;2677:12;2639:52;2726:9;2713:23;2745:31;2770:5;2745:31;:::i;2811:127::-;2872:10;2867:3;2863:20;2860:1;2853:31;2903:4;2900:1;2893:15;2927:4;2924:1;2917:15;2943:275;3014:2;3008:9;3079:2;3060:13;;-1:-1:-1;;3056:27:1;3044:40;;3114:18;3099:34;;3135:22;;;3096:62;3093:88;;;3161:18;;:::i;:::-;3197:2;3190:22;2943:275;;-1:-1:-1;2943:275:1:o;3223:183::-;3283:4;3316:18;3308:6;3305:30;3302:56;;;3338:18;;:::i;:::-;-1:-1:-1;3383:1:1;3379:14;3395:4;3375:25;;3223:183::o;3411:662::-;3465:5;3518:3;3511:4;3503:6;3499:17;3495:27;3485:55;;3536:1;3533;3526:12;3485:55;3572:6;3559:20;3598:4;3622:60;3638:43;3678:2;3638:43;:::i;:::-;3622:60;:::i;:::-;3716:15;;;3802:1;3798:10;;;;3786:23;;3782:32;;;3747:12;;;;3826:15;;;3823:35;;;3854:1;3851;3844:12;3823:35;3890:2;3882:6;3878:15;3902:142;3918:6;3913:3;3910:15;3902:142;;;3984:17;;3972:30;;4022:12;;;;3935;;3902:142;;;-1:-1:-1;4062:5:1;3411:662;-1:-1:-1;;;;;;3411:662:1:o;4078:1215::-;4196:6;4204;4257:2;4245:9;4236:7;4232:23;4228:32;4225:52;;;4273:1;4270;4263:12;4225:52;4313:9;4300:23;4342:18;4383:2;4375:6;4372:14;4369:34;;;4399:1;4396;4389:12;4369:34;4437:6;4426:9;4422:22;4412:32;;4482:7;4475:4;4471:2;4467:13;4463:27;4453:55;;4504:1;4501;4494:12;4453:55;4540:2;4527:16;4562:4;4586:60;4602:43;4642:2;4602:43;:::i;4586:60::-;4680:15;;;4762:1;4758:10;;;;4750:19;;4746:28;;;4711:12;;;;4786:19;;;4783:39;;;4818:1;4815;4808:12;4783:39;4842:11;;;;4862:217;4878:6;4873:3;4870:15;4862:217;;;4958:3;4945:17;4975:31;5000:5;4975:31;:::i;:::-;5019:18;;4895:12;;;;5057;;;;4862:217;;;5098:5;-1:-1:-1;;5141:18:1;;5128:32;;-1:-1:-1;;5172:16:1;;;5169:36;;;5201:1;5198;5191:12;5169:36;;5224:63;5279:7;5268:8;5257:9;5253:24;5224:63;:::i;:::-;5214:73;;;4078:1215;;;;;:::o;5298:456::-;5375:6;5383;5391;5444:2;5432:9;5423:7;5419:23;5415:32;5412:52;;;5460:1;5457;5450:12;5412:52;5499:9;5486:23;5518:31;5543:5;5518:31;:::i;:::-;5568:5;-1:-1:-1;5625:2:1;5610:18;;5597:32;5638:33;5597:32;5638:33;:::i;:::-;5298:456;;5690:7;;-1:-1:-1;;;5744:2:1;5729:18;;;;5716:32;;5298:456::o;5948:180::-;6004:6;6057:2;6045:9;6036:7;6032:23;6028:32;6025:52;;;6073:1;6070;6063:12;6025:52;6096:26;6112:9;6096:26;:::i;6357:523::-;6461:6;6469;6477;6485;6493;6501;6554:3;6542:9;6533:7;6529:23;6525:33;6522:53;;;6571:1;6568;6561:12;6522:53;-1:-1:-1;;6594:23:1;;;6664:2;6649:18;;6636:32;;-1:-1:-1;6715:2:1;6700:18;;6687:32;;6766:2;6751:18;;6738:32;;-1:-1:-1;6817:3:1;6802:19;;6789:33;;-1:-1:-1;6869:3:1;6854:19;6841:33;;-1:-1:-1;6357:523:1;-1:-1:-1;6357:523:1:o;6885:388::-;6953:6;6961;7014:2;7002:9;6993:7;6989:23;6985:32;6982:52;;;7030:1;7027;7020:12;6982:52;7069:9;7056:23;7088:31;7113:5;7088:31;:::i;:::-;7138:5;-1:-1:-1;7195:2:1;7180:18;;7167:32;7208:33;7167:32;7208:33;:::i;:::-;7260:7;7250:17;;;6885:388;;;;;:::o;7278:356::-;7480:2;7462:21;;;7499:18;;;7492:30;7558:34;7553:2;7538:18;;7531:62;7625:2;7610:18;;7278:356::o;7639:127::-;7700:10;7695:3;7691:20;7688:1;7681:31;7731:4;7728:1;7721:15;7755:4;7752:1;7745:15;7771:168;7811:7;7877:1;7873;7869:6;7865:14;7862:1;7859:21;7854:1;7847:9;7840:17;7836:45;7833:71;;;7884:18;;:::i;:::-;-1:-1:-1;7924:9:1;;7771:168::o;7944:380::-;8023:1;8019:12;;;;8066;;;8087:61;;8141:4;8133:6;8129:17;8119:27;;8087:61;8194:2;8186:6;8183:14;8163:18;8160:38;8157:161;;8240:10;8235:3;8231:20;8228:1;8221:31;8275:4;8272:1;8265:15;8303:4;8300:1;8293:15;8157:161;;7944:380;;;:::o;9091:127::-;9152:10;9147:3;9143:20;9140:1;9133:31;9183:4;9180:1;9173:15;9207:4;9204:1;9197:15;9223:135;9262:3;9283:17;;;9280:43;;9303:18;;:::i;:::-;-1:-1:-1;9350:1:1;9339:13;;9223:135::o;11046:217::-;11086:1;11112;11102:132;;11156:10;11151:3;11147:20;11144:1;11137:31;11191:4;11188:1;11181:15;11219:4;11216:1;11209:15;11102:132;-1:-1:-1;11248:9:1;;11046:217::o;11677:128::-;11717:3;11748:1;11744:6;11741:1;11738:13;11735:39;;;11754:18;;:::i;:::-;-1:-1:-1;11790:9:1;;11677:128::o;17637:125::-;17677:4;17705:1;17702;17699:8;17696:34;;;17710:18;;:::i;:::-;-1:-1:-1;17747:9:1;;17637:125::o;17767:251::-;17837:6;17890:2;17878:9;17869:7;17865:23;17861:32;17858:52;;;17906:1;17903;17896:12;17858:52;17938:9;17932:16;17957:31;17982:5;17957:31;:::i;18023:980::-;18285:4;18333:3;18322:9;18318:19;18364:6;18353:9;18346:25;18390:2;18428:6;18423:2;18412:9;18408:18;18401:34;18471:3;18466:2;18455:9;18451:18;18444:31;18495:6;18530;18524:13;18561:6;18553;18546:22;18599:3;18588:9;18584:19;18577:26;;18638:2;18630:6;18626:15;18612:29;;18659:1;18669:195;18683:6;18680:1;18677:13;18669:195;;;18748:13;;-1:-1:-1;;;;;18744:39:1;18732:52;;18839:15;;;;18804:12;;;;18780:1;18698:9;18669:195;;;-1:-1:-1;;;;;;;18920:32:1;;;;18915:2;18900:18;;18893:60;-1:-1:-1;;;18984:3:1;18969:19;18962:35;18881:3;18023:980;-1:-1:-1;;;18023:980:1:o
Swarm Source
ipfs://1f5d40bc22315db694f6c3f2bdffa1e448e689b579ece38e0e7aae84b81f5699
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.