Token FEGARBI
Overview ERC20
Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
2,000,000,000,000 FEG
Holders:
159 addresses
Contract:
Decimals:
2
Balance
1,958,444,715.8 FEGValue
$0.00
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FEGARBI
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2021-09-14 */ /** *Submitted for verification at arbiscan.io on 2021-09-13 */ /** fegarbi.com https://t.me/FegArbi */ //SPDX-License-Identifier: MIT pragma solidity ^0.7.4; 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) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * ERC20 standard interface. */ interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } ERC20 USDC = ERC20(0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8); address WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; //SETMEUP, change this to 1 hour instead of 10mins uint256 public minPeriod = 30 * 60; uint256 public minDistribution = 1 * (10 ** 12); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = USDC.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(USDC); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = USDC.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); USDC.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract FEGARBI is ERC20, Auth { using SafeMath for uint256; address USDC = 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8; address WETH = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "FEGARBI"; string constant _symbol = "FEG"; uint8 constant _decimals = 2; uint256 _totalSupply = 2 * 10**12 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply * 1 / 100; //max wallet holding of 2% uint256 public _maxWalletToken = ( _totalSupply * 2 ) / 100; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isTimelockExempt; mapping (address => bool) isDividendExempt; uint256 liquidityFee = 7; uint256 reflectionFee = 3; uint256 marketingFee = 3; uint256 public totalFee = 13; uint256 feeDenominator = 100; address public autoLiquidityReceiver; address public marketingFeeReceiver; uint256 targetLiquidity = 20; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; uint256 public launchedAt; bool public tradingOpen = true; DividendDistributor distributor; uint256 distributorGas = 500000; // Cooldown & timer functionality bool public buyCooldownEnabled = false; uint8 public cooldownTimerInterval = 45; mapping (address => uint) private cooldownTimer; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 10 / 10000; // 0.01% of supply bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { router = IDEXRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = uint256(-1); distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; // No timelock for these people isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; // NICE! autoLiquidityReceiver = msg.sender; marketingFeeReceiver = msg.sender; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, uint256(-1)); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != uint256(-1)){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } //settting the maximum permitted wallet holding (percent of total supply) function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletToken = (_totalSupply * maxWallPercent ) / 100; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen,"Trading not open yet"); } // max wallet code if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades. if (sender == pair && buyCooldownEnabled && !isTimelockExempt[recipient]) { require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } // Checks max transaction limit checkTxLimit(sender, amount); // Liquidity, Maintained at 25% if(shouldSwapBack()){ swapBack(); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); // Dividend tracker if(!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external onlyOwner { uint256 amountBNB = address(this).balance; payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100); } // switch Trading function tradingStatus(bool _status) public onlyOwner { tradingOpen = _status; } // enable cooldown between trades function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2); uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee); uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee); try distributor.deposit{value: amountBNBReflection}() {} catch {} (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}(""); // only to supress warning msg tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } } function setTxLimit(uint256 amount) external authorized { _maxTxAmount = amount; } function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setIsTimelockExempt(address holder, bool exempt) external authorized { isTimelockExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator/4); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } /* Airdrop Begins */ function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { uint256 SCCC = 0; require(addresses.length == tokens.length,"Mismatch between Address and token count"); for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC, "Not enough tokens in wallet for airdrop"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); if(!isDividendExempt[addresses[i]]) { try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} } } // Dividend tracker if(!isDividendExempt[from]) { try distributor.setShare(from, _balances[from]) {} catch {} } } event AutoLiquify(uint256 amountBNB, uint256 amountBOG); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811673ff970a61a04b1ca14834a43f5de4533ebddb5cc8179091556003805482167382af49447d8a07e3bd95bd0d56f35241523fbab117815560048054831661dead1790556005805490921690915565b5e620f480006006556501d1a94a200060079081556503a352944000600855600f556010819055601155600d601255606460138190556014601655601755601b805460ff1990811660019081179092556207a120601c55601d805461ffff1916612d00179055601f80549091169091179055642e90edd000602055348015620000ea57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560188054909216731b02da8cb0d097eb8d57a175b88c7d8b479975061791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b1580156200017a57600080fd5b505afa1580156200018f573d6000803e3d6000fd5b505050506040513d6020811015620001a657600080fd5b5051600354604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b158015620001fe57600080fd5b505af115801562000213573d6000803e3d6000fd5b505050506040513d60208110156200022a57600080fd5b5051601980546001600160a01b0319166001600160a01b03928316179055306000908152600a60209081526040808320601880548616855292529182902060001990555490519116906200027e90620003d0565b6001600160a01b03909116815260405190819003602001906000f080158015620002ac573d6000803e3d6000fd5b50601b8054610100600160a81b0319166101006001600160a01b0393841602179055336000818152600b60209081526040808320805460ff199081166001908117909255600c84528285208054821683179055600d845282852080548216831790556004805488168652838620805483168417905530808752848720805484168517905560195489168752600e8652848720805484168517905586528386208054831684179055549096168452818420805490961617909455601480546001600160a01b0319908116851790915560158054909116841790556006548383526009825284832081905584519081529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620003de565b610ebd8062002d7483390190565b61298680620003ee6000396000f3fe6080604052600436106102975760003560e01c8063722b62ad1161015a578063ca33e64c116100c1578063f2fde38b1161007a578063f2fde38b14610a87578063f708a64f14610aba578063f84ba65d14610af5578063f887ea4014610b30578063fe9fbb8014610b45578063ffb54a9914610b785761029e565b8063ca33e64c14610993578063d51ed1c8146109a8578063dd62ed3e146109d2578063df20fd4914610a0d578063e96fada214610a3f578063f0b37c0414610a545761029e565b80639d1944f5116101135780639d1944f514610898578063a4b45c00146108c2578063a8aa1b31146108fd578063a9059cbb14610912578063b6a5d7de1461094b578063bf56b3711461097e5761029e565b8063722b62ad146107e957806378109e54146107fe5780637d1db4a51461081357806382bf293c14610828578063893d20e81461085257806395d89b41146108835761029e565b80632d48e896116101fe5780635c85974f116101b75780635c85974f146106eb578063617fe0ed14610715578063658d4b7f1461072a5780636ddd1713146107655780636fcba3771461077a57806370a08231146107b65761029e565b80632d48e896146105ba5780632d594567146105ea5780632f54bf6e1461061f578063313ce5671461065257806350db71fb1461067d578063571ac8b0146106b85761029e565b806318160ddd1161025057806318160ddd146104de5780631da1db5e146104f35780631df4ccfc1461051d578063201e79911461053257806323b872dd146105625780632b112e49146105a55761029e565b8063025ff12f146102a35780630445b6671461038457806306fdde03146103ab578063095ea7b3146104355780630d295980146104825780631161ae39146104ae5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b50610382600480360360608110156102c657600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102f157600080fd5b82018360208201111561030357600080fd5b8035906020019184602083028401116401000000008311171561032557600080fd5b91939092909160208101903564010000000081111561034357600080fd5b82018360208201111561035557600080fd5b8035906020019184602083028401116401000000008311171561037757600080fd5b509092509050610b8d565b005b34801561039057600080fd5b50610399610e79565b60408051918252519081900360200190f35b3480156103b757600080fd5b506103c0610e7f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061046e6004803603604081101561045857600080fd5b506001600160a01b038135169060200135610ea0565b604080519115158252519081900360200190f35b34801561048e57600080fd5b50610382600480360360208110156104a557600080fd5b50351515610f07565b3480156104ba57600080fd5b5061046e600480360360408110156104d157600080fd5b5080359060200135610f5d565b3480156104ea57600080fd5b50610399610f71565b3480156104ff57600080fd5b506103826004803603602081101561051657600080fd5b5035610f77565b34801561052957600080fd5b50610399610ffd565b34801561053e57600080fd5b506103826004803603604081101561055557600080fd5b5080359060200135611003565b34801561056e57600080fd5b5061046e6004803603606081101561058557600080fd5b506001600160a01b03813581169160208101359091169060400135611056565b3480156105b157600080fd5b50610399611118565b3480156105c657600080fd5b50610382600480360360408110156105dd57600080fd5b5080359060200135611161565b3480156105f657600080fd5b506103826004803603604081101561060d57600080fd5b5080351515906020013560ff16611220565b34801561062b57600080fd5b5061046e6004803603602081101561064257600080fd5b50356001600160a01b0316611289565b34801561065e57600080fd5b5061066761129d565b6040805160ff9092168252519081900360200190f35b34801561068957600080fd5b50610382600480360360408110156106a057600080fd5b506001600160a01b03813516906020013515156112a2565b3480156106c457600080fd5b5061046e600480360360208110156106db57600080fd5b50356001600160a01b0316611315565b3480156106f757600080fd5b506103826004803603602081101561070e57600080fd5b5035611323565b34801561072157600080fd5b5061046e611370565b34801561073657600080fd5b506103826004803603604081101561074d57600080fd5b506001600160a01b0381351690602001351515611379565b34801561077157600080fd5b5061046e6113ec565b34801561078657600080fd5b506103826004803603608081101561079d57600080fd5b50803590602081013590604081013590606001356113f5565b3480156107c257600080fd5b50610399600480360360208110156107d957600080fd5b50356001600160a01b031661147f565b3480156107f557600080fd5b5061066761149a565b34801561080a57600080fd5b506103996114a8565b34801561081f57600080fd5b506103996114ae565b34801561083457600080fd5b506103826004803603602081101561084b57600080fd5b50356114b4565b34801561085e57600080fd5b5061086761150c565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b506103c061151b565b3480156108a457600080fd5b50610382600480360360208110156108bb57600080fd5b5035611538565b3480156108ce57600080fd5b50610382600480360360408110156108e557600080fd5b506001600160a01b0381358116916020013516611594565b34801561090957600080fd5b5061086761160a565b34801561091e57600080fd5b5061046e6004803603604081101561093557600080fd5b506001600160a01b038135169060200135611619565b34801561095757600080fd5b506103826004803603602081101561096e57600080fd5b50356001600160a01b0316611626565b34801561098a57600080fd5b50610399611690565b34801561099f57600080fd5b50610867611696565b3480156109b457600080fd5b50610399600480360360208110156109cb57600080fd5b50356116a5565b3480156109de57600080fd5b50610399600480360360408110156109f557600080fd5b506001600160a01b03813581169160200135166116e5565b348015610a1957600080fd5b5061038260048036036040811015610a3057600080fd5b50803515159060200135611710565b348015610a4b57600080fd5b5061086761176f565b348015610a6057600080fd5b5061038260048036036020811015610a7757600080fd5b50356001600160a01b031661177e565b348015610a9357600080fd5b5061038260048036036020811015610aaa57600080fd5b50356001600160a01b03166117e2565b348015610ac657600080fd5b5061038260048036036040811015610add57600080fd5b506001600160a01b0381351690602001351515611893565b348015610b0157600080fd5b5061038260048036036040811015610b1857600080fd5b506001600160a01b0381351690602001351515611a17565b348015610b3c57600080fd5b50610867611a8a565b348015610b5157600080fd5b5061046e60048036036020811015610b6857600080fd5b50356001600160a01b0316611a99565b348015610b8457600080fd5b5061046e611ab7565b610b9633611289565b610bd0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000838214610c105760405162461bcd60e51b815260040180806020018281038252602881526020018061287e6028913960400191505060405180910390fd5b60005b84811015610c3d57838382818110610c2757fe5b6020029190910135929092019150600101610c13565b5080610c488761147f565b1015610c855760405162461bcd60e51b81526004018080602001828103825260278152602001806128cb6027913960400191505060405180910390fd5b60005b84811015610dd757610cc887878784818110610ca057fe5b905060200201356001600160a01b0316868685818110610cbc57fe5b90506020020135611ac0565b50600e6000878784818110610cd957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610dcf57601b5461010090046001600160a01b03166314b6ca96878784818110610d2557fe5b905060200201356001600160a01b0316600960008a8a87818110610d4557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610dbc57600080fd5b505af1925050508015610dcd575060015b505b600101610c88565b506001600160a01b0386166000908152600e602052604090205460ff16610e7157601b546001600160a01b03878116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015610e5e57600080fd5b505af1925050508015610e6f575060015b505b505050505050565b60205481565b6040805180820190915260078152664645474152424960c81b602082015290565b336000818152600a602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610f1033611289565b610f4a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff1916911515919091179055565b600082610f69836116a5565b119392505050565b60065490565b610f8033611289565b610fba576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60155460405147916001600160a01b03169060648484020480156108fc02916000818181858888f19350505050158015610ff8573d6000803e3d6000fd5b505050565b60125481565b61100c33611a99565b61104b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601691909155601755565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914611103576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a825283812033825290915291909120546110de918490611ba1565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b61110e848484611c38565b90505b9392505050565b60055460009061115c90611134906001600160a01b031661147f565b6004546111569061114d906001600160a01b031661147f565b60065490612180565b90612180565b905090565b61116a33611a99565b6111a9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601b60019054906101000a90046001600160a01b03166001600160a01b0316632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561120c57600080fd5b505af1158015610e71573d6000803e3d6000fd5b61122933611289565b611263576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601d805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600290565b6112ab33611a99565b6112ea576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000610f0182600019610ea0565b61132c33611a99565b61136b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600755565b601d5460ff1681565b61138233611a99565b6113c1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b601f5460ff1681565b6113fe33611a99565b61143d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f849055601083905560118290556114608261145a86866121c2565b906121c2565b6012556013819055600481046012541061147957600080fd5b50505050565b6001600160a01b031660009081526009602052604090205490565b601d54610100900460ff1681565b60085481565b60075481565b6114bd33611289565b6114f7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481600654028161150557fe5b0460085550565b6000546001600160a01b031690565b60408051808201909152600381526246454760e81b602082015290565b61154133611a99565b611580576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811061158f57600080fd5b601c55565b61159d33611a99565b6115dc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b6019546001600160a01b031681565b6000611111338484611c38565b61162f33611289565b611669576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601a5481565b6014546001600160a01b031681565b6000610f016116b2611118565b6019546116df906116d8906002906116d2906001600160a01b031661147f565b9061221c565b859061221c565b90612275565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b61171933611a99565b611758576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f805460ff191692151592909217909155602055565b6015546001600160a01b031681565b61178733611289565b6117c1576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b6117eb33611289565b611825576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61189c33611a99565b6118db576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b038216301480159061190257506019546001600160a01b03838116911614155b61190b57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff191682158015919091179091556119ad57601b5460408051630a5b654b60e11b81526001600160a01b038581166004830152600060248301819052925161010090940416926314b6ca969260448084019391929182900301818387803b15801561199057600080fd5b505af11580156119a4573d6000803e3d6000fd5b50505050611a13565b601b546001600160a01b03838116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561120c57600080fd5b5050565b611a2033611a99565b611a5f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6018546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b601b5460ff1681565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611b11918490611ba1565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611b4090836121c2565b6001600160a01b0380851660008181526009602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008184841115611c305760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bf5578181015183820152602001611bdd565b50505050905090810190601f168015611c225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60215460009060ff1615611c5857611c51848484611ac0565b9050611111565b6001600160a01b03841660009081526001602052604090205460ff16158015611c9a57506001600160a01b03831660009081526001602052604090205460ff16155b15611ced57601b5460ff16611ced576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff16158015611d1f57506001600160a01b0383163014155b8015611d3957506004546001600160a01b03848116911614155b8015611d5357506019546001600160a01b03848116911614155b8015611d6d57506015546001600160a01b03848116911614155b8015611d8757506014546001600160a01b03848116911614155b15611dde576000611d978461147f565b90506008548382011115611ddc5760405162461bcd60e51b815260040180806020018281038252603e815260200180612913603e913960400191505060405180910390fd5b505b6019546001600160a01b038581169116148015611dfd5750601d5460ff165b8015611e2257506001600160a01b0383166000908152600d602052604090205460ff16155b15611ea6576001600160a01b0383166000908152601e60205260409020544211611e7d5760405162461bcd60e51b81526004018080602001828103825260258152602001806128a66025913960400191505060405180910390fd5b601d546001600160a01b0384166000908152601e6020526040902061010090910460ff16420190555b611eb084836122b7565b611eb8612325565b15611ec557611ec5612376565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260099091529190912054611f17918490611ba1565b6001600160a01b038516600090815260096020526040812091909155611f3c85612757565b611f465782611f50565b611f508584612776565b6001600160a01b038516600090815260096020526040902054909150611f7690826121c2565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600e909152205460ff1661202257601b546001600160a01b03868116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561200f57600080fd5b505af1925050508015612020575060015b505b6001600160a01b0384166000908152600e602052604090205460ff166120bb57601b546001600160a01b03858116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b1580156120a857600080fd5b505af19250505080156120b9575060015b505b601b60019054906101000a90046001600160a01b03166001600160a01b031663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561211857600080fd5b505af1925050508015612129575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b600061111183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba1565b600082820183811015611111576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008261222b57506000610f01565b8282028284828161223857fe5b04146111115760405162461bcd60e51b81526004018080602001828103825260218152602001806128f26021913960400191505060405180910390fd5b600061111183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612818565b600754811115806122e057506001600160a01b0382166000908152600c602052604090205460ff165b611a13576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b6019546000906001600160a01b03163314801590612346575060215460ff16155b80156123545750601f5460ff165b801561115c575050602080543060009081526009909252604090912054101590565b6021805460ff1916600117905560165460175460009161239591610f5d565b6123a157600f546123a4565b60005b905060006123c860026116df6012546116df8660205461221c90919063ffffffff16565b905060006123e18260205461218090919063ffffffff16565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061241357fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061243e57fe5b6001600160a01b0392831660209182029290920181019190915260185460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156124d85781810151838201526020016124c0565b505050509050019650505050505050600060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b50505050600061252e824761218090919063ffffffff16565b90506000612549612540886002612275565b60125490612180565b9050600061255e60026116df8481878d61221c565b9050600061257b836116df6010548761221c90919063ffffffff16565b90506000612598846116df6011548861221c90919063ffffffff16565b9050601b60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156125ea57600080fd5b505af1935050505080156125fc575060015b506015546040516000916001600160a01b03169061753090849084818181858888f193505050503d806000811461264f576040519150601f19603f3d011682016040523d82523d6000602084013e612654565b606091505b5060009250508a159050612740576018546014546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991879160c48082019260609290919082900301818588803b1580156126d757600080fd5b505af11580156126eb573d6000803e3d6000fd5b50505050506040513d606081101561270257600080fd5b505060408051858152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506021805460ff19169055505050505050505050565b6001600160a01b03166000908152600b602052604090205460ff161590565b6000806127946013546116df6012548661221c90919063ffffffff16565b306000908152600960205260409020549091506127b190826121c2565b30600081815260096020908152604091829020939093558051848152905191926001600160a01b038816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36128108382612180565b949350505050565b600081836128675760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bf5578181015183820152602001611bdd565b50600083858161287357fe5b049594505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f20627579734e6f7420656e6f75676820746f6b656e7320696e2077616c6c657420666f722061697264726f70536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea26469706673582212204461d18211c3e32b250f2fe72e86f908cda60db3be3c7ce4632df81c9c7c167964736f6c634300070400336080604052600180546001600160a01b031990811673ff970a61a04b1ca14834a43f5de4533ebddb5cc817909155600280549091167382af49447d8a07e3bd95bd0d56f35241523fbab11790556ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e5534801561007a57600080fd5b50604051610ebd380380610ebd8339818101604052602081101561009d57600080fd5b50516001600160a01b0381166100c757731b02da8cb0d097eb8d57a175b88c7d8b479975066100c9565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dba806101036000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610759565b34801561026057600080fd5b506100f761075f565b34801561027557600080fd5b50610142610765565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610770565b3480156102b457600080fd5b506100f7610852565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610858565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610980565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e1565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ace565b90610b19565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b73565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b73565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ace565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b03169183915060009061059557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105bf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610651578181015183820152602001610639565b50505050905001955050505050506000604051808303818588803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b505190610ace565b6009549091506107279082610b19565b600955600854600c5461075191610748916107429085610b90565b90610be9565b600b5490610b19565b600b55505050565b600b5481565b600a5481565b61076e33610858565b565b6000546001600160a01b0316331461078757600080fd5b60045480610795575061084f565b6000805a905060005b84831080156107ac57508381105b1561084a5783600f54106107c0576000600f555b6107ec6004600f54815481106107d257fe5b6000918252602090912001546001600160a01b0316610c2b565b1561081d5761081d6004600f548154811061080357fe5b6000918252602090912001546001600160a01b0316610858565b61083261082b5a8490610ace565b8490610b19565b92505a600f805460019081019091559092500161079e565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087a5761084f565b6000610885826103e8565b9050801561097c57600a5461089a9082610b19565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109529082610b19565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b73565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f357fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aa957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c67565b90505b92915050565b600082820183811015610b10576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b13600c54610742600b5485610b9090919063ffffffff16565b600082610b9f57506000610b13565b82820282848281610bac57fe5b0414610b105760405162461bcd60e51b8152600401808060200182810382526021815260200180610d646021913960400191505060405180910390fd5b6000610b1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cfe565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b135750600e54610c60836103e8565b1192915050565b60008184841115610cf65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578181015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbb578181015183820152602001610ca3565b506000838581610d5957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212209c62506e8edd3801f95b3e6824ce450825597c2bc47f4c67ff992a385bbd653164736f6c63430007040033
Deployed Bytecode
0x6080604052600436106102975760003560e01c8063722b62ad1161015a578063ca33e64c116100c1578063f2fde38b1161007a578063f2fde38b14610a87578063f708a64f14610aba578063f84ba65d14610af5578063f887ea4014610b30578063fe9fbb8014610b45578063ffb54a9914610b785761029e565b8063ca33e64c14610993578063d51ed1c8146109a8578063dd62ed3e146109d2578063df20fd4914610a0d578063e96fada214610a3f578063f0b37c0414610a545761029e565b80639d1944f5116101135780639d1944f514610898578063a4b45c00146108c2578063a8aa1b31146108fd578063a9059cbb14610912578063b6a5d7de1461094b578063bf56b3711461097e5761029e565b8063722b62ad146107e957806378109e54146107fe5780637d1db4a51461081357806382bf293c14610828578063893d20e81461085257806395d89b41146108835761029e565b80632d48e896116101fe5780635c85974f116101b75780635c85974f146106eb578063617fe0ed14610715578063658d4b7f1461072a5780636ddd1713146107655780636fcba3771461077a57806370a08231146107b65761029e565b80632d48e896146105ba5780632d594567146105ea5780632f54bf6e1461061f578063313ce5671461065257806350db71fb1461067d578063571ac8b0146106b85761029e565b806318160ddd1161025057806318160ddd146104de5780631da1db5e146104f35780631df4ccfc1461051d578063201e79911461053257806323b872dd146105625780632b112e49146105a55761029e565b8063025ff12f146102a35780630445b6671461038457806306fdde03146103ab578063095ea7b3146104355780630d295980146104825780631161ae39146104ae5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b50610382600480360360608110156102c657600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102f157600080fd5b82018360208201111561030357600080fd5b8035906020019184602083028401116401000000008311171561032557600080fd5b91939092909160208101903564010000000081111561034357600080fd5b82018360208201111561035557600080fd5b8035906020019184602083028401116401000000008311171561037757600080fd5b509092509050610b8d565b005b34801561039057600080fd5b50610399610e79565b60408051918252519081900360200190f35b3480156103b757600080fd5b506103c0610e7f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061046e6004803603604081101561045857600080fd5b506001600160a01b038135169060200135610ea0565b604080519115158252519081900360200190f35b34801561048e57600080fd5b50610382600480360360208110156104a557600080fd5b50351515610f07565b3480156104ba57600080fd5b5061046e600480360360408110156104d157600080fd5b5080359060200135610f5d565b3480156104ea57600080fd5b50610399610f71565b3480156104ff57600080fd5b506103826004803603602081101561051657600080fd5b5035610f77565b34801561052957600080fd5b50610399610ffd565b34801561053e57600080fd5b506103826004803603604081101561055557600080fd5b5080359060200135611003565b34801561056e57600080fd5b5061046e6004803603606081101561058557600080fd5b506001600160a01b03813581169160208101359091169060400135611056565b3480156105b157600080fd5b50610399611118565b3480156105c657600080fd5b50610382600480360360408110156105dd57600080fd5b5080359060200135611161565b3480156105f657600080fd5b506103826004803603604081101561060d57600080fd5b5080351515906020013560ff16611220565b34801561062b57600080fd5b5061046e6004803603602081101561064257600080fd5b50356001600160a01b0316611289565b34801561065e57600080fd5b5061066761129d565b6040805160ff9092168252519081900360200190f35b34801561068957600080fd5b50610382600480360360408110156106a057600080fd5b506001600160a01b03813516906020013515156112a2565b3480156106c457600080fd5b5061046e600480360360208110156106db57600080fd5b50356001600160a01b0316611315565b3480156106f757600080fd5b506103826004803603602081101561070e57600080fd5b5035611323565b34801561072157600080fd5b5061046e611370565b34801561073657600080fd5b506103826004803603604081101561074d57600080fd5b506001600160a01b0381351690602001351515611379565b34801561077157600080fd5b5061046e6113ec565b34801561078657600080fd5b506103826004803603608081101561079d57600080fd5b50803590602081013590604081013590606001356113f5565b3480156107c257600080fd5b50610399600480360360208110156107d957600080fd5b50356001600160a01b031661147f565b3480156107f557600080fd5b5061066761149a565b34801561080a57600080fd5b506103996114a8565b34801561081f57600080fd5b506103996114ae565b34801561083457600080fd5b506103826004803603602081101561084b57600080fd5b50356114b4565b34801561085e57600080fd5b5061086761150c565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b506103c061151b565b3480156108a457600080fd5b50610382600480360360208110156108bb57600080fd5b5035611538565b3480156108ce57600080fd5b50610382600480360360408110156108e557600080fd5b506001600160a01b0381358116916020013516611594565b34801561090957600080fd5b5061086761160a565b34801561091e57600080fd5b5061046e6004803603604081101561093557600080fd5b506001600160a01b038135169060200135611619565b34801561095757600080fd5b506103826004803603602081101561096e57600080fd5b50356001600160a01b0316611626565b34801561098a57600080fd5b50610399611690565b34801561099f57600080fd5b50610867611696565b3480156109b457600080fd5b50610399600480360360208110156109cb57600080fd5b50356116a5565b3480156109de57600080fd5b50610399600480360360408110156109f557600080fd5b506001600160a01b03813581169160200135166116e5565b348015610a1957600080fd5b5061038260048036036040811015610a3057600080fd5b50803515159060200135611710565b348015610a4b57600080fd5b5061086761176f565b348015610a6057600080fd5b5061038260048036036020811015610a7757600080fd5b50356001600160a01b031661177e565b348015610a9357600080fd5b5061038260048036036020811015610aaa57600080fd5b50356001600160a01b03166117e2565b348015610ac657600080fd5b5061038260048036036040811015610add57600080fd5b506001600160a01b0381351690602001351515611893565b348015610b0157600080fd5b5061038260048036036040811015610b1857600080fd5b506001600160a01b0381351690602001351515611a17565b348015610b3c57600080fd5b50610867611a8a565b348015610b5157600080fd5b5061046e60048036036020811015610b6857600080fd5b50356001600160a01b0316611a99565b348015610b8457600080fd5b5061046e611ab7565b610b9633611289565b610bd0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000838214610c105760405162461bcd60e51b815260040180806020018281038252602881526020018061287e6028913960400191505060405180910390fd5b60005b84811015610c3d57838382818110610c2757fe5b6020029190910135929092019150600101610c13565b5080610c488761147f565b1015610c855760405162461bcd60e51b81526004018080602001828103825260278152602001806128cb6027913960400191505060405180910390fd5b60005b84811015610dd757610cc887878784818110610ca057fe5b905060200201356001600160a01b0316868685818110610cbc57fe5b90506020020135611ac0565b50600e6000878784818110610cd957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610dcf57601b5461010090046001600160a01b03166314b6ca96878784818110610d2557fe5b905060200201356001600160a01b0316600960008a8a87818110610d4557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610dbc57600080fd5b505af1925050508015610dcd575060015b505b600101610c88565b506001600160a01b0386166000908152600e602052604090205460ff16610e7157601b546001600160a01b03878116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015610e5e57600080fd5b505af1925050508015610e6f575060015b505b505050505050565b60205481565b6040805180820190915260078152664645474152424960c81b602082015290565b336000818152600a602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610f1033611289565b610f4a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff1916911515919091179055565b600082610f69836116a5565b119392505050565b60065490565b610f8033611289565b610fba576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60155460405147916001600160a01b03169060648484020480156108fc02916000818181858888f19350505050158015610ff8573d6000803e3d6000fd5b505050565b60125481565b61100c33611a99565b61104b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601691909155601755565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914611103576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a825283812033825290915291909120546110de918490611ba1565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b61110e848484611c38565b90505b9392505050565b60055460009061115c90611134906001600160a01b031661147f565b6004546111569061114d906001600160a01b031661147f565b60065490612180565b90612180565b905090565b61116a33611a99565b6111a9576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601b60019054906101000a90046001600160a01b03166001600160a01b0316632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561120c57600080fd5b505af1158015610e71573d6000803e3d6000fd5b61122933611289565b611263576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601d805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600290565b6112ab33611a99565b6112ea576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000610f0182600019610ea0565b61132c33611a99565b61136b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600755565b601d5460ff1681565b61138233611a99565b6113c1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b601f5460ff1681565b6113fe33611a99565b61143d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f849055601083905560118290556114608261145a86866121c2565b906121c2565b6012556013819055600481046012541061147957600080fd5b50505050565b6001600160a01b031660009081526009602052604090205490565b601d54610100900460ff1681565b60085481565b60075481565b6114bd33611289565b6114f7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481600654028161150557fe5b0460085550565b6000546001600160a01b031690565b60408051808201909152600381526246454760e81b602082015290565b61154133611a99565b611580576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811061158f57600080fd5b601c55565b61159d33611a99565b6115dc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b6019546001600160a01b031681565b6000611111338484611c38565b61162f33611289565b611669576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601a5481565b6014546001600160a01b031681565b6000610f016116b2611118565b6019546116df906116d8906002906116d2906001600160a01b031661147f565b9061221c565b859061221c565b90612275565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b61171933611a99565b611758576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f805460ff191692151592909217909155602055565b6015546001600160a01b031681565b61178733611289565b6117c1576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b6117eb33611289565b611825576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61189c33611a99565b6118db576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b038216301480159061190257506019546001600160a01b03838116911614155b61190b57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff191682158015919091179091556119ad57601b5460408051630a5b654b60e11b81526001600160a01b038581166004830152600060248301819052925161010090940416926314b6ca969260448084019391929182900301818387803b15801561199057600080fd5b505af11580156119a4573d6000803e3d6000fd5b50505050611a13565b601b546001600160a01b03838116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561120c57600080fd5b5050565b611a2033611a99565b611a5f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6018546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b601b5460ff1681565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611b11918490611ba1565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611b4090836121c2565b6001600160a01b0380851660008181526009602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008184841115611c305760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bf5578181015183820152602001611bdd565b50505050905090810190601f168015611c225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60215460009060ff1615611c5857611c51848484611ac0565b9050611111565b6001600160a01b03841660009081526001602052604090205460ff16158015611c9a57506001600160a01b03831660009081526001602052604090205460ff16155b15611ced57601b5460ff16611ced576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff16158015611d1f57506001600160a01b0383163014155b8015611d3957506004546001600160a01b03848116911614155b8015611d5357506019546001600160a01b03848116911614155b8015611d6d57506015546001600160a01b03848116911614155b8015611d8757506014546001600160a01b03848116911614155b15611dde576000611d978461147f565b90506008548382011115611ddc5760405162461bcd60e51b815260040180806020018281038252603e815260200180612913603e913960400191505060405180910390fd5b505b6019546001600160a01b038581169116148015611dfd5750601d5460ff165b8015611e2257506001600160a01b0383166000908152600d602052604090205460ff16155b15611ea6576001600160a01b0383166000908152601e60205260409020544211611e7d5760405162461bcd60e51b81526004018080602001828103825260258152602001806128a66025913960400191505060405180910390fd5b601d546001600160a01b0384166000908152601e6020526040902061010090910460ff16420190555b611eb084836122b7565b611eb8612325565b15611ec557611ec5612376565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260099091529190912054611f17918490611ba1565b6001600160a01b038516600090815260096020526040812091909155611f3c85612757565b611f465782611f50565b611f508584612776565b6001600160a01b038516600090815260096020526040902054909150611f7690826121c2565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600e909152205460ff1661202257601b546001600160a01b03868116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561200f57600080fd5b505af1925050508015612020575060015b505b6001600160a01b0384166000908152600e602052604090205460ff166120bb57601b546001600160a01b03858116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b1580156120a857600080fd5b505af19250505080156120b9575060015b505b601b60019054906101000a90046001600160a01b03166001600160a01b031663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561211857600080fd5b505af1925050508015612129575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b600061111183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ba1565b600082820183811015611111576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008261222b57506000610f01565b8282028284828161223857fe5b04146111115760405162461bcd60e51b81526004018080602001828103825260218152602001806128f26021913960400191505060405180910390fd5b600061111183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612818565b600754811115806122e057506001600160a01b0382166000908152600c602052604090205460ff165b611a13576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b6019546000906001600160a01b03163314801590612346575060215460ff16155b80156123545750601f5460ff165b801561115c575050602080543060009081526009909252604090912054101590565b6021805460ff1916600117905560165460175460009161239591610f5d565b6123a157600f546123a4565b60005b905060006123c860026116df6012546116df8660205461221c90919063ffffffff16565b905060006123e18260205461218090919063ffffffff16565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061241357fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061243e57fe5b6001600160a01b0392831660209182029290920181019190915260185460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156124d85781810151838201526020016124c0565b505050509050019650505050505050600060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b50505050600061252e824761218090919063ffffffff16565b90506000612549612540886002612275565b60125490612180565b9050600061255e60026116df8481878d61221c565b9050600061257b836116df6010548761221c90919063ffffffff16565b90506000612598846116df6011548861221c90919063ffffffff16565b9050601b60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156125ea57600080fd5b505af1935050505080156125fc575060015b506015546040516000916001600160a01b03169061753090849084818181858888f193505050503d806000811461264f576040519150601f19603f3d011682016040523d82523d6000602084013e612654565b606091505b5060009250508a159050612740576018546014546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991879160c48082019260609290919082900301818588803b1580156126d757600080fd5b505af11580156126eb573d6000803e3d6000fd5b50505050506040513d606081101561270257600080fd5b505060408051858152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506021805460ff19169055505050505050505050565b6001600160a01b03166000908152600b602052604090205460ff161590565b6000806127946013546116df6012548661221c90919063ffffffff16565b306000908152600960205260409020549091506127b190826121c2565b30600081815260096020908152604091829020939093558051848152905191926001600160a01b038816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36128108382612180565b949350505050565b600081836128675760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bf5578181015183820152602001611bdd565b50600083858161287357fe5b049594505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f20627579734e6f7420656e6f75676820746f6b656e7320696e2077616c6c657420666f722061697264726f70536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea26469706673582212204461d18211c3e32b250f2fe72e86f908cda60db3be3c7ce4632df81c9c7c167964736f6c63430007040033
Deployed ByteCode Sourcemap
11654:13907:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24692:800;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24692:800:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24692:800:0;;-1:-1:-1;24692:800:0;-1:-1:-1;24692:800:0;:::i;:::-;;13407:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14833:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15255:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15255:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19867:94;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19867:94:0;;;;:::i;24507:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24507:150:0;;;;;;;:::i;14563:88::-;;;;;;;;;;;;;:::i;19617:217::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19617:217:0;;:::i;12732:28::-;;;;;;;;;;;;;:::i;23652:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23652:183:0;;;;;;;:::i;15767:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15767:364:0;;;;;;;;;;;;;;;;;:::i;24182:142::-;;;;;;;;;;;;;:::i;23843:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23843:183:0;;;;;;;:::i;20008:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20008:164:0;;;;;;;;;;;:::i;3472:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3472:103:0;-1:-1:-1;;;;;3472:103:0;;:::i;14657:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22683:130;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22683:130:0;;;;;;;;;;:::i;15479:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15479:116:0;-1:-1:-1;;;;;15479:116:0;;:::i;21960:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21960:96:0;;:::i;13223:38::-;;;;;;;;;;;;;:::i;22419:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22419:120:0;;;;;;;;;;:::i;13370:30::-;;;;;;;;;;;;;:::i;22821:423::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22821:423:0;;;;;;;;;;;;;;;;;:::i;15003:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15003:105:0;-1:-1:-1;;;;;15003:105:0;;:::i;13268:39::-;;;;;;;;;;;;;:::i;12255:59::-;;;;;;;;;;;;;:::i;12161:52::-;;;;;;;;;;;;;:::i;16219:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16219:149:0;;:::i;14919:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14919:78:0;;;;;;;;;;;;;;14743:84;;;;;;;;;;;;;:::i;24034:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24034:136:0;;:::i;23252:228::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23252:228:0;;;;;;;;;;:::i;13007:19::-;;;;;;;;;;;;;:::i;15603:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15603:156:0;;;;;;;;:::i;3145:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3145:94:0;-1:-1:-1;;;;;3145:94:0;;:::i;13035:25::-;;;;;;;;;;;;;:::i;12805:36::-;;;;;;;;;;;;;:::i;24332:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24332:167:0;;:::i;15114:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15114:133:0;;;;;;;;;;:::i;23488:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23488:156:0;;;;;;;;;:::i;12848:35::-;;;;;;;;;;;;;:::i;3315:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3315:97:0;-1:-1:-1;;;;;3315:97:0;;:::i;3872:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3872:173:0;-1:-1:-1;;;;;3872:173:0;;:::i;22064:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22064:347:0;;;;;;;;;;:::i;22547:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22547:128:0;;;;;;;;;;:::i;12976:24::-;;;;;;;;;;;;;:::i;3646:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3646:107:0;-1:-1:-1;;;;;3646:107:0;;:::i;13067:30::-;;;;;;;;;;;;;:::i;24692:800::-;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;24808:12:::1;24841:33:::0;;::::1;24833:85;;;;-1:-1:-1::0;;;24833:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24931:6;24927:82;24941:20:::0;;::::1;24927:82;;;24992:6;;24999:1;24992:9;;;;;;;;;::::0;;;::::1;;24985:16:::0;;;::::1;::::0;-1:-1:-1;24963:3:0::1;;24927:82;;;;25044:4;25025:15;25035:4;25025:9;:15::i;:::-;:23;;25017:75;;;;-1:-1:-1::0;;;25017:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25105:6;25101:250;25115:20:::0;;::::1;25101:250;;;25152:43;25167:4;25172:9;;25182:1;25172:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;25172:12:0::1;25185:6;;25192:1;25185:9;;;;;;;;;;;;;25152:14;:43::i;:::-;;25210:16;:30;25227:9;;25237:1;25227:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;25227:12:0::1;25210:30:::0;;-1:-1:-1;25210:30:0;::::1;::::0;;;;;;-1:-1:-1;25210:30:0;;::::1;;25206:138;;25261:11;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;25261:11:0::1;:20;25282:9:::0;;25292:1;25282:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;25282:12:0::1;25296:9;:23;25306:9;;25316:1;25306:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;25306:12:0::1;-1:-1:-1::0;;;;;25296:23:0::1;-1:-1:-1::0;;;;;25296:23:0::1;;;;;;;;;;;;;25261:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;25261:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25257:75:::0;::::1;25137:3;;25101:250;;;-1:-1:-1::0;;;;;;25388:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;25384:105;;25427:11;::::0;-1:-1:-1;;;;;25454:15:0;;::::1;;::::0;;;:9:::1;:15;::::0;;;;;;25427:43;;-1:-1:-1;;;25427:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11:::1;::::0;;::::1;::::0;;::::1;::::0;:20:::1;::::0;:43;;;;;25454:15;;25427:43;;;;;;25454:15;25427:11;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;25423:59:::0;::::1;2893:1;24692:800:::0;;;;;:::o;13407:56::-;;;;:::o;14833:80::-;14905:5;;;;;;;;;;;;-1:-1:-1;;;14905:5:0;;;;14833:80;:::o;15255:216::-;15359:10;15330:4;15347:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15347:32:0;;;;;;;;;;;:41;;;15404:37;;;;;;;15330:4;;15347:32;;15359:10;;15404:37;;;;;;;;-1:-1:-1;15459:4:0;15255:216;;;;;:::o;19867:94::-;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;19932:11:::1;:21:::0;;-1:-1:-1;;19932:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19867:94::o;24507:150::-;24587:4;24643:6;24611:29;24631:8;24611:19;:29::i;:::-;:38;;24507:150;-1:-1:-1;;;24507:150:0:o;14563:88::-;14636:12;;14563:88;:::o;19617:217::-;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;19760:20:::1;::::0;19752:74:::1;::::0;19720:21:::1;::::0;-1:-1:-1;;;;;19760:20:0::1;::::0;19822:3:::1;19791:28:::0;;::::1;:34;19752:74:::0;::::1;;;::::0;::::1;::::0;;;19791:34;19760:20;19752:74;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2893:1;19617:217:::0;:::o;12732:28::-;;;;:::o;23652:183::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;23750:15:::1;:25:::0;;;;23786:26:::1;:41:::0;23652:183::o;15767:364::-;-1:-1:-1;;;;;15887:19:0;;15867:4;15887:19;;;:11;:19;;;;;;;;15907:10;15887:31;;;;;;;;-1:-1:-1;;15887:46:0;15884:180;;15983:69;;;;;;;;;;;-1:-1:-1;;;15983:69:0;;;;;;;;-1:-1:-1;;;;;15983:19:0;;-1:-1:-1;15983:19:0;;;:11;:19;;;;;16003:10;15983:31;;;;;;;;;;:69;;16019:6;;15983:35;:69::i;:::-;-1:-1:-1;;;;;15949:19:0;;;;;;:11;:19;;;;;;;;15969:10;15949:31;;;;;;;:103;15884:180;16083:40;16097:6;16105:9;16116:6;16083:13;:40::i;:::-;16076:47;;15767:364;;;;;;:::o;24182:142::-;24310:4;;24235:7;;24262:54;;24300:15;;-1:-1:-1;;;;;24310:4:0;24300:9;:15::i;:::-;24289:4;;24262:33;;24279:15;;-1:-1:-1;;;;;24289:4:0;24279:9;:15::i;:::-;24262:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;24255:61;;24182:142;:::o;23843:183::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;23953:11:::1;;;;;;;;;-1:-1:-1::0;;;;;23953:11:0::1;-1:-1:-1::0;;;;;23953:35:0::1;;23989:10;24001:16;23953:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;20008:164:::0;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;20092:18:::1;:28:::0;;-1:-1:-1;;20092:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;20131:33:0::1;20092:28;;20131:33:::0;;;::::1;::::0;;;::::1;;::::0;;20008:164::o;3472:103::-;3527:4;3562:5;-1:-1:-1;;;;;3562:5:0;;;3551:16;;;;3472:103::o;14657:80::-;12091:1;14657:80;:::o;22683:130::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22772:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;22772:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22683:130::o;15479:116::-;15534:4;15558:29;15566:7;-1:-1:-1;;15558:7:0;:29::i;21960:96::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;22027:12:::1;:21:::0;21960:96::o;13223:38::-;;;;;;:::o;22419:120::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22503:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;22503:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22419:120::o;13370:30::-;;;;;;:::o;22821:423::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;22964:12:::1;:28:::0;;;23003:13:::1;:30:::0;;;23044:12:::1;:28:::0;;;23094:52:::1;23059:13:::0;23094:33:::1;22979:13:::0;23019:14;23094:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:::-;23083:8;:63:::0;23157:14:::1;:32:::0;;;23234:1:::1;23174:15:::0;23219:16:::1;23208:8;;:27;23200:36;;;::::0;::::1;;22821:423:::0;;;;:::o;15003:105::-;-1:-1:-1;;;;;15087:18:0;15069:7;15087:18;;;:9;:18;;;;;;;15003:105::o;13268:39::-;;;;;;;;;:::o;12255:59::-;;;;:::o;12161:52::-;;;;:::o;16219:149::-;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;16357:3:::1;16338:14;16323:12;;:29;16322:38;;;;;;16304:15;:56:::0;-1:-1:-1;16219:149:0:o;14919:78::-;14971:7;14989:5;-1:-1:-1;;;;;14989:5:0;14919:78;:::o;14743:84::-;14817:7;;;;;;;;;;;;-1:-1:-1;;;14817:7:0;;;;14743:84;:::o;24034:136::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;24124:6:::1;24118:3;:12;24110:21;;;::::0;::::1;;24142:14;:20:::0;24034:136::o;23252:228::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;23371:21:::1;:46:::0;;-1:-1:-1;;;;;23371:46:0;;::::1;-1:-1:-1::0;;;;;;23371:46:0;;::::1;;::::0;;;23428:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;23252:228::o;13007:19::-;;;-1:-1:-1;;;;;13007:19:0;;:::o;15603:156::-;15683:4;15707:44;15721:10;15733:9;15744:6;15707:13;:44::i;3145:94::-;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3205:19:0::1;;::::0;;;3227:4:::1;3205:19;::::0;;;;;;;:26;;-1:-1:-1;;3205:26:0::1;::::0;;::::1;::::0;;3145:94::o;13035:25::-;;;;:::o;12805:36::-;;;-1:-1:-1;;;;;12805:36:0;;:::o;24332:167::-;24400:7;24427:64;24468:22;:20;:22::i;:::-;24450:4;;24427:36;;24440:22;;24460:1;;24440:15;;-1:-1:-1;;;;;24450:4:0;24440:9;:15::i;:::-;:19;;:22::i;:::-;24427:8;;:12;:36::i;:::-;:40;;:64::i;15114:133::-;-1:-1:-1;;;;;15216:19:0;;;15198:7;15216:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15114:133::o;23488:156::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;23580:11:::1;:22:::0;;-1:-1:-1;;23580:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;23613:13:::1;:23:::0;23488:156::o;12848:35::-;;;-1:-1:-1;;;;;12848:35:0;;:::o;3315:97::-;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3377:19:0::1;3399:5;3377:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3377:27:0::1;::::0;;3315:97::o;3872:173::-;2861:19;2869:10;2861:7;:19::i;:::-;2853:38;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;-1:-1:-1;;;2853:38:0;;;;;;;;;;;;;;;3948:5:::1;:11:::0;;-1:-1:-1;;;;;;3948:11:0::1;-1:-1:-1::0;;;;;3948:11:0;::::1;::::0;;::::1;::::0;;3970:19;;;-1:-1:-1;3970:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3970:26:0::1;::::0;;::::1;::::0;;;4012:25;;;;;;;::::1;::::0;;;;;;;;;::::1;3872:173:::0;:::o;22064:347::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22161:23:0;::::1;22179:4;22161:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;22198:4:0::1;::::0;-1:-1:-1;;;;;22188:14:0;;::::1;22198:4:::0;::::1;22188:14;;22161:41;22153:50;;;::::0;::::1;;-1:-1:-1::0;;;;;22214:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;22214:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;22258:146:::1;;22283:11;::::0;:31:::1;::::0;;-1:-1:-1;;;22283:31:0;;-1:-1:-1;;;;;22283:31:0;;::::1;;::::0;::::1;::::0;22312:1:::1;22283:31:::0;;;;;;;;:11:::1;::::0;;::::1;;::::0;:20:::1;::::0;:31;;;;;22312:1;;22283:31;;;;;;22312:1;22283:11;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22258:146;;;22345:11;::::0;-1:-1:-1;;;;;22374:17:0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;22345:47;;-1:-1:-1;;;22345:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11:::1;::::0;;::::1;::::0;;::::1;::::0;:20:::1;::::0;:47;;;;;22374:17;;22345:47;;;;;;22374:17;22345:11;:47;::::1;;::::0;::::1;;;;::::0;::::1;22258:146;22064:347:::0;;:::o;22547:128::-;3030:24;3043:10;3030:12;:24::i;:::-;3022:48;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;-1:-1:-1;;;3022:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22635:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;22635:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22547:128::o;12976:24::-;;;-1:-1:-1;;;;;12976:24:0;;:::o;3646:107::-;-1:-1:-1;;;;;3726:19:0;3702:4;3726:19;;;:14;:19;;;;;;;;;3646:107::o;13067:30::-;;;;;;:::o;18437:330::-;18567:53;;;;;;;;;;;-1:-1:-1;;;18567:53:0;;;;;;;;-1:-1:-1;;;;;18567:17:0;;18530:4;18567:17;;;:9;:17;;;;;;;:53;;18589:6;;18567:21;:53::i;:::-;-1:-1:-1;;;;;18547:17:0;;;;;;;:9;:17;;;;;;:73;;;;18654:20;;;;;;;:32;;18679:6;18654:24;:32::i;:::-;-1:-1:-1;;;;;18631:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;18702:35;;;;;;;18631:20;;18702:35;;;;;;;;;;;;;-1:-1:-1;18755:4:0;18437:330;;;;;:::o;532:192::-;618:7;654:12;646:6;;;;638:29;;;;-1:-1:-1;;;638:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:5:0;;;532:192::o;16376:2049::-;16488:6;;16468:4;;16488:6;;16485:63;;;16504:41;16519:6;16527:9;16538:6;16504:14;:41::i;:::-;16497:48;;;;16485:63;-1:-1:-1;;;;;16564:22:0;;;;;;:14;:22;;;;;;;;16563:23;:53;;;;-1:-1:-1;;;;;;16591:25:0;;;;;;:14;:25;;;;;;;;16590:26;16563:53;16560:127;;;16640:11;;;;16632:43;;;;;-1:-1:-1;;;16632:43:0;;;;;;;;;;;;-1:-1:-1;;;16632:43:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16732:22:0;;;;;;:14;:22;;;;;;;;16731:23;:53;;;;-1:-1:-1;;;;;;16758:26:0;;16779:4;16758:26;;16731:53;:84;;;;-1:-1:-1;16810:4:0;;-1:-1:-1;;;;;16789:26:0;;;16810:4;;16789:26;;16731:84;:105;;;;-1:-1:-1;16832:4:0;;-1:-1:-1;;;;;16819:17:0;;;16832:4;;16819:17;;16731:105;:142;;;;-1:-1:-1;16853:20:0;;-1:-1:-1;;;;;16840:33:0;;;16853:20;;16840:33;;16731:142;:180;;;;-1:-1:-1;16890:21:0;;-1:-1:-1;;;;;16877:34:0;;;16890:21;;16877:34;;16731:180;16727:372;;;16927:18;16948:20;16958:9;16948;:20::i;:::-;16927:41;;17016:15;;17005:6;16992:10;:19;16991:40;;16983:114;;;;-1:-1:-1;;;16983:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16727:372;;17233:4;;-1:-1:-1;;;;;17223:14:0;;;17233:4;;17223:14;:49;;;;-1:-1:-1;17254:18:0;;;;17223:49;:94;;;;-1:-1:-1;;;;;;17290:27:0;;;;;;:16;:27;;;;;;;;17289:28;17223:94;17219:299;;;-1:-1:-1;;;;;17342:24:0;;;;;;:13;:24;;;;;;17369:15;-1:-1:-1;17334:91:0;;;;-1:-1:-1;;;17334:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17485:21;;-1:-1:-1;;;;;17440:24:0;;;;;;:13;:24;;;;;17485:21;;;;;;17467:15;:39;17440:66;;17219:299;17573:28;17586:6;17594;17573:12;:28::i;:::-;17658:16;:14;:16::i;:::-;17655:35;;;17677:10;:8;:10::i;:::-;17749:53;;;;;;;;;;;-1:-1:-1;;;17749:53:0;;;;;;;;-1:-1:-1;;;;;17749:17:0;;-1:-1:-1;17749:17:0;;;:9;:17;;;;;;;;:53;;17771:6;;17749:21;:53::i;:::-;-1:-1:-1;;;;;17729:17:0;;;;;;:9;:17;;;;;:73;;;;17840:21;17739:6;17840:13;:21::i;:::-;:56;;17890:6;17840:56;;;17864:23;17872:6;17880;17864:7;:23::i;:::-;-1:-1:-1;;;;;17930:20:0;;;;;;:9;:20;;;;;;17815:81;;-1:-1:-1;17930:40:0;;17815:81;17930:24;:40::i;:::-;-1:-1:-1;;;;;17907:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18016:24;;;;;:16;:24;;;;;;;18012:119;;18061:11;;-1:-1:-1;;;;;18090:17:0;;;;;;;:9;:17;;;;;;;18061:47;;-1:-1:-1;;;18061:47:0;;;;;;;;;;;;;;:11;;;;;;;;:20;;:47;;;;;18090:17;;18061:47;;;;;;18090:17;18061:11;:47;;;;;;;;;;;;;;;;;;;;;;;;;18057:63;;-1:-1:-1;;;;;18147:27:0;;;;;;:16;:27;;;;;;;;18143:129;;18195:11;;-1:-1:-1;;;;;18227:20:0;;;;;;;:9;:20;;;;;;;18195:53;;-1:-1:-1;;;18195:53:0;;;;;;;;;;;;;;:11;;;;;;;;:20;;:53;;;;;18227:20;;18195:53;;;;;;18227:20;18195:11;:53;;;;;;;;;;;;;;;;;;;;;;;;;18191:69;;18288:11;;;;;;;;;-1:-1:-1;;;;;18288:11:0;-1:-1:-1;;;;;18288:19:0;;18308:14;;18288:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18284:51;18369:9;-1:-1:-1;;;;;18352:43:0;18361:6;-1:-1:-1;;;;;18352:43:0;;18380:14;18352:43;;;;;;;;;;;;;;;;;;-1:-1:-1;18413:4:0;;16376:2049;-1:-1:-1;;;;16376:2049:0:o;390:136::-;448:7;475:43;479:1;482;475:43;;;;;;;;;;;;;;;;;:3;:43::i;203:181::-;261:7;293:5;;;317:6;;;;309:46;;;;;-1:-1:-1;;;309:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;730:250;788:7;812:6;808:47;;-1:-1:-1;842:1:0;835:8;;808:47;879:5;;;883:1;879;:5;:1;903:5;;;;;:10;895:56;;;;-1:-1:-1;;;895:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;986:132;1044:7;1071:39;1075:1;1078;1071:39;;;;;;;;;;;;;;;;;:3;:39::i;18775:166::-;18872:12;;18862:6;:22;;:49;;;-1:-1:-1;;;;;;18888:23:0;;;;;;:15;:23;;;;;;;;18862:49;18854:79;;;;;-1:-1:-1;;;18854:79:0;;;;;;;;;;;;-1:-1:-1;;;18854:79:0;;;;;;;;;;;;;;19412:197;19499:4;;19461;;-1:-1:-1;;;;;19499:4:0;19485:10;:18;;;;:38;;-1:-1:-1;19517:6:0;;;;19516:7;19485:38;:62;;;;-1:-1:-1;19536:11:0;;;;19485:62;:116;;;;-1:-1:-1;;19588:13:0;;;19578:4;19560:24;;;;:9;:24;;;;;;;;:41;;;19412:197::o;20184:1766::-;13529:6;:13;;-1:-1:-1;;13529:13:0;13538:4;13529:13;;;20279:15:::1;::::0;20296:26:::1;::::0;13529:6;;20263:60:::1;::::0;:15:::1;:60::i;:::-;:79;;20330:12;;20263:79;;;20326:1;20263:79;20233:109;;20353:23;20379:59;20436:1;20379:52;20422:8;;20379:38;20397:19;20379:13;;:17;;:38;;;;:::i;:59::-;20353:85;;20449:20;20472:34;20490:15;20472:13;;:17;;:34;;;;:::i;:::-;20543:16;::::0;;20557:1:::1;20543:16:::0;;;20519:21:::1;20543:16:::0;;::::1;::::0;;20449:57;;-1:-1:-1;20543:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20543:16:0::1;20519:40;;20588:4;20570;20575:1;20570:7;;;;;;;;-1:-1:-1::0;;;;;20570:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;20614:4:::1;::::0;20604:7;;20614:4;::::1;::::0;20604;;20614;;20604:7;::::1;;;;;-1:-1:-1::0;;;;;20604:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;20689:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;20689:188:0;;::::1;::::0;::::1;::::0;;;20631:21:::1;20689:188:::0;;;;;;20831:4:::1;20689:188:::0;;;;;;20851:15:::1;20689:188:::0;;;;;;;;;;;;;;;;;;;;;20655:21:::1;::::0;20689:6;;;::::1;::::0;:57:::1;::::0;20761:12;;20631:21;;20804:4;;20689:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;20631:21;20689:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20890:17;20910:40;20936:13;20910:21;:25;;:40;;;;:::i;:::-;20890:60:::0;-1:-1:-1;20963:19:0::1;20985:40;20998:26;:19:::0;21022:1:::1;20998:23;:26::i;:::-;20985:8;::::0;;:12:::1;:40::i;:::-;20963:62:::0;-1:-1:-1;21046:26:0::1;21075:58;21131:1;21075:51;20963:62:::0;21075:51;:9;21089:19;21075:13:::1;:34::i;:58::-;21046:87;;21144:27;21174:45;21207:11;21174:28;21188:13;;21174:9;:13;;:28;;;;:::i;:45::-;21144:75;;21230:26;21259:44;21291:11;21259:27;21273:12;;21259:9;:13;;:27;;;;:::i;:44::-;21230:73;;21320:11;;;;;;;;;-1:-1:-1::0;;;;;21320:11:0::1;-1:-1:-1::0;;;;;21320:19:0::1;;21347;21320:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21316:65:::0;21420:20:::1;::::0;21412:77:::1;::::0;21392:15:::1;::::0;-1:-1:-1;;;;;21420:20:0::1;::::0;21479:5:::1;::::0;21454:18;;21392:15;21412:77;21392:15;21412:77;21454:18;21420:20;21479:5;21412:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21563:5:0::1;::::0;-1:-1:-1;;21584:19:0;;;-1:-1:-1;21581:362:0::1;;21619:6;::::0;21793:21:::1;::::0;21619:244:::1;::::0;;-1:-1:-1;;;21619:244:0;;21695:4:::1;21619:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;21793:21:0;;::::1;21619:244:::0;;;;21833:15:::1;21619:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;21649:18;;21619:244;;;;;::::1;::::0;;;;;;;;;21649:18;21619:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;21619:244:0;21883:48;;;;;21619:244:::1;21883:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;21581:362;-1:-1:-1::0;;13547:6:0;:14;;-1:-1:-1;;13547:14:0;;;-1:-1:-1;;;;;;;;;20184:1766:0:o;18949:114::-;-1:-1:-1;;;;;19036:19:0;19011:4;19036:19;;;:11;:19;;;;;;;;19035:20;;18949:114::o;19071:333::-;19138:7;19158:17;19178:40;19203:14;;19178:20;19189:8;;19178:6;:10;;:20;;;;:::i;:40::-;19276:4;19258:24;;;;:9;:24;;;;;;19158:60;;-1:-1:-1;19258:39:0;;19158:60;19258:28;:39::i;:::-;19249:4;19231:24;;;;:9;:24;;;;;;;;;:66;;;;19313:42;;;;;;;19249:4;;-1:-1:-1;;;;;19313:42:0;;;;;;;;;;;;;19375:21;:6;19386:9;19375:10;:21::i;:::-;19368:28;19071:333;-1:-1:-1;;;;19071:333:0:o;1124:345::-;1210:7;1312:12;1305:5;1297:28;;;;-1:-1:-1;;;1297:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1336:9;1352:1;1348;:5;;;;;;;1124:345;-1:-1:-1;;;;;1124:345:0:o
Metadata Hash
ipfs://9c62506e8edd3801f95b3e6824ce450825597c2bc47f4c67ff992a385bbd6531