Token Yodus Finance
Overview ERC20
Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,004,000,000,020 YODUS
Holders:
20 addresses
Contract:
Decimals:
18
Balance
4,765,567,339.966935594483404528 YODUSValue
$0.00
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Yodus
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2022-11-24 */ // SPDX-License-Identifier: MIT pragma solidity 0.7.4; library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } interface InterfaceLP { function sync() external; } library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } contract MinterRole { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () { _addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role"); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function renounceMinter() public { _removeMinter(msg.sender); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } abstract contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract Ownable { address private _owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = msg.sender; } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner()); _; } function isOwner() public view returns (bool) { return msg.sender == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipRenounced(_owner); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract Yodus is ERC20Detailed, Ownable, MinterRole { using SafeMath for uint256; using SafeMathInt for int256; event LogRebase(uint256 indexed epoch, uint256 totalSupply); InterfaceLP public pairContract; bool public initialDistributionFinished; mapping(address => bool) allowTransfer; mapping(address => bool) _isFeeExempt; modifier initialDistributionLock() { require(initialDistributionFinished || isOwner() || allowTransfer[msg.sender]); _; } modifier validRecipient(address to) { require(to != address(0x0)); _; } uint256 private constant DECIMALS = 18; uint256 private constant MAX_UINT256 = ~uint256(0); uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 4 * 10**9 * 10**DECIMALS; uint256 public liquidityFee = 1; uint256 public treasuryFee = 6; uint256 public riskFreeValueFee = 4; uint256 public sellFee = 2; uint256 public totalFee = liquidityFee.add(treasuryFee).add(riskFreeValueFee); uint256 public feeDenominator = 100; uint256 public rewardYield = 4189063; uint256 public rewardYieldDenominator = 10000000000; uint256 public rebaseFrequency = 1800; uint256 public nextRebase = block.timestamp + rebaseFrequency; bool public autoRebase = true; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address public autoLiquidityReceiver; address public treasuryReceiver; address public riskFreeValueReceiver; uint256 targetLiquidity = 50; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; bool public swapEnabled = true; uint256 private gonSwapThreshold = (TOTAL_GONS * 10) / 10000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } uint256 private constant TOTAL_GONS = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY); uint256 private constant MAX_SUPPLY = ~uint128(0); uint256 private _totalSupply; uint256 private _gonsPerFragment; mapping(address => uint256) private _gonBalances; mapping(address => mapping(address => uint256)) private _allowedFragments; mapping(address => bool) public blacklist; constructor() ERC20Detailed("Yodus Finance", "YODUS", uint8(DECIMALS)) { router = IDEXRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); pair = IDEXFactory(router.factory()).createPair( router.WETH(), address(this) ); autoLiquidityReceiver = 0x22729939bD8BA8dc2F52Ebd5642d28dE37071410; treasuryReceiver = 0x22729939bD8BA8dc2F52Ebd5642d28dE37071410; riskFreeValueReceiver = 0x22729939bD8BA8dc2F52Ebd5642d28dE37071410; _allowedFragments[address(this)][address(router)] = uint256(-1); pairContract = InterfaceLP(pair); _totalSupply = INITIAL_FRAGMENTS_SUPPLY; _gonBalances[treasuryReceiver] = TOTAL_GONS; _gonsPerFragment = TOTAL_GONS.div(_totalSupply); initialDistributionFinished = false; _isFeeExempt[treasuryReceiver] = true; _isFeeExempt[address(this)] = true; _transferOwnership(treasuryReceiver); emit Transfer(address(0x0), treasuryReceiver, _totalSupply); } function updateBlacklist(address _user, bool _flag) public onlyOwner{ blacklist[_user] = _flag; } function setNextRebase(uint256 _nextRebase) external onlyOwner { nextRebase = _nextRebase; } function setRewardYield(uint256 _rewardYield, uint256 _rewardYieldDenominator) external onlyOwner { rewardYield = _rewardYield; rewardYieldDenominator = _rewardYieldDenominator; } function setAutoRebase(bool _autoRebase) external onlyOwner { autoRebase = _autoRebase; } function setRebaseFrequency(uint256 _rebaseFrequency) external onlyOwner { rebaseFrequency = _rebaseFrequency; } function shouldRebase() public view returns (bool) { return nextRebase <= block.timestamp; } function swipe(address _receiver) external onlyOwner { uint256 balance = address(this).balance; payable(_receiver).transfer(balance); } function coreRebase(uint256 epoch, int256 supplyDelta) private returns (uint256) { if (supplyDelta == 0) { emit LogRebase(epoch, _totalSupply); return _totalSupply; } if (supplyDelta < 0) { _totalSupply = _totalSupply.sub(uint256(-supplyDelta)); } else { _totalSupply = _totalSupply.add(uint256(supplyDelta)); } if (_totalSupply > MAX_SUPPLY) { _totalSupply = MAX_SUPPLY; } _gonsPerFragment = TOTAL_GONS.div(_totalSupply); pairContract.sync(); emit LogRebase(epoch, _totalSupply); return _totalSupply; } function _rebase() private { if(!inSwap) { uint256 epoch = block.timestamp; uint256 circulatingSupply = getCirculatingSupply(); int256 supplyDelta = int256(circulatingSupply.mul(rewardYield).div(rewardYieldDenominator)); coreRebase(epoch, supplyDelta); nextRebase = epoch + rebaseFrequency; } } function rebase(uint256 epoch, int256 supplyDelta) external onlyOwner returns (uint256) { require(!inSwap, "Try again"); return coreRebase(epoch, supplyDelta); } function totalSupply() external view override returns (uint256) { return _totalSupply; } function transfer(address to, uint256 value) external override validRecipient(to) initialDistributionLock returns (bool) { _transferFrom(msg.sender, to, value); return true; } function setLP(address _address) external onlyOwner { pairContract = InterfaceLP(_address); _isFeeExempt[_address]; } function allowance(address owner_, address spender) external view override returns (uint256) { return _allowedFragments[owner_][spender]; } function balanceOf(address who) external view override returns (uint256) { return _gonBalances[who].div(_gonsPerFragment); } function _basicTransfer( address from, address to, uint256 amount ) internal returns (bool) { uint256 gonAmount = amount.mul(_gonsPerFragment); _gonBalances[from] = _gonBalances[from].sub(gonAmount); _gonBalances[to] = _gonBalances[to].add(gonAmount); return true; } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(!blacklist[sender] && !blacklist[recipient], 'in_blacklist'); if (inSwap) { return _basicTransfer(sender, recipient, amount); } uint256 gonAmount = amount.mul(_gonsPerFragment); if (shouldSwapBack()) { swapBack(); } _gonBalances[sender] = _gonBalances[sender].sub(gonAmount); uint256 gonAmountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, gonAmount) : gonAmount; _gonBalances[recipient] = _gonBalances[recipient].add( gonAmountReceived ); emit Transfer( sender, recipient, gonAmountReceived.div(_gonsPerFragment) ); if(shouldRebase() && autoRebase) { _rebase(); } return true; } function transferFrom( address from, address to, uint256 value ) external override validRecipient(to) returns (bool) { if (_allowedFragments[from][msg.sender] != uint256(-1)) { _allowedFragments[from][msg.sender] = _allowedFragments[from][ msg.sender ].sub(value, "Insufficient Allowance"); } _transferFrom(from, to, value); return true; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified( targetLiquidity, targetLiquidityDenominator ) ? 0 : liquidityFee; uint256 contractTokenBalance = _gonBalances[address(this)].div( _gonsPerFragment ); uint256 amountToLiquify = contractTokenBalance .mul(dynamicLiquidityFee) .div(totalFee) .div(2); uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH .mul(dynamicLiquidityFee) .div(totalETHFee) .div(2); uint256 amountETHRiskFreeValue = amountETH.mul(riskFreeValueFee).div(totalETHFee); uint256 amountETHTreasury = amountETH.mul(treasuryFee).div( totalETHFee ); (bool success, ) = payable(treasuryReceiver).call{ value: amountETHTreasury, gas: 30000 }(""); (success, ) = payable(riskFreeValueReceiver).call{ value: amountETHRiskFreeValue, gas: 30000 }(""); success = false; if (amountToLiquify > 0) { router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); } } function takeFee(address sender, address recipient, uint256 gonAmount) internal returns (uint256) { uint256 _totalFee = totalFee; if(recipient == pair) _totalFee = _totalFee.add(sellFee); uint256 feeAmount = gonAmount.mul(_totalFee).div(feeDenominator); _gonBalances[address(this)] = _gonBalances[address(this)].add( feeAmount ); emit Transfer(sender, address(this), feeAmount.div(_gonsPerFragment)); return gonAmount.sub(feeAmount); } function decreaseAllowance(address spender, uint256 subtractedValue) external initialDistributionLock returns (bool) { uint256 oldValue = _allowedFragments[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedFragments[msg.sender][spender] = 0; } else { _allowedFragments[msg.sender][spender] = oldValue.sub( subtractedValue ); } emit Approval( msg.sender, spender, _allowedFragments[msg.sender][spender] ); return true; } function increaseAllowance(address spender, uint256 addedValue) external initialDistributionLock returns (bool) { _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][ spender ].add(addedValue); emit Approval( msg.sender, spender, _allowedFragments[msg.sender][spender] ); return true; } function approve(address spender, uint256 value) external override initialDistributionLock returns (bool) { _allowedFragments[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function checkFeeExempt(address _addr) external view returns (bool) { return _isFeeExempt[_addr]; } function setInitialDistributionFinished() external onlyOwner { initialDistributionFinished = true; } function enableTransfer(address _addr) external onlyOwner { allowTransfer[_addr] = true; } function setFeeExempt(address _addr) external onlyOwner { _isFeeExempt[_addr] = true; } function shouldTakeFee(address from, address to) internal view returns (bool) { return (pair == from || pair == to) && (!_isFeeExempt[from]); } function mint(address recipient, uint256 amount) external onlyMinter { _totalSupply = _totalSupply.add(uint256(amount)); if (_totalSupply > MAX_SUPPLY) { _totalSupply = MAX_SUPPLY; } _gonsPerFragment = TOTAL_GONS.div(_totalSupply); pairContract.sync(); _gonBalances[recipient] = _gonBalances[recipient].add(amount); } function setSwapBackSettings( bool _enabled, uint256 _num, uint256 _denom ) external onlyOwner { swapEnabled = _enabled; gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _gonBalances[address(this)] >= gonSwapThreshold; } function getCirculatingSupply() public view returns (uint256) { return (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div( _gonsPerFragment ); } function setTargetLiquidity(uint256 target, uint256 accuracy) external onlyOwner { targetLiquidity = target; targetLiquidityDenominator = accuracy; } function addMinter(address account) public onlyOwner { _addMinter(account); } function removeMinter(address account) public onlyOwner { _removeMinter(account); } function isNotInSwap() external view returns (bool) { return !inSwap; } function checkSwapThreshold() external view returns (uint256) { return gonSwapThreshold.div(_gonsPerFragment); } function manualSync() external { InterfaceLP(pair).sync(); } function setFeeReceivers( address _autoLiquidityReceiver, address _treasuryReceiver, address _riskFreeValueReceiver ) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; treasuryReceiver = _treasuryReceiver; riskFreeValueReceiver = _riskFreeValueReceiver; } function setFees( uint256 _liquidityFee, uint256 _riskFreeValueFee, uint256 _treasuryFee, uint256 _sellFee, uint256 _feeDenominator ) external onlyOwner { liquidityFee = _liquidityFee; riskFreeValueFee = _riskFreeValueFee; treasuryFee = _treasuryFee; sellFee = _sellFee; totalFee = liquidityFee.add(treasuryFee).add(riskFreeValueFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator / 4); } function clearStuckBalance(uint256 amountPercentage, address addr) external onlyOwner { uint256 amountETH = address(this).balance; payable(addr).transfer( (amountETH * amountPercentage) / 100 ); } function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) { return ERC20Detailed(tokenAddress).transfer(msg.sender, tokens); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { uint256 liquidityBalance = _gonBalances[pair].div(_gonsPerFragment); return accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } receive() external payable {} }
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":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"enableTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialDistributionFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","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":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"int256","name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebaseFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardYieldDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"riskFreeValueFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"riskFreeValueReceiver","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":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_autoRebase","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_riskFreeValueReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_riskFreeValueFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setInitialDistributionFinished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nextRebase","type":"uint256"}],"name":"setNextRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rebaseFrequency","type":"uint256"}],"name":"setRebaseFrequency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardYield","type":"uint256"},{"internalType":"uint256","name":"_rewardYieldDenominator","type":"uint256"}],"name":"setRewardYield","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_num","type":"uint256"},{"internalType":"uint256","name":"_denom","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"swipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"updateBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600755600660085560046009556002600a55620000516009546200003d600854600754620009cd60201b6200319c1790919060201c565b620009cd60201b6200319c1790919060201c565b600b556064600c55623feb87600d556402540be400600e55610708600f55600f5442016010556001601160006101000a81548160ff02191690831515021790555061dead601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603260165560646017556001601960146101000a81548160ff021916908315150217905550612710600a6012600a0a63ee6b280002600019816200015757fe5b066000190302816200016557fe5b04601a553480156200017657600080fd5b506040518060400160405280600d81526020017f596f6475732046696e616e6365000000000000000000000000000000000000008152506040518060400160405280600581526020017f594f44555300000000000000000000000000000000000000000000000000000081525060128260009080519060200190620001fd92919062000e93565b5081600190805190602001906200021692919062000e93565b5080600260006101000a81548160ff021916908360ff16021790555050505033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002873362000a5660201b60201c565b731b02da8cb0d097eb8d57a175b88c7d8b47997506601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034557600080fd5b505afa1580156200035a573d6000803e3d6000fd5b505050506040513d60208110156200037157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040657600080fd5b505afa1580156200041b573d6000803e3d6000fd5b505050506040513d60208110156200043257600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004ae57600080fd5b505af1158015620004c3573d6000803e3d6000fd5b505050506040513d6020811015620004da57600080fd5b8101908080519060200190929190505050601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507322729939bd8ba8dc2f52ebd5642d28de37071410601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507322729939bd8ba8dc2f52ebd5642d28de37071410601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507322729939bd8ba8dc2f52ebd5642d28de37071410601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a63ee6b280002601c819055506012600a0a63ee6b280002600019816200077757fe5b0660001903601e6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000817601c546012600a0a63ee6b28000260001981620007fe57fe5b066000190362000ab760201b620032241790919060201c565b601d819055506000600460146101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200093d601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000b0960201b60201c565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601c546040518082815260200191505060405180910390a362000f49565b60008082840190508381101562000a4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b62000a7181600362000c0460201b6200326e1790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600062000b0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000ce860201b60201c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b4457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b62000c16828262000db360201b60201c565b1562000c8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000808311829062000d98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000d5c57808201518184015260208101905062000d3f565b50505050905090810190601f16801562000d8a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000da557fe5b049050809150509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062005a8f6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000ecb576000855562000f17565b82601f1062000ee657805160ff191683800117855562000f17565b8280016001018555821562000f17579182015b8281111562000f1657825182559160200191906001019062000ef9565b5b50905062000f26919062000f2a565b5090565b5b8082111562000f4557600081600090555060010162000f2b565b5090565b614b368062000f596000396000f3fe6080604052600436106103d25760003560e01c80637a43e23f116101fd578063aa271e1a11610118578063d51ed1c8116100ab578063dd62ed3e1161007a578063dd62ed3e14611485578063e15beb801461150a578063f2fde38b14611547578063f887ea4014611598578063f9f92be4146115d9576103d9565b8063d51ed1c814611329578063d5938aac14611378578063d7832b11146113c9578063d7c01032146113f4576103d9565b8063cce7db58116100e7578063cce7db58146111f3578063d088935814611244578063d1fce26414611295578063d4399790146112c2576103d9565b8063aa271e1a146110f5578063bc7e68a31461115c578063ca33e64c14611187578063cc32d176146111c8576103d9565b806395d89b41116101905780639ae7372d1161015f5780639ae7372d14610f97578063a457c2d714610fd2578063a8aa1b3114611043578063a9059cbb14611084576103d9565b806395d89b4114610e7457806398118cb414610f04578063983b2d5614610f2f5780639865027514610f80576103d9565b80638da5cb5b116101cc5780638da5cb5b14610d7c5780638f32d59b14610dbd5780639079f93214610dea5780639155e08314610e17576103d9565b80637a43e23f14610c8a5780637d4b501714610ce357806383b4ac6814610d2457806389375abf14610d51576103d9565b80633092afd5116102ed5780635d9280af1161028057806370a082311161024f57806370a0823114610ba6578063715018a614610c0b578063749796a514610c22578063753d02a114610c73576103d9565b80635d9280af14610af657806363eab10a14610b215780636d351d1a14610b4e5780636ddd171314610b79576103d9565b806340c10f19116102bc57806340c10f19146109c45780634cd9ddf214610a1f5780634d709adf14610a5a57806356a227f214610a9b576103d9565b80633092afd514610863578063313ce567146108b457806333f3d628146108e25780633950935114610953576103d9565b806318160ddd116103655780632b112e49116103345780632b112e49146107a55780632b14ca56146107d05780632be6937d146107fb5780632f34d28214610812576103d9565b806318160ddd146106795780631df4ccfc146106a4578063201e7991146106cf57806323b872dd14610714576103d9565b8063095ea7b3116103a1578063095ea7b3146105575780630af08314146105c85780631161ae39146105f3578063180b0d7e1461064e576103d9565b806301b16827146103de57806304a66b481461042357806306fdde031461048657806308b1fd8f14610516576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506104216004803603604081101561040157600080fd5b810190808035906020019092919080359060200190929190505050611640565b005b34801561042f57600080fd5b50610484600480360360a081101561044657600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611663565b005b34801561049257600080fd5b5061049b6116e9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104db5780820151818401526020810190506104c0565b50505050905090810190601f1680156105085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052257600080fd5b5061052b61178b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056357600080fd5b506105b06004803603604081101561057a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117b1565b60405180821515815260200191505060405180910390f35b3480156105d457600080fd5b506105dd61191f565b6040518082815260200191505060405180910390f35b3480156105ff57600080fd5b506106366004803603604081101561061657600080fd5b810190808035906020019092919080359060200190929190505050611925565b60405180821515815260200191505060405180910390f35b34801561065a57600080fd5b5061066361193a565b6040518082815260200191505060405180910390f35b34801561068557600080fd5b5061068e611940565b6040518082815260200191505060405180910390f35b3480156106b057600080fd5b506106b961194a565b6040518082815260200191505060405180910390f35b3480156106db57600080fd5b50610712600480360360408110156106f257600080fd5b810190808035906020019092919080359060200190929190505050611950565b005b34801561072057600080fd5b5061078d6004803603606081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611973565b60405180821515815260200191505060405180910390f35b3480156107b157600080fd5b506107ba611bb2565b6040518082815260200191505060405180910390f35b3480156107dc57600080fd5b506107e5611ccd565b6040518082815260200191505060405180910390f35b34801561080757600080fd5b50610810611cd3565b005b34801561081e57600080fd5b506108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d01565b005b34801561086f57600080fd5b506108b26004803603602081101561088657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611da1565b005b3480156108c057600080fd5b506108c9611dbe565b604051808260ff16815260200191505060405180910390f35b3480156108ee57600080fd5b5061093b6004803603604081101561090557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dd5565b60405180821515815260200191505060405180910390f35b34801561095f57600080fd5b506109ac6004803603604081101561097657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e9c565b60405180821515815260200191505060405180910390f35b3480156109d057600080fd5b50610a1d600480360360408110156109e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612114565b005b348015610a2b57600080fd5b50610a5860048036036020811015610a4257600080fd5b8101908080359060200190929190505050612316565b005b348015610a6657600080fd5b50610a6f612331565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa757600080fd5b50610af460048036036040811015610abe57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612357565b005b348015610b0257600080fd5b50610b0b6123c5565b6040518082815260200191505060405180910390f35b348015610b2d57600080fd5b50610b366123cb565b60405180821515815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123d8565b6040518082815260200191505060405180910390f35b348015610b8557600080fd5b50610b8e6123f6565b60405180821515815260200191505060405180910390f35b348015610bb257600080fd5b50610bf560048036036020811015610bc957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612409565b6040518082815260200191505060405180910390f35b348015610c1757600080fd5b50610c20612466565b005b348015610c2e57600080fd5b50610c7160048036036020811015610c4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612520565b005b348015610c7f57600080fd5b50610c8861258c565b005b348015610c9657600080fd5b50610ccd60048036036040811015610cad57600080fd5b810190808035906020019092919080359060200190929190505050612610565b6040518082815260200191505060405180910390f35b348015610cef57600080fd5b50610cf86126b8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3057600080fd5b50610d396126de565b60405180821515815260200191505060405180910390f35b348015610d5d57600080fd5b50610d666126f6565b6040518082815260200191505060405180910390f35b348015610d8857600080fd5b50610d916126fc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dc957600080fd5b50610dd2612726565b60405180821515815260200191505060405180910390f35b348015610df657600080fd5b50610dff61277e565b60405180821515815260200191505060405180910390f35b348015610e2357600080fd5b50610e7260048036036040811015610e3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612791565b005b348015610e8057600080fd5b50610e896127fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ec9578082015181840152602081019050610eae565b50505050905090810190601f168015610ef65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f1057600080fd5b50610f1961289f565b6040518082815260200191505060405180910390f35b348015610f3b57600080fd5b50610f7e60048036036020811015610f5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a5565b005b348015610f8c57600080fd5b50610f956128c2565b005b348015610fa357600080fd5b50610fd060048036036020811015610fba57600080fd5b81019080803590602001909291905050506128cd565b005b348015610fde57600080fd5b5061102b60048036036040811015610ff557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128e8565b60405180821515815260200191505060405180910390f35b34801561104f57600080fd5b50611058612bf5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561109057600080fd5b506110dd600480360360408110156110a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c1b565b60405180821515815260200191505060405180910390f35b34801561110157600080fd5b506111446004803603602081101561111857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ceb565b60405180821515815260200191505060405180910390f35b34801561116857600080fd5b50611171612d08565b6040518082815260200191505060405180910390f35b34801561119357600080fd5b5061119c612d0e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111d457600080fd5b506111dd612d34565b6040518082815260200191505060405180910390f35b3480156111ff57600080fd5b506112426004803603602081101561121657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d3a565b005b34801561125057600080fd5b506112936004803603606081101561126757600080fd5b810190808035151590602001909291908035906020019092919080359060200190929190505050612d9b565b005b3480156112a157600080fd5b506112aa612e0f565b60405180821515815260200191505060405180910390f35b3480156112ce57600080fd5b50611311600480360360208110156112e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e22565b60405180821515815260200191505060405180910390f35b34801561133557600080fd5b506113626004803603602081101561134c57600080fd5b8101908080359060200190929190505050612e78565b6040518082815260200191505060405180910390f35b34801561138457600080fd5b506113c76004803603602081101561139b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f3a565b005b3480156113d557600080fd5b506113de612fa6565b6040518082815260200191505060405180910390f35b34801561140057600080fd5b506114836004803603606081101561141757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fac565b005b34801561149157600080fd5b506114f4600480360360408110156114a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613085565b6040518082815260200191505060405180910390f35b34801561151657600080fd5b506115456004803603602081101561152d57600080fd5b8101908080351515906020019092919050505061310c565b005b34801561155357600080fd5b506115966004803603602081101561156a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061313a565b005b3480156115a457600080fd5b506115ad613157565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156115e557600080fd5b50611628600480360360208110156115fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061317d565b60405180821515815260200191505060405180910390f35b611648612726565b61165157600080fd5b81600d8190555080600e819055505050565b61166b612726565b61167457600080fd5b84600781905550836009819055508260088190555081600a819055506116bb6009546116ad60085460075461319c90919063ffffffff16565b61319c90919063ffffffff16565b600b8190555080600c819055506004600c54816116d457fe5b04600b54106116e257600080fd5b5050505050565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117815780601f1061175657610100808354040283529160200191611781565b820191906000526020600020905b81548152906001019060200180831161176457829003601f168201915b5050505050905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460149054906101000a900460ff16806117d257506117d1612726565b5b806118265750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61182f57600080fd5b81601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600d5481565b60008261193183612e78565b11905092915050565b600c5481565b6000601c54905090565b600b5481565b611958612726565b61196157600080fd5b81601681905550806017819055505050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119b057600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b9a57611b19836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133499092919063ffffffff16565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611ba5858585613409565b5060019150509392505050565b6000611cc8601d54611cba601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac601e6000601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546012600a0a63ee6b28000260001981611c9957fe5b066000190361377a90919063ffffffff16565b61377a90919063ffffffff16565b61322490919063ffffffff16565b905090565b600a5481565b611cdb612726565b611ce457600080fd5b6001600460146101000a81548160ff021916908315150217905550565b611d09612726565b611d1257600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90505050565b611da9612726565b611db257600080fd5b611dbb816137c4565b50565b6000600260009054906101000a900460ff16905090565b6000611ddf612726565b611de857600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e5957600080fd5b505af1158015611e6d573d6000803e3d6000fd5b505050506040513d6020811015611e8357600080fd5b8101908080519060200190929190505050905092915050565b6000600460149054906101000a900460ff1680611ebd5750611ebc612726565b5b80611f115750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f1a57600080fd5b611fa982601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61211d33612ceb565b612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180614a6d6030913960400191505060405180910390fd5b61218781601c5461319c90919063ffffffff16565b601c819055506000196fffffffffffffffffffffffffffffffff16601c5411156121c7576000196fffffffffffffffffffffffffffffffff16601c819055505b6121f5601c546012600a0a63ee6b280002600019816121e257fe5b066000190361322490919063ffffffff16565b601d81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561226557600080fd5b505af1158015612279573d6000803e3d6000fd5b505050506122cf81601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61231e612726565b61232757600080fd5b80600f8190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61235f612726565b61236857600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584028161239357fe5b049081150290604051600060405180830381858888f193505050501580156123bf573d6000803e3d6000fd5b50505050565b60095481565b6000426010541115905090565b60006123f1601d54601a5461322490919063ffffffff16565b905090565b601960149054906101000a900460ff1681565b600061245f601d54601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322490919063ffffffff16565b9050919050565b61246e612726565b61247757600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612528612726565b61253157600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125f657600080fd5b505af115801561260a573d6000803e3d6000fd5b50505050565b600061261a612726565b61262357600080fd5b601b60009054906101000a900460ff16156126a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f54727920616761696e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6126b0838361381e565b905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60009054906101000a900460ff1615905090565b600f5481565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b601160009054906101000a900460ff1681565b612799612726565b6127a257600080fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128955780601f1061286a57610100808354040283529160200191612895565b820191906000526020600020905b81548152906001019060200180831161287857829003601f168201915b5050505050905090565b60075481565b6128ad612726565b6128b657600080fd5b6128bf816139ea565b50565b6128cb336137c4565b565b6128d5612726565b6128de57600080fd5b8060108190555050565b6000600460149054906101000a900460ff16806129095750612908612726565b5b8061295d5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61296657600080fd5b6000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612a75576000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b09565b612a88838261377a90919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c5857600080fd5b600460149054906101000a900460ff1680612c775750612c76612726565b5b80612ccb5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cd457600080fd5b612cdf338585613409565b50600191505092915050565b6000612d01826003613a4490919063ffffffff16565b9050919050565b60105481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b612d42612726565b612d4b57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d96573d6000803e3d6000fd5b505050565b612da3612726565b612dac57600080fd5b82601960146101000a81548160ff021916908315150217905550612e0482612df6836012600a0a63ee6b28000260001981612de357fe5b066000190361322490919063ffffffff16565b613b2290919063ffffffff16565b601a81905550505050565b600460149054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612ef1601d54601e6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322490919063ffffffff16565b9050612f32612efe611bb2565b612f24612f15600285613b2290919063ffffffff16565b86613b2290919063ffffffff16565b61322490919063ffffffff16565b915050919050565b612f42612726565b612f4b57600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e5481565b612fb4612726565b612fbd57600080fd5b82601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b613114612726565b61311d57600080fd5b80601160006101000a81548160ff02191690831515021790555050565b613142612726565b61314b57600080fd5b61315481613ba8565b50565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602080528060005260406000206000915054906101000a900460ff1681565b60008082840190508381101561321a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061326683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ca2565b905092915050565b6132788282613a44565b156132eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008383111582906133f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133bb5780820151818401526020810190506133a0565b50505050905090810190601f1680156133e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134af5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60009054906101000a900460ff161561354857613541848484613d68565b9050613773565b600061355f601d5484613b2290919063ffffffff16565b9050613569613eb8565b1561357757613576613f8f565b5b6135c981601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461377a90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613618868661466b565b613622578161362e565b61362d868684614774565b5b905061368281601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613729601d548561322490919063ffffffff16565b6040518082815260200191505060405180910390a36137466123cb565b801561375e5750601160009054906101000a900460ff165b1561376c5761376b614941565b5b6001925050505b9392505050565b60006137bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613349565b905092915050565b6137d88160036149af90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008082141561386c57827f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601c546040518082815260200191505060405180910390a2601c5490506139e4565b60008212156138985761388d82600003601c5461377a90919063ffffffff16565b601c819055506138b4565b6138ad82601c5461319c90919063ffffffff16565b601c819055505b6000196fffffffffffffffffffffffffffffffff16601c5411156138ee576000196fffffffffffffffffffffffffffffffff16601c819055505b61391c601c546012600a0a63ee6b2800026000198161390957fe5b066000190361322490919063ffffffff16565b601d81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561398c57600080fd5b505af11580156139a0573d6000803e3d6000fd5b50505050827f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601c546040518082815260200191505060405180910390a2601c5490505b92915050565b6139fe81600361326e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614adf6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080831415613b355760009050613ba2565b6000828402905082848281613b4657fe5b0414613b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614abe6021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613be257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613d4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d13578082015181840152602081019050613cf8565b50505050905090810190601f168015613d405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d5a57fe5b049050809150509392505050565b600080613d80601d5484613b2290919063ffffffff16565b9050613dd481601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461377a90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e6981601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613f255750601b60009054906101000a900460ff16155b8015613f3d5750601960149054906101000a900460ff165b8015613f8a5750601a54601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601b60006101000a81548160ff0219169083151502179055506000613fba601654601754611925565b613fc657600754613fc9565b60005b90506000614021601d54601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322490919063ffffffff16565b9050600061405f6002614051600b546140438787613b2290919063ffffffff16565b61322490919063ffffffff16565b61322490919063ffffffff16565b90506000614076828461377a90919063ffffffff16565b90506060600267ffffffffffffffff8111801561409257600080fd5b506040519080825280602002602001820160405280156140c15781602001602082028036833780820191505090505b50905030816000815181106140d257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561417457600080fd5b505afa158015614188573d6000803e3d6000fd5b505050506040513d602081101561419e57600080fd5b8101908080519060200190929190505050816001815181106141bc57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156142bf5780820151818401526020810190506142a4565b505050509050019650505050505050600060405180830381600087803b1580156142e857600080fd5b505af11580156142fc573d6000803e3d6000fd5b505050506000614315824761377a90919063ffffffff16565b9050600061434161433060028a61322490919063ffffffff16565b600b5461377a90919063ffffffff16565b9050600061437d600261436f846143618d88613b2290919063ffffffff16565b61322490919063ffffffff16565b61322490919063ffffffff16565b905060006143a88361439a60095487613b2290919063ffffffff16565b61322490919063ffffffff16565b905060006143d3846143c560085488613b2290919063ffffffff16565b61322490919063ffffffff16565b90506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d806000811461445c576040519150601f19603f3d011682016040523d82523d6000602084013e614461565b606091505b50509050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d80600081146144ea576040519150601f19603f3d011682016040523d82523d6000602084013e6144ef565b606091505b5050809150506000905060008a111561464257601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156145ee57600080fd5b505af1158015614602573d6000803e3d6000fd5b50505050506040513d606081101561461957600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505b5050505050505050505050506000601b60006101000a81548160ff021916908315150217905550565b60008273ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061471657508173ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561476c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600b549050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156147ea576147e7600a548261319c90919063ffffffff16565b90505b6000614813600c546148058487613b2290919063ffffffff16565b61322490919063ffffffff16565b905061486781601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61490e601d548561322490919063ffffffff16565b6040518082815260200191505060405180910390a3614936818561377a90919063ffffffff16565b925050509392505050565b601b60009054906101000a900460ff166149ad5760004290506000614964611bb2565b90506000614991600e54614983600d5485613b2290919063ffffffff16565b61322490919063ffffffff16565b905061499d838261381e565b50600f5483016010819055505050505b565b6149b98282613a44565b614a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614a9d6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a2646970667358221220e27cbd169f1c9cc47b9369215ccf09ed41c3a792381402b1c54726f9b3bb8bda64736f6c63430007040033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373
Deployed Bytecode
0x6080604052600436106103d25760003560e01c80637a43e23f116101fd578063aa271e1a11610118578063d51ed1c8116100ab578063dd62ed3e1161007a578063dd62ed3e14611485578063e15beb801461150a578063f2fde38b14611547578063f887ea4014611598578063f9f92be4146115d9576103d9565b8063d51ed1c814611329578063d5938aac14611378578063d7832b11146113c9578063d7c01032146113f4576103d9565b8063cce7db58116100e7578063cce7db58146111f3578063d088935814611244578063d1fce26414611295578063d4399790146112c2576103d9565b8063aa271e1a146110f5578063bc7e68a31461115c578063ca33e64c14611187578063cc32d176146111c8576103d9565b806395d89b41116101905780639ae7372d1161015f5780639ae7372d14610f97578063a457c2d714610fd2578063a8aa1b3114611043578063a9059cbb14611084576103d9565b806395d89b4114610e7457806398118cb414610f04578063983b2d5614610f2f5780639865027514610f80576103d9565b80638da5cb5b116101cc5780638da5cb5b14610d7c5780638f32d59b14610dbd5780639079f93214610dea5780639155e08314610e17576103d9565b80637a43e23f14610c8a5780637d4b501714610ce357806383b4ac6814610d2457806389375abf14610d51576103d9565b80633092afd5116102ed5780635d9280af1161028057806370a082311161024f57806370a0823114610ba6578063715018a614610c0b578063749796a514610c22578063753d02a114610c73576103d9565b80635d9280af14610af657806363eab10a14610b215780636d351d1a14610b4e5780636ddd171314610b79576103d9565b806340c10f19116102bc57806340c10f19146109c45780634cd9ddf214610a1f5780634d709adf14610a5a57806356a227f214610a9b576103d9565b80633092afd514610863578063313ce567146108b457806333f3d628146108e25780633950935114610953576103d9565b806318160ddd116103655780632b112e49116103345780632b112e49146107a55780632b14ca56146107d05780632be6937d146107fb5780632f34d28214610812576103d9565b806318160ddd146106795780631df4ccfc146106a4578063201e7991146106cf57806323b872dd14610714576103d9565b8063095ea7b3116103a1578063095ea7b3146105575780630af08314146105c85780631161ae39146105f3578063180b0d7e1461064e576103d9565b806301b16827146103de57806304a66b481461042357806306fdde031461048657806308b1fd8f14610516576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506104216004803603604081101561040157600080fd5b810190808035906020019092919080359060200190929190505050611640565b005b34801561042f57600080fd5b50610484600480360360a081101561044657600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611663565b005b34801561049257600080fd5b5061049b6116e9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104db5780820151818401526020810190506104c0565b50505050905090810190601f1680156105085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052257600080fd5b5061052b61178b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056357600080fd5b506105b06004803603604081101561057a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117b1565b60405180821515815260200191505060405180910390f35b3480156105d457600080fd5b506105dd61191f565b6040518082815260200191505060405180910390f35b3480156105ff57600080fd5b506106366004803603604081101561061657600080fd5b810190808035906020019092919080359060200190929190505050611925565b60405180821515815260200191505060405180910390f35b34801561065a57600080fd5b5061066361193a565b6040518082815260200191505060405180910390f35b34801561068557600080fd5b5061068e611940565b6040518082815260200191505060405180910390f35b3480156106b057600080fd5b506106b961194a565b6040518082815260200191505060405180910390f35b3480156106db57600080fd5b50610712600480360360408110156106f257600080fd5b810190808035906020019092919080359060200190929190505050611950565b005b34801561072057600080fd5b5061078d6004803603606081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611973565b60405180821515815260200191505060405180910390f35b3480156107b157600080fd5b506107ba611bb2565b6040518082815260200191505060405180910390f35b3480156107dc57600080fd5b506107e5611ccd565b6040518082815260200191505060405180910390f35b34801561080757600080fd5b50610810611cd3565b005b34801561081e57600080fd5b506108616004803603602081101561083557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d01565b005b34801561086f57600080fd5b506108b26004803603602081101561088657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611da1565b005b3480156108c057600080fd5b506108c9611dbe565b604051808260ff16815260200191505060405180910390f35b3480156108ee57600080fd5b5061093b6004803603604081101561090557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dd5565b60405180821515815260200191505060405180910390f35b34801561095f57600080fd5b506109ac6004803603604081101561097657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e9c565b60405180821515815260200191505060405180910390f35b3480156109d057600080fd5b50610a1d600480360360408110156109e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612114565b005b348015610a2b57600080fd5b50610a5860048036036020811015610a4257600080fd5b8101908080359060200190929190505050612316565b005b348015610a6657600080fd5b50610a6f612331565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa757600080fd5b50610af460048036036040811015610abe57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612357565b005b348015610b0257600080fd5b50610b0b6123c5565b6040518082815260200191505060405180910390f35b348015610b2d57600080fd5b50610b366123cb565b60405180821515815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123d8565b6040518082815260200191505060405180910390f35b348015610b8557600080fd5b50610b8e6123f6565b60405180821515815260200191505060405180910390f35b348015610bb257600080fd5b50610bf560048036036020811015610bc957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612409565b6040518082815260200191505060405180910390f35b348015610c1757600080fd5b50610c20612466565b005b348015610c2e57600080fd5b50610c7160048036036020811015610c4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612520565b005b348015610c7f57600080fd5b50610c8861258c565b005b348015610c9657600080fd5b50610ccd60048036036040811015610cad57600080fd5b810190808035906020019092919080359060200190929190505050612610565b6040518082815260200191505060405180910390f35b348015610cef57600080fd5b50610cf86126b8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3057600080fd5b50610d396126de565b60405180821515815260200191505060405180910390f35b348015610d5d57600080fd5b50610d666126f6565b6040518082815260200191505060405180910390f35b348015610d8857600080fd5b50610d916126fc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dc957600080fd5b50610dd2612726565b60405180821515815260200191505060405180910390f35b348015610df657600080fd5b50610dff61277e565b60405180821515815260200191505060405180910390f35b348015610e2357600080fd5b50610e7260048036036040811015610e3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612791565b005b348015610e8057600080fd5b50610e896127fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ec9578082015181840152602081019050610eae565b50505050905090810190601f168015610ef65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f1057600080fd5b50610f1961289f565b6040518082815260200191505060405180910390f35b348015610f3b57600080fd5b50610f7e60048036036020811015610f5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128a5565b005b348015610f8c57600080fd5b50610f956128c2565b005b348015610fa357600080fd5b50610fd060048036036020811015610fba57600080fd5b81019080803590602001909291905050506128cd565b005b348015610fde57600080fd5b5061102b60048036036040811015610ff557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128e8565b60405180821515815260200191505060405180910390f35b34801561104f57600080fd5b50611058612bf5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561109057600080fd5b506110dd600480360360408110156110a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c1b565b60405180821515815260200191505060405180910390f35b34801561110157600080fd5b506111446004803603602081101561111857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ceb565b60405180821515815260200191505060405180910390f35b34801561116857600080fd5b50611171612d08565b6040518082815260200191505060405180910390f35b34801561119357600080fd5b5061119c612d0e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111d457600080fd5b506111dd612d34565b6040518082815260200191505060405180910390f35b3480156111ff57600080fd5b506112426004803603602081101561121657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d3a565b005b34801561125057600080fd5b506112936004803603606081101561126757600080fd5b810190808035151590602001909291908035906020019092919080359060200190929190505050612d9b565b005b3480156112a157600080fd5b506112aa612e0f565b60405180821515815260200191505060405180910390f35b3480156112ce57600080fd5b50611311600480360360208110156112e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e22565b60405180821515815260200191505060405180910390f35b34801561133557600080fd5b506113626004803603602081101561134c57600080fd5b8101908080359060200190929190505050612e78565b6040518082815260200191505060405180910390f35b34801561138457600080fd5b506113c76004803603602081101561139b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f3a565b005b3480156113d557600080fd5b506113de612fa6565b6040518082815260200191505060405180910390f35b34801561140057600080fd5b506114836004803603606081101561141757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fac565b005b34801561149157600080fd5b506114f4600480360360408110156114a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613085565b6040518082815260200191505060405180910390f35b34801561151657600080fd5b506115456004803603602081101561152d57600080fd5b8101908080351515906020019092919050505061310c565b005b34801561155357600080fd5b506115966004803603602081101561156a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061313a565b005b3480156115a457600080fd5b506115ad613157565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156115e557600080fd5b50611628600480360360208110156115fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061317d565b60405180821515815260200191505060405180910390f35b611648612726565b61165157600080fd5b81600d8190555080600e819055505050565b61166b612726565b61167457600080fd5b84600781905550836009819055508260088190555081600a819055506116bb6009546116ad60085460075461319c90919063ffffffff16565b61319c90919063ffffffff16565b600b8190555080600c819055506004600c54816116d457fe5b04600b54106116e257600080fd5b5050505050565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117815780601f1061175657610100808354040283529160200191611781565b820191906000526020600020905b81548152906001019060200180831161176457829003601f168201915b5050505050905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460149054906101000a900460ff16806117d257506117d1612726565b5b806118265750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61182f57600080fd5b81601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600d5481565b60008261193183612e78565b11905092915050565b600c5481565b6000601c54905090565b600b5481565b611958612726565b61196157600080fd5b81601681905550806017819055505050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119b057600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611b9a57611b19836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133499092919063ffffffff16565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611ba5858585613409565b5060019150509392505050565b6000611cc8601d54611cba601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac601e6000601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546012600a0a63ee6b28000260001981611c9957fe5b066000190361377a90919063ffffffff16565b61377a90919063ffffffff16565b61322490919063ffffffff16565b905090565b600a5481565b611cdb612726565b611ce457600080fd5b6001600460146101000a81548160ff021916908315150217905550565b611d09612726565b611d1257600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90505050565b611da9612726565b611db257600080fd5b611dbb816137c4565b50565b6000600260009054906101000a900460ff16905090565b6000611ddf612726565b611de857600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e5957600080fd5b505af1158015611e6d573d6000803e3d6000fd5b505050506040513d6020811015611e8357600080fd5b8101908080519060200190929190505050905092915050565b6000600460149054906101000a900460ff1680611ebd5750611ebc612726565b5b80611f115750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f1a57600080fd5b611fa982601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61211d33612ceb565b612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180614a6d6030913960400191505060405180910390fd5b61218781601c5461319c90919063ffffffff16565b601c819055506000196fffffffffffffffffffffffffffffffff16601c5411156121c7576000196fffffffffffffffffffffffffffffffff16601c819055505b6121f5601c546012600a0a63ee6b280002600019816121e257fe5b066000190361322490919063ffffffff16565b601d81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561226557600080fd5b505af1158015612279573d6000803e3d6000fd5b505050506122cf81601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61231e612726565b61232757600080fd5b80600f8190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61235f612726565b61236857600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584028161239357fe5b049081150290604051600060405180830381858888f193505050501580156123bf573d6000803e3d6000fd5b50505050565b60095481565b6000426010541115905090565b60006123f1601d54601a5461322490919063ffffffff16565b905090565b601960149054906101000a900460ff1681565b600061245f601d54601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322490919063ffffffff16565b9050919050565b61246e612726565b61247757600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612528612726565b61253157600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125f657600080fd5b505af115801561260a573d6000803e3d6000fd5b50505050565b600061261a612726565b61262357600080fd5b601b60009054906101000a900460ff16156126a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f54727920616761696e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6126b0838361381e565b905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60009054906101000a900460ff1615905090565b600f5481565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b601160009054906101000a900460ff1681565b612799612726565b6127a257600080fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156128955780601f1061286a57610100808354040283529160200191612895565b820191906000526020600020905b81548152906001019060200180831161287857829003601f168201915b5050505050905090565b60075481565b6128ad612726565b6128b657600080fd5b6128bf816139ea565b50565b6128cb336137c4565b565b6128d5612726565b6128de57600080fd5b8060108190555050565b6000600460149054906101000a900460ff16806129095750612908612726565b5b8061295d5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61296657600080fd5b6000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612a75576000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b09565b612a88838261377a90919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c5857600080fd5b600460149054906101000a900460ff1680612c775750612c76612726565b5b80612ccb5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cd457600080fd5b612cdf338585613409565b50600191505092915050565b6000612d01826003613a4490919063ffffffff16565b9050919050565b60105481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b612d42612726565b612d4b57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d96573d6000803e3d6000fd5b505050565b612da3612726565b612dac57600080fd5b82601960146101000a81548160ff021916908315150217905550612e0482612df6836012600a0a63ee6b28000260001981612de357fe5b066000190361322490919063ffffffff16565b613b2290919063ffffffff16565b601a81905550505050565b600460149054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612ef1601d54601e6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322490919063ffffffff16565b9050612f32612efe611bb2565b612f24612f15600285613b2290919063ffffffff16565b86613b2290919063ffffffff16565b61322490919063ffffffff16565b915050919050565b612f42612726565b612f4b57600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e5481565b612fb4612726565b612fbd57600080fd5b82601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b613114612726565b61311d57600080fd5b80601160006101000a81548160ff02191690831515021790555050565b613142612726565b61314b57600080fd5b61315481613ba8565b50565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602080528060005260406000206000915054906101000a900460ff1681565b60008082840190508381101561321a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061326683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ca2565b905092915050565b6132788282613a44565b156132eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008383111582906133f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133bb5780820151818401526020810190506133a0565b50505050905090810190601f1680156133e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134af5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60009054906101000a900460ff161561354857613541848484613d68565b9050613773565b600061355f601d5484613b2290919063ffffffff16565b9050613569613eb8565b1561357757613576613f8f565b5b6135c981601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461377a90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613618868661466b565b613622578161362e565b61362d868684614774565b5b905061368281601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613729601d548561322490919063ffffffff16565b6040518082815260200191505060405180910390a36137466123cb565b801561375e5750601160009054906101000a900460ff165b1561376c5761376b614941565b5b6001925050505b9392505050565b60006137bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613349565b905092915050565b6137d88160036149af90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008082141561386c57827f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601c546040518082815260200191505060405180910390a2601c5490506139e4565b60008212156138985761388d82600003601c5461377a90919063ffffffff16565b601c819055506138b4565b6138ad82601c5461319c90919063ffffffff16565b601c819055505b6000196fffffffffffffffffffffffffffffffff16601c5411156138ee576000196fffffffffffffffffffffffffffffffff16601c819055505b61391c601c546012600a0a63ee6b2800026000198161390957fe5b066000190361322490919063ffffffff16565b601d81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561398c57600080fd5b505af11580156139a0573d6000803e3d6000fd5b50505050827f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601c546040518082815260200191505060405180910390a2601c5490505b92915050565b6139fe81600361326e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614adf6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080831415613b355760009050613ba2565b6000828402905082848281613b4657fe5b0414613b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614abe6021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613be257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613d4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d13578082015181840152602081019050613cf8565b50505050905090810190601f168015613d405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d5a57fe5b049050809150509392505050565b600080613d80601d5484613b2290919063ffffffff16565b9050613dd481601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461377a90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e6981601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613f255750601b60009054906101000a900460ff16155b8015613f3d5750601960149054906101000a900460ff165b8015613f8a5750601a54601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601b60006101000a81548160ff0219169083151502179055506000613fba601654601754611925565b613fc657600754613fc9565b60005b90506000614021601d54601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322490919063ffffffff16565b9050600061405f6002614051600b546140438787613b2290919063ffffffff16565b61322490919063ffffffff16565b61322490919063ffffffff16565b90506000614076828461377a90919063ffffffff16565b90506060600267ffffffffffffffff8111801561409257600080fd5b506040519080825280602002602001820160405280156140c15781602001602082028036833780820191505090505b50905030816000815181106140d257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561417457600080fd5b505afa158015614188573d6000803e3d6000fd5b505050506040513d602081101561419e57600080fd5b8101908080519060200190929190505050816001815181106141bc57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156142bf5780820151818401526020810190506142a4565b505050509050019650505050505050600060405180830381600087803b1580156142e857600080fd5b505af11580156142fc573d6000803e3d6000fd5b505050506000614315824761377a90919063ffffffff16565b9050600061434161433060028a61322490919063ffffffff16565b600b5461377a90919063ffffffff16565b9050600061437d600261436f846143618d88613b2290919063ffffffff16565b61322490919063ffffffff16565b61322490919063ffffffff16565b905060006143a88361439a60095487613b2290919063ffffffff16565b61322490919063ffffffff16565b905060006143d3846143c560085488613b2290919063ffffffff16565b61322490919063ffffffff16565b90506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d806000811461445c576040519150601f19603f3d011682016040523d82523d6000602084013e614461565b606091505b50509050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d80600081146144ea576040519150601f19603f3d011682016040523d82523d6000602084013e6144ef565b606091505b5050809150506000905060008a111561464257601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156145ee57600080fd5b505af1158015614602573d6000803e3d6000fd5b50505050506040513d606081101561461957600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505b5050505050505050505050506000601b60006101000a81548160ff021916908315150217905550565b60008273ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061471657508173ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561476c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600b549050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156147ea576147e7600a548261319c90919063ffffffff16565b90505b6000614813600c546148058487613b2290919063ffffffff16565b61322490919063ffffffff16565b905061486781601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319c90919063ffffffff16565b601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61490e601d548561322490919063ffffffff16565b6040518082815260200191505060405180910390a3614936818561377a90919063ffffffff16565b925050509392505050565b601b60009054906101000a900460ff166149ad5760004290506000614964611bb2565b90506000614991600e54614983600d5485613b2290919063ffffffff16565b61322490919063ffffffff16565b905061499d838261381e565b50600f5483016010819055505050505b565b6149b98282613a44565b614a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614a9d6021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a2646970667358221220e27cbd169f1c9cc47b9369215ccf09ed41c3a792381402b1c54726f9b3bb8bda64736f6c63430007040033
Deployed ByteCode Sourcemap
8408:16720:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12092:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23540:528;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5417:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9926:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20478:286;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9502:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24938:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9460:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14099:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9376:77;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22501:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16334:457;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22278:215;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9343:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20893:114;;;;;;;;;;;;;:::i;:::-;;14465:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22780:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5603:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24325:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20031:439;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21401:395;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12413:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8606:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24076:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9301:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12547:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22978:126;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10152:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14815:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7963:126;;;;;;;;;;;;;:::i;:::-;;21127:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23112:74;;;;;;;;;;;;;:::i;:::-;;13907:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9964:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22885:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9603:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7698:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7863:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9715:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11859:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5508:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9226:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22681:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4721:77;;;;;;;;;;;;;:::i;:::-;;11978:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19394:629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10124:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14209:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4604:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9647:61;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9883:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9264:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12661:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21804:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8646:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20772:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24648:278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21015:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9545:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23194:338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14613:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12302:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8097:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10093:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10750:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12092:202;7825:9;:7;:9::i;:::-;7817:18;;;;;;12215:12:::1;12201:11;:26;;;;12263:23;12238:22;:48;;;;12092:202:::0;;:::o;23540:528::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;23769:13:::1;23754:12;:28;;;;23812:17;23793:16;:36;;;;23854:12;23840:11;:26;;;;23887:8;23877:7;:18;;;;23917:51;23951:16;;23917:29;23934:11;;23917:12;;:16;;:29;;;;:::i;:::-;:33;;:51;;;;:::i;:::-;23906:8;:62;;;;23996:15;23979:14;:32;;;;24058:1;24041:14;;:18;;;;;;24030:8;;:29;24022:38;;;::::0;::::1;;23540:528:::0;;;;;:::o;5417:83::-;5454:13;5487:5;5480:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5417:83;:::o;9926:31::-;;;;;;;;;;;;;:::o;20478:286::-;20614:4;8839:27;;;;;;;;;;;:40;;;;8870:9;:7;:9::i;:::-;8839:40;:69;;;;8883:13;:25;8897:10;8883:25;;;;;;;;;;;;;;;;;;;;;;;;;8839:69;8831:78;;;;;;20677:5:::1;20636:17;:29;20654:10;20636:29;;;;;;;;;;;;;;;:38;20666:7;20636:38;;;;;;;;;;;;;;;:46;;;;20719:7;20698:36;;20707:10;20698:36;;;20728:5;20698:36;;;;;;;;;;;;;;;;;;20752:4;20745:11;;20478:286:::0;;;;:::o;9502:36::-;;;;:::o;24938:150::-;25018:4;25074:6;25042:29;25062:8;25042:19;:29::i;:::-;:38;25035:45;;24938:150;;;;:::o;9460:35::-;;;;:::o;14099:102::-;14154:7;14181:12;;14174:19;;14099:102;:::o;9376:77::-;;;;:::o;22501:172::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;22611:6:::1;22593:15;:24;;;;22657:8;22628:26;:37;;;;22501:172:::0;;:::o;16334:457::-;16477:4;16464:2;9006:3;8992:18;;:2;:18;;;;8984:27;;;;;;16545:2:::1;16498:17;:23;16516:4;16498:23;;;;;;;;;;;;;;;:35;16522:10;16498:35;;;;;;;;;;;;;;;;:50;16494:225;;16603:104;16675:5;16603:104;;;;;;;;;;;;;;;;::::0;:17:::1;:23;16621:4;16603:23;;;;;;;;;;;;;;;:67;16645:10;16603:67;;;;;;;;;;;;;;;;:71;;:104;;;;;:::i;:::-;16565:17;:23;16583:4;16565:23;;;;;;;;;;;;;;;:35;16589:10;16565:35;;;;;;;;;;;;;;;:142;;;;16494:225;16731:30;16745:4;16751:2;16755:5;16731:13;:30::i;:::-;;16779:4;16772:11;;16334:457:::0;;;;;;:::o;22278:215::-;22331:7;22371:114;22454:16;;22372:58;22411:12;:18;22424:4;;;;;;;;;;;22411:18;;;;;;;;;;;;;;;;22372:34;22387:12;:18;22400:4;;;;;;;;;;;22387:18;;;;;;;;;;;;;;;;9075:2;9205;:12;9193:9;:24;9132:1;9123:11;10433:38;;;;;;9132:1;9123:11;10418:54;22372:14;;:34;;;;:::i;:::-;:38;;:58;;;;:::i;:::-;22371:64;;:114;;;;:::i;:::-;22351:134;;22278:215;:::o;9343:26::-;;;;:::o;20893:114::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;20995:4:::1;20965:27;;:34;;;;;;;;;;;;;;;;;;20893:114::o:0;14465:140::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;14555:8:::1;14528:12;;:36;;;;;;;;;;;;;;;;;;14575:12;:22;14588:8;14575:22;;;;;;;;;;;;;;;;;;;;;;::::0;;14465:140;:::o;22780:97::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;22847:22:::1;22861:7;22847:13;:22::i;:::-;22780:97:::0;:::o;5603:83::-;5644:5;5669:9;;;;;;;;;;;5662:16;;5603:83;:::o;24325:181::-;24410:12;7825:9;:7;:9::i;:::-;7817:18;;;;;;24456:12:::1;24442:36;;;24479:10;24491:6;24442:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;24435:63;;24325:181:::0;;;;:::o;20031:439::-;20164:4;8839:27;;;;;;;;;;;:40;;;;8870:9;:7;:9::i;:::-;8839:40;:69;;;;8883:13;:25;8897:10;8883:25;;;;;;;;;;;;;;;;;;;;;;;;;8839:69;8831:78;;;;;;20227::::1;20294:10;20227:17;:29;20245:10;20227:29;;;;;;;;;;;;;;;:62;20271:7;20227:62;;;;;;;;;;;;;;;;:66;;:78;;;;:::i;:::-;20186:17;:29;20204:10;20186:29;;;;;;;;;;;;;;;:38;20216:7;20186:38;;;;;;;;;;;;;;;:119;;;;20369:7;20321:119;;20344:10;20321:119;;;20391:17;:29;20409:10;20391:29;;;;;;;;;;;;;;;:38;20421:7;20391:38;;;;;;;;;;;;;;;;20321:119;;;;;;;;;;;;;;;;;;20458:4;20451:11;;20031:439:::0;;;;:::o;21401:395::-;4503:20;4512:10;4503:8;:20::i;:::-;4495:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21496:33:::1;21521:6;21496:12;;:16;;:33;;;;:::i;:::-;21481:12;:48;;;;10528:1;10519:11;21561:10;;21546:12;;:25;21542:83;;;10528:1;10519:11;21603:10;;21588:12;:25;;;;21542:83;21656:28;21671:12;;9075:2;9205;:12;9193:9;:24;9132:1;9123:11;10433:38;;;;;;9132:1;9123:11;10418:54;21656:14;;:28;;;;:::i;:::-;21637:16;:47;;;;21695:12;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21753:35;21781:6;21753:12;:23;21766:9;21753:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;21727:12;:23;21740:9;21727:23;;;;;;;;;;;;;;;:61;;;;21401:395:::0;;:::o;12413:126::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;12515:16:::1;12497:15;:34;;;;12413:126:::0;:::o;8606:31::-;;;;;;;;;;;;;:::o;24076:241::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;24173:17:::1;24193:21;24173:41;;24233:4;24225:22;;:84;24295:3;24275:16;24263:9;:28;24262:36;;;;;;24225:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;7846:1;24076:241:::0;;:::o;9301:35::-;;;;:::o;12547:106::-;12592:4;12630:15;12616:10;;:29;;12609:36;;12547:106;:::o;22978:126::-;23031:7;23058:38;23079:16;;23058;;:20;;:38;;;;:::i;:::-;23051:45;;22978:126;:::o;10152:30::-;;;;;;;;;;;;;:::o;14815:138::-;14879:7;14906:39;14928:16;;14906:12;:17;14919:3;14906:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;14899:46;;14815:138;;;:::o;7963:126::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;8044:6:::1;;;;;;;;;;;8025:26;;;;;;;;;;;;8079:1;8062:6;;:19;;;;;;;;;;;;;;;;;;7963:126::o:0;21127:101::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;21216:4:::1;21194:12;:19;21207:5;21194:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;21127:101:::0;:::o;23112:74::-;23166:4;;;;;;;;;;;23154:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23112:74::o;13907:184::-;13986:7;7825:9;:7;:9::i;:::-;7817:18;;;;;;14015:6:::1;;;;;;;;;;;14014:7;14006:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14053:30;14064:5;14071:11;14053:10;:30::i;:::-;14046:37;;13907:184:::0;;;;:::o;9964:36::-;;;;;;;;;;;;;:::o;22885:85::-;22931:4;22956:6;;;;;;;;;;;22955:7;22948:14;;22885:85;:::o;9603:37::-;;;;:::o;7698:79::-;7736:7;7763:6;;;;;;;;;;;7756:13;;7698:79;:::o;7863:92::-;7903:4;7941:6;;;;;;;;;;;7927:20;;:10;:20;;;7920:27;;7863:92;:::o;9715:29::-;;;;;;;;;;;;;:::o;11859:111::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;11957:5:::1;11938:9;:16;11948:5;11938:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11859:111:::0;;:::o;5508:87::-;5547:13;5580:7;5573:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5508:87;:::o;9226:31::-;;;;:::o;22681:91::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;22745:19:::1;22756:7;22745:10;:19::i;:::-;22681:91:::0;:::o;4721:77::-;4765:25;4779:10;4765:13;:25::i;:::-;4721:77::o;11978:106::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;12065:11:::1;12052:10;:24;;;;11978:106:::0;:::o;19394:629::-;19532:4;8839:27;;;;;;;;;;;:40;;;;8870:9;:7;:9::i;:::-;8839:40;:69;;;;8883:13;:25;8897:10;8883:25;;;;;;;;;;;;;;;;;;;;;;;;;8839:69;8831:78;;;;;;19554:16:::1;19573:17;:29;19591:10;19573:29;;;;;;;;;;;;;;;:38;19603:7;19573:38;;;;;;;;;;;;;;;;19554:57;;19645:8;19626:15;:27;19622:237;;19711:1;19670:17;:29;19688:10;19670:29;;;;;;;;;;;;;;;:38;19700:7;19670:38;;;;;;;;;;;;;;;:42;;;;19622:237;;;19786:61;19817:15;19786:8;:12;;:61;;;;:::i;:::-;19745:17;:29;19763:10;19745:29;;;;;;;;;;;;;;;:38;19775:7;19745:38;;;;;;;;;;;;;;;:102;;;;19622:237;19922:7;19874:119;;19897:10;19874:119;;;19944:17;:29;19962:10;19944:29;;;;;;;;;;;;;;;:38;19974:7;19944:38;;;;;;;;;;;;;;;;19874:119;;;;;;;;;;;;;;;;;;20011:4;20004:11;;;19394:629:::0;;;;:::o;10124:19::-;;;;;;;;;;;;;:::o;14209:248::-;14369:4;14314:2;9006:3;8992:18;;:2;:18;;;;8984:27;;;;;;8839::::1;;;;;;;;;;;:40;;;;8870:9;:7;:9::i;:::-;8839:40;:69;;;;8883:13;:25;8897:10;8883:25;;;;;;;;;;;;;;;;;;;;;;;;;8839:69;8831:78;;;::::0;::::1;;14391:36:::2;14405:10;14417:2;14421:5;14391:13;:36::i;:::-;;14445:4;14438:11;;14209:248:::0;;;;;:::o;4604:109::-;4660:4;4684:21;4697:7;4684:8;:12;;:21;;;;:::i;:::-;4677:28;;4604:109;;;:::o;9647:61::-;;;;:::o;9883:36::-;;;;;;;;;;;;;:::o;9264:30::-;;;;:::o;12661:158::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;12725:15:::1;12743:21;12725:39;;12783:9;12775:27;;:36;12803:7;12775:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;7846:1;12661:158:::0;:::o;21804:230::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;21956:8:::1;21942:11;;:22;;;;;;;;;;;;;;;;;;21994:32;22021:4;21994:22;22009:6;9075:2;9205;:12;9193:9;:24;9132:1;9123:11;10433:38;;;;;;9132:1;9123:11;10418:54;21994:14;;:22;;;;:::i;:::-;:26;;:32;;;;:::i;:::-;21975:16;:51;;;;21804:230:::0;;;:::o;8646:39::-;;;;;;;;;;;;;:::o;20772:113::-;20834:4;20858:12;:19;20871:5;20858:19;;;;;;;;;;;;;;;;;;;;;;;;;20851:26;;20772:113;;;:::o;24648:278::-;24743:7;24768:24;24795:40;24818:16;;24795:12;:18;24808:4;;;;;;;;;;;24795:18;;;;;;;;;;;;;;;;:22;;:40;;;;:::i;:::-;24768:67;;24853:65;24895:22;:20;:22::i;:::-;24853:37;24866:23;24887:1;24866:16;:20;;:23;;;;:::i;:::-;24853:8;:12;;:37;;;;:::i;:::-;:41;;:65;;;;:::i;:::-;24846:72;;;24648:278;;;:::o;21015:104::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;21107:4:::1;21084:13;:20;21098:5;21084:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21015:104:::0;:::o;9545:51::-;;;;:::o;23194:338::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;23398:22:::1;23374:21;;:46;;;;;;;;;;;;;;;;;;23450:17;23431:16;;:36;;;;;;;;;;;;;;;;;;23502:22;23478:21;;:46;;;;;;;;;;;;;;;;;;23194:338:::0;;;:::o;14613:194::-;14733:7;14765:17;:25;14783:6;14765:25;;;;;;;;;;;;;;;:34;14791:7;14765:34;;;;;;;;;;;;;;;;14758:41;;14613:194;;;;:::o;12302:103::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;12386:11:::1;12373:10;;:24;;;;;;;;;;;;;;;;;;12302:103:::0;:::o;8097:109::-;7825:9;:7;:9::i;:::-;7817:18;;;;;;8170:28:::1;8189:8;8170:18;:28::i;:::-;8097:109:::0;:::o;10093:24::-;;;;;;;;;;;;;:::o;10750:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;1902:181::-;1960:7;1980:9;1996:1;1992;:5;1980:17;;2021:1;2016;:6;;2008:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:1;2067:8;;;1902:181;;;;:::o;2727:132::-;2785:7;2812:39;2816:1;2819;2812:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2805:46;;2727:132;;;;:::o;3452:178::-;3530:18;3534:4;3540:7;3530:3;:18::i;:::-;3529:19;3521:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3618:4;3595;:11;;:20;3607:7;3595:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3452:178;;:::o;2235:226::-;2355:7;2388:1;2383;:6;;2391:12;2375:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2415:9;2431:1;2427;:5;2415:17;;2452:1;2445:8;;;2235:226;;;;;:::o;15308:1018::-;15434:4;15460:9;:17;15470:6;15460:17;;;;;;;;;;;;;;;;;;;;;;;;;15459:18;:43;;;;;15482:9;:20;15492:9;15482:20;;;;;;;;;;;;;;;;;;;;;;;;;15481:21;15459:43;15451:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15534:6;;;;;;;;;;;15530:87;;;15564:41;15579:6;15587:9;15598:6;15564:14;:41::i;:::-;15557:48;;;;15530:87;15629:17;15649:28;15660:16;;15649:6;:10;;:28;;;;:::i;:::-;15629:48;;15694:16;:14;:16::i;:::-;15690:59;;;15727:10;:8;:10::i;:::-;15690:59;15784:35;15809:9;15784:12;:20;15797:6;15784:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;15761:12;:20;15774:6;15761:20;;;;;;;;;;;;;;;:58;;;;15832:25;15860:32;15874:6;15882:9;15860:13;:32::i;:::-;:110;;15961:9;15860:110;;;15908:37;15916:6;15924:9;15935;15908:7;:37::i;:::-;15860:110;15832:138;;16007:70;16049:17;16007:12;:23;16020:9;16007:23;;;;;;;;;;;;;;;;:27;;:70;;;;:::i;:::-;15981:12;:23;15994:9;15981:23;;;;;;;;;;;;;;;:96;;;;16139:9;16095:118;;16118:6;16095:118;;;16163:39;16185:16;;16163:17;:21;;:39;;;;:::i;:::-;16095:118;;;;;;;;;;;;;;;;;;16229:14;:12;:14::i;:::-;:28;;;;;16247:10;;;;;;;;;;;16229:28;16226:69;;;16274:9;:7;:9::i;:::-;16226:69;16314:4;16307:11;;;;15308:1018;;;;;;:::o;2091:136::-;2149:7;2176:43;2180:1;2183;2176:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2169:50;;2091:136;;;;:::o;4936:130::-;4996:24;5012:7;4996:8;:15;;:24;;;;:::i;:::-;5050:7;5036:22;;;;;;;;;;;;4936:130;:::o;12827:680::-;12899:7;12938:1;12923:11;:16;12919:118;;;12971:5;12961:30;12978:12;;12961:30;;;;;;;;;;;;;;;;;;13013:12;;13006:19;;;;12919:118;13067:1;13053:11;:15;13049:188;;;13100:39;13126:11;13125:12;;13100;;:16;;:39;;;;:::i;:::-;13085:12;:54;;;;13049:188;;;13187:38;13212:11;13187:12;;:16;;:38;;;;:::i;:::-;13172:12;:53;;;;13049:188;10528:1;10519:11;13268:10;;13253:12;;:25;13249:83;;;10528:1;10519:11;13310:10;;13295:12;:25;;;;13249:83;13363:28;13378:12;;9075:2;9205;:12;9193:9;:24;9132:1;9123:11;10433:38;;;;;;9132:1;9123:11;10418:54;13363:14;;:28;;;;:::i;:::-;13344:16;:47;;;;13402:12;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13449:5;13439:30;13456:12;;13439:30;;;;;;;;;;;;;;;;;;13487:12;;13480:19;;12827:680;;;;;:::o;4806:122::-;4863:21;4876:7;4863:8;:12;;:21;;;;:::i;:::-;4912:7;4900:20;;;;;;;;;;;;4806:122;:::o;3988:203::-;4060:4;4104:1;4085:21;;:7;:21;;;;4077:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:4;:11;;:20;4175:7;4163:20;;;;;;;;;;;;;;;;;;;;;;;;;4156:27;;3988:203;;;;:::o;2469:250::-;2527:7;2556:1;2551;:6;2547:47;;;2581:1;2574:8;;;;2547:47;2606:9;2622:1;2618;:5;2606:17;;2651:1;2646;2642;:5;;;;;;:10;2634:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:1;2703:8;;;2469:250;;;;;:::o;8214:187::-;8308:1;8288:22;;:8;:22;;;;8280:31;;;;;;8356:8;8327:38;;8348:6;;;;;;;;;;;8327:38;;;;;;;;;;;;8385:8;8376:6;;:17;;;;;;;;;;;;;;;;;;8214:187;:::o;2867:225::-;2987:7;3019:1;3015;:5;3022:12;3007:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3046:9;3062:1;3058;:5;;;;;;3046:17;;3083:1;3076:8;;;2867:225;;;;;:::o;14961:339::-;15079:4;15096:17;15116:28;15127:16;;15116:6;:10;;:28;;;;:::i;:::-;15096:48;;15176:33;15199:9;15176:12;:18;15189:4;15176:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;15155:12;:18;15168:4;15155:18;;;;;;;;;;;;;;;:54;;;;15239:31;15260:9;15239:12;:16;15252:2;15239:16;;;;;;;;;;;;;;;;:20;;:31;;;;:::i;:::-;15220:12;:16;15233:2;15220:16;;;;;;;;;;;;;;;:50;;;;15288:4;15281:11;;;14961:339;;;;;:::o;22042:228::-;22091:4;22142;;;;;;;;;;;22128:18;;:10;:18;;;;:42;;;;;22164:6;;;;;;;;;;;22163:7;22128:42;:70;;;;;22187:11;;;;;;;;;;;22128:70;:134;;;;;22246:16;;22215:12;:27;22236:4;22215:27;;;;;;;;;;;;;;;;:47;;22128:134;22108:154;;22042:228;:::o;16799:2053::-;10314:4;10305:6;;:13;;;;;;;;;;;;;;;;;;16848:27:::1;16878:97;16908:15;;16938:26;;16878:15;:97::i;:::-;:142;;17008:12;;16878:142;;;16991:1;16878:142;16848:172;;17031:28;17062:73;17108:16;;17062:12;:27;17083:4;17062:27;;;;;;;;;;;;;;;;:31;;:73;;;;:::i;:::-;17031:104;;17146:23;17172:108;17278:1;17172:87;17250:8;;17172:59;17211:19;17172:20;:38;;:59;;;;:::i;:::-;:77;;:87;;;;:::i;:::-;:105;;:108;;;;:::i;:::-;17146:134;;17291:20;17314:41;17339:15;17314:20;:24;;:41;;;;:::i;:::-;17291:64;;17368:21;17406:1;17392:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17368:40;;17437:4;17419;17424:1;17419:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;17463:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17453:4;17458:1;17453:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;17489:21;17513;17489:45;;17547:6;;;;;;;;;;;:57;;;17619:12;17646:1;17662:4;17689;17709:15;17547:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17748:17;17768:40;17794:13;17768:21;:25;;:40;;;;:::i;:::-;17748:60;;17821:19;17843:40;17856:26;17880:1;17856:19;:23;;:26;;;;:::i;:::-;17843:8;;:12;;:40;;;;:::i;:::-;17821:62;;17896:26;17925:100;18023:1;17925:79;17992:11;17925:48;17953:19;17925:9;:27;;:48;;;;:::i;:::-;:66;;:79;;;;:::i;:::-;:97;;:100;;;;:::i;:::-;17896:129;;18036:30;18069:48;18105:11;18069:31;18083:16;;18069:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;18036:81;;18128:25;18156:67;18201:11;18156:26;18170:11;;18156:9;:13;;:26;;;;:::i;:::-;:30;;:67;;;;:::i;:::-;18128:95;;18237:12;18263:16;;;;;;;;;;;18255:30;;18307:17;18344:5;18255:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18236:128;;;18397:21;;;;;;;;;;;18389:35;;18446:22;18488:5;18389:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18375:133;;;;;18531:5;18521:15;;18571:1;18553:15;:19;18549:296;;;18589:6;;;;;;;;;;;:22;;;18619:18;18665:4;18689:15;18723:1;18743::::0;18763:21:::1;;;;;;;;;;;18803:15;18589:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18549:296;10329:1;;;;;;;;;;;;10350:5:::0;10341:6;;:14;;;;;;;;;;;;;;;;;;16799:2053::o;21236:157::-;21308:4;21341;21333:12;;:4;;;;;;;;;;;:12;;;:26;;;;21357:2;21349:10;;:4;;;;;;;;;;;:10;;;21333:26;21332:53;;;;;21366:12;:18;21379:4;21366:18;;;;;;;;;;;;;;;;;;;;;;;;;21365:19;21332:53;21325:60;;21236:157;;;;:::o;18860:522::-;18949:7;18969:17;18989:8;;18969:28;;19024:4;;;;;;;;;;;19011:17;;:9;:17;;;19008:56;;;19042:22;19056:7;;19042:9;:13;;:22;;;;:::i;:::-;19030:34;;19008:56;19077:17;19097:44;19126:14;;19097:24;19111:9;19097;:13;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;19077:64;;19184:66;19230:9;19184:12;:27;19205:4;19184:27;;;;;;;;;;;;;;;;:31;;:66;;;;:::i;:::-;19154:12;:27;19175:4;19154:27;;;;;;;;;;;;;;;:96;;;;19291:4;19266:64;;19275:6;19266:64;;;19298:31;19312:16;;19298:9;:13;;:31;;;;:::i;:::-;19266:64;;;;;;;;;;;;;;;;;;19350:24;19364:9;19350;:13;;:24;;;;:::i;:::-;19343:31;;;;18860:522;;;;;:::o;13515:384::-;13557:6;;;;;;;;;;;13553:339;;13580:13;13596:15;13580:31;;13626:25;13654:22;:20;:22::i;:::-;13626:50;;13691:18;13719:62;13758:22;;13719:34;13741:11;;13719:17;:21;;:34;;;;:::i;:::-;:38;;:62;;;;:::i;:::-;13691:91;;13799:30;13810:5;13817:11;13799:10;:30::i;:::-;;13865:15;;13857:5;:23;13844:10;:36;;;;13553:339;;;;13515:384::o;3710:183::-;3790:18;3794:4;3800:7;3790:3;:18::i;:::-;3782:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:5;3857:4;:11;;:20;3869:7;3857:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;3710:183;;:::o
Metadata Hash
ipfs://e27cbd169f1c9cc47b9369215ccf09ed41c3a792381402b1c54726f9b3bb8bda