ERC-20
Overview
Max Total Supply
10,000,000,000 APEINU
Holders
184
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,475,442.0834555 APEINUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ApeInu
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-30 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/BabyApe.sol pragma solidity ^0.8.0; interface IBURNER { function burnEmUp() external payable; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IUniswapV2Router02 router; IERC20 public RewardToken; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 30 minutes; uint256 public minDistribution = 1 * (10 ** 18); uint256 public currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router, address _reflectionToken, address token) { router = IUniswapV2Router02(_router); RewardToken = IERC20(_reflectionToken); _token = token; } function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken { minPeriod = newMinPeriod; minDistribution = newMinDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = RewardToken.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(RewardToken); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 iterations = 0; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) public view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); RewardToken.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { require(shouldDistribute(msg.sender), "Too soon. Need to wait!"); distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract ApeInu is Context, IERC20, IERC20Metadata { using SafeMath for uint256; IDividendDistributor public dividendDistributor; uint256 public distributorGas = 50000; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address public hldAdmin; bool public restrictWhales = true; mapping (address => bool) public isFeeExempt; mapping (address => bool) public isTxLimitExempt; mapping (address => bool) public isDividendExempt; uint256 public launchedAt; address public lpWallet = DEAD; uint256 public reflectionFee; uint256 public lpFee; uint256 public devFee; uint256 public reflectionFeeOnSell; uint256 public lpFeeOnSell; uint256 public devFeeOnSell; uint256 public totalFee; uint256 public totalFeeIfSelling; IUniswapV2Router02 public router; address public pair; address public factory; address public tokenOwner; address payable public devWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public tradingStatus = true; mapping (address => bool) private bots; uint256 public _maxTxAmount; uint256 public _walletMax; uint256 public swapThreshold; bool public tradingActive = false; bool private restrictBots = true; uint256 public tradingActiveBlock = 0; event EnabledTrading(bool tradingActive); event TransferForeignToken(address token, uint256 amount); constructor(uint256 initialSupply, address reflectionToken, address routerAddress, address initialHldAdmin) { _name = "Ape Inu"; _symbol = "APEINU"; _totalSupply += initialSupply; _balances[msg.sender] += initialSupply; _maxTxAmount = initialSupply * 1 / 400; _walletMax = initialSupply * 1 / 200; swapThreshold = initialSupply * 5 / 4000; router = IUniswapV2Router02(routerAddress); pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this)); _allowances[address(this)][address(router)] = type(uint256).max; dividendDistributor = new DividendDistributor(routerAddress, reflectionToken, address(this)); factory = msg.sender; isFeeExempt[address(this)] = true; isFeeExempt[factory] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[pair] = true; isTxLimitExempt[factory] = true; isTxLimitExempt[DEAD] = true; isTxLimitExempt[ZERO] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[ZERO] = true; reflectionFee = 3; lpFee = 3; devFee = 5; reflectionFeeOnSell = 10; lpFeeOnSell = 8; devFeeOnSell = 10; totalFee = devFee.add(lpFee).add(reflectionFee); totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell); tokenOwner = msg.sender; devWallet = payable(msg.sender); hldAdmin = initialHldAdmin; } modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyHldAdmin() { require(hldAdmin == _msgSender(), "Ownable: caller is not the hldAdmin"); _; } modifier onlyOwner() { require(tokenOwner == _msgSender(), "Ownable: caller is not the owner"); _; } //hldAdmin functions function updateHldAdmin(address newAdmin) public virtual onlyHldAdmin { hldAdmin = newAdmin; } function setBots(address[] memory bots_) external onlyHldAdmin { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } //Owner functions function changeFees(uint256 initialReflectionFee, uint256 initialReflectionFeeOnSell, uint256 initialLpFee, uint256 initialLpFeeOnSell, uint256 initialDevFee, uint256 initialDevFeeOnSell) external onlyOwner { reflectionFee = initialReflectionFee; lpFee = initialLpFee; devFee = initialDevFee; reflectionFeeOnSell = initialReflectionFeeOnSell; lpFeeOnSell = initialLpFeeOnSell; devFeeOnSell = initialDevFeeOnSell; totalFee = devFee.add(lpFee).add(reflectionFee); totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell); require(totalFee <= 15, "Too high fee"); require(totalFeeIfSelling <= 30, "Too high fee"); } function removeHldAdmin() public virtual onlyOwner { hldAdmin = address(0); } function changeTxLimit(uint256 newLimit) external onlyOwner { _maxTxAmount = newLimit; } function changeWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function multiTransfer(address[] calldata addresses, uint256 tokens) external onlyOwner { require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); uint256 SCCC = tokens* 10**decimals() * addresses.length; require(balanceOf(msg.sender) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _transfer(msg.sender,addresses[i],(tokens* 10**decimals())); } } function changeRestrictWhales(bool newValue) external onlyOwner { restrictWhales = newValue; } function changeIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function enableTrading(bool _status) external onlyOwner { require(!tradingActive, "Cannot re enable trading"); tradingActive = _status; emit EnabledTrading(tradingActive); if (tradingActive && tradingActiveBlock == 0) { tradingActiveBlock = block.number; } } function updateRestrictBots(bool _status) external onlyOwner { restrictBots = _status; } function setDevWallet(address payable newDevWallet) external onlyOwner { devWallet = payable(newDevWallet); } function setLpWallet(address newLpWallet) external onlyOwner { lpWallet = newLpWallet; } function setOwnerWallet(address payable newOwnerWallet) external onlyOwner { tokenOwner = newOwnerWallet; } function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner { swapAndLiquifyEnabled = enableSwapBack; swapThreshold = newSwapBackLimit; } function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner { dividendDistributor.setDistributionCriteria(newMinPeriod, newMinDistribution); } function delBot(address notbot) external onlyOwner { bots[notbot] = false; } function changeDistributorGas(uint256 _distributorGas) external onlyOwner { distributorGas = _distributorGas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 9; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) { require(!bots[sender] && !bots[recipient]); if(!tradingActive){ require(sender == hldAdmin, "Trading is enabled"); } if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); } if(restrictBots && tradingActiveBlock>0 && (tradingActiveBlock + 3) > block.number){ } else{ require(amount <= _maxTxAmount || isTxLimitExempt[sender], "tx"); if(!isTxLimitExempt[recipient] && restrictWhales) { require(_balances[recipient].add(amount) <= _walletMax, "wallet"); } } if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(finalAmount); // Dividend tracker if(!isDividendExempt[sender]) { try dividendDistributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} } if (distributorGas > 0) { try dividendDistributor.process(distributorGas) {} catch {} } emit Transfer(sender, recipient, finalAmount); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Spend `amount` form the allowance of `owner` toward `spender`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee; //restrictbots if(restrictBots && tradingActiveBlock>0 && (tradingActiveBlock + 3) > block.number){ feeApplicable=90; } uint256 feeAmount = amount.mul(feeApplicable).div(100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal lockTheSwap { uint256 tokensToLiquify = _balances[address(this)]; uint256 amountToLiquify; uint256 devBalance; uint256 amountEthLiquidity; // Use sell ratios if buy tax too low if (totalFee <= 2) { amountToLiquify = tokensToLiquify.mul(lpFeeOnSell).div(totalFeeIfSelling).div(2); } else { amountToLiquify = tokensToLiquify.mul(lpFee).div(totalFee).div(2); } uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance; // Use sell ratios if buy tax too low if (totalFee <= 2) { devBalance = amountETH.mul(devFeeOnSell).div(totalFeeIfSelling); amountEthLiquidity = amountETH.mul(lpFeeOnSell).div(totalFeeIfSelling).div(2); } else { devBalance = amountETH.mul(devFee).div(totalFee); amountEthLiquidity = amountETH.mul(lpFee).div(totalFee).div(2); } uint256 amountEthReflection = amountETH.sub(devBalance).sub(amountEthLiquidity); if(amountETH > 0){ devWallet.transfer(devBalance); } try dividendDistributor.deposit{value: amountEthReflection}() {} catch {} if(amountToLiquify > 0){ router.addLiquidityETH{value: amountEthLiquidity}( address(this), amountToLiquify, 0, 0, lpWallet, block.timestamp ); } } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } // withdraw ETH if stuck or someone sends to the address function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } receive() external payable { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"reflectionToken","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"initialHldAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"changeDistributorGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialReflectionFee","type":"uint256"},{"internalType":"uint256","name":"initialReflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialDevFee","type":"uint256"},{"internalType":"uint256","name":"initialDevFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","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":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"updateHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateRestrictBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261c35060015561dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960146101000a81548160ff021916908315150217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b60156101000a81548160ff0219169083151502179055506001601b60166101000a81548160ff0219169083151502179055506000602060006101000a81548160ff0219169083151502179055506001602060016101000a81548160ff02191690831515021790555060006021553480156200018b57600080fd5b5060405162008a2938038062008a298339818101604052810190620001b1919062000e88565b6040518060400160405280600781526020017f41706520496e750000000000000000000000000000000000000000000000000081525060059080519060200190620001fe92919062000d70565b506040518060400160405280600681526020017f415045494e550000000000000000000000000000000000000000000000000000815250600690805190602001906200024c92919062000d70565b50836004600082825462000261919062000f6f565b9250508190555083600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002b9919062000f6f565b92505081905550610190600185620002d2919062001004565b620002de919062000fcc565b601d8190555060c8600185620002f5919062001004565b62000301919062000fcc565b601e81905550610fa060058562000319919062001004565b62000325919062000fcc565b601f8190555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d557600080fd5b505afa158015620003ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000410919062000e5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049457600080fd5b505afa158015620004a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004cf919062000e5c565b306040518363ffffffff1660e01b8152600401620004ef92919062000f05565b602060405180830381600087803b1580156200050a57600080fd5b505af11580156200051f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000545919062000e5c565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550818330604051620006599062000e01565b620006679392919062000f32565b604051809103906000f08015801562000684573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600f8190555060036010819055506005601181905550600a6012819055506008601381905550600a60148190555062000c46600f5462000c3260105460115462000d5860201b62002bfd1790919060201c565b62000d5860201b62002bfd1790919060201c565b60158190555062000c8560125462000c7160135460145462000d5860201b62002bfd1790919060201c565b62000d5860201b62002bfd1790919060201c565b60168190555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200119a565b6000818362000d68919062000f6f565b905092915050565b82805462000d7e90620010a3565b90600052602060002090601f01602090048101928262000da2576000855562000dee565b82601f1062000dbd57805160ff191683800117855562000dee565b8280016001018555821562000dee579182015b8281111562000ded57825182559160200191906001019062000dd0565b5b50905062000dfd919062000e0f565b5090565b611f378062006af283390190565b5b8082111562000e2a57600081600090555060010162000e10565b5090565b60008151905062000e3f8162001166565b92915050565b60008151905062000e568162001180565b92915050565b60006020828403121562000e6f57600080fd5b600062000e7f8482850162000e2e565b91505092915050565b6000806000806080858703121562000e9f57600080fd5b600062000eaf8782880162000e45565b945050602062000ec28782880162000e2e565b935050604062000ed58782880162000e2e565b925050606062000ee88782880162000e2e565b91505092959194509250565b62000eff8162001065565b82525050565b600060408201905062000f1c600083018562000ef4565b62000f2b602083018462000ef4565b9392505050565b600060608201905062000f49600083018662000ef4565b62000f58602083018562000ef4565b62000f67604083018462000ef4565b949350505050565b600062000f7c8262001099565b915062000f898362001099565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000fc15762000fc0620010d9565b5b828201905092915050565b600062000fd98262001099565b915062000fe68362001099565b92508262000ff95762000ff862001108565b5b828204905092915050565b6000620010118262001099565b91506200101e8362001099565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200105a5762001059620010d9565b5b828202905092915050565b6000620010728262001079565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006002820490506001821680620010bc57607f821691505b60208210811415620010d357620010d262001137565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620011718162001065565b81146200117d57600080fd5b50565b6200118b8162001099565b81146200119757600080fd5b50565b61594880620011aa6000396000f3fe6080604052600436106103b15760003560e01c80638366e79a116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f275f64b1161006f578063f275f64b14610e0d578063f5648a4f14610e36578063f887ea4014610e4d578063fabe628314610e78576103b8565b8063dd62ed3e14610d51578063e66b1d1e14610d8e578063ede1588f14610db7578063ee40166e14610de2576103b8565b8063cb29813c116100dc578063cb29813c14610ca9578063cc6badb314610cd2578063d4fb9a0114610cfd578063d920334e14610d28576103b8565b8063bbc0c74214610bfd578063bf56b37114610c28578063c45a015514610c53578063ca987b0e14610c7e576103b8565b8063a3a2e89e11610185578063a9059cbb11610154578063a9059cbb14610b43578063b515566a14610b80578063bad3ea6a14610ba9578063bb542ef014610bd4576103b8565b8063a3a2e89e14610a87578063a3e6761014610ab0578063a457c2d714610adb578063a8aa1b3114610b18576103b8565b80638ea5220f116101c15780638ea5220f146109dd5780639502c42614610a0857806395d89b4114610a33578063a16a317914610a5e576103b8565b80638366e79a1461093857806383ad7994146109755780638b42507f146109a0576103b8565b80633f4218e0116102d757806366b5d8821161026a5780637c0ff205116102395780637c0ff2051461088e5780637d1db4a5146108b95780637db1342c146108e4578063807c2d9c1461090d576103b8565b806366b5d882146107e45780636827e764146107fb578063704ce43e1461082657806370a0823114610851576103b8565b8063468c7ee2116102a6578063468c7ee21461073a5780634a74bb021461076357806360e719621461078e5780636303516c146107b9576103b8565b80633f4218e01461066c5780634355855a146106a957806343d49dda146106e657806344de2e4c1461070f576103b8565b806323b872dd1161034f5780632d48e8961161031e5780632d48e896146105b2578063313ce567146105db57806339509351146106065780633dab526914610643576103b8565b806323b872dd146104f8578063259aa50414610535578063273123b71461055e5780632b112e4914610587576103b8565b806316d9962b1161038b57806316d9962b1461045057806318160ddd146104795780631df4ccfc146104a45780631f53ac02146104cf576103b8565b80630445b667146103bd57806306fdde03146103e8578063095ea7b314610413576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610ea1565b6040516103df9190614f24565b60405180910390f35b3480156103f457600080fd5b506103fd610ea7565b60405161040a9190614d22565b60405180910390f35b34801561041f57600080fd5b5061043a600480360381019061043591906145cd565b610f39565b6040516104479190614cd1565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190614730565b610f5c565b005b34801561048557600080fd5b5061048e610ffd565b60405161049b9190614f24565b60405180910390f35b3480156104b057600080fd5b506104b9611007565b6040516104c69190614f24565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906144dd565b61100d565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614542565b6110e8565b60405161052c9190614cd1565b60405180910390f35b34801561054157600080fd5b5061055c600480360381019061055791906146a2565b611118565b005b34801561056a57600080fd5b506105856004803603810190610580919061448b565b6111cc565b005b34801561059357600080fd5b5061059c6112be565b6040516105a99190614f24565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190614782565b611340565b005b3480156105e757600080fd5b506105f0611468565b6040516105fd9190614fc2565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906145cd565b611471565b60405161063a9190614cd1565b60405180910390f35b34801561064f57600080fd5b5061066a600480360381019061066591906146f4565b61151b565b005b34801561067857600080fd5b50610693600480360381019061068e919061448b565b6115d7565b6040516106a09190614cd1565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb919061448b565b6115f7565b6040516106dd9190614cd1565b60405180910390f35b3480156106f257600080fd5b5061070d6004803603810190610708919061448b565b611617565b005b34801561071b57600080fd5b506107246116f2565b6040516107319190614cd1565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c919061448b565b611705565b005b34801561076f57600080fd5b506107786117e0565b6040516107859190614cd1565b60405180910390f35b34801561079a57600080fd5b506107a36117f3565b6040516107b09190614f24565b60405180910390f35b3480156107c557600080fd5b506107ce6117f9565b6040516107db9190614c11565b60405180910390f35b3480156107f057600080fd5b506107f961181f565b005b34801561080757600080fd5b506108106118fa565b60405161081d9190614f24565b60405180910390f35b34801561083257600080fd5b5061083b611900565b6040516108489190614f24565b60405180910390f35b34801561085d57600080fd5b506108786004803603810190610873919061448b565b611906565b6040516108859190614f24565b60405180910390f35b34801561089a57600080fd5b506108a361194f565b6040516108b09190614f24565b60405180910390f35b3480156108c557600080fd5b506108ce611955565b6040516108db9190614f24565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190614730565b61195b565b005b34801561091957600080fd5b506109226119fc565b60405161092f9190614f24565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a9190614506565b611a02565b60405161096c9190614cd1565b60405180910390f35b34801561098157600080fd5b5061098a611cd6565b6040516109979190614f24565b60405180910390f35b3480156109ac57600080fd5b506109c760048036038101906109c2919061448b565b611cdc565b6040516109d49190614cd1565b60405180910390f35b3480156109e957600080fd5b506109f2611cfc565b6040516109ff9190614c2c565b60405180910390f35b348015610a1457600080fd5b50610a1d611d22565b604051610a2a9190614f24565b60405180910390f35b348015610a3f57600080fd5b50610a48611d28565b604051610a559190614d22565b60405180910390f35b348015610a6a57600080fd5b50610a856004803603810190610a809190614609565b611dba565b005b348015610a9357600080fd5b50610aae6004803603810190610aa99190614591565b611fb3565b005b348015610abc57600080fd5b50610ac56120a5565b604051610ad29190614c11565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd91906145cd565b6120cb565b604051610b0f9190614cd1565b60405180910390f35b348015610b2457600080fd5b50610b2d6121b5565b604051610b3a9190614c11565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b6591906145cd565b6121db565b604051610b779190614cd1565b60405180910390f35b348015610b8c57600080fd5b50610ba76004803603810190610ba29190614661565b6121fa565b005b348015610bb557600080fd5b50610bbe61234c565b604051610bcb9190614cec565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906144dd565b612370565b005b348015610c0957600080fd5b50610c1261244b565b604051610c1f9190614cd1565b60405180910390f35b348015610c3457600080fd5b50610c3d61245e565b604051610c4a9190614f24565b60405180910390f35b348015610c5f57600080fd5b50610c68612464565b604051610c759190614c11565b60405180910390f35b348015610c8a57600080fd5b50610c9361248a565b604051610ca09190614f24565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb919061480d565b612490565b005b348015610cde57600080fd5b50610ce7612647565b604051610cf49190614f24565b60405180910390f35b348015610d0957600080fd5b50610d1261264d565b604051610d1f9190614cd1565b60405180910390f35b348015610d3457600080fd5b50610d4f6004803603810190610d4a9190614730565b612660565b005b348015610d5d57600080fd5b50610d786004803603810190610d739190614506565b612701565b604051610d859190614f24565b60405180910390f35b348015610d9a57600080fd5b50610db56004803603810190610db091906146a2565b612788565b005b348015610dc357600080fd5b50610dcc61283c565b604051610dd99190614c11565b60405180910390f35b348015610dee57600080fd5b50610df7612862565b604051610e049190614f24565b60405180910390f35b348015610e1957600080fd5b50610e346004803603810190610e2f91906146a2565b612868565b005b348015610e4257600080fd5b50610e4b6129dd565b005b348015610e5957600080fd5b50610e62612ae5565b604051610e6f9190614d07565b60405180910390f35b348015610e8457600080fd5b50610e9f6004803603810190610e9a9190614591565b612b0b565b005b601f5481565b606060058054610eb690615408565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee290615408565b8015610f2f5780601f10610f0457610100808354040283529160200191610f2f565b820191906000526020600020905b815481529060010190602001808311610f1257829003601f168201915b5050505050905090565b600080610f44612c13565b9050610f51818585612c1b565b600191505092915050565b610f64612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90614e64565b60405180910390fd5b8060018190555050565b6000600454905090565b60155481565b611015612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90614e64565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806110f3612c13565b9050611100858285612de6565b61110b858585612e72565b5060019150509392505050565b611120612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690614e64565b60405180910390fd5b80602060016101000a81548160ff02191690831515021790555050565b6111d4612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90614e64565b60405180910390fd5b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061133b6112ee600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611906565b61132d61131c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611906565b60045461381790919063ffffffff16565b61381790919063ffffffff16565b905090565b611348612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614e64565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611432929190614f99565b600060405180830381600087803b15801561144c57600080fd5b505af1158015611460573d6000803e3d6000fd5b505050505050565b60006009905090565b60008061147c612c13565b9050611510818585600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461150b919061508e565b612c1b565b600191505092915050565b611523612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990614e64565b60405180910390fd5b81601b60156101000a81548160ff02191690831515021790555080601f819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b61161f612c13565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590614e04565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960149054906101000a900460ff1681565b61170d612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614e64565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60159054906101000a900460ff1681565b60015481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611827612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90614e64565b60405180910390fd5b6000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b60105481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60135481565b601d5481565b611963612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990614e64565b60405180910390fd5b80601e8190555050565b601e5481565b6000611a0c612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290614e64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290614e44565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7190614d44565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bb59190614c11565b60206040518083038186803b158015611bcd57600080fd5b505afa158015611be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c059190614759565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611c42929190614c47565b602060405180830381600087803b158015611c5c57600080fd5b505af1158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9491906146cb565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611cc7929190614c47565b60405180910390a15092915050565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b606060068054611d3790615408565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6390615408565b8015611db05780601f10611d8557610100808354040283529160200191611db0565b820191906000526020600020905b815481529060010190602001808311611d9357829003601f168201915b5050505050905090565b611dc2612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890614e64565b60405180910390fd5b6107d18383905010611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f90614e24565b60405180910390fd5b600083839050611ea6611468565b600a611eb29190615168565b83611ebd9190615286565b611ec79190615286565b905080611ed333611906565b1015611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b90614de4565b60405180910390fd5b60005b84849050811015611fac57611f9833868684818110611f5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611f74919061448b565b611f7c611468565b600a611f889190615168565b86611f939190615286565b612e72565b508080611fa49061546b565b915050611f17565b5050505050565b611fbb612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204190614e64565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806120d6612c13565b90506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561219c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219390614f04565b60405180910390fd5b6121a98286868403612c1b565b60019250505092915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006121ef6121e8612c13565b8484612e72565b506001905092915050565b612202612c13565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614e04565b60405180910390fd5b60005b8151811015612348576001601c60008484815181106122dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806123409061546b565b915050612294565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612378612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe90614e64565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602060009054906101000a900460ff1681565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b612498612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90614e64565b60405180910390fd5b85600f81905550836010819055508160118190555084601281905550826013819055508060148190555061257c600f5461256e601054601154612bfd90919063ffffffff16565b612bfd90919063ffffffff16565b6015819055506125ad60125461259f601354601454612bfd90919063ffffffff16565b612bfd90919063ffffffff16565b601681905550600f60155411156125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f090614e84565b60405180910390fd5b601e601654111561263f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263690614e84565b60405180910390fd5b505050505050565b60125481565b601b60169054906101000a900460ff1681565b612668612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90614e64565b60405180910390fd5b80601d8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612790612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281690614e64565b60405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b612870612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f690614e64565b60405180910390fd5b602060009054906101000a900460ff161561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294690614ee4565b60405180910390fd5b80602060006101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089602060009054906101000a900460ff166040516129a79190614cd1565b60405180910390a1602060009054906101000a900460ff1680156129cd57506000602154145b156129da57436021819055505b50565b6129e5612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b90614e64565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a9a90614bfc565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b50508091505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b13612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9990614e64565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008183612c0b919061508e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8290614ec4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf290614d64565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dd99190614f24565b60405180910390a3505050565b6000612df28484612701565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612e6c5781811015612e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5590614d84565b60405180910390fd5b612e6b8484848403612c1b565b5b50505050565b6000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f185750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f2157600080fd5b602060009054906101000a900460ff16612fc657600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbc90614dc4565b60405180910390fd5b5b601b60149054906101000a900460ff1615612fed57612fe684848461382d565b9050613810565b602060019054906101000a900460ff16801561300b57506000602154115b80156130245750436003602154613022919061508e565b115b1561302e576131ca565b601d54821115806130885750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130be90614ea4565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561312d5750600960149054906101000a900460ff165b156131c957601e5461318783600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b11156131c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bf90614da4565b60405180910390fd5b5b5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156132355750601b60149054906101000a900460ff16155b801561324d5750601b60159054906101000a900460ff165b801561329a5750601f54600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156132a8576132a7613a00565b5b613331826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ae9092919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561341a5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134245782613430565b61342f858585614103565b5b905061348481600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135e85760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016135b2929190614c47565b600060405180830381600087803b1580156135cc57600080fd5b505af19250505080156135dd575060015b6135e6576135e7565b5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137095760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136d3929190614c47565b600060405180830381600087803b1580156136ed57600080fd5b505af19250505080156136fe575060015b61370757613708565b5b5b600060015411156137a55760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796001546040518263ffffffff1660e01b815260040161376f9190614f24565b600060405180830381600087803b15801561378957600080fd5b505af192505050801561379a575060015b6137a3576137a4565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138029190614f24565b60405180910390a360019150505b9392505050565b6000818361382591906152e0565b905092915050565b60006138b8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ae9092919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394d82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139ed9190614f24565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000806000600260155411613ab157613aaa6002613a9c601654613a8e601354896142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b9250613af0565b613aed6002613adf601554613ad1601054896142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b92505b6000613b05848661381790919063ffffffff16565b90506000600267ffffffffffffffff811115613b4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613b785781602001602082028036833780820191505090505b5090503081600081518110613bb6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c5857600080fd5b505afa158015613c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9091906144b4565b81600181518110613cca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d68959493929190614f3f565b600060405180830381600087803b158015613d8257600080fd5b505af1158015613d96573d6000803e3d6000fd5b505050506000479050600260155411613e1757613dd2601654613dc4601454846142ec90919063ffffffff16565b61430290919063ffffffff16565b9450613e106002613e02601654613df4601354866142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b9350613e81565b613e40601554613e32601154846142ec90919063ffffffff16565b61430290919063ffffffff16565b9450613e7e6002613e70601554613e62601054866142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b93505b6000613ea885613e9a888561381790919063ffffffff16565b61381790919063ffffffff16565b90506000821115613f1d57601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015613f1b573d6000803e3d6000fd5b505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f8557600080fd5b505af193505050508015613f97575060015b613fa057613fa1565b5b600087111561408957601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161403396959493929190614c70565b6060604051808303818588803b15801561404c57600080fd5b505af1158015614060573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061408591906147be565b5050505b50505050505050506000601b60146101000a81548160ff021916908315150217905550565b60008383111582906140f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140ed9190614d22565b60405180910390fd5b5082840390509392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461416357601554614167565b6016545b9050602060019054906101000a900460ff16801561418757506000602154115b80156141a0575043600360215461419e919061508e565b115b156141aa57605a90505b60006141d260646141c484876142ec90919063ffffffff16565b61430290919063ffffffff16565b905061422681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142c69190614f24565b60405180910390a36142e1818561381790919063ffffffff16565b925050509392505050565b600081836142fa9190615286565b905092915050565b6000818361431091906150e4565b905092915050565b600061432b61432684615002565b614fdd565b9050808382526020820190508285602086028201111561434a57600080fd5b60005b8581101561437a57816143608882614384565b84526020840193506020830192505060018101905061434d565b5050509392505050565b600081359050614393816158b6565b92915050565b6000815190506143a8816158b6565b92915050565b6000813590506143bd816158cd565b92915050565b60008083601f8401126143d557600080fd5b8235905067ffffffffffffffff8111156143ee57600080fd5b60208301915083602082028301111561440657600080fd5b9250929050565b600082601f83011261441e57600080fd5b813561442e848260208601614318565b91505092915050565b600081359050614446816158e4565b92915050565b60008151905061445b816158e4565b92915050565b600081359050614470816158fb565b92915050565b600081519050614485816158fb565b92915050565b60006020828403121561449d57600080fd5b60006144ab84828501614384565b91505092915050565b6000602082840312156144c657600080fd5b60006144d484828501614399565b91505092915050565b6000602082840312156144ef57600080fd5b60006144fd848285016143ae565b91505092915050565b6000806040838503121561451957600080fd5b600061452785828601614384565b925050602061453885828601614384565b9150509250929050565b60008060006060848603121561455757600080fd5b600061456586828701614384565b935050602061457686828701614384565b925050604061458786828701614461565b9150509250925092565b600080604083850312156145a457600080fd5b60006145b285828601614384565b92505060206145c385828601614437565b9150509250929050565b600080604083850312156145e057600080fd5b60006145ee85828601614384565b92505060206145ff85828601614461565b9150509250929050565b60008060006040848603121561461e57600080fd5b600084013567ffffffffffffffff81111561463857600080fd5b614644868287016143c3565b9350935050602061465786828701614461565b9150509250925092565b60006020828403121561467357600080fd5b600082013567ffffffffffffffff81111561468d57600080fd5b6146998482850161440d565b91505092915050565b6000602082840312156146b457600080fd5b60006146c284828501614437565b91505092915050565b6000602082840312156146dd57600080fd5b60006146eb8482850161444c565b91505092915050565b6000806040838503121561470757600080fd5b600061471585828601614437565b925050602061472685828601614461565b9150509250929050565b60006020828403121561474257600080fd5b600061475084828501614461565b91505092915050565b60006020828403121561476b57600080fd5b600061477984828501614476565b91505092915050565b6000806040838503121561479557600080fd5b60006147a385828601614461565b92505060206147b485828601614461565b9150509250929050565b6000806000606084860312156147d357600080fd5b60006147e186828701614476565b93505060206147f286828701614476565b925050604061480386828701614476565b9150509250925092565b60008060008060008060c0878903121561482657600080fd5b600061483489828a01614461565b965050602061484589828a01614461565b955050604061485689828a01614461565b945050606061486789828a01614461565b935050608061487889828a01614461565b92505060a061488989828a01614461565b9150509295509295509295565b60006148a283836148bd565b60208301905092915050565b6148b781615326565b82525050565b6148c681615314565b82525050565b6148d581615314565b82525050565b60006148e68261503e565b6148f08185615061565b93506148fb8361502e565b8060005b8381101561492c5781516149138882614896565b975061491e83615054565b9250506001810190506148ff565b5085935050505092915050565b61494281615338565b82525050565b6149518161537b565b82525050565b6149608161539f565b82525050565b61496f816153c3565b82525050565b600061498082615049565b61498a818561507d565b935061499a8185602086016153d5565b6149a381615570565b840191505092915050565b60006149bb601c8361507d565b91506149c68261558e565b602082019050919050565b60006149de60228361507d565b91506149e9826155b7565b604082019050919050565b6000614a01601d8361507d565b9150614a0c82615606565b602082019050919050565b6000614a2460068361507d565b9150614a2f8261562f565b602082019050919050565b6000614a4760128361507d565b9150614a5282615658565b602082019050919050565b6000614a6a601b8361507d565b9150614a7582615681565b602082019050919050565b6000614a8d60238361507d565b9150614a98826156aa565b604082019050919050565b6000614ab0602e8361507d565b9150614abb826156f9565b604082019050919050565b6000614ad3601a8361507d565b9150614ade82615748565b602082019050919050565b6000614af660208361507d565b9150614b0182615771565b602082019050919050565b6000614b19600c8361507d565b9150614b248261579a565b602082019050919050565b6000614b3c600083615072565b9150614b47826157c3565b600082019050919050565b6000614b5f60028361507d565b9150614b6a826157c6565b602082019050919050565b6000614b8260248361507d565b9150614b8d826157ef565b604082019050919050565b6000614ba560188361507d565b9150614bb08261583e565b602082019050919050565b6000614bc860258361507d565b9150614bd382615867565b604082019050919050565b614be781615364565b82525050565b614bf68161536e565b82525050565b6000614c0782614b2f565b9150819050919050565b6000602082019050614c2660008301846148cc565b92915050565b6000602082019050614c4160008301846148ae565b92915050565b6000604082019050614c5c60008301856148cc565b614c696020830184614bde565b9392505050565b600060c082019050614c8560008301896148cc565b614c926020830188614bde565b614c9f6040830187614966565b614cac6060830186614966565b614cb960808301856148cc565b614cc660a0830184614bde565b979650505050505050565b6000602082019050614ce66000830184614939565b92915050565b6000602082019050614d016000830184614948565b92915050565b6000602082019050614d1c6000830184614957565b92915050565b60006020820190508181036000830152614d3c8184614975565b905092915050565b60006020820190508181036000830152614d5d816149ae565b9050919050565b60006020820190508181036000830152614d7d816149d1565b9050919050565b60006020820190508181036000830152614d9d816149f4565b9050919050565b60006020820190508181036000830152614dbd81614a17565b9050919050565b60006020820190508181036000830152614ddd81614a3a565b9050919050565b60006020820190508181036000830152614dfd81614a5d565b9050919050565b60006020820190508181036000830152614e1d81614a80565b9050919050565b60006020820190508181036000830152614e3d81614aa3565b9050919050565b60006020820190508181036000830152614e5d81614ac6565b9050919050565b60006020820190508181036000830152614e7d81614ae9565b9050919050565b60006020820190508181036000830152614e9d81614b0c565b9050919050565b60006020820190508181036000830152614ebd81614b52565b9050919050565b60006020820190508181036000830152614edd81614b75565b9050919050565b60006020820190508181036000830152614efd81614b98565b9050919050565b60006020820190508181036000830152614f1d81614bbb565b9050919050565b6000602082019050614f396000830184614bde565b92915050565b600060a082019050614f546000830188614bde565b614f616020830187614966565b8181036040830152614f7381866148db565b9050614f8260608301856148cc565b614f8f6080830184614bde565b9695505050505050565b6000604082019050614fae6000830185614bde565b614fbb6020830184614bde565b9392505050565b6000602082019050614fd76000830184614bed565b92915050565b6000614fe7614ff8565b9050614ff3828261543a565b919050565b6000604051905090565b600067ffffffffffffffff82111561501d5761501c615541565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061509982615364565b91506150a483615364565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150d9576150d86154b4565b5b828201905092915050565b60006150ef82615364565b91506150fa83615364565b92508261510a576151096154e3565b5b828204905092915050565b6000808291508390505b600185111561515f5780860481111561513b5761513a6154b4565b5b600185161561514a5780820291505b808102905061515885615581565b945061511f565b94509492505050565b600061517382615364565b915061517e8361536e565b92506151ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846151b3565b905092915050565b6000826151c3576001905061527f565b816151d1576000905061527f565b81600181146151e757600281146151f157615220565b600191505061527f565b60ff841115615203576152026154b4565b5b8360020a91508482111561521a576152196154b4565b5b5061527f565b5060208310610133831016604e8410600b84101617156152555782820a9050838111156152505761524f6154b4565b5b61527f565b6152628484846001615115565b92509050818404811115615279576152786154b4565b5b81810290505b9392505050565b600061529182615364565b915061529c83615364565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156152d5576152d46154b4565b5b828202905092915050565b60006152eb82615364565b91506152f683615364565b925082821015615309576153086154b4565b5b828203905092915050565b600061531f82615344565b9050919050565b600061533182615344565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006153868261538d565b9050919050565b600061539882615344565b9050919050565b60006153aa826153b1565b9050919050565b60006153bc82615344565b9050919050565b60006153ce82615364565b9050919050565b60005b838110156153f35780820151818401526020810190506153d8565b83811115615402576000848401525b50505050565b6000600282049050600182168061542057607f821691505b6020821081141561543457615433615512565b5b50919050565b61544382615570565b810181811067ffffffffffffffff8211171561546257615461615541565b5b80604052505050565b600061547682615364565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154a9576154a86154b4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460008201527f6d696e0000000000000000000000000000000000000000000000000000000000602082015250565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b50565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6158bf81615314565b81146158ca57600080fd5b50565b6158d681615326565b81146158e157600080fd5b50565b6158ed81615338565b81146158f857600080fd5b50565b61590481615364565b811461590f57600080fd5b5056fea2646970667358221220941d56ff9ee2762cd993b72b8924a0534400420b86f5650c2983b18e57420b6e64736f6c6343000804003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c55670de0b6b3a7640000600d553480156200003657600080fd5b5060405162001f3738038062001f3783398181016040528101906200005c91906200013e565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001e2565b6000815190506200013881620001c8565b92915050565b6000806000606084860312156200015457600080fd5b6000620001648682870162000127565b9350506020620001778682870162000127565b92505060406200018a8682870162000127565b9150509250925092565b6000620001a182620001a8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620001d38162000194565b8114620001df57600080fd5b50565b611d4580620001f26000396000f3fe6080604052600436106100fe5760003560e01c8063997664d711610095578063efca2eed11610064578063efca2eed1461031a578063f0fc6bca14610345578063f1e9f1e51461035c578063ffb2c47914610387578063ffd49c84146103b0576100fe565b8063997664d71461027b578063ce7c2ac2146102a6578063d0e30db0146102e5578063e2d2e219146102ef576100fe565b80632d48e896116100d15780632d48e896146101bf5780633a98ef39146101e85780634fab0ae8146102135780638c21cd521461023e576100fe565b806311ce023d1461010357806314b6ca961461012e57806326987b601461015757806328fd319814610182575b600080fd5b34801561010f57600080fd5b506101186103db565b60405161012591906119cb565b60405180910390f35b34801561013a57600080fd5b50610155600480360381019061015091906116ff565b6103e1565b005b34801561016357600080fd5b5061016c6106a0565b60405161017991906119cb565b60405180910390f35b34801561018e57600080fd5b506101a960048036038101906101a491906116ad565b6106a6565b6040516101b691906119cb565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e191906117b6565b6107c0565b005b3480156101f457600080fd5b506101fd61082a565b60405161020a91906119cb565b60405180910390f35b34801561021f57600080fd5b50610228610830565b60405161023591906119cb565b60405180910390f35b34801561024a57600080fd5b50610265600480360381019061026091906116ad565b610836565b6040516102729190611929565b60405180910390f35b34801561028757600080fd5b506102906108a3565b60405161029d91906119cb565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906116ad565b6108a9565b6040516102dc939291906119e6565b60405180910390f35b6102ed6108d3565b005b3480156102fb57600080fd5b50610304610db2565b60405161031191906119cb565b60405180910390f35b34801561032657600080fd5b5061032f610db8565b60405161033c91906119cb565b60405180910390f35b34801561035157600080fd5b5061035a610dbe565b005b34801561036857600080fd5b50610371610e11565b60405161037e9190611944565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190611764565b610e37565b005b3480156103bc57600080fd5b506103c5610fbf565b6040516103d291906119cb565b60405180910390f35b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461043957600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561048e5761048d82610fc5565b5b6000811180156104e057506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104f3576104ee8261126c565b610555565b60008114801561054557506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b15610554576105538261131b565b5b5b6105be816105b0600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546007546115ba90919063ffffffff16565b6115d090919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610656600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546115e6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fb57600090506107bb565b6000610748600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546115e6565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a3576000925050506107bb565b6107b681836115ba90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081857600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108869190611a67565b10801561089c5750600d5461089a836106a6565b115b9050919050565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092b57600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161098891906118e5565b60206040518083038186803b1580156109a057600080fd5b505afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d8919061178d565b90506000600267ffffffffffffffff811115610a1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610a4b5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610ab657600080fd5b505afa158015610aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aee91906116d6565b81600081518110610b28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610bbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610c5c949392919061195f565b6000604051808303818588803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b50505050506000610d4d83600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cef91906118e5565b60206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f919061178d565b6115ba90919063ffffffff16565b9050610d64816008546115d090919063ffffffff16565b600881905550610da7610d96600754610d8884600b5461161890919063ffffffff16565b61162e90919063ffffffff16565b600a546115d090919063ffffffff16565b600a81905550505050565b600a5481565b60095481565b610dc733610836565b610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd906119ab565b60405180910390fd5b610e0f33610fc5565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060038054905090506000811415610e505750610fbc565b60008060005a90505b8482108015610e6757508383105b15610fb75783600e5410610e7e576000600e819055505b610eed6003600e5481548110610ebd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610836565b15610f6257610f616003600e5481548110610f31577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fc5565b5b610f87610f785a836115ba90919063ffffffff16565b836115d090919063ffffffff16565b91505a9050600e6000815480929190610f9f90611bfa565b91905055508280610faf90611bfa565b935050610e59565b505050505b50565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561101557611269565b6000611020826106a6565b9050600081111561126757611040816009546115d090919063ffffffff16565b600981905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110a3929190611900565b602060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f5919061173b565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061118f81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546115d090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611220600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546115e6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6003600160038054905061132f9190611b48565b81548110611366577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061140a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114aa9190611b48565b815481106114e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003805480611582577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600081836115c89190611b48565b905092915050565b600081836115de9190611a67565b905092915050565b6000611611600b54611603600a548561161890919063ffffffff16565b61162e90919063ffffffff16565b9050919050565b600081836116269190611aee565b905092915050565b6000818361163c9190611abd565b905092915050565b60008135905061165381611cca565b92915050565b60008151905061166881611cca565b92915050565b60008151905061167d81611ce1565b92915050565b60008135905061169281611cf8565b92915050565b6000815190506116a781611cf8565b92915050565b6000602082840312156116bf57600080fd5b60006116cd84828501611644565b91505092915050565b6000602082840312156116e857600080fd5b60006116f684828501611659565b91505092915050565b6000806040838503121561171257600080fd5b600061172085828601611644565b925050602061173185828601611683565b9150509250929050565b60006020828403121561174d57600080fd5b600061175b8482850161166e565b91505092915050565b60006020828403121561177657600080fd5b600061178484828501611683565b91505092915050565b60006020828403121561179f57600080fd5b60006117ad84828501611698565b91505092915050565b600080604083850312156117c957600080fd5b60006117d785828601611683565b92505060206117e885828601611683565b9150509250929050565b60006117fe838361180a565b60208301905092915050565b61181381611b7c565b82525050565b61182281611b7c565b82525050565b600061183382611a2d565b61183d8185611a45565b935061184883611a1d565b8060005b8381101561187957815161186088826117f2565b975061186b83611a38565b92505060018101905061184c565b5085935050505092915050565b61188f81611b8e565b82525050565b61189e81611bc4565b82525050565b6118ad81611be8565b82525050565b60006118c0601783611a56565b91506118cb82611ca1565b602082019050919050565b6118df81611bba565b82525050565b60006020820190506118fa6000830184611819565b92915050565b60006040820190506119156000830185611819565b61192260208301846118d6565b9392505050565b600060208201905061193e6000830184611886565b92915050565b60006020820190506119596000830184611895565b92915050565b600060808201905061197460008301876118a4565b81810360208301526119868186611828565b90506119956040830185611819565b6119a260608301846118d6565b95945050505050565b600060208201905081810360008301526119c4816118b3565b9050919050565b60006020820190506119e060008301846118d6565b92915050565b60006060820190506119fb60008301866118d6565b611a0860208301856118d6565b611a1560408301846118d6565b949350505050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611a7282611bba565b9150611a7d83611bba565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ab257611ab1611c43565b5b828201905092915050565b6000611ac882611bba565b9150611ad383611bba565b925082611ae357611ae2611c72565b5b828204905092915050565b6000611af982611bba565b9150611b0483611bba565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611b3d57611b3c611c43565b5b828202905092915050565b6000611b5382611bba565b9150611b5e83611bba565b925082821015611b7157611b70611c43565b5b828203905092915050565b6000611b8782611b9a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611bcf82611bd6565b9050919050565b6000611be182611b9a565b9050919050565b6000611bf382611bba565b9050919050565b6000611c0582611bba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c3857611c37611c43565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000600082015250565b611cd381611b7c565b8114611cde57600080fd5b50565b611cea81611b8e565b8114611cf557600080fd5b50565b611d0181611bba565b8114611d0c57600080fd5b5056fea2646970667358221220ae7e13a424058737983138ed3ba1f663b519d43b7e4aa379afa84fbc83dc73b764736f6c634300080400330000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000004d224452801aced8b2f0aebe155379bb5d5943810000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000027bd919ee5bd897fb886d876e74f62ef9d0b0a78
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80638366e79a116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f275f64b1161006f578063f275f64b14610e0d578063f5648a4f14610e36578063f887ea4014610e4d578063fabe628314610e78576103b8565b8063dd62ed3e14610d51578063e66b1d1e14610d8e578063ede1588f14610db7578063ee40166e14610de2576103b8565b8063cb29813c116100dc578063cb29813c14610ca9578063cc6badb314610cd2578063d4fb9a0114610cfd578063d920334e14610d28576103b8565b8063bbc0c74214610bfd578063bf56b37114610c28578063c45a015514610c53578063ca987b0e14610c7e576103b8565b8063a3a2e89e11610185578063a9059cbb11610154578063a9059cbb14610b43578063b515566a14610b80578063bad3ea6a14610ba9578063bb542ef014610bd4576103b8565b8063a3a2e89e14610a87578063a3e6761014610ab0578063a457c2d714610adb578063a8aa1b3114610b18576103b8565b80638ea5220f116101c15780638ea5220f146109dd5780639502c42614610a0857806395d89b4114610a33578063a16a317914610a5e576103b8565b80638366e79a1461093857806383ad7994146109755780638b42507f146109a0576103b8565b80633f4218e0116102d757806366b5d8821161026a5780637c0ff205116102395780637c0ff2051461088e5780637d1db4a5146108b95780637db1342c146108e4578063807c2d9c1461090d576103b8565b806366b5d882146107e45780636827e764146107fb578063704ce43e1461082657806370a0823114610851576103b8565b8063468c7ee2116102a6578063468c7ee21461073a5780634a74bb021461076357806360e719621461078e5780636303516c146107b9576103b8565b80633f4218e01461066c5780634355855a146106a957806343d49dda146106e657806344de2e4c1461070f576103b8565b806323b872dd1161034f5780632d48e8961161031e5780632d48e896146105b2578063313ce567146105db57806339509351146106065780633dab526914610643576103b8565b806323b872dd146104f8578063259aa50414610535578063273123b71461055e5780632b112e4914610587576103b8565b806316d9962b1161038b57806316d9962b1461045057806318160ddd146104795780631df4ccfc146104a45780631f53ac02146104cf576103b8565b80630445b667146103bd57806306fdde03146103e8578063095ea7b314610413576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610ea1565b6040516103df9190614f24565b60405180910390f35b3480156103f457600080fd5b506103fd610ea7565b60405161040a9190614d22565b60405180910390f35b34801561041f57600080fd5b5061043a600480360381019061043591906145cd565b610f39565b6040516104479190614cd1565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190614730565b610f5c565b005b34801561048557600080fd5b5061048e610ffd565b60405161049b9190614f24565b60405180910390f35b3480156104b057600080fd5b506104b9611007565b6040516104c69190614f24565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906144dd565b61100d565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614542565b6110e8565b60405161052c9190614cd1565b60405180910390f35b34801561054157600080fd5b5061055c600480360381019061055791906146a2565b611118565b005b34801561056a57600080fd5b506105856004803603810190610580919061448b565b6111cc565b005b34801561059357600080fd5b5061059c6112be565b6040516105a99190614f24565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190614782565b611340565b005b3480156105e757600080fd5b506105f0611468565b6040516105fd9190614fc2565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906145cd565b611471565b60405161063a9190614cd1565b60405180910390f35b34801561064f57600080fd5b5061066a600480360381019061066591906146f4565b61151b565b005b34801561067857600080fd5b50610693600480360381019061068e919061448b565b6115d7565b6040516106a09190614cd1565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb919061448b565b6115f7565b6040516106dd9190614cd1565b60405180910390f35b3480156106f257600080fd5b5061070d6004803603810190610708919061448b565b611617565b005b34801561071b57600080fd5b506107246116f2565b6040516107319190614cd1565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c919061448b565b611705565b005b34801561076f57600080fd5b506107786117e0565b6040516107859190614cd1565b60405180910390f35b34801561079a57600080fd5b506107a36117f3565b6040516107b09190614f24565b60405180910390f35b3480156107c557600080fd5b506107ce6117f9565b6040516107db9190614c11565b60405180910390f35b3480156107f057600080fd5b506107f961181f565b005b34801561080757600080fd5b506108106118fa565b60405161081d9190614f24565b60405180910390f35b34801561083257600080fd5b5061083b611900565b6040516108489190614f24565b60405180910390f35b34801561085d57600080fd5b506108786004803603810190610873919061448b565b611906565b6040516108859190614f24565b60405180910390f35b34801561089a57600080fd5b506108a361194f565b6040516108b09190614f24565b60405180910390f35b3480156108c557600080fd5b506108ce611955565b6040516108db9190614f24565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190614730565b61195b565b005b34801561091957600080fd5b506109226119fc565b60405161092f9190614f24565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a9190614506565b611a02565b60405161096c9190614cd1565b60405180910390f35b34801561098157600080fd5b5061098a611cd6565b6040516109979190614f24565b60405180910390f35b3480156109ac57600080fd5b506109c760048036038101906109c2919061448b565b611cdc565b6040516109d49190614cd1565b60405180910390f35b3480156109e957600080fd5b506109f2611cfc565b6040516109ff9190614c2c565b60405180910390f35b348015610a1457600080fd5b50610a1d611d22565b604051610a2a9190614f24565b60405180910390f35b348015610a3f57600080fd5b50610a48611d28565b604051610a559190614d22565b60405180910390f35b348015610a6a57600080fd5b50610a856004803603810190610a809190614609565b611dba565b005b348015610a9357600080fd5b50610aae6004803603810190610aa99190614591565b611fb3565b005b348015610abc57600080fd5b50610ac56120a5565b604051610ad29190614c11565b60405180910390f35b348015610ae757600080fd5b50610b026004803603810190610afd91906145cd565b6120cb565b604051610b0f9190614cd1565b60405180910390f35b348015610b2457600080fd5b50610b2d6121b5565b604051610b3a9190614c11565b60405180910390f35b348015610b4f57600080fd5b50610b6a6004803603810190610b6591906145cd565b6121db565b604051610b779190614cd1565b60405180910390f35b348015610b8c57600080fd5b50610ba76004803603810190610ba29190614661565b6121fa565b005b348015610bb557600080fd5b50610bbe61234c565b604051610bcb9190614cec565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906144dd565b612370565b005b348015610c0957600080fd5b50610c1261244b565b604051610c1f9190614cd1565b60405180910390f35b348015610c3457600080fd5b50610c3d61245e565b604051610c4a9190614f24565b60405180910390f35b348015610c5f57600080fd5b50610c68612464565b604051610c759190614c11565b60405180910390f35b348015610c8a57600080fd5b50610c9361248a565b604051610ca09190614f24565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb919061480d565b612490565b005b348015610cde57600080fd5b50610ce7612647565b604051610cf49190614f24565b60405180910390f35b348015610d0957600080fd5b50610d1261264d565b604051610d1f9190614cd1565b60405180910390f35b348015610d3457600080fd5b50610d4f6004803603810190610d4a9190614730565b612660565b005b348015610d5d57600080fd5b50610d786004803603810190610d739190614506565b612701565b604051610d859190614f24565b60405180910390f35b348015610d9a57600080fd5b50610db56004803603810190610db091906146a2565b612788565b005b348015610dc357600080fd5b50610dcc61283c565b604051610dd99190614c11565b60405180910390f35b348015610dee57600080fd5b50610df7612862565b604051610e049190614f24565b60405180910390f35b348015610e1957600080fd5b50610e346004803603810190610e2f91906146a2565b612868565b005b348015610e4257600080fd5b50610e4b6129dd565b005b348015610e5957600080fd5b50610e62612ae5565b604051610e6f9190614d07565b60405180910390f35b348015610e8457600080fd5b50610e9f6004803603810190610e9a9190614591565b612b0b565b005b601f5481565b606060058054610eb690615408565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee290615408565b8015610f2f5780601f10610f0457610100808354040283529160200191610f2f565b820191906000526020600020905b815481529060010190602001808311610f1257829003601f168201915b5050505050905090565b600080610f44612c13565b9050610f51818585612c1b565b600191505092915050565b610f64612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea90614e64565b60405180910390fd5b8060018190555050565b6000600454905090565b60155481565b611015612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90614e64565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806110f3612c13565b9050611100858285612de6565b61110b858585612e72565b5060019150509392505050565b611120612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690614e64565b60405180910390fd5b80602060016101000a81548160ff02191690831515021790555050565b6111d4612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90614e64565b60405180910390fd5b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061133b6112ee600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611906565b61132d61131c600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611906565b60045461381790919063ffffffff16565b61381790919063ffffffff16565b905090565b611348612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614e64565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611432929190614f99565b600060405180830381600087803b15801561144c57600080fd5b505af1158015611460573d6000803e3d6000fd5b505050505050565b60006009905090565b60008061147c612c13565b9050611510818585600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461150b919061508e565b612c1b565b600191505092915050565b611523612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990614e64565b60405180910390fd5b81601b60156101000a81548160ff02191690831515021790555080601f819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b61161f612c13565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590614e04565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960149054906101000a900460ff1681565b61170d612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614e64565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60159054906101000a900460ff1681565b60015481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611827612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90614e64565b60405180910390fd5b6000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b60105481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60135481565b601d5481565b611963612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990614e64565b60405180910390fd5b80601e8190555050565b601e5481565b6000611a0c612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290614e64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290614e44565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7190614d44565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bb59190614c11565b60206040518083038186803b158015611bcd57600080fd5b505afa158015611be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c059190614759565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611c42929190614c47565b602060405180830381600087803b158015611c5c57600080fd5b505af1158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9491906146cb565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611cc7929190614c47565b60405180910390a15092915050565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b606060068054611d3790615408565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6390615408565b8015611db05780601f10611d8557610100808354040283529160200191611db0565b820191906000526020600020905b815481529060010190602001808311611d9357829003601f168201915b5050505050905090565b611dc2612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890614e64565b60405180910390fd5b6107d18383905010611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f90614e24565b60405180910390fd5b600083839050611ea6611468565b600a611eb29190615168565b83611ebd9190615286565b611ec79190615286565b905080611ed333611906565b1015611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b90614de4565b60405180910390fd5b60005b84849050811015611fac57611f9833868684818110611f5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611f74919061448b565b611f7c611468565b600a611f889190615168565b86611f939190615286565b612e72565b508080611fa49061546b565b915050611f17565b5050505050565b611fbb612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204190614e64565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806120d6612c13565b90506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561219c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219390614f04565b60405180910390fd5b6121a98286868403612c1b565b60019250505092915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006121ef6121e8612c13565b8484612e72565b506001905092915050565b612202612c13565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614e04565b60405180910390fd5b60005b8151811015612348576001601c60008484815181106122dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806123409061546b565b915050612294565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612378612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe90614e64565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b602060009054906101000a900460ff1681565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b612498612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e90614e64565b60405180910390fd5b85600f81905550836010819055508160118190555084601281905550826013819055508060148190555061257c600f5461256e601054601154612bfd90919063ffffffff16565b612bfd90919063ffffffff16565b6015819055506125ad60125461259f601354601454612bfd90919063ffffffff16565b612bfd90919063ffffffff16565b601681905550600f60155411156125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f090614e84565b60405180910390fd5b601e601654111561263f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263690614e84565b60405180910390fd5b505050505050565b60125481565b601b60169054906101000a900460ff1681565b612668612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90614e64565b60405180910390fd5b80601d8190555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612790612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281690614e64565b60405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b612870612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f690614e64565b60405180910390fd5b602060009054906101000a900460ff161561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294690614ee4565b60405180910390fd5b80602060006101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089602060009054906101000a900460ff166040516129a79190614cd1565b60405180910390a1602060009054906101000a900460ff1680156129cd57506000602154145b156129da57436021819055505b50565b6129e5612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b90614e64565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612a9a90614bfc565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b50508091505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b13612c13565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9990614e64565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008183612c0b919061508e565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8290614ec4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf290614d64565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dd99190614f24565b60405180910390a3505050565b6000612df28484612701565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612e6c5781811015612e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5590614d84565b60405180910390fd5b612e6b8484848403612c1b565b5b50505050565b6000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f185750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612f2157600080fd5b602060009054906101000a900460ff16612fc657600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbc90614dc4565b60405180910390fd5b5b601b60149054906101000a900460ff1615612fed57612fe684848461382d565b9050613810565b602060019054906101000a900460ff16801561300b57506000602154115b80156130245750436003602154613022919061508e565b115b1561302e576131ca565b601d54821115806130885750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130be90614ea4565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561312d5750600960149054906101000a900460ff165b156131c957601e5461318783600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b11156131c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bf90614da4565b60405180910390fd5b5b5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156132355750601b60149054906101000a900460ff16155b801561324d5750601b60159054906101000a900460ff165b801561329a5750601f54600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156132a8576132a7613a00565b5b613331826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ae9092919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561341a5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134245782613430565b61342f858585614103565b5b905061348481600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166135e85760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016135b2929190614c47565b600060405180830381600087803b1580156135cc57600080fd5b505af19250505080156135dd575060015b6135e6576135e7565b5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137095760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016136d3929190614c47565b600060405180830381600087803b1580156136ed57600080fd5b505af19250505080156136fe575060015b61370757613708565b5b5b600060015411156137a55760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796001546040518263ffffffff1660e01b815260040161376f9190614f24565b600060405180830381600087803b15801561378957600080fd5b505af192505050801561379a575060015b6137a3576137a4565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138029190614f24565b60405180910390a360019150505b9392505050565b6000818361382591906152e0565b905092915050565b60006138b8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140ae9092919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394d82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139ed9190614f24565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000806000600260155411613ab157613aaa6002613a9c601654613a8e601354896142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b9250613af0565b613aed6002613adf601554613ad1601054896142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b92505b6000613b05848661381790919063ffffffff16565b90506000600267ffffffffffffffff811115613b4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613b785781602001602082028036833780820191505090505b5090503081600081518110613bb6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c5857600080fd5b505afa158015613c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9091906144b4565b81600181518110613cca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d68959493929190614f3f565b600060405180830381600087803b158015613d8257600080fd5b505af1158015613d96573d6000803e3d6000fd5b505050506000479050600260155411613e1757613dd2601654613dc4601454846142ec90919063ffffffff16565b61430290919063ffffffff16565b9450613e106002613e02601654613df4601354866142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b9350613e81565b613e40601554613e32601154846142ec90919063ffffffff16565b61430290919063ffffffff16565b9450613e7e6002613e70601554613e62601054866142ec90919063ffffffff16565b61430290919063ffffffff16565b61430290919063ffffffff16565b93505b6000613ea885613e9a888561381790919063ffffffff16565b61381790919063ffffffff16565b90506000821115613f1d57601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015613f1b573d6000803e3d6000fd5b505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613f8557600080fd5b505af193505050508015613f97575060015b613fa057613fa1565b5b600087111561408957601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161403396959493929190614c70565b6060604051808303818588803b15801561404c57600080fd5b505af1158015614060573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061408591906147be565b5050505b50505050505050506000601b60146101000a81548160ff021916908315150217905550565b60008383111582906140f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140ed9190614d22565b60405180910390fd5b5082840390509392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461416357601554614167565b6016545b9050602060019054906101000a900460ff16801561418757506000602154115b80156141a0575043600360215461419e919061508e565b115b156141aa57605a90505b60006141d260646141c484876142ec90919063ffffffff16565b61430290919063ffffffff16565b905061422681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142c69190614f24565b60405180910390a36142e1818561381790919063ffffffff16565b925050509392505050565b600081836142fa9190615286565b905092915050565b6000818361431091906150e4565b905092915050565b600061432b61432684615002565b614fdd565b9050808382526020820190508285602086028201111561434a57600080fd5b60005b8581101561437a57816143608882614384565b84526020840193506020830192505060018101905061434d565b5050509392505050565b600081359050614393816158b6565b92915050565b6000815190506143a8816158b6565b92915050565b6000813590506143bd816158cd565b92915050565b60008083601f8401126143d557600080fd5b8235905067ffffffffffffffff8111156143ee57600080fd5b60208301915083602082028301111561440657600080fd5b9250929050565b600082601f83011261441e57600080fd5b813561442e848260208601614318565b91505092915050565b600081359050614446816158e4565b92915050565b60008151905061445b816158e4565b92915050565b600081359050614470816158fb565b92915050565b600081519050614485816158fb565b92915050565b60006020828403121561449d57600080fd5b60006144ab84828501614384565b91505092915050565b6000602082840312156144c657600080fd5b60006144d484828501614399565b91505092915050565b6000602082840312156144ef57600080fd5b60006144fd848285016143ae565b91505092915050565b6000806040838503121561451957600080fd5b600061452785828601614384565b925050602061453885828601614384565b9150509250929050565b60008060006060848603121561455757600080fd5b600061456586828701614384565b935050602061457686828701614384565b925050604061458786828701614461565b9150509250925092565b600080604083850312156145a457600080fd5b60006145b285828601614384565b92505060206145c385828601614437565b9150509250929050565b600080604083850312156145e057600080fd5b60006145ee85828601614384565b92505060206145ff85828601614461565b9150509250929050565b60008060006040848603121561461e57600080fd5b600084013567ffffffffffffffff81111561463857600080fd5b614644868287016143c3565b9350935050602061465786828701614461565b9150509250925092565b60006020828403121561467357600080fd5b600082013567ffffffffffffffff81111561468d57600080fd5b6146998482850161440d565b91505092915050565b6000602082840312156146b457600080fd5b60006146c284828501614437565b91505092915050565b6000602082840312156146dd57600080fd5b60006146eb8482850161444c565b91505092915050565b6000806040838503121561470757600080fd5b600061471585828601614437565b925050602061472685828601614461565b9150509250929050565b60006020828403121561474257600080fd5b600061475084828501614461565b91505092915050565b60006020828403121561476b57600080fd5b600061477984828501614476565b91505092915050565b6000806040838503121561479557600080fd5b60006147a385828601614461565b92505060206147b485828601614461565b9150509250929050565b6000806000606084860312156147d357600080fd5b60006147e186828701614476565b93505060206147f286828701614476565b925050604061480386828701614476565b9150509250925092565b60008060008060008060c0878903121561482657600080fd5b600061483489828a01614461565b965050602061484589828a01614461565b955050604061485689828a01614461565b945050606061486789828a01614461565b935050608061487889828a01614461565b92505060a061488989828a01614461565b9150509295509295509295565b60006148a283836148bd565b60208301905092915050565b6148b781615326565b82525050565b6148c681615314565b82525050565b6148d581615314565b82525050565b60006148e68261503e565b6148f08185615061565b93506148fb8361502e565b8060005b8381101561492c5781516149138882614896565b975061491e83615054565b9250506001810190506148ff565b5085935050505092915050565b61494281615338565b82525050565b6149518161537b565b82525050565b6149608161539f565b82525050565b61496f816153c3565b82525050565b600061498082615049565b61498a818561507d565b935061499a8185602086016153d5565b6149a381615570565b840191505092915050565b60006149bb601c8361507d565b91506149c68261558e565b602082019050919050565b60006149de60228361507d565b91506149e9826155b7565b604082019050919050565b6000614a01601d8361507d565b9150614a0c82615606565b602082019050919050565b6000614a2460068361507d565b9150614a2f8261562f565b602082019050919050565b6000614a4760128361507d565b9150614a5282615658565b602082019050919050565b6000614a6a601b8361507d565b9150614a7582615681565b602082019050919050565b6000614a8d60238361507d565b9150614a98826156aa565b604082019050919050565b6000614ab0602e8361507d565b9150614abb826156f9565b604082019050919050565b6000614ad3601a8361507d565b9150614ade82615748565b602082019050919050565b6000614af660208361507d565b9150614b0182615771565b602082019050919050565b6000614b19600c8361507d565b9150614b248261579a565b602082019050919050565b6000614b3c600083615072565b9150614b47826157c3565b600082019050919050565b6000614b5f60028361507d565b9150614b6a826157c6565b602082019050919050565b6000614b8260248361507d565b9150614b8d826157ef565b604082019050919050565b6000614ba560188361507d565b9150614bb08261583e565b602082019050919050565b6000614bc860258361507d565b9150614bd382615867565b604082019050919050565b614be781615364565b82525050565b614bf68161536e565b82525050565b6000614c0782614b2f565b9150819050919050565b6000602082019050614c2660008301846148cc565b92915050565b6000602082019050614c4160008301846148ae565b92915050565b6000604082019050614c5c60008301856148cc565b614c696020830184614bde565b9392505050565b600060c082019050614c8560008301896148cc565b614c926020830188614bde565b614c9f6040830187614966565b614cac6060830186614966565b614cb960808301856148cc565b614cc660a0830184614bde565b979650505050505050565b6000602082019050614ce66000830184614939565b92915050565b6000602082019050614d016000830184614948565b92915050565b6000602082019050614d1c6000830184614957565b92915050565b60006020820190508181036000830152614d3c8184614975565b905092915050565b60006020820190508181036000830152614d5d816149ae565b9050919050565b60006020820190508181036000830152614d7d816149d1565b9050919050565b60006020820190508181036000830152614d9d816149f4565b9050919050565b60006020820190508181036000830152614dbd81614a17565b9050919050565b60006020820190508181036000830152614ddd81614a3a565b9050919050565b60006020820190508181036000830152614dfd81614a5d565b9050919050565b60006020820190508181036000830152614e1d81614a80565b9050919050565b60006020820190508181036000830152614e3d81614aa3565b9050919050565b60006020820190508181036000830152614e5d81614ac6565b9050919050565b60006020820190508181036000830152614e7d81614ae9565b9050919050565b60006020820190508181036000830152614e9d81614b0c565b9050919050565b60006020820190508181036000830152614ebd81614b52565b9050919050565b60006020820190508181036000830152614edd81614b75565b9050919050565b60006020820190508181036000830152614efd81614b98565b9050919050565b60006020820190508181036000830152614f1d81614bbb565b9050919050565b6000602082019050614f396000830184614bde565b92915050565b600060a082019050614f546000830188614bde565b614f616020830187614966565b8181036040830152614f7381866148db565b9050614f8260608301856148cc565b614f8f6080830184614bde565b9695505050505050565b6000604082019050614fae6000830185614bde565b614fbb6020830184614bde565b9392505050565b6000602082019050614fd76000830184614bed565b92915050565b6000614fe7614ff8565b9050614ff3828261543a565b919050565b6000604051905090565b600067ffffffffffffffff82111561501d5761501c615541565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061509982615364565b91506150a483615364565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150d9576150d86154b4565b5b828201905092915050565b60006150ef82615364565b91506150fa83615364565b92508261510a576151096154e3565b5b828204905092915050565b6000808291508390505b600185111561515f5780860481111561513b5761513a6154b4565b5b600185161561514a5780820291505b808102905061515885615581565b945061511f565b94509492505050565b600061517382615364565b915061517e8361536e565b92506151ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846151b3565b905092915050565b6000826151c3576001905061527f565b816151d1576000905061527f565b81600181146151e757600281146151f157615220565b600191505061527f565b60ff841115615203576152026154b4565b5b8360020a91508482111561521a576152196154b4565b5b5061527f565b5060208310610133831016604e8410600b84101617156152555782820a9050838111156152505761524f6154b4565b5b61527f565b6152628484846001615115565b92509050818404811115615279576152786154b4565b5b81810290505b9392505050565b600061529182615364565b915061529c83615364565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156152d5576152d46154b4565b5b828202905092915050565b60006152eb82615364565b91506152f683615364565b925082821015615309576153086154b4565b5b828203905092915050565b600061531f82615344565b9050919050565b600061533182615344565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006153868261538d565b9050919050565b600061539882615344565b9050919050565b60006153aa826153b1565b9050919050565b60006153bc82615344565b9050919050565b60006153ce82615364565b9050919050565b60005b838110156153f35780820151818401526020810190506153d8565b83811115615402576000848401525b50505050565b6000600282049050600182168061542057607f821691505b6020821081141561543457615433615512565b5b50919050565b61544382615570565b810181811067ffffffffffffffff8211171561546257615461615541565b5b80604052505050565b600061547682615364565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156154a9576154a86154b4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460008201527f6d696e0000000000000000000000000000000000000000000000000000000000602082015250565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b50565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6158bf81615314565b81146158ca57600080fd5b50565b6158d681615326565b81146158e157600080fd5b50565b6158ed81615338565b81146158f857600080fd5b50565b61590481615364565b811461590f57600080fd5b5056fea2646970667358221220941d56ff9ee2762cd993b72b8924a0534400420b86f5650c2983b18e57420b6e64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000004d224452801aced8b2f0aebe155379bb5d5943810000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000027bd919ee5bd897fb886d876e74f62ef9d0b0a78
-----Decoded View---------------
Arg [0] : initialSupply (uint256): 10000000000000000000
Arg [1] : reflectionToken (address): 0x4d224452801ACEd8B2F0aebE155379bb5D594381
Arg [2] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [3] : initialHldAdmin (address): 0x27Bd919Ee5Bd897Fb886D876e74f62eF9d0b0A78
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000008ac7230489e80000
Arg [1] : 0000000000000000000000004d224452801aced8b2f0aebe155379bb5d594381
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [3] : 00000000000000000000000027bd919ee5bd897fb886d876e74f62ef9d0b0a78
Deployed Bytecode Sourcemap
21480:20163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23008:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29376:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31694:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29020:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30495:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22537:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28122:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32485:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28011:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28922:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29164:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28708:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30338:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33189:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28501:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22100:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22206:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25390:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22058:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28253:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22803:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21627:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22296:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26461:91;;;;;;;;;;;;;:::i;:::-;;22397:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22370:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30666:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22468:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22942:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26670:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22976:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40912:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22335:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22151:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22734:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22501:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29595:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26783:484;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27407:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22702:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33932:438;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22647:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30999:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25511:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21573:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28367:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23043:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22264:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22673:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22567:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25711:742;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22427:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22850:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26560:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31223:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27275:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22026:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23122:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27682:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41438:160;;;;;;;;;;;;;:::i;:::-;;22608:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27537:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23008:28;;;;:::o;29376:100::-;29430:13;29463:5;29456:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29376:100;:::o;31694:201::-;31777:4;31794:13;31810:12;:10;:12::i;:::-;31794:28;;31833:32;31842:5;31849:7;31858:6;31833:8;:32::i;:::-;31883:4;31876:11;;;31694:201;;;;:::o;29020:125::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;29122:15:::1;29105:14;:32;;;;29020:125:::0;:::o;30495:108::-;30556:7;30583:12;;30576:19;;30495:108;:::o;22537:23::-;;;;:::o;28122:123::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28224:12:::1;28204:9;;:33;;;;;;;;;;;;;;;;;;28122:123:::0;:::o;32485:295::-;32616:4;32633:15;32651:12;:10;:12::i;:::-;32633:30;;32674:38;32690:4;32696:7;32705:6;32674:15;:38::i;:::-;32723:27;32733:4;32739:2;32743:6;32723:9;:27::i;:::-;;32768:4;32761:11;;;32485:295;;;;;:::o;28011:101::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28097:7:::1;28082:12;;:22;;;;;;;;;;;;;;;;;;28011:101:::0;:::o;28922:90::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28999:5:::1;28984:4;:12;28989:6;28984:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;28922:90:::0;:::o;29164:142::-;29217:7;29244:54;29282:15;29292:4;;;;;;;;;;;29282:9;:15::i;:::-;29244:33;29261:15;29271:4;;;;;;;;;;;29261:9;:15::i;:::-;29244:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;29237:61;;29164:142;:::o;28708:206::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28821:19:::1;::::0;::::1;;;;;;;;:43;;;28865:12;28879:18;28821:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28708:206:::0;;:::o;30338:92::-;30396:5;30421:1;30414:8;;30338:92;:::o;33189:240::-;33277:4;33294:13;33310:12;:10;:12::i;:::-;33294:28;;33333:66;33342:5;33349:7;33388:10;33358:11;:18;33370:5;33358:18;;;;;;;;;;;;;;;:27;33377:7;33358:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;33333:8;:66::i;:::-;33417:4;33410:11;;;33189:240;;;;:::o;28501:199::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28635:14:::1;28610:21;;:39;;;;;;;;;;;;;;;;;;28676:16;28660:13;:32;;;;28501:199:::0;;:::o;22100:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;22206:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;25390:113::-;25153:12;:10;:12::i;:::-;25141:24;;:8;;;;;;;;;;;:24;;;25133:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;25487:8:::1;25476;;:19;;;;;;;;;;;;;;;;;;25390:113:::0;:::o;22058:33::-;;;;;;;;;;;;;:::o;28253:102::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28336:11:::1;28325:8;;:22;;;;;;;;;;;;;;;;;;28253:102:::0;:::o;22803:40::-;;;;;;;;;;;;;:::o;21627:37::-;;;;:::o;22296:30::-;;;;;;;;;;;;;:::o;26461:91::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26542:1:::1;26523:8;;:21;;;;;;;;;;;;;;;;;;26461:91::o:0;22397:21::-;;;;:::o;22370:20::-;;;;:::o;30666:127::-;30740:7;30767:9;:18;30777:7;30767:18;;;;;;;;;;;;;;;;30760:25;;30666:127;;;:::o;22468:26::-;;;;:::o;22942:27::-;;;;:::o;26670:105::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26759:8:::1;26745:10;:22;;;;26670:105:::0;:::o;22976:25::-;;;;:::o;40912:456::-;40999:10;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;41048:1:::1;41030:20;;:6;:20;;;;41022:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;41118:4;41100:23;;:6;:23;;;;41092:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;41167:24;41201:6;41194:24;;;41227:4;41194:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41167:66;;41259:6;41252:23;;;41276:3;41281:16;41252:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41244:54;;41314:46;41335:6;41343:16;41314:46;;;;;;;:::i;:::-;;;;;;;;25347:1;40912:456:::0;;;;:::o;22335:28::-;;;;:::o;22151:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;22734:32::-;;;;;;;;;;;;;:::o;22501:27::-;;;;:::o;29595:104::-;29651:13;29684:7;29677:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29595:104;:::o;26783:484::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26911:4:::1;26892:9;;:16;;:23;26884:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26979:12;27019:9;;:16;;27006:10;:8;:10::i;:::-;27002:2;:14;;;;:::i;:::-;26994:6;:22;;;;:::i;:::-;:41;;;;:::i;:::-;26979:56;;27081:4;27056:21;27066:10;27056:9;:21::i;:::-;:29;;27048:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;27134:6;27130:130;27148:9;;:16;;27144:1;:20;27130:130;;;27185:59;27195:10;27206:9;;27216:1;27206:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27232:10;:8;:10::i;:::-;27228:2;:14;;;;:::i;:::-;27220:6;:22;;;;:::i;:::-;27185:9;:59::i;:::-;;27166:3;;;;;:::i;:::-;;;;27130:130;;;;25347:1;26783:484:::0;;;:::o;27407:122::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27515:6:::1;27493:11;:19;27505:6;27493:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;27407:122:::0;;:::o;22702:25::-;;;;;;;;;;;;;:::o;33932:438::-;34025:4;34042:13;34058:12;:10;:12::i;:::-;34042:28;;34081:24;34108:11;:18;34120:5;34108:18;;;;;;;;;;;;;;;:27;34127:7;34108:27;;;;;;;;;;;;;;;;34081:54;;34174:15;34154:16;:35;;34146:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;34267:60;34276:5;34283:7;34311:15;34292:16;:34;34267:8;:60::i;:::-;34358:4;34351:11;;;;33932:438;;;;:::o;22647:19::-;;;;;;;;;;;;;:::o;30999:161::-;31078:4;31095:35;31105:12;:10;:12::i;:::-;31119:2;31123:6;31095:9;:35::i;:::-;;31148:4;31141:11;;30999:161;;;;:::o;25511:169::-;25153:12;:10;:12::i;:::-;25141:24;;:8;;;;;;;;;;;:24;;;25133:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;25590:6:::1;25585:88;25606:5;:12;25602:1;:16;25585:88;;;25657:4;25640;:14;25645:5;25651:1;25645:8;;;;;;;;;;;;;;;;;;;;;;25640:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;25620:3;;;;;:::i;:::-;;;;25585:88;;;;25511:169:::0;:::o;21573:47::-;;;;;;;;;;;;:::o;28367:121::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28466:14:::1;28453:10;;:27;;;;;;;;;;;;;;;;;;28367:121:::0;:::o;23043:33::-;;;;;;;;;;;;;:::o;22264:25::-;;;;:::o;22673:22::-;;;;;;;;;;;;;:::o;22567:32::-;;;;:::o;25711:742::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25956:20:::1;25940:13;:36;;;;25995:12;25987:5;:20;;;;26027:13;26018:6;:22;;;;26075:26;26053:19;:48;;;;26126:18;26112:11;:32;;;;26170:19;26155:12;:34;;;;26213:36;26235:13;;26213:17;26224:5;;26213:6;;:10;;:17;;;;:::i;:::-;:21;;:36;;;;:::i;:::-;26202:8;:47;;;;26280:54;26314:19;;26280:29;26297:11;;26280:12;;:16;;:29;;;;:::i;:::-;:33;;:54;;;;:::i;:::-;26260:17;:74;;;;26367:2;26355:8;;:14;;26347:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;26426:2;26405:17;;:23;;26397:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25711:742:::0;;;;;;:::o;22427:34::-;;;;:::o;22850:32::-;;;;;;;;;;;;;:::o;26560:102::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26646:8:::1;26631:12;:23;;;;26560:102:::0;:::o;31223:151::-;31312:7;31339:11;:18;31351:5;31339:18;;;;;;;;;;;;;;;:27;31358:7;31339:27;;;;;;;;;;;;;;;;31332:34;;31223:151;;;;:::o;27275:120::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27379:8:::1;27362:14;;:25;;;;;;;;;;;;;;;;;;27275:120:::0;:::o;22026:23::-;;;;;;;;;;;;;:::o;23122:37::-;;;;:::o;27682:321::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27758:13:::1;;;;;;;;;;;27757:14;27749:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;27827:7;27811:13;;:23;;;;;;;;;;;;;;;;;;27850:29;27865:13;;;;;;;;;;;27850:29;;;;;;:::i;:::-;;;;;;;;27894:13;;;;;;;;;;;:40;;;;;27933:1;27911:18;;:23;27894:40;27890:106;;;27972:12;27951:18;:33;;;;27890:106;27682:321:::0;:::o;41438:160::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;41496:12:::1;41540:10;41532:24;;41564:21;41532:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41519:71;;;;;25347:1;41438:160::o:0;22608:32::-;;;;;;;;;;;;;:::o;27537:136::-;25287:12;:10;:12::i;:::-;25273:26;;:10;;;;;;;;;;;:26;;;25265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27659:6:::1;27633:15;:23;27649:6;27633:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;27537:136:::0;;:::o;7415:98::-;7473:7;7504:1;7500;:5;;;;:::i;:::-;7493:12;;7415:98;;;;:::o;4339:::-;4392:7;4419:10;4412:17;;4339:98;:::o;37171:380::-;37324:1;37307:19;;:5;:19;;;;37299:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37405:1;37386:21;;:7;:21;;;;37378:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37489:6;37459:11;:18;37471:5;37459:18;;;;;;;;;;;;;;;:27;37478:7;37459:27;;;;;;;;;;;;;;;:36;;;;37527:7;37511:32;;37520:5;37511:32;;;37536:6;37511:32;;;;;;:::i;:::-;;;;;;;;37171:380;;;:::o;37838:453::-;37973:24;38000:25;38010:5;38017:7;38000:9;:25::i;:::-;37973:52;;38060:17;38040:16;:37;38036:248;;38122:6;38102:16;:26;;38094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38206:51;38215:5;38222:7;38250:6;38231:16;:25;38206:8;:51::i;:::-;38036:248;37838:453;;;;:::o;34380:1722::-;34468:4;34504;:12;34509:6;34504:12;;;;;;;;;;;;;;;;;;;;;;;;;34503:13;:33;;;;;34521:4;:15;34526:9;34521:15;;;;;;;;;;;;;;;;;;;;;;;;;34520:16;34503:33;34495:42;;;;;;34558:13;;;;;;;;;;;34554:96;;34607:8;;;;;;;;;;;34597:18;;:6;:18;;;34589:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;34554:96;34665:16;;;;;;;;;;;34662:73;;;34691:41;34706:6;34714:9;34725:6;34691:14;:41::i;:::-;34684:48;;;;34662:73;34750:12;;;;;;;;;;;:36;;;;;34785:1;34766:18;;:20;34750:36;:79;;;;;34817:12;34812:1;34791:18;;:22;;;;:::i;:::-;34790:39;34750:79;34747:389;;;;;;34901:12;;34891:6;:22;;:49;;;;34917:15;:23;34933:6;34917:23;;;;;;;;;;;;;;;;;;;;;;;;;34891:49;34883:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;34966:15;:26;34982:9;34966:26;;;;;;;;;;;;;;;;;;;;;;;;;34965:27;:45;;;;;34996:14;;;;;;;;;;;34965:45;34962:163;;;35088:10;;35052:32;35077:6;35052:9;:20;35062:9;35052:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;35044:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;34962:163;34747:389;35165:4;;;;;;;;;;;35151:18;;:10;:18;;;;:39;;;;;35174:16;;;;;;;;;;;35173:17;35151:39;:64;;;;;35194:21;;;;;;;;;;;35151:64;:109;;;;;35247:13;;35219:9;:24;35237:4;35219:24;;;;;;;;;;;;;;;;:41;;35151:109;35148:128;;;35263:10;:8;:10::i;:::-;35148:128;35308:53;35330:6;35308:53;;;;;;;;;;;;;;;;;:9;:17;35318:6;35308:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;35288:9;:17;35298:6;35288:17;;;;;;;;;;;;;;;:73;;;;35382:19;35405:11;:19;35417:6;35405:19;;;;;;;;;;;;;;;;;;;;;;;;;35404:20;:47;;;;;35429:11;:22;35441:9;35429:22;;;;;;;;;;;;;;;;;;;;;;;;;35428:23;35404:47;:93;;35491:6;35404:93;;;35454:34;35462:6;35470:9;35481:6;35454:7;:34::i;:::-;35404:93;35382:115;;35541:37;35566:11;35541:9;:20;35551:9;35541:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;35518:9;:20;35528:9;35518:20;;;;;;;;;;;;;;;:60;;;;35622:16;:24;35639:6;35622:24;;;;;;;;;;;;;;;;;;;;;;;;;35618:127;;35667:19;;;;;;;;;;:28;;;35696:6;35704:9;:17;35714:6;35704:17;;;;;;;;;;;;;;;;35667:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35663:71;;;;;;35618:127;35761:16;:27;35778:9;35761:27;;;;;;;;;;;;;;;;;;;;;;;;;35757:137;;35809:19;;;;;;;;;;:28;;;35838:9;35849;:20;35859:9;35849:20;;;;;;;;;;;;;;;;35809:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35805:77;;;;;;35757:137;35927:1;35910:14;;:18;35906:109;;;35949:19;;;;;;;;;;:27;;;35977:14;;35949:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35945:59;;;;;;35906:109;36049:9;36032:40;;36041:6;36032:40;;;36060:11;36032:40;;;;;;:::i;:::-;;;;;;;;36090:4;36083:11;;;34380:1722;;;;;;:::o;7796:98::-;7854:7;7885:1;7881;:5;;;;:::i;:::-;7874:12;;7796:98;;;;:::o;36114:330::-;36207:4;36244:53;36266:6;36244:53;;;;;;;;;;;;;;;;;:9;:17;36254:6;36244:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;36224:9;:17;36234:6;36224:17;;;;;;;;;;;;;;;:73;;;;36331:32;36356:6;36331:9;:20;36341:9;36331:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;36308:9;:20;36318:9;36308:20;;;;;;;;;;;;;;;:55;;;;36396:9;36379:35;;36388:6;36379:35;;;36407:6;36379:35;;;;;;:::i;:::-;;;;;;;;36432:4;36425:11;;36114:330;;;;;:::o;38914:1989::-;25031:4;25012:16;;:23;;;;;;;;;;;;;;;;;;38972::::1;38998:9;:24;39016:4;38998:24;;;;;;;;;;;;;;;;38972:50;;39035:23;39069:18:::0;39098:26:::1;39208:1;39196:8;;:13;39192:241;;39244:62;39304:1;39244:55;39281:17;;39244:32;39264:11;;39244:15;:19;;:32;;;;:::i;:::-;:36;;:55;;;;:::i;:::-;:59;;:62;;;;:::i;:::-;39226:80;;39192:241;;;39357:47;39402:1;39357:40;39388:8;;39357:26;39377:5;;39357:15;:19;;:26;;;;:::i;:::-;:30;;:40;;;;:::i;:::-;:44;;:47;;;;:::i;:::-;39339:65;;39192:241;39445:20;39468:36;39488:15;39468;:19;;:36;;;;:::i;:::-;39445:59;;39517:21;39555:1;39541:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39517:40;;39586:4;39568;39573:1;39568:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;39612:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39602:4;39607:1;39602:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;39638:6;;;;;;;;;;;:57;;;39710:12;39737:1;39753:4;39780;39800:15;39638:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;39839:17;39859:21;39839:41;;39956:1;39944:8;;:13;39940:373;;39987:50;40019:17;;39987:27;40001:12;;39987:9;:13;;:27;;;;:::i;:::-;:31;;:50;;;;:::i;:::-;39974:63;;40073:56;40127:1;40073:49;40104:17;;40073:26;40087:11;;40073:9;:13;;:26;;;;:::i;:::-;:30;;:49;;;;:::i;:::-;:53;;:56;;;;:::i;:::-;40052:77;;39940:373;;;40177:35;40203:8;;40177:21;40191:6;;40177:9;:13;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;40164:48;;40248:41;40287:1;40248:34;40273:8;;40248:20;40262:5;;40248:9;:13;;:20;;;;:::i;:::-;:24;;:34;;;;:::i;:::-;:38;;:41;;;;:::i;:::-;40227:62;;39940:373;40325:27;40355:49;40385:18;40355:25;40369:10;40355:9;:13;;:25;;;;:::i;:::-;:29;;:49;;;;:::i;:::-;40325:79;;40432:1;40420:9;:13;40417:81;;;40456:9;;;;;;;;;;;:18;;:30;40475:10;40456:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;40417:81;40522:19;::::0;::::1;;;;;;;;:27;;;40557:19;40522:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;40518:73;;;;;;40624:1;40606:15;:19;40603:281;;;40641:6;;;;;;;;;;;:22;;;40671:18;40717:4;40741:15;40775:1;40795::::0;40815:8:::1;;;;;;;;;;;40842:15;40641:231;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;40603:281;25046:1;;;;;;;;25077:5:::0;25058:16;;:24;;;;;;;;;;;;;;;;;;38914:1989::o;9694:240::-;9814:7;9872:1;9867;:6;;9875:12;9859:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9914:1;9910;:5;9903:12;;9694:240;;;;;:::o;38299:603::-;38385:7;38415:21;38447:9;38439:17;;:4;;;;;;;;;;;:17;;;:48;;38479:8;;38439:48;;;38459:17;;38439:48;38415:72;;38527:12;;;;;;;;;;;:36;;;;;38562:1;38543:18;;:20;38527:36;:79;;;;;38594:12;38589:1;38568:18;;:22;;;;:::i;:::-;38567:39;38527:79;38524:126;;;38636:2;38622:16;;38524:126;38662:17;38682:34;38712:3;38682:25;38693:13;38682:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;38662:54;;38756:39;38785:9;38756;:24;38774:4;38756:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;38729:9;:24;38747:4;38729:24;;;;;;;;;;;;;;;:66;;;;38836:4;38811:42;;38820:6;38811:42;;;38843:9;38811:42;;;;;;:::i;:::-;;;;;;;;38873:21;38884:9;38873:6;:10;;:21;;;;:::i;:::-;38866:28;;;;38299:603;;;;;:::o;8153:98::-;8211:7;8242:1;8238;:5;;;;:::i;:::-;8231:12;;8153:98;;;;:::o;8552:::-;8610:7;8641:1;8637;:5;;;;:::i;:::-;8630:12;;8552:98;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;979:155::-;1033:5;1071:6;1058:20;1049:29;;1087:41;1122:5;1087:41;:::i;:::-;1039:95;;;;:::o;1157:367::-;1230:8;1240:6;1290:3;1283:4;1275:6;1271:17;1267:27;1257:2;;1308:1;1305;1298:12;1257:2;1344:6;1331:20;1321:30;;1374:18;1366:6;1363:30;1360:2;;;1406:1;1403;1396:12;1360:2;1443:4;1435:6;1431:17;1419:29;;1497:3;1489:4;1481:6;1477:17;1467:8;1463:32;1460:41;1457:2;;;1514:1;1511;1504:12;1457:2;1247:277;;;;;:::o;1547:303::-;1618:5;1667:3;1660:4;1652:6;1648:17;1644:27;1634:2;;1685:1;1682;1675:12;1634:2;1725:6;1712:20;1750:94;1840:3;1832:6;1825:4;1817:6;1813:17;1750:94;:::i;:::-;1741:103;;1624:226;;;;;:::o;1856:133::-;1899:5;1937:6;1924:20;1915:29;;1953:30;1977:5;1953:30;:::i;:::-;1905:84;;;;:::o;1995:137::-;2049:5;2080:6;2074:13;2065:22;;2096:30;2120:5;2096:30;:::i;:::-;2055:77;;;;:::o;2138:139::-;2184:5;2222:6;2209:20;2200:29;;2238:33;2265:5;2238:33;:::i;:::-;2190:87;;;;:::o;2283:143::-;2340:5;2371:6;2365:13;2356:22;;2387:33;2414:5;2387:33;:::i;:::-;2346:80;;;;:::o;2432:262::-;2491:6;2540:2;2528:9;2519:7;2515:23;2511:32;2508:2;;;2556:1;2553;2546:12;2508:2;2599:1;2624:53;2669:7;2660:6;2649:9;2645:22;2624:53;:::i;:::-;2614:63;;2570:117;2498:196;;;;:::o;2700:284::-;2770:6;2819:2;2807:9;2798:7;2794:23;2790:32;2787:2;;;2835:1;2832;2825:12;2787:2;2878:1;2903:64;2959:7;2950:6;2939:9;2935:22;2903:64;:::i;:::-;2893:74;;2849:128;2777:207;;;;:::o;2990:278::-;3057:6;3106:2;3094:9;3085:7;3081:23;3077:32;3074:2;;;3122:1;3119;3112:12;3074:2;3165:1;3190:61;3243:7;3234:6;3223:9;3219:22;3190:61;:::i;:::-;3180:71;;3136:125;3064:204;;;;:::o;3274:407::-;3342:6;3350;3399:2;3387:9;3378:7;3374:23;3370:32;3367:2;;;3415:1;3412;3405:12;3367:2;3458:1;3483:53;3528:7;3519:6;3508:9;3504:22;3483:53;:::i;:::-;3473:63;;3429:117;3585:2;3611:53;3656:7;3647:6;3636:9;3632:22;3611:53;:::i;:::-;3601:63;;3556:118;3357:324;;;;;:::o;3687:552::-;3764:6;3772;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:2;;;3845:1;3842;3835:12;3797:2;3888:1;3913:53;3958:7;3949:6;3938:9;3934:22;3913:53;:::i;:::-;3903:63;;3859:117;4015:2;4041:53;4086:7;4077:6;4066:9;4062:22;4041:53;:::i;:::-;4031:63;;3986:118;4143:2;4169:53;4214:7;4205:6;4194:9;4190:22;4169:53;:::i;:::-;4159:63;;4114:118;3787:452;;;;;:::o;4245:401::-;4310:6;4318;4367:2;4355:9;4346:7;4342:23;4338:32;4335:2;;;4383:1;4380;4373:12;4335:2;4426:1;4451:53;4496:7;4487:6;4476:9;4472:22;4451:53;:::i;:::-;4441:63;;4397:117;4553:2;4579:50;4621:7;4612:6;4601:9;4597:22;4579:50;:::i;:::-;4569:60;;4524:115;4325:321;;;;;:::o;4652:407::-;4720:6;4728;4777:2;4765:9;4756:7;4752:23;4748:32;4745:2;;;4793:1;4790;4783:12;4745:2;4836:1;4861:53;4906:7;4897:6;4886:9;4882:22;4861:53;:::i;:::-;4851:63;;4807:117;4963:2;4989:53;5034:7;5025:6;5014:9;5010:22;4989:53;:::i;:::-;4979:63;;4934:118;4735:324;;;;;:::o;5065:570::-;5160:6;5168;5176;5225:2;5213:9;5204:7;5200:23;5196:32;5193:2;;;5241:1;5238;5231:12;5193:2;5312:1;5301:9;5297:17;5284:31;5342:18;5334:6;5331:30;5328:2;;;5374:1;5371;5364:12;5328:2;5410:80;5482:7;5473:6;5462:9;5458:22;5410:80;:::i;:::-;5392:98;;;;5255:245;5539:2;5565:53;5610:7;5601:6;5590:9;5586:22;5565:53;:::i;:::-;5555:63;;5510:118;5183:452;;;;;:::o;5641:405::-;5725:6;5774:2;5762:9;5753:7;5749:23;5745:32;5742:2;;;5790:1;5787;5780:12;5742:2;5861:1;5850:9;5846:17;5833:31;5891:18;5883:6;5880:30;5877:2;;;5923:1;5920;5913:12;5877:2;5951:78;6021:7;6012:6;6001:9;5997:22;5951:78;:::i;:::-;5941:88;;5804:235;5732:314;;;;:::o;6052:256::-;6108:6;6157:2;6145:9;6136:7;6132:23;6128:32;6125:2;;;6173:1;6170;6163:12;6125:2;6216:1;6241:50;6283:7;6274:6;6263:9;6259:22;6241:50;:::i;:::-;6231:60;;6187:114;6115:193;;;;:::o;6314:278::-;6381:6;6430:2;6418:9;6409:7;6405:23;6401:32;6398:2;;;6446:1;6443;6436:12;6398:2;6489:1;6514:61;6567:7;6558:6;6547:9;6543:22;6514:61;:::i;:::-;6504:71;;6460:125;6388:204;;;;:::o;6598:401::-;6663:6;6671;6720:2;6708:9;6699:7;6695:23;6691:32;6688:2;;;6736:1;6733;6726:12;6688:2;6779:1;6804:50;6846:7;6837:6;6826:9;6822:22;6804:50;:::i;:::-;6794:60;;6750:114;6903:2;6929:53;6974:7;6965:6;6954:9;6950:22;6929:53;:::i;:::-;6919:63;;6874:118;6678:321;;;;;:::o;7005:262::-;7064:6;7113:2;7101:9;7092:7;7088:23;7084:32;7081:2;;;7129:1;7126;7119:12;7081:2;7172:1;7197:53;7242:7;7233:6;7222:9;7218:22;7197:53;:::i;:::-;7187:63;;7143:117;7071:196;;;;:::o;7273:284::-;7343:6;7392:2;7380:9;7371:7;7367:23;7363:32;7360:2;;;7408:1;7405;7398:12;7360:2;7451:1;7476:64;7532:7;7523:6;7512:9;7508:22;7476:64;:::i;:::-;7466:74;;7422:128;7350:207;;;;:::o;7563:407::-;7631:6;7639;7688:2;7676:9;7667:7;7663:23;7659:32;7656:2;;;7704:1;7701;7694:12;7656:2;7747:1;7772:53;7817:7;7808:6;7797:9;7793:22;7772:53;:::i;:::-;7762:63;;7718:117;7874:2;7900:53;7945:7;7936:6;7925:9;7921:22;7900:53;:::i;:::-;7890:63;;7845:118;7646:324;;;;;:::o;7976:596::-;8064:6;8072;8080;8129:2;8117:9;8108:7;8104:23;8100:32;8097:2;;;8145:1;8142;8135:12;8097:2;8188:1;8213:64;8269:7;8260:6;8249:9;8245:22;8213:64;:::i;:::-;8203:74;;8159:128;8326:2;8352:64;8408:7;8399:6;8388:9;8384:22;8352:64;:::i;:::-;8342:74;;8297:129;8465:2;8491:64;8547:7;8538:6;8527:9;8523:22;8491:64;:::i;:::-;8481:74;;8436:129;8087:485;;;;;:::o;8578:990::-;8682:6;8690;8698;8706;8714;8722;8771:3;8759:9;8750:7;8746:23;8742:33;8739:2;;;8788:1;8785;8778:12;8739:2;8831:1;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8802:117;8958:2;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8929:118;9086:2;9112:53;9157:7;9148:6;9137:9;9133:22;9112:53;:::i;:::-;9102:63;;9057:118;9214:2;9240:53;9285:7;9276:6;9265:9;9261:22;9240:53;:::i;:::-;9230:63;;9185:118;9342:3;9369:53;9414:7;9405:6;9394:9;9390:22;9369:53;:::i;:::-;9359:63;;9313:119;9471:3;9498:53;9543:7;9534:6;9523:9;9519:22;9498:53;:::i;:::-;9488:63;;9442:119;8729:839;;;;;;;;:::o;9574:179::-;9643:10;9664:46;9706:3;9698:6;9664:46;:::i;:::-;9742:4;9737:3;9733:14;9719:28;;9654:99;;;;:::o;9759:142::-;9862:32;9888:5;9862:32;:::i;:::-;9857:3;9850:45;9840:61;;:::o;9907:108::-;9984:24;10002:5;9984:24;:::i;:::-;9979:3;9972:37;9962:53;;:::o;10021:118::-;10108:24;10126:5;10108:24;:::i;:::-;10103:3;10096:37;10086:53;;:::o;10175:732::-;10294:3;10323:54;10371:5;10323:54;:::i;:::-;10393:86;10472:6;10467:3;10393:86;:::i;:::-;10386:93;;10503:56;10553:5;10503:56;:::i;:::-;10582:7;10613:1;10598:284;10623:6;10620:1;10617:13;10598:284;;;10699:6;10693:13;10726:63;10785:3;10770:13;10726:63;:::i;:::-;10719:70;;10812:60;10865:6;10812:60;:::i;:::-;10802:70;;10658:224;10645:1;10642;10638:9;10633:14;;10598:284;;;10602:14;10898:3;10891:10;;10299:608;;;;;;;:::o;10913:109::-;10994:21;11009:5;10994:21;:::i;:::-;10989:3;10982:34;10972:50;;:::o;11028:187::-;11143:65;11202:5;11143:65;:::i;:::-;11138:3;11131:78;11121:94;;:::o;11221:183::-;11334:63;11391:5;11334:63;:::i;:::-;11329:3;11322:76;11312:92;;:::o;11410:147::-;11505:45;11544:5;11505:45;:::i;:::-;11500:3;11493:58;11483:74;;:::o;11563:364::-;11651:3;11679:39;11712:5;11679:39;:::i;:::-;11734:71;11798:6;11793:3;11734:71;:::i;:::-;11727:78;;11814:52;11859:6;11854:3;11847:4;11840:5;11836:16;11814:52;:::i;:::-;11891:29;11913:6;11891:29;:::i;:::-;11886:3;11882:39;11875:46;;11655:272;;;;;:::o;11933:366::-;12075:3;12096:67;12160:2;12155:3;12096:67;:::i;:::-;12089:74;;12172:93;12261:3;12172:93;:::i;:::-;12290:2;12285:3;12281:12;12274:19;;12079:220;;;:::o;12305:366::-;12447:3;12468:67;12532:2;12527:3;12468:67;:::i;:::-;12461:74;;12544:93;12633:3;12544:93;:::i;:::-;12662:2;12657:3;12653:12;12646:19;;12451:220;;;:::o;12677:366::-;12819:3;12840:67;12904:2;12899:3;12840:67;:::i;:::-;12833:74;;12916:93;13005:3;12916:93;:::i;:::-;13034:2;13029:3;13025:12;13018:19;;12823:220;;;:::o;13049:365::-;13191:3;13212:66;13276:1;13271:3;13212:66;:::i;:::-;13205:73;;13287:93;13376:3;13287:93;:::i;:::-;13405:2;13400:3;13396:12;13389:19;;13195:219;;;:::o;13420:366::-;13562:3;13583:67;13647:2;13642:3;13583:67;:::i;:::-;13576:74;;13659:93;13748:3;13659:93;:::i;:::-;13777:2;13772:3;13768:12;13761:19;;13566:220;;;:::o;13792:366::-;13934:3;13955:67;14019:2;14014:3;13955:67;:::i;:::-;13948:74;;14031:93;14120:3;14031:93;:::i;:::-;14149:2;14144:3;14140:12;14133:19;;13938:220;;;:::o;14164:366::-;14306:3;14327:67;14391:2;14386:3;14327:67;:::i;:::-;14320:74;;14403:93;14492:3;14403:93;:::i;:::-;14521:2;14516:3;14512:12;14505:19;;14310:220;;;:::o;14536:366::-;14678:3;14699:67;14763:2;14758:3;14699:67;:::i;:::-;14692:74;;14775:93;14864:3;14775:93;:::i;:::-;14893:2;14888:3;14884:12;14877:19;;14682:220;;;:::o;14908:366::-;15050:3;15071:67;15135:2;15130:3;15071:67;:::i;:::-;15064:74;;15147:93;15236:3;15147:93;:::i;:::-;15265:2;15260:3;15256:12;15249:19;;15054:220;;;:::o;15280:366::-;15422:3;15443:67;15507:2;15502:3;15443:67;:::i;:::-;15436:74;;15519:93;15608:3;15519:93;:::i;:::-;15637:2;15632:3;15628:12;15621:19;;15426:220;;;:::o;15652:366::-;15794:3;15815:67;15879:2;15874:3;15815:67;:::i;:::-;15808:74;;15891:93;15980:3;15891:93;:::i;:::-;16009:2;16004:3;16000:12;15993:19;;15798:220;;;:::o;16024:398::-;16183:3;16204:83;16285:1;16280:3;16204:83;:::i;:::-;16197:90;;16296:93;16385:3;16296:93;:::i;:::-;16414:1;16409:3;16405:11;16398:18;;16187:235;;;:::o;16428:365::-;16570:3;16591:66;16655:1;16650:3;16591:66;:::i;:::-;16584:73;;16666:93;16755:3;16666:93;:::i;:::-;16784:2;16779:3;16775:12;16768:19;;16574:219;;;:::o;16799:366::-;16941:3;16962:67;17026:2;17021:3;16962:67;:::i;:::-;16955:74;;17038:93;17127:3;17038:93;:::i;:::-;17156:2;17151:3;17147:12;17140:19;;16945:220;;;:::o;17171:366::-;17313:3;17334:67;17398:2;17393:3;17334:67;:::i;:::-;17327:74;;17410:93;17499:3;17410:93;:::i;:::-;17528:2;17523:3;17519:12;17512:19;;17317:220;;;:::o;17543:366::-;17685:3;17706:67;17770:2;17765:3;17706:67;:::i;:::-;17699:74;;17782:93;17871:3;17782:93;:::i;:::-;17900:2;17895:3;17891:12;17884:19;;17689:220;;;:::o;17915:118::-;18002:24;18020:5;18002:24;:::i;:::-;17997:3;17990:37;17980:53;;:::o;18039:112::-;18122:22;18138:5;18122:22;:::i;:::-;18117:3;18110:35;18100:51;;:::o;18157:379::-;18341:3;18363:147;18506:3;18363:147;:::i;:::-;18356:154;;18527:3;18520:10;;18345:191;;;:::o;18542:222::-;18635:4;18673:2;18662:9;18658:18;18650:26;;18686:71;18754:1;18743:9;18739:17;18730:6;18686:71;:::i;:::-;18640:124;;;;:::o;18770:254::-;18879:4;18917:2;18906:9;18902:18;18894:26;;18930:87;19014:1;19003:9;18999:17;18990:6;18930:87;:::i;:::-;18884:140;;;;:::o;19030:332::-;19151:4;19189:2;19178:9;19174:18;19166:26;;19202:71;19270:1;19259:9;19255:17;19246:6;19202:71;:::i;:::-;19283:72;19351:2;19340:9;19336:18;19327:6;19283:72;:::i;:::-;19156:206;;;;;:::o;19368:807::-;19617:4;19655:3;19644:9;19640:19;19632:27;;19669:71;19737:1;19726:9;19722:17;19713:6;19669:71;:::i;:::-;19750:72;19818:2;19807:9;19803:18;19794:6;19750:72;:::i;:::-;19832:80;19908:2;19897:9;19893:18;19884:6;19832:80;:::i;:::-;19922;19998:2;19987:9;19983:18;19974:6;19922:80;:::i;:::-;20012:73;20080:3;20069:9;20065:19;20056:6;20012:73;:::i;:::-;20095;20163:3;20152:9;20148:19;20139:6;20095:73;:::i;:::-;19622:553;;;;;;;;;:::o;20181:210::-;20268:4;20306:2;20295:9;20291:18;20283:26;;20319:65;20381:1;20370:9;20366:17;20357:6;20319:65;:::i;:::-;20273:118;;;;:::o;20397:278::-;20518:4;20556:2;20545:9;20541:18;20533:26;;20569:99;20665:1;20654:9;20650:17;20641:6;20569:99;:::i;:::-;20523:152;;;;:::o;20681:274::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20851:97;20945:1;20934:9;20930:17;20921:6;20851:97;:::i;:::-;20805:150;;;;:::o;20961:313::-;21074:4;21112:2;21101:9;21097:18;21089:26;;21161:9;21155:4;21151:20;21147:1;21136:9;21132:17;21125:47;21189:78;21262:4;21253:6;21189:78;:::i;:::-;21181:86;;21079:195;;;;:::o;21280:419::-;21446:4;21484:2;21473:9;21469:18;21461:26;;21533:9;21527:4;21523:20;21519:1;21508:9;21504:17;21497:47;21561:131;21687:4;21561:131;:::i;:::-;21553:139;;21451:248;;;:::o;21705:419::-;21871:4;21909:2;21898:9;21894:18;21886:26;;21958:9;21952:4;21948:20;21944:1;21933:9;21929:17;21922:47;21986:131;22112:4;21986:131;:::i;:::-;21978:139;;21876:248;;;:::o;22130:419::-;22296:4;22334:2;22323:9;22319:18;22311:26;;22383:9;22377:4;22373:20;22369:1;22358:9;22354:17;22347:47;22411:131;22537:4;22411:131;:::i;:::-;22403:139;;22301:248;;;:::o;22555:419::-;22721:4;22759:2;22748:9;22744:18;22736:26;;22808:9;22802:4;22798:20;22794:1;22783:9;22779:17;22772:47;22836:131;22962:4;22836:131;:::i;:::-;22828:139;;22726:248;;;:::o;22980:419::-;23146:4;23184:2;23173:9;23169:18;23161:26;;23233:9;23227:4;23223:20;23219:1;23208:9;23204:17;23197:47;23261:131;23387:4;23261:131;:::i;:::-;23253:139;;23151:248;;;:::o;23405:419::-;23571:4;23609:2;23598:9;23594:18;23586:26;;23658:9;23652:4;23648:20;23644:1;23633:9;23629:17;23622:47;23686:131;23812:4;23686:131;:::i;:::-;23678:139;;23576:248;;;:::o;23830:419::-;23996:4;24034:2;24023:9;24019:18;24011:26;;24083:9;24077:4;24073:20;24069:1;24058:9;24054:17;24047:47;24111:131;24237:4;24111:131;:::i;:::-;24103:139;;24001:248;;;:::o;24255:419::-;24421:4;24459:2;24448:9;24444:18;24436:26;;24508:9;24502:4;24498:20;24494:1;24483:9;24479:17;24472:47;24536:131;24662:4;24536:131;:::i;:::-;24528:139;;24426:248;;;:::o;24680:419::-;24846:4;24884:2;24873:9;24869:18;24861:26;;24933:9;24927:4;24923:20;24919:1;24908:9;24904:17;24897:47;24961:131;25087:4;24961:131;:::i;:::-;24953:139;;24851:248;;;:::o;25105:419::-;25271:4;25309:2;25298:9;25294:18;25286:26;;25358:9;25352:4;25348:20;25344:1;25333:9;25329:17;25322:47;25386:131;25512:4;25386:131;:::i;:::-;25378:139;;25276:248;;;:::o;25530:419::-;25696:4;25734:2;25723:9;25719:18;25711:26;;25783:9;25777:4;25773:20;25769:1;25758:9;25754:17;25747:47;25811:131;25937:4;25811:131;:::i;:::-;25803:139;;25701:248;;;:::o;25955:419::-;26121:4;26159:2;26148:9;26144:18;26136:26;;26208:9;26202:4;26198:20;26194:1;26183:9;26179:17;26172:47;26236:131;26362:4;26236:131;:::i;:::-;26228:139;;26126:248;;;:::o;26380:419::-;26546:4;26584:2;26573:9;26569:18;26561:26;;26633:9;26627:4;26623:20;26619:1;26608:9;26604:17;26597:47;26661:131;26787:4;26661:131;:::i;:::-;26653:139;;26551:248;;;:::o;26805:419::-;26971:4;27009:2;26998:9;26994:18;26986:26;;27058:9;27052:4;27048:20;27044:1;27033:9;27029:17;27022:47;27086:131;27212:4;27086:131;:::i;:::-;27078:139;;26976:248;;;:::o;27230:419::-;27396:4;27434:2;27423:9;27419:18;27411:26;;27483:9;27477:4;27473:20;27469:1;27458:9;27454:17;27447:47;27511:131;27637:4;27511:131;:::i;:::-;27503:139;;27401:248;;;:::o;27655:222::-;27748:4;27786:2;27775:9;27771:18;27763:26;;27799:71;27867:1;27856:9;27852:17;27843:6;27799:71;:::i;:::-;27753:124;;;;:::o;27883:831::-;28146:4;28184:3;28173:9;28169:19;28161:27;;28198:71;28266:1;28255:9;28251:17;28242:6;28198:71;:::i;:::-;28279:80;28355:2;28344:9;28340:18;28331:6;28279:80;:::i;:::-;28406:9;28400:4;28396:20;28391:2;28380:9;28376:18;28369:48;28434:108;28537:4;28528:6;28434:108;:::i;:::-;28426:116;;28552:72;28620:2;28609:9;28605:18;28596:6;28552:72;:::i;:::-;28634:73;28702:3;28691:9;28687:19;28678:6;28634:73;:::i;:::-;28151:563;;;;;;;;:::o;28720:332::-;28841:4;28879:2;28868:9;28864:18;28856:26;;28892:71;28960:1;28949:9;28945:17;28936:6;28892:71;:::i;:::-;28973:72;29041:2;29030:9;29026:18;29017:6;28973:72;:::i;:::-;28846:206;;;;;:::o;29058:214::-;29147:4;29185:2;29174:9;29170:18;29162:26;;29198:67;29262:1;29251:9;29247:17;29238:6;29198:67;:::i;:::-;29152:120;;;;:::o;29278:129::-;29312:6;29339:20;;:::i;:::-;29329:30;;29368:33;29396:4;29388:6;29368:33;:::i;:::-;29319:88;;;:::o;29413:75::-;29446:6;29479:2;29473:9;29463:19;;29453:35;:::o;29494:311::-;29571:4;29661:18;29653:6;29650:30;29647:2;;;29683:18;;:::i;:::-;29647:2;29733:4;29725:6;29721:17;29713:25;;29793:4;29787;29783:15;29775:23;;29576:229;;;:::o;29811:132::-;29878:4;29901:3;29893:11;;29931:4;29926:3;29922:14;29914:22;;29883:60;;;:::o;29949:114::-;30016:6;30050:5;30044:12;30034:22;;30023:40;;;:::o;30069:99::-;30121:6;30155:5;30149:12;30139:22;;30128:40;;;:::o;30174:113::-;30244:4;30276;30271:3;30267:14;30259:22;;30249:38;;;:::o;30293:184::-;30392:11;30426:6;30421:3;30414:19;30466:4;30461:3;30457:14;30442:29;;30404:73;;;;:::o;30483:147::-;30584:11;30621:3;30606:18;;30596:34;;;;:::o;30636:169::-;30720:11;30754:6;30749:3;30742:19;30794:4;30789:3;30785:14;30770:29;;30732:73;;;;:::o;30811:305::-;30851:3;30870:20;30888:1;30870:20;:::i;:::-;30865:25;;30904:20;30922:1;30904:20;:::i;:::-;30899:25;;31058:1;30990:66;30986:74;30983:1;30980:81;30977:2;;;31064:18;;:::i;:::-;30977:2;31108:1;31105;31101:9;31094:16;;30855:261;;;;:::o;31122:185::-;31162:1;31179:20;31197:1;31179:20;:::i;:::-;31174:25;;31213:20;31231:1;31213:20;:::i;:::-;31208:25;;31252:1;31242:2;;31257:18;;:::i;:::-;31242:2;31299:1;31296;31292:9;31287:14;;31164:143;;;;:::o;31313:848::-;31374:5;31381:4;31405:6;31396:15;;31429:5;31420:14;;31443:712;31464:1;31454:8;31451:15;31443:712;;;31559:4;31554:3;31550:14;31544:4;31541:24;31538:2;;;31568:18;;:::i;:::-;31538:2;31618:1;31608:8;31604:16;31601:2;;;32033:4;32026:5;32022:16;32013:25;;31601:2;32083:4;32077;32073:15;32065:23;;32113:32;32136:8;32113:32;:::i;:::-;32101:44;;31443:712;;;31386:775;;;;;;;:::o;32167:281::-;32225:5;32249:23;32267:4;32249:23;:::i;:::-;32241:31;;32293:25;32309:8;32293:25;:::i;:::-;32281:37;;32337:104;32374:66;32364:8;32358:4;32337:104;:::i;:::-;32328:113;;32231:217;;;;:::o;32454:1073::-;32508:5;32699:8;32689:2;;32720:1;32711:10;;32722:5;;32689:2;32748:4;32738:2;;32765:1;32756:10;;32767:5;;32738:2;32834:4;32882:1;32877:27;;;;32918:1;32913:191;;;;32827:277;;32877:27;32895:1;32886:10;;32897:5;;;32913:191;32958:3;32948:8;32945:17;32942:2;;;32965:18;;:::i;:::-;32942:2;33014:8;33011:1;33007:16;32998:25;;33049:3;33042:5;33039:14;33036:2;;;33056:18;;:::i;:::-;33036:2;33089:5;;;32827:277;;33213:2;33203:8;33200:16;33194:3;33188:4;33185:13;33181:36;33163:2;33153:8;33150:16;33145:2;33139:4;33136:12;33132:35;33116:111;33113:2;;;33269:8;33263:4;33259:19;33250:28;;33304:3;33297:5;33294:14;33291:2;;;33311:18;;:::i;:::-;33291:2;33344:5;;33113:2;33384:42;33422:3;33412:8;33406:4;33403:1;33384:42;:::i;:::-;33369:57;;;;33458:4;33453:3;33449:14;33442:5;33439:25;33436:2;;;33467:18;;:::i;:::-;33436:2;33516:4;33509:5;33505:16;33496:25;;32514:1013;;;;;;:::o;33533:348::-;33573:7;33596:20;33614:1;33596:20;:::i;:::-;33591:25;;33630:20;33648:1;33630:20;:::i;:::-;33625:25;;33818:1;33750:66;33746:74;33743:1;33740:81;33735:1;33728:9;33721:17;33717:105;33714:2;;;33825:18;;:::i;:::-;33714:2;33873:1;33870;33866:9;33855:20;;33581:300;;;;:::o;33887:191::-;33927:4;33947:20;33965:1;33947:20;:::i;:::-;33942:25;;33981:20;33999:1;33981:20;:::i;:::-;33976:25;;34020:1;34017;34014:8;34011:2;;;34025:18;;:::i;:::-;34011:2;34070:1;34067;34063:9;34055:17;;33932:146;;;;:::o;34084:96::-;34121:7;34150:24;34168:5;34150:24;:::i;:::-;34139:35;;34129:51;;;:::o;34186:104::-;34231:7;34260:24;34278:5;34260:24;:::i;:::-;34249:35;;34239:51;;;:::o;34296:90::-;34330:7;34373:5;34366:13;34359:21;34348:32;;34338:48;;;:::o;34392:126::-;34429:7;34469:42;34462:5;34458:54;34447:65;;34437:81;;;:::o;34524:77::-;34561:7;34590:5;34579:16;;34569:32;;;:::o;34607:86::-;34642:7;34682:4;34675:5;34671:16;34660:27;;34650:43;;;:::o;34699:182::-;34777:9;34810:65;34869:5;34810:65;:::i;:::-;34797:78;;34787:94;;;:::o;34887:141::-;34965:9;34998:24;35016:5;34998:24;:::i;:::-;34985:37;;34975:53;;;:::o;35034:178::-;35110:9;35143:63;35200:5;35143:63;:::i;:::-;35130:76;;35120:92;;;:::o;35218:139::-;35294:9;35327:24;35345:5;35327:24;:::i;:::-;35314:37;;35304:53;;;:::o;35363:121::-;35421:9;35454:24;35472:5;35454:24;:::i;:::-;35441:37;;35431:53;;;:::o;35490:307::-;35558:1;35568:113;35582:6;35579:1;35576:13;35568:113;;;35667:1;35662:3;35658:11;35652:18;35648:1;35643:3;35639:11;35632:39;35604:2;35601:1;35597:10;35592:15;;35568:113;;;35699:6;35696:1;35693:13;35690:2;;;35779:1;35770:6;35765:3;35761:16;35754:27;35690:2;35539:258;;;;:::o;35803:320::-;35847:6;35884:1;35878:4;35874:12;35864:22;;35931:1;35925:4;35921:12;35952:18;35942:2;;36008:4;36000:6;35996:17;35986:27;;35942:2;36070;36062:6;36059:14;36039:18;36036:38;36033:2;;;36089:18;;:::i;:::-;36033:2;35854:269;;;;:::o;36129:281::-;36212:27;36234:4;36212:27;:::i;:::-;36204:6;36200:40;36342:6;36330:10;36327:22;36306:18;36294:10;36291:34;36288:62;36285:2;;;36353:18;;:::i;:::-;36285:2;36393:10;36389:2;36382:22;36172:238;;;:::o;36416:233::-;36455:3;36478:24;36496:5;36478:24;:::i;:::-;36469:33;;36524:66;36517:5;36514:77;36511:2;;;36594:18;;:::i;:::-;36511:2;36641:1;36634:5;36630:13;36623:20;;36459:190;;;:::o;36655:180::-;36703:77;36700:1;36693:88;36800:4;36797:1;36790:15;36824:4;36821:1;36814:15;36841:180;36889:77;36886:1;36879:88;36986:4;36983:1;36976:15;37010:4;37007:1;37000:15;37027:180;37075:77;37072:1;37065:88;37172:4;37169:1;37162:15;37196:4;37193:1;37186:15;37213:180;37261:77;37258:1;37251:88;37358:4;37355:1;37348:15;37382:4;37379:1;37372:15;37399:102;37440:6;37491:2;37487:7;37482:2;37475:5;37471:14;37467:28;37457:38;;37447:54;;;:::o;37507:102::-;37549:8;37596:5;37593:1;37589:13;37568:34;;37558:51;;;:::o;37615:178::-;37755:30;37751:1;37743:6;37739:14;37732:54;37721:72;:::o;37799:221::-;37939:34;37935:1;37927:6;37923:14;37916:58;38008:4;38003:2;37995:6;37991:15;37984:29;37905:115;:::o;38026:179::-;38166:31;38162:1;38154:6;38150:14;38143:55;38132:73;:::o;38211:156::-;38351:8;38347:1;38339:6;38335:14;38328:32;38317:50;:::o;38373:168::-;38513:20;38509:1;38501:6;38497:14;38490:44;38479:62;:::o;38547:177::-;38687:29;38683:1;38675:6;38671:14;38664:53;38653:71;:::o;38730:222::-;38870:34;38866:1;38858:6;38854:14;38847:58;38939:5;38934:2;38926:6;38922:15;38915:30;38836:116;:::o;38958:233::-;39098:34;39094:1;39086:6;39082:14;39075:58;39167:16;39162:2;39154:6;39150:15;39143:41;39064:127;:::o;39197:176::-;39337:28;39333:1;39325:6;39321:14;39314:52;39303:70;:::o;39379:182::-;39519:34;39515:1;39507:6;39503:14;39496:58;39485:76;:::o;39567:162::-;39707:14;39703:1;39695:6;39691:14;39684:38;39673:56;:::o;39735:114::-;39841:8;:::o;39855:152::-;39995:4;39991:1;39983:6;39979:14;39972:28;39961:46;:::o;40013:223::-;40153:34;40149:1;40141:6;40137:14;40130:58;40222:6;40217:2;40209:6;40205:15;40198:31;40119:117;:::o;40242:174::-;40382:26;40378:1;40370:6;40366:14;40359:50;40348:68;:::o;40422:224::-;40562:34;40558:1;40550:6;40546:14;40539:58;40631:7;40626:2;40618:6;40614:15;40607:32;40528:118;:::o;40652:122::-;40725:24;40743:5;40725:24;:::i;:::-;40718:5;40715:35;40705:2;;40764:1;40761;40754:12;40705:2;40695:79;:::o;40780:138::-;40861:32;40887:5;40861:32;:::i;:::-;40854:5;40851:43;40841:2;;40908:1;40905;40898:12;40841:2;40831:87;:::o;40924:116::-;40994:21;41009:5;40994:21;:::i;:::-;40987:5;40984:32;40974:2;;41030:1;41027;41020:12;40974:2;40964:76;:::o;41046:122::-;41119:24;41137:5;41119:24;:::i;:::-;41112:5;41109:35;41099:2;;41158:1;41155;41148:12;41099:2;41089:79;:::o
Swarm Source
ipfs://ae7e13a424058737983138ed3ba1f663b519d43b7e4aa379afa84fbc83dc73b7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.