Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
767,600,000 SamAi
Holders
82
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
389,977,671.053143317574347144 SamAiValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SamAi
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-26 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; pragma experimental ABIEncoderV2; // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/IERC20Metadata.sol) interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } 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; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } 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); } 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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; } function _nonReentrantAfter() private { _status = _NOT_ENTERED; } } // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/utils/SafeERC20.sol) library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol) library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract SamAi is ERC20, Ownable, ReentrancyGuard { using SafeERC20 for IERC20; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool public tradingEnabled = false; uint256 public sellFeePercentage = 0; uint256 public swapPortion = 0; uint256 public VitalikPortion = 0; mapping(address => bool) public isExcludedFromFees; mapping(address => bool) public isFeeApplicable; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable WETH; address public constant vitalikAddress = 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045; uint256 public accumulatedFees; uint256 public constant MINIMUM_SWAP_AMOUNT = 0.1 ether; bool private swapping; event ExcludeFromFees(address indexed account, bool isExcluded); event SetFeeApplicable(address indexed account, bool isFeeApplicable); event SetSwapPortion(uint256 swapPortion); event EnableTrading(); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived); event TokensSentToVitalik(uint256 amount); constructor() ERC20(unicode"Sam Altman Ai Token", unicode"SamAi") Ownable(msg.sender) { _mint(msg.sender, 767600000 * 10 ** decimals()); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = _uniswapV2Router.WETH(); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), WETH); uniswapV2Router = _uniswapV2Router; isExcludedFromFees[owner()] = true; isExcludedFromFees[address(this)] = true; isExcludedFromFees[deadAddress] = true; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _toTransfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _toTransfer(sender, recipient, amount); uint256 currentAllowance = allowance(sender, _msgSender()); require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function _toTransfer( address sender, address recipient, uint256 amount ) internal { require(tradingEnabled || isExcludedFromFees[sender] || isExcludedFromFees[recipient], "Trading is not enabled yet"); require(!swapping, "Transfer failed due to internal swap in progress"); if (isExcludedFromFees[sender] || isExcludedFromFees[recipient] || !isFeeApplicable[sender]) { _transfer(sender, recipient, amount); } else { uint256 feeAmount = (amount * sellFeePercentage) / 100; uint256 transferAmount = amount - feeAmount; uint256 vitalikAmount = (feeAmount * VitalikPortion * 100 ) / (swapPortion + VitalikPortion) / 100; uint256 swapAmount = (feeAmount * swapPortion * 100 ) / (swapPortion + VitalikPortion) / 100; _transfer(sender, address(this), swapAmount); _transfer(sender, vitalikAddress, vitalikAmount); _transfer(sender, recipient, transferAmount); accumulatedFees += swapAmount; if (accumulatedFees >= MINIMUM_SWAP_AMOUNT) { swapping = true; _swapTokensForEth(); swapping = false; } emit TokensSentToVitalik(vitalikAmount); } } function _swapTokensForEth() private nonReentrant { uint256 tokenAmount = accumulatedFees; accumulatedFees = 0; address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; _approve(address(this), address(uniswapV2Router), tokenAmount); uint256 initialETHBalance = address(this).balance; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); uint256 ethReceived = address(this).balance - initialETHBalance; emit SwapAndLiquify(tokenAmount, ethReceived); } function setExcludeFromFees(address[] memory accounts, bool excluded) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { isExcludedFromFees[accounts[i]] = excluded; emit ExcludeFromFees(accounts[i], excluded); } } function setVitalikPortion(uint256 _swapPortion) public onlyOwner { require(_swapPortion <= 100, "Swap portion cannot exceed 100"); VitalikPortion = _swapPortion; } function setAutomatedMarketMakerPair(address[] memory accounts, bool applicable) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { if(accounts[i] == uniswapV2Pair) continue; isFeeApplicable[accounts[i]] = applicable; emit SetFeeApplicable(accounts[i], applicable); } } function setSwapPortion(uint256 _swapPortion) public onlyOwner { require(_swapPortion <= 100, "Swap portion cannot exceed 100"); swapPortion = _swapPortion; emit SetSwapPortion(_swapPortion); } function enableTrading() public onlyOwner { tradingEnabled = true; emit EnableTrading(); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isFeeApplicable","type":"bool"}],"name":"SetFeeApplicable","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapPortion","type":"uint256"}],"name":"SetSwapPortion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensSentToVitalik","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MINIMUM_SWAP_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VitalikPortion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedFees","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":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeApplicable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"applicable","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapPortion","type":"uint256"}],"name":"setSwapPortion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapPortion","type":"uint256"}],"name":"setVitalikPortion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPortion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vitalikAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526000600860146101000a81548160ff02191690831515021790555060006009556000600a556000600b553480156200003b57600080fd5b50336040518060400160405280601381526020017f53616d20416c746d616e20416920546f6b656e000000000000000000000000008152506040518060400160405280600581526020017f53616d41690000000000000000000000000000000000000000000000000000008152508160039081620000ba919062000968565b508060049081620000cc919062000968565b505050620000e0816200047e60201b60201c565b5060016006819055506200012933620000fe6200054460201b60201c565b600a6200010c919062000bdf565b632dc0a5806200011d919062000c30565b6200054d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b4919062000ce5565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000259919062000ce5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b81526004016200029792919062000d28565b6020604051808303816000875af1158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000ce5565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c600062000374620006ba60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000e41565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005b69062000db6565b60405180910390fd5b620005d360008383620006e460201b60201c565b8060026000828254620005e7919062000dd8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200069a919062000e24565b60405180910390a3620006b660008383620006e960201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200077057607f821691505b60208210810362000786576200078562000728565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007b1565b620007fc8683620007b1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000849620008436200083d8462000814565b6200081e565b62000814565b9050919050565b6000819050919050565b620008658362000828565b6200087d620008748262000850565b848454620007be565b825550505050565b600090565b6200089462000885565b620008a18184846200085a565b505050565b5b81811015620008c957620008bd6000826200088a565b600181019050620008a7565b5050565b601f8211156200091857620008e2816200078c565b620008ed84620007a1565b81016020851015620008fd578190505b620009156200090c85620007a1565b830182620008a6565b50505b505050565b600082821c905092915050565b60006200093d600019846008026200091d565b1980831691505092915050565b60006200095883836200092a565b9150826002028217905092915050565b6200097382620006ee565b67ffffffffffffffff8111156200098f576200098e620006f9565b5b6200099b825462000757565b620009a8828285620008cd565b600060209050601f831160018114620009e05760008415620009cb578287015190505b620009d785826200094a565b86555062000a47565b601f198416620009f0866200078c565b60005b8281101562000a1a57848901518255600182019150602085019450602081019050620009f3565b8683101562000a3a578489015162000a36601f8916826200092a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000add5780860481111562000ab55762000ab462000a4f565b5b600185161562000ac55780820291505b808102905062000ad58562000a7e565b945062000a95565b94509492505050565b60008262000af8576001905062000bcb565b8162000b08576000905062000bcb565b816001811462000b21576002811462000b2c5762000b62565b600191505062000bcb565b60ff84111562000b415762000b4062000a4f565b5b8360020a91508482111562000b5b5762000b5a62000a4f565b5b5062000bcb565b5060208310610133831016604e8410600b841016171562000b9c5782820a90508381111562000b965762000b9562000a4f565b5b62000bcb565b62000bab848484600162000a8b565b9250905081840481111562000bc55762000bc462000a4f565b5b81810290505b9392505050565b600060ff82169050919050565b600062000bec8262000814565b915062000bf98362000bd2565b925062000c287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ae6565b905092915050565b600062000c3d8262000814565b915062000c4a8362000814565b925082820262000c5a8162000814565b9150828204841483151762000c745762000c7362000a4f565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cad8262000c80565b9050919050565b62000cbf8162000ca0565b811462000ccb57600080fd5b50565b60008151905062000cdf8162000cb4565b92915050565b60006020828403121562000cfe5762000cfd62000c7b565b5b600062000d0e8482850162000cce565b91505092915050565b62000d228162000ca0565b82525050565b600060408201905062000d3f600083018562000d17565b62000d4e602083018462000d17565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d9e601f8362000d55565b915062000dab8262000d66565b602082019050919050565b6000602082019050818103600083015262000dd18162000d8f565b9050919050565b600062000de58262000814565b915062000df28362000814565b925082820190508082111562000e0d5762000e0c62000a4f565b5b92915050565b62000e1e8162000814565b82525050565b600060208201905062000e3b600083018462000e13565b92915050565b608051612cef62000e6460003960008181610c970152611ada0152612cef6000f3fe6080604052600436106101e75760003560e01c806370a0823111610102578063ad5c464811610095578063d2c7219111610064578063d2c7219114610709578063dd62ed3e14610732578063e208a9391461076f578063f2fde38b1461079a576101ee565b8063ad5c464814610661578063b6e852161461068c578063c2be2c92146106b5578063d16f8de9146106de576101ee565b80638da5cb5b116100d15780638da5cb5b1461059157806395d89b41146105bc578063a457c2d7146105e7578063a9059cbb14610624576101ee565b806370a08231146104fb578063715018a6146105385780637a65a3b81461054f5780638a8c523c1461057a576101ee565b806327c8f8351161017a57806349bd5a5e1161014957806349bd5a5e1461043d5780634ada218b146104685780634fbee19314610493578063587f5ed7146104d0576101ee565b806327c8f83514610381578063313ce567146103ac57806339509351146103d75780633aa646fe14610414576101ee565b806318160ddd116101b657806318160ddd146102b1578063186dbffb146102dc5780631aae9b4f1461030757806323b872dd14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806312ae15c61461025b5780631694505e14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107c3565b6040516102159190611d59565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190611e23565b610855565b6040516102529190611e7e565b60405180910390f35b34801561026757600080fd5b50610270610878565b60405161027d9190611ea8565b60405180910390f35b34801561029257600080fd5b5061029b610884565b6040516102a89190611f22565b60405180910390f35b3480156102bd57600080fd5b506102c66108aa565b6040516102d39190611ea8565b60405180910390f35b3480156102e857600080fd5b506102f16108b4565b6040516102fe9190611ea8565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190611f3d565b6108ba565b60405161033b9190611e7e565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190611f6a565b6108da565b6040516103789190611e7e565b60405180910390f35b34801561038d57600080fd5b5061039661095f565b6040516103a39190611fcc565b60405180910390f35b3480156103b857600080fd5b506103c1610965565b6040516103ce9190612003565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190611e23565b61096e565b60405161040b9190611e7e565b60405180910390f35b34801561042057600080fd5b5061043b6004803603810190610436919061201e565b6109a5565b005b34801561044957600080fd5b50610452610a32565b60405161045f9190611fcc565b60405180910390f35b34801561047457600080fd5b5061047d610a58565b60405161048a9190611e7e565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190611f3d565b610a6b565b6040516104c79190611e7e565b60405180910390f35b3480156104dc57600080fd5b506104e5610a8b565b6040516104f29190611ea8565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190611f3d565b610a91565b60405161052f9190611ea8565b60405180910390f35b34801561054457600080fd5b5061054d610ad9565b005b34801561055b57600080fd5b50610564610aed565b6040516105719190611ea8565b60405180910390f35b34801561058657600080fd5b5061058f610af3565b005b34801561059d57600080fd5b506105a6610b44565b6040516105b39190611fcc565b60405180910390f35b3480156105c857600080fd5b506105d1610b6e565b6040516105de9190611d59565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190611e23565b610c00565b60405161061b9190611e7e565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190611e23565b610c77565b6040516106589190611e7e565b60405180910390f35b34801561066d57600080fd5b50610676610c95565b6040516106839190611fcc565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae91906121bf565b610cb9565b005b3480156106c157600080fd5b506106dc60048036038101906106d7919061201e565b610dbe565b005b3480156106ea57600080fd5b506106f3610e14565b6040516107009190611fcc565b60405180910390f35b34801561071557600080fd5b50610730600480360381019061072b91906121bf565b610e2c565b005b34801561073e57600080fd5b506107596004803603810190610754919061221b565b610fa2565b6040516107669190611ea8565b60405180910390f35b34801561077b57600080fd5b50610784611029565b6040516107919190611ea8565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190611f3d565b61102f565b005b6060600380546107d29061228a565b80601f01602080910402602001604051908101604052809291908181526020018280546107fe9061228a565b801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b5050505050905090565b6000806108606110b2565b905061086d8185856110ba565b600191505092915050565b67016345785d8a000081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600b5481565b600d6020528060005260406000206000915054906101000a900460ff1681565b60006108e7848484611283565b60006108fa856108f56110b2565b610fa2565b90508281101561093f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109369061232d565b60405180910390fd5b6109538561094b6110b2565b8584036110ba565b60019150509392505050565b61dead81565b60006012905090565b6000806109796110b2565b905061099a81858561098b8589610fa2565b610995919061237c565b6110ba565b600191505092915050565b6109ad61166a565b60648111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e8906123fc565b60405180910390fd5b80600a819055507feabd3b3b7a8ca5058b4778ca7daf516ebc6d5da7b6259714b32fc49ecdb110b181604051610a279190611ea8565b60405180910390a150565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860149054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ae161166a565b610aeb60006116e8565b565b600a5481565b610afb61166a565b6001600860146101000a81548160ff0219169083151502179055507f1d97b7cdf6b6f3405cbe398b69512e5419a0ce78232b6e9c6ffbf1466774bd8d60405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b7d9061228a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba99061228a565b8015610bf65780601f10610bcb57610100808354040283529160200191610bf6565b820191906000526020600020905b815481529060010190602001808311610bd957829003601f168201915b5050505050905090565b600080610c0b6110b2565b90506000610c198286610fa2565b905083811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c559061248e565b60405180910390fd5b610c6b82868684036110ba565b60019250505092915050565b6000610c8b610c846110b2565b8484611283565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610cc161166a565b60005b8251811015610db95781600c6000858481518110610ce557610ce46124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610d5157610d506124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051610d9e9190611e7e565b60405180910390a28080610db1906124dd565b915050610cc4565b505050565b610dc661166a565b6064811115610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e01906123fc565b60405180910390fd5b80600b8190555050565b73d8da6bf26964af9d7eed9e03e53415d37aa9604581565b610e3461166a565b60005b8251811015610f9d57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610e8c57610e8b6124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160315610f8a5781600d6000858481518110610ec857610ec76124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610f3457610f336124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fd31c700151312b600f1f92a612fd99493ee4bfede71bb43f9eef36556c56cf9783604051610f819190611e7e565b60405180910390a25b8080610f95906124dd565b915050610e37565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b61103761166a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d90612597565b60405180910390fd5b6110af816116e8565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090612629565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f906126bb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112769190611ea8565b60405180910390a3505050565b600860149054906101000a900460ff16806112e75750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061133b5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190612727565b60405180910390fd5b600f60009054906101000a900460ff16156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c1906127b9565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061146b5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114c05750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114d5576114d08383836117ae565b611665565b60006064600954836114e791906127d9565b6114f1919061284a565b905060008183611501919061287b565b905060006064600b54600a54611517919061237c565b6064600b548661152791906127d9565b61153191906127d9565b61153b919061284a565b611545919061284a565b905060006064600b54600a5461155b919061237c565b6064600a548761156b91906127d9565b61157591906127d9565b61157f919061284a565b611589919061284a565b90506115968730836117ae565b6115b58773d8da6bf26964af9d7eed9e03e53415d37aa96045846117ae565b6115c08787856117ae565b80600e60008282546115d2919061237c565b9250508190555067016345785d8a0000600e5410611629576001600f60006101000a81548160ff02191690831515021790555061160d611a24565b6000600f60006101000a81548160ff0219169083151502179055505b7f3a8252748ffa3c9535c6438799ce1f576f36a016ab530f354e1432db42713c79826040516116589190611ea8565b60405180910390a1505050505b505050565b6116726110b2565b73ffffffffffffffffffffffffffffffffffffffff16611690610b44565b73ffffffffffffffffffffffffffffffffffffffff16146116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd906128fb565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118149061298d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390612a1f565b60405180910390fd5b611897838383611c66565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561191d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191490612ab1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a0b9190611ea8565b60405180910390a3611a1e848484611c6b565b50505050565b611a2c611c70565b6000600e5490506000600e819055506000600267ffffffffffffffff811115611a5857611a57612050565b5b604051908082528060200260200182016040528015611a865781602001602082028036833780820191505090505b5090503081600081518110611a9e57611a9d6124ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611b0d57611b0c6124ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b7430600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110ba565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611bdd959493929190612bca565b600060405180830381600087803b158015611bf757600080fd5b505af1158015611c0b573d6000803e3d6000fd5b5050505060008147611c1d919061287b565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868482604051611c50929190612c24565b60405180910390a150505050611c64611cbf565b565b505050565b505050565b600260065403611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90612c99565b60405180910390fd5b6002600681905550565b6001600681905550565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d03578082015181840152602081019050611ce8565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d2b82611cc9565b611d358185611cd4565b9350611d45818560208601611ce5565b611d4e81611d0f565b840191505092915050565b60006020820190508181036000830152611d738184611d20565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611dba82611d8f565b9050919050565b611dca81611daf565b8114611dd557600080fd5b50565b600081359050611de781611dc1565b92915050565b6000819050919050565b611e0081611ded565b8114611e0b57600080fd5b50565b600081359050611e1d81611df7565b92915050565b60008060408385031215611e3a57611e39611d85565b5b6000611e4885828601611dd8565b9250506020611e5985828601611e0e565b9150509250929050565b60008115159050919050565b611e7881611e63565b82525050565b6000602082019050611e936000830184611e6f565b92915050565b611ea281611ded565b82525050565b6000602082019050611ebd6000830184611e99565b92915050565b6000819050919050565b6000611ee8611ee3611ede84611d8f565b611ec3565b611d8f565b9050919050565b6000611efa82611ecd565b9050919050565b6000611f0c82611eef565b9050919050565b611f1c81611f01565b82525050565b6000602082019050611f376000830184611f13565b92915050565b600060208284031215611f5357611f52611d85565b5b6000611f6184828501611dd8565b91505092915050565b600080600060608486031215611f8357611f82611d85565b5b6000611f9186828701611dd8565b9350506020611fa286828701611dd8565b9250506040611fb386828701611e0e565b9150509250925092565b611fc681611daf565b82525050565b6000602082019050611fe16000830184611fbd565b92915050565b600060ff82169050919050565b611ffd81611fe7565b82525050565b60006020820190506120186000830184611ff4565b92915050565b60006020828403121561203457612033611d85565b5b600061204284828501611e0e565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61208882611d0f565b810181811067ffffffffffffffff821117156120a7576120a6612050565b5b80604052505050565b60006120ba611d7b565b90506120c6828261207f565b919050565b600067ffffffffffffffff8211156120e6576120e5612050565b5b602082029050602081019050919050565b600080fd5b600061210f61210a846120cb565b6120b0565b90508083825260208201905060208402830185811115612132576121316120f7565b5b835b8181101561215b57806121478882611dd8565b845260208401935050602081019050612134565b5050509392505050565b600082601f83011261217a5761217961204b565b5b813561218a8482602086016120fc565b91505092915050565b61219c81611e63565b81146121a757600080fd5b50565b6000813590506121b981612193565b92915050565b600080604083850312156121d6576121d5611d85565b5b600083013567ffffffffffffffff8111156121f4576121f3611d8a565b5b61220085828601612165565b9250506020612211858286016121aa565b9150509250929050565b6000806040838503121561223257612231611d85565b5b600061224085828601611dd8565b925050602061225185828601611dd8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122a257607f821691505b6020821081036122b5576122b461225b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612317602883611cd4565b9150612322826122bb565b604082019050919050565b600060208201905081810360008301526123468161230a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061238782611ded565b915061239283611ded565b92508282019050808211156123aa576123a961234d565b5b92915050565b7f5377617020706f7274696f6e2063616e6e6f7420657863656564203130300000600082015250565b60006123e6601e83611cd4565b91506123f1826123b0565b602082019050919050565b60006020820190508181036000830152612415816123d9565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612478602583611cd4565b91506124838261241c565b604082019050919050565b600060208201905081810360008301526124a78161246b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006124e882611ded565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361251a5761251961234d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612581602683611cd4565b915061258c82612525565b604082019050919050565b600060208201905081810360008301526125b081612574565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612613602483611cd4565b915061261e826125b7565b604082019050919050565b6000602082019050818103600083015261264281612606565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126a5602283611cd4565b91506126b082612649565b604082019050919050565b600060208201905081810360008301526126d481612698565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000612711601a83611cd4565b915061271c826126db565b602082019050919050565b6000602082019050818103600083015261274081612704565b9050919050565b7f5472616e73666572206661696c65642064756520746f20696e7465726e616c2060008201527f7377617020696e2070726f677265737300000000000000000000000000000000602082015250565b60006127a3603083611cd4565b91506127ae82612747565b604082019050919050565b600060208201905081810360008301526127d281612796565b9050919050565b60006127e482611ded565b91506127ef83611ded565b92508282026127fd81611ded565b915082820484148315176128145761281361234d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061285582611ded565b915061286083611ded565b9250826128705761286f61281b565b5b828204905092915050565b600061288682611ded565b915061289183611ded565b92508282039050818111156128a9576128a861234d565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128e5602083611cd4565b91506128f0826128af565b602082019050919050565b60006020820190508181036000830152612914816128d8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612977602583611cd4565b91506129828261291b565b604082019050919050565b600060208201905081810360008301526129a68161296a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a09602383611cd4565b9150612a14826129ad565b604082019050919050565b60006020820190508181036000830152612a38816129fc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a9b602683611cd4565b9150612aa682612a3f565b604082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b6000819050919050565b6000612af6612af1612aec84612ad1565b611ec3565b611ded565b9050919050565b612b0681612adb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b4181611daf565b82525050565b6000612b538383612b38565b60208301905092915050565b6000602082019050919050565b6000612b7782612b0c565b612b818185612b17565b9350612b8c83612b28565b8060005b83811015612bbd578151612ba48882612b47565b9750612baf83612b5f565b925050600181019050612b90565b5085935050505092915050565b600060a082019050612bdf6000830188611e99565b612bec6020830187612afd565b8181036040830152612bfe8186612b6c565b9050612c0d6060830185611fbd565b612c1a6080830184611e99565b9695505050505050565b6000604082019050612c396000830185611e99565b612c466020830184611e99565b9392505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612c83601f83611cd4565b9150612c8e82612c4d565b602082019050919050565b60006020820190508181036000830152612cb281612c76565b905091905056fea26469706673582212205da5b04f8d52a02c24c7bf5771b66a341ff7dc75bc916848686b3c08ff1024bd64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c806370a0823111610102578063ad5c464811610095578063d2c7219111610064578063d2c7219114610709578063dd62ed3e14610732578063e208a9391461076f578063f2fde38b1461079a576101ee565b8063ad5c464814610661578063b6e852161461068c578063c2be2c92146106b5578063d16f8de9146106de576101ee565b80638da5cb5b116100d15780638da5cb5b1461059157806395d89b41146105bc578063a457c2d7146105e7578063a9059cbb14610624576101ee565b806370a08231146104fb578063715018a6146105385780637a65a3b81461054f5780638a8c523c1461057a576101ee565b806327c8f8351161017a57806349bd5a5e1161014957806349bd5a5e1461043d5780634ada218b146104685780634fbee19314610493578063587f5ed7146104d0576101ee565b806327c8f83514610381578063313ce567146103ac57806339509351146103d75780633aa646fe14610414576101ee565b806318160ddd116101b657806318160ddd146102b1578063186dbffb146102dc5780631aae9b4f1461030757806323b872dd14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806312ae15c61461025b5780631694505e14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107c3565b6040516102159190611d59565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190611e23565b610855565b6040516102529190611e7e565b60405180910390f35b34801561026757600080fd5b50610270610878565b60405161027d9190611ea8565b60405180910390f35b34801561029257600080fd5b5061029b610884565b6040516102a89190611f22565b60405180910390f35b3480156102bd57600080fd5b506102c66108aa565b6040516102d39190611ea8565b60405180910390f35b3480156102e857600080fd5b506102f16108b4565b6040516102fe9190611ea8565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190611f3d565b6108ba565b60405161033b9190611e7e565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190611f6a565b6108da565b6040516103789190611e7e565b60405180910390f35b34801561038d57600080fd5b5061039661095f565b6040516103a39190611fcc565b60405180910390f35b3480156103b857600080fd5b506103c1610965565b6040516103ce9190612003565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190611e23565b61096e565b60405161040b9190611e7e565b60405180910390f35b34801561042057600080fd5b5061043b6004803603810190610436919061201e565b6109a5565b005b34801561044957600080fd5b50610452610a32565b60405161045f9190611fcc565b60405180910390f35b34801561047457600080fd5b5061047d610a58565b60405161048a9190611e7e565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190611f3d565b610a6b565b6040516104c79190611e7e565b60405180910390f35b3480156104dc57600080fd5b506104e5610a8b565b6040516104f29190611ea8565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190611f3d565b610a91565b60405161052f9190611ea8565b60405180910390f35b34801561054457600080fd5b5061054d610ad9565b005b34801561055b57600080fd5b50610564610aed565b6040516105719190611ea8565b60405180910390f35b34801561058657600080fd5b5061058f610af3565b005b34801561059d57600080fd5b506105a6610b44565b6040516105b39190611fcc565b60405180910390f35b3480156105c857600080fd5b506105d1610b6e565b6040516105de9190611d59565b60405180910390f35b3480156105f357600080fd5b5061060e60048036038101906106099190611e23565b610c00565b60405161061b9190611e7e565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190611e23565b610c77565b6040516106589190611e7e565b60405180910390f35b34801561066d57600080fd5b50610676610c95565b6040516106839190611fcc565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae91906121bf565b610cb9565b005b3480156106c157600080fd5b506106dc60048036038101906106d7919061201e565b610dbe565b005b3480156106ea57600080fd5b506106f3610e14565b6040516107009190611fcc565b60405180910390f35b34801561071557600080fd5b50610730600480360381019061072b91906121bf565b610e2c565b005b34801561073e57600080fd5b506107596004803603810190610754919061221b565b610fa2565b6040516107669190611ea8565b60405180910390f35b34801561077b57600080fd5b50610784611029565b6040516107919190611ea8565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc9190611f3d565b61102f565b005b6060600380546107d29061228a565b80601f01602080910402602001604051908101604052809291908181526020018280546107fe9061228a565b801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b5050505050905090565b6000806108606110b2565b905061086d8185856110ba565b600191505092915050565b67016345785d8a000081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600b5481565b600d6020528060005260406000206000915054906101000a900460ff1681565b60006108e7848484611283565b60006108fa856108f56110b2565b610fa2565b90508281101561093f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109369061232d565b60405180910390fd5b6109538561094b6110b2565b8584036110ba565b60019150509392505050565b61dead81565b60006012905090565b6000806109796110b2565b905061099a81858561098b8589610fa2565b610995919061237c565b6110ba565b600191505092915050565b6109ad61166a565b60648111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e8906123fc565b60405180910390fd5b80600a819055507feabd3b3b7a8ca5058b4778ca7daf516ebc6d5da7b6259714b32fc49ecdb110b181604051610a279190611ea8565b60405180910390a150565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860149054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ae161166a565b610aeb60006116e8565b565b600a5481565b610afb61166a565b6001600860146101000a81548160ff0219169083151502179055507f1d97b7cdf6b6f3405cbe398b69512e5419a0ce78232b6e9c6ffbf1466774bd8d60405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b7d9061228a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba99061228a565b8015610bf65780601f10610bcb57610100808354040283529160200191610bf6565b820191906000526020600020905b815481529060010190602001808311610bd957829003601f168201915b5050505050905090565b600080610c0b6110b2565b90506000610c198286610fa2565b905083811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c559061248e565b60405180910390fd5b610c6b82868684036110ba565b60019250505092915050565b6000610c8b610c846110b2565b8484611283565b6001905092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b610cc161166a565b60005b8251811015610db95781600c6000858481518110610ce557610ce46124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610d5157610d506124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051610d9e9190611e7e565b60405180910390a28080610db1906124dd565b915050610cc4565b505050565b610dc661166a565b6064811115610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e01906123fc565b60405180910390fd5b80600b8190555050565b73d8da6bf26964af9d7eed9e03e53415d37aa9604581565b610e3461166a565b60005b8251811015610f9d57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610e8c57610e8b6124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160315610f8a5781600d6000858481518110610ec857610ec76124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610f3457610f336124ae565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fd31c700151312b600f1f92a612fd99493ee4bfede71bb43f9eef36556c56cf9783604051610f819190611e7e565b60405180910390a25b8080610f95906124dd565b915050610e37565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b61103761166a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d90612597565b60405180910390fd5b6110af816116e8565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090612629565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f906126bb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112769190611ea8565b60405180910390a3505050565b600860149054906101000a900460ff16806112e75750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061133b5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190612727565b60405180910390fd5b600f60009054906101000a900460ff16156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c1906127b9565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061146b5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114c05750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114d5576114d08383836117ae565b611665565b60006064600954836114e791906127d9565b6114f1919061284a565b905060008183611501919061287b565b905060006064600b54600a54611517919061237c565b6064600b548661152791906127d9565b61153191906127d9565b61153b919061284a565b611545919061284a565b905060006064600b54600a5461155b919061237c565b6064600a548761156b91906127d9565b61157591906127d9565b61157f919061284a565b611589919061284a565b90506115968730836117ae565b6115b58773d8da6bf26964af9d7eed9e03e53415d37aa96045846117ae565b6115c08787856117ae565b80600e60008282546115d2919061237c565b9250508190555067016345785d8a0000600e5410611629576001600f60006101000a81548160ff02191690831515021790555061160d611a24565b6000600f60006101000a81548160ff0219169083151502179055505b7f3a8252748ffa3c9535c6438799ce1f576f36a016ab530f354e1432db42713c79826040516116589190611ea8565b60405180910390a1505050505b505050565b6116726110b2565b73ffffffffffffffffffffffffffffffffffffffff16611690610b44565b73ffffffffffffffffffffffffffffffffffffffff16146116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd906128fb565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118149061298d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390612a1f565b60405180910390fd5b611897838383611c66565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561191d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191490612ab1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a0b9190611ea8565b60405180910390a3611a1e848484611c6b565b50505050565b611a2c611c70565b6000600e5490506000600e819055506000600267ffffffffffffffff811115611a5857611a57612050565b5b604051908082528060200260200182016040528015611a865781602001602082028036833780820191505090505b5090503081600081518110611a9e57611a9d6124ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611b0d57611b0c6124ae565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b7430600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110ba565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611bdd959493929190612bca565b600060405180830381600087803b158015611bf757600080fd5b505af1158015611c0b573d6000803e3d6000fd5b5050505060008147611c1d919061287b565b90507f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868482604051611c50929190612c24565b60405180910390a150505050611c64611cbf565b565b505050565b505050565b600260065403611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90612c99565b60405180910390fd5b6002600681905550565b6001600681905550565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d03578082015181840152602081019050611ce8565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d2b82611cc9565b611d358185611cd4565b9350611d45818560208601611ce5565b611d4e81611d0f565b840191505092915050565b60006020820190508181036000830152611d738184611d20565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611dba82611d8f565b9050919050565b611dca81611daf565b8114611dd557600080fd5b50565b600081359050611de781611dc1565b92915050565b6000819050919050565b611e0081611ded565b8114611e0b57600080fd5b50565b600081359050611e1d81611df7565b92915050565b60008060408385031215611e3a57611e39611d85565b5b6000611e4885828601611dd8565b9250506020611e5985828601611e0e565b9150509250929050565b60008115159050919050565b611e7881611e63565b82525050565b6000602082019050611e936000830184611e6f565b92915050565b611ea281611ded565b82525050565b6000602082019050611ebd6000830184611e99565b92915050565b6000819050919050565b6000611ee8611ee3611ede84611d8f565b611ec3565b611d8f565b9050919050565b6000611efa82611ecd565b9050919050565b6000611f0c82611eef565b9050919050565b611f1c81611f01565b82525050565b6000602082019050611f376000830184611f13565b92915050565b600060208284031215611f5357611f52611d85565b5b6000611f6184828501611dd8565b91505092915050565b600080600060608486031215611f8357611f82611d85565b5b6000611f9186828701611dd8565b9350506020611fa286828701611dd8565b9250506040611fb386828701611e0e565b9150509250925092565b611fc681611daf565b82525050565b6000602082019050611fe16000830184611fbd565b92915050565b600060ff82169050919050565b611ffd81611fe7565b82525050565b60006020820190506120186000830184611ff4565b92915050565b60006020828403121561203457612033611d85565b5b600061204284828501611e0e565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61208882611d0f565b810181811067ffffffffffffffff821117156120a7576120a6612050565b5b80604052505050565b60006120ba611d7b565b90506120c6828261207f565b919050565b600067ffffffffffffffff8211156120e6576120e5612050565b5b602082029050602081019050919050565b600080fd5b600061210f61210a846120cb565b6120b0565b90508083825260208201905060208402830185811115612132576121316120f7565b5b835b8181101561215b57806121478882611dd8565b845260208401935050602081019050612134565b5050509392505050565b600082601f83011261217a5761217961204b565b5b813561218a8482602086016120fc565b91505092915050565b61219c81611e63565b81146121a757600080fd5b50565b6000813590506121b981612193565b92915050565b600080604083850312156121d6576121d5611d85565b5b600083013567ffffffffffffffff8111156121f4576121f3611d8a565b5b61220085828601612165565b9250506020612211858286016121aa565b9150509250929050565b6000806040838503121561223257612231611d85565b5b600061224085828601611dd8565b925050602061225185828601611dd8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122a257607f821691505b6020821081036122b5576122b461225b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612317602883611cd4565b9150612322826122bb565b604082019050919050565b600060208201905081810360008301526123468161230a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061238782611ded565b915061239283611ded565b92508282019050808211156123aa576123a961234d565b5b92915050565b7f5377617020706f7274696f6e2063616e6e6f7420657863656564203130300000600082015250565b60006123e6601e83611cd4565b91506123f1826123b0565b602082019050919050565b60006020820190508181036000830152612415816123d9565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612478602583611cd4565b91506124838261241c565b604082019050919050565b600060208201905081810360008301526124a78161246b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006124e882611ded565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361251a5761251961234d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612581602683611cd4565b915061258c82612525565b604082019050919050565b600060208201905081810360008301526125b081612574565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612613602483611cd4565b915061261e826125b7565b604082019050919050565b6000602082019050818103600083015261264281612606565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006126a5602283611cd4565b91506126b082612649565b604082019050919050565b600060208201905081810360008301526126d481612698565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000612711601a83611cd4565b915061271c826126db565b602082019050919050565b6000602082019050818103600083015261274081612704565b9050919050565b7f5472616e73666572206661696c65642064756520746f20696e7465726e616c2060008201527f7377617020696e2070726f677265737300000000000000000000000000000000602082015250565b60006127a3603083611cd4565b91506127ae82612747565b604082019050919050565b600060208201905081810360008301526127d281612796565b9050919050565b60006127e482611ded565b91506127ef83611ded565b92508282026127fd81611ded565b915082820484148315176128145761281361234d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061285582611ded565b915061286083611ded565b9250826128705761286f61281b565b5b828204905092915050565b600061288682611ded565b915061289183611ded565b92508282039050818111156128a9576128a861234d565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128e5602083611cd4565b91506128f0826128af565b602082019050919050565b60006020820190508181036000830152612914816128d8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612977602583611cd4565b91506129828261291b565b604082019050919050565b600060208201905081810360008301526129a68161296a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a09602383611cd4565b9150612a14826129ad565b604082019050919050565b60006020820190508181036000830152612a38816129fc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a9b602683611cd4565b9150612aa682612a3f565b604082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b6000819050919050565b6000612af6612af1612aec84612ad1565b611ec3565b611ded565b9050919050565b612b0681612adb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b4181611daf565b82525050565b6000612b538383612b38565b60208301905092915050565b6000602082019050919050565b6000612b7782612b0c565b612b818185612b17565b9350612b8c83612b28565b8060005b83811015612bbd578151612ba48882612b47565b9750612baf83612b5f565b925050600181019050612b90565b5085935050505092915050565b600060a082019050612bdf6000830188611e99565b612bec6020830187612afd565b8181036040830152612bfe8186612b6c565b9050612c0d6060830185611fbd565b612c1a6080830184611e99565b9695505050505050565b6000604082019050612c396000830185611e99565b612c466020830184611e99565b9392505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612c83601f83611cd4565b9150612c8e82612c4d565b602082019050919050565b60006020820190508181036000830152612cb281612c76565b905091905056fea26469706673582212205da5b04f8d52a02c24c7bf5771b66a341ff7dc75bc916848686b3c08ff1024bd64736f6c63430008110033
Deployed Bytecode Sourcemap
14890:5739:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2850:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15597:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14982:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2239:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15188:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15285:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16854:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15345:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2138:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3328:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20239:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15030:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15067:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15228:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15560:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2355:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7300:103;;;;;;;;;;;;;:::i;:::-;;15151:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20476:113;;;;;;;;;;;;;:::i;:::-;;7065:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2026:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3574:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16669:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15432:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19405:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19689:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15468:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19882:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2691:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15108:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7411:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1918:100;1972:13;2005:5;1998:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:100;:::o;2850:201::-;2933:4;2950:13;2966:12;:10;:12::i;:::-;2950:28;;2989:32;2998:5;3005:7;3014:6;2989:8;:32::i;:::-;3039:4;3032:11;;;2850:201;;;;:::o;15597:55::-;15643:9;15597:55;:::o;14982:41::-;;;;;;;;;;;;;:::o;2239:108::-;2300:7;2327:12;;2320:19;;2239:108;:::o;15188:33::-;;;;:::o;15285:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;16854:454::-;16960:4;16977:38;16989:6;16997:9;17008:6;16977:11;:38::i;:::-;17026:24;17053:31;17063:6;17071:12;:10;:12::i;:::-;17053:9;:31::i;:::-;17026:58;;17123:6;17103:16;:26;;17095:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17210:57;17219:6;17227:12;:10;:12::i;:::-;17260:6;17241:16;:25;17210:8;:57::i;:::-;17296:4;17289:11;;;16854:454;;;;;:::o;15345:80::-;15383:42;15345:80;:::o;2138:93::-;2196:5;2221:2;2214:9;;2138:93;:::o;3328:238::-;3416:4;3433:13;3449:12;:10;:12::i;:::-;3433:28;;3472:64;3481:5;3488:7;3525:10;3497:25;3507:5;3514:7;3497:9;:25::i;:::-;:38;;;;:::i;:::-;3472:8;:64::i;:::-;3554:4;3547:11;;;3328:238;;;;:::o;20239:225::-;7024:13;:11;:13::i;:::-;20337:3:::1;20321:12;:19;;20313:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20400:12;20386:11;:26;;;;20428:28;20443:12;20428:28;;;;;;:::i;:::-;;;;;;;;20239:225:::0;:::o;15030:28::-;;;;;;;;;;;;;:::o;15067:34::-;;;;;;;;;;;;;:::o;15228:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;15560:30::-;;;;:::o;2355:127::-;2429:7;2456:9;:18;2466:7;2456:18;;;;;;;;;;;;;;;;2449:25;;2355:127;;;:::o;7300:103::-;7024:13;:11;:13::i;:::-;7365:30:::1;7392:1;7365:18;:30::i;:::-;7300:103::o:0;15151:30::-;;;;:::o;20476:113::-;7024:13;:11;:13::i;:::-;20546:4:::1;20529:14;;:21;;;;;;;;;;;;;;;;;;20566:15;;;;;;;;;;20476:113::o:0;7065:87::-;7111:7;7138:6;;;;;;;;;;;7131:13;;7065:87;:::o;2026:104::-;2082:13;2115:7;2108:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:104;:::o;3574:434::-;3667:4;3684:13;3700:12;:10;:12::i;:::-;3684:28;;3723:24;3750:25;3760:5;3767:7;3750:9;:25::i;:::-;3723:52;;3814:15;3794:16;:35;;3786:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3907:60;3916:5;3923:7;3951:15;3932:16;:34;3907:8;:60::i;:::-;3996:4;3989:11;;;;3574:434;;;;:::o;16669:177::-;16755:4;16772:44;16784:12;:10;:12::i;:::-;16798:9;16809:6;16772:11;:44::i;:::-;16834:4;16827:11;;16669:177;;;;:::o;15432:29::-;;;:::o;19405:278::-;7024:13;:11;:13::i;:::-;19508:9:::1;19503:173;19527:8;:15;19523:1;:19;19503:173;;;19598:8;19564:18;:31;19583:8;19592:1;19583:11;;;;;;;;:::i;:::-;;;;;;;;19564:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19642:8;19651:1;19642:11;;;;;;;;:::i;:::-;;;;;;;;19626:38;;;19655:8;19626:38;;;;;;:::i;:::-;;;;;;;;19544:3;;;;;:::i;:::-;;;;19503:173;;;;19405:278:::0;;:::o;19689:187::-;7024:13;:11;:13::i;:::-;19790:3:::1;19774:12;:19;;19766:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19856:12;19839:14;:29;;;;19689:187:::0;:::o;15468:83::-;15509:42;15468:83;:::o;19882:347::-;7024:13;:11;:13::i;:::-;19996:9:::1;19991:231;20015:8;:15;20011:1;:19;19991:231;;;20070:13;;;;;;;;;;;20055:28;;:8;20064:1;20055:11;;;;;;;;:::i;:::-;;;;;;;;:28;;::::0;20052:41;20085:8:::1;20052:41;20139:10;20108:15;:28;20124:8;20133:1;20124:11;;;;;;;;:::i;:::-;;;;;;;;20108:28;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20186:8;20195:1;20186:11;;;;;;;;:::i;:::-;;;;;;;;20169:41;;;20199:10;20169:41;;;;;;:::i;:::-;;;;;;;;19991:231;20032:3;;;;;:::i;:::-;;;;19991:231;;;;19882:347:::0;;:::o;2691:151::-;2780:7;2807:11;:18;2819:5;2807:18;;;;;;;;;;;;;;;:27;2826:7;2807:27;;;;;;;;;;;;;;;;2800:34;;2691:151;;;;:::o;15108:36::-;;;;:::o;7411:201::-;7024:13;:11;:13::i;:::-;7520:1:::1;7500:22;;:8;:22;;::::0;7492:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7576:28;7595:8;7576:18;:28::i;:::-;7411:201:::0;:::o;182:98::-;235:7;262:10;255:17;;182:98;:::o;5689:344::-;5808:1;5791:19;;:5;:19;;;5783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5889:1;5870:21;;:7;:21;;;5862:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5971:6;5941:11;:18;5953:5;5941:18;;;;;;;;;;;;;;;:27;5960:7;5941:27;;;;;;;;;;;;;;;:36;;;;6009:7;5993:32;;6002:5;5993:32;;;6018:6;5993:32;;;;;;:::i;:::-;;;;;;;;5689:344;;;:::o;17316:1347::-;17450:14;;;;;;;;;;;:44;;;;17468:18;:26;17487:6;17468:26;;;;;;;;;;;;;;;;;;;;;;;;;17450:44;:77;;;;17498:18;:29;17517:9;17498:29;;;;;;;;;;;;;;;;;;;;;;;;;17450:77;17442:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;17578:8;;;;;;;;;;;17577:9;17569:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17656:18;:26;17675:6;17656:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;17686:18;:29;17705:9;17686:29;;;;;;;;;;;;;;;;;;;;;;;;;17656:59;:87;;;;17720:15;:23;17736:6;17720:23;;;;;;;;;;;;;;;;;;;;;;;;;17719:24;17656:87;17652:1004;;;17760:36;17770:6;17778:9;17789:6;17760:9;:36::i;:::-;17652:1004;;;17829:17;17880:3;17859:17;;17850:6;:26;;;;:::i;:::-;17849:34;;;;:::i;:::-;17829:54;;17898:22;17932:9;17923:6;:18;;;;:::i;:::-;17898:43;;17972:21;18067:3;18049:14;;18035:11;;:28;;;;:::i;:::-;18026:3;18009:14;;17997:9;:26;;;;:::i;:::-;:32;;;;:::i;:::-;17996:68;;;;:::i;:::-;:74;;;;:::i;:::-;17972:98;;18086:18;18175:3;18157:14;;18143:11;;:28;;;;:::i;:::-;18134:3;18120:11;;18108:9;:23;;;;:::i;:::-;:29;;;;:::i;:::-;18107:65;;;;:::i;:::-;:71;;;;:::i;:::-;18086:92;;18193:44;18203:6;18219:4;18226:10;18193:9;:44::i;:::-;18252:48;18262:6;15509:42;18286:13;18252:9;:48::i;:::-;18315:44;18325:6;18333:9;18344:14;18315:9;:44::i;:::-;18395:10;18376:15;;:29;;;;;;;:::i;:::-;;;;;;;;15643:9;18426:15;;:38;18422:167;;18496:4;18485:8;;:15;;;;;;;;;;;;;;;;;;18519:19;:17;:19::i;:::-;18568:5;18557:8;;:16;;;;;;;;;;;;;;;;;;18422:167;18610:34;18630:13;18610:34;;;;;;:::i;:::-;;;;;;;;17814:842;;;;17652:1004;17316:1347;;;:::o;7160:132::-;7235:12;:10;:12::i;:::-;7224:23;;:7;:5;:7::i;:::-;:23;;;7216:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7160:132::o;7620:191::-;7694:16;7713:6;;;;;;;;;;;7694:25;;7739:8;7730:6;;:17;;;;;;;;;;;;;;;;;;7794:8;7763:40;;7784:8;7763:40;;;;;;;;;;;;7683:128;7620:191;:::o;4016:633::-;4129:1;4113:18;;:4;:18;;;4105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4206:1;4192:16;;:2;:16;;;4184:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4259:38;4280:4;4286:2;4290:6;4259:20;:38::i;:::-;4308:19;4330:9;:15;4340:4;4330:15;;;;;;;;;;;;;;;;4308:37;;4379:6;4364:11;:21;;4356:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4496:6;4482:11;:20;4464:9;:15;4474:4;4464:15;;;;;;;;;;;;;;;:38;;;;4534:6;4517:9;:13;4527:2;4517:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4582:2;4567:26;;4576:4;4567:26;;;4586:6;4567:26;;;;;;:::i;:::-;;;;;;;;4604:37;4624:4;4630:2;4634:6;4604:19;:37::i;:::-;4094:555;4016:633;;;:::o;18671:726::-;8161:21;:19;:21::i;:::-;18732:19:::1;18754:15;;18732:37;;18798:1;18780:15;:19;;;;18812:21;18850:1;18836:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18812:40;;18881:4;18863;18868:1;18863:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18907:4;18897;18902:1;18897:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;18924:62;18941:4;18956:15;;;;;;;;;;;18974:11;18924:8;:62::i;:::-;18999:25;19027:21;18999:49;;19061:15;;;;;;;;;;;:66;;;19142:11;19168:1;19184:4;19211;19231:15;19061:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19270:19;19316:17;19292:21;:41;;;;:::i;:::-;19270:63;;19349:40;19364:11;19377;19349:40;;;;;;;:::i;:::-;;;;;;;;18721:676;;;;8205:20:::0;:18;:20::i;:::-;18671:726::o;6468:91::-;;;;:::o;6565:90::-;;;;:::o;8241:150::-;8023:1;8299:7;;:19;8291:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8023:1;8365:7;:18;;;;8241:150::o;8399:79::-;7979:1;8448:7;:22;;;;8399:79::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:153::-;4221:9;4254:37;4285:5;4254:37;:::i;:::-;4241:50;;4144:153;;;:::o;4303:185::-;4417:64;4475:5;4417:64;:::i;:::-;4412:3;4405:77;4303:185;;:::o;4494:276::-;4614:4;4652:2;4641:9;4637:18;4629:26;;4665:98;4760:1;4749:9;4745:17;4736:6;4665:98;:::i;:::-;4494:276;;;;:::o;4776:329::-;4835:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5010:1;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4981:117;4776:329;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:329::-;6577:6;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6752:1;6777:53;6822:7;6813:6;6802:9;6798:22;6777:53;:::i;:::-;6767:63;;6723:117;6518:329;;;;:::o;6853:117::-;6962:1;6959;6952:12;6976:180;7024:77;7021:1;7014:88;7121:4;7118:1;7111:15;7145:4;7142:1;7135:15;7162:281;7245:27;7267:4;7245:27;:::i;:::-;7237:6;7233:40;7375:6;7363:10;7360:22;7339:18;7327:10;7324:34;7321:62;7318:88;;;7386:18;;:::i;:::-;7318:88;7426:10;7422:2;7415:22;7205:238;7162:281;;:::o;7449:129::-;7483:6;7510:20;;:::i;:::-;7500:30;;7539:33;7567:4;7559:6;7539:33;:::i;:::-;7449:129;;;:::o;7584:311::-;7661:4;7751:18;7743:6;7740:30;7737:56;;;7773:18;;:::i;:::-;7737:56;7823:4;7815:6;7811:17;7803:25;;7883:4;7877;7873:15;7865:23;;7584:311;;;:::o;7901:117::-;8010:1;8007;8000:12;8041:710;8137:5;8162:81;8178:64;8235:6;8178:64;:::i;:::-;8162:81;:::i;:::-;8153:90;;8263:5;8292:6;8285:5;8278:21;8326:4;8319:5;8315:16;8308:23;;8379:4;8371:6;8367:17;8359:6;8355:30;8408:3;8400:6;8397:15;8394:122;;;8427:79;;:::i;:::-;8394:122;8542:6;8525:220;8559:6;8554:3;8551:15;8525:220;;;8634:3;8663:37;8696:3;8684:10;8663:37;:::i;:::-;8658:3;8651:50;8730:4;8725:3;8721:14;8714:21;;8601:144;8585:4;8580:3;8576:14;8569:21;;8525:220;;;8529:21;8143:608;;8041:710;;;;;:::o;8774:370::-;8845:5;8894:3;8887:4;8879:6;8875:17;8871:27;8861:122;;8902:79;;:::i;:::-;8861:122;9019:6;9006:20;9044:94;9134:3;9126:6;9119:4;9111:6;9107:17;9044:94;:::i;:::-;9035:103;;8851:293;8774:370;;;;:::o;9150:116::-;9220:21;9235:5;9220:21;:::i;:::-;9213:5;9210:32;9200:60;;9256:1;9253;9246:12;9200:60;9150:116;:::o;9272:133::-;9315:5;9353:6;9340:20;9331:29;;9369:30;9393:5;9369:30;:::i;:::-;9272:133;;;;:::o;9411:678::-;9501:6;9509;9558:2;9546:9;9537:7;9533:23;9529:32;9526:119;;;9564:79;;:::i;:::-;9526:119;9712:1;9701:9;9697:17;9684:31;9742:18;9734:6;9731:30;9728:117;;;9764:79;;:::i;:::-;9728:117;9869:78;9939:7;9930:6;9919:9;9915:22;9869:78;:::i;:::-;9859:88;;9655:302;9996:2;10022:50;10064:7;10055:6;10044:9;10040:22;10022:50;:::i;:::-;10012:60;;9967:115;9411:678;;;;;:::o;10095:474::-;10163:6;10171;10220:2;10208:9;10199:7;10195:23;10191:32;10188:119;;;10226:79;;:::i;:::-;10188:119;10346:1;10371:53;10416:7;10407:6;10396:9;10392:22;10371:53;:::i;:::-;10361:63;;10317:117;10473:2;10499:53;10544:7;10535:6;10524:9;10520:22;10499:53;:::i;:::-;10489:63;;10444:118;10095:474;;;;;:::o;10575:180::-;10623:77;10620:1;10613:88;10720:4;10717:1;10710:15;10744:4;10741:1;10734:15;10761:320;10805:6;10842:1;10836:4;10832:12;10822:22;;10889:1;10883:4;10879:12;10910:18;10900:81;;10966:4;10958:6;10954:17;10944:27;;10900:81;11028:2;11020:6;11017:14;10997:18;10994:38;10991:84;;11047:18;;:::i;:::-;10991:84;10812:269;10761:320;;;:::o;11087:227::-;11227:34;11223:1;11215:6;11211:14;11204:58;11296:10;11291:2;11283:6;11279:15;11272:35;11087:227;:::o;11320:366::-;11462:3;11483:67;11547:2;11542:3;11483:67;:::i;:::-;11476:74;;11559:93;11648:3;11559:93;:::i;:::-;11677:2;11672:3;11668:12;11661:19;;11320:366;;;:::o;11692:419::-;11858:4;11896:2;11885:9;11881:18;11873:26;;11945:9;11939:4;11935:20;11931:1;11920:9;11916:17;11909:47;11973:131;12099:4;11973:131;:::i;:::-;11965:139;;11692:419;;;:::o;12117:180::-;12165:77;12162:1;12155:88;12262:4;12259:1;12252:15;12286:4;12283:1;12276:15;12303:191;12343:3;12362:20;12380:1;12362:20;:::i;:::-;12357:25;;12396:20;12414:1;12396:20;:::i;:::-;12391:25;;12439:1;12436;12432:9;12425:16;;12460:3;12457:1;12454:10;12451:36;;;12467:18;;:::i;:::-;12451:36;12303:191;;;;:::o;12500:180::-;12640:32;12636:1;12628:6;12624:14;12617:56;12500:180;:::o;12686:366::-;12828:3;12849:67;12913:2;12908:3;12849:67;:::i;:::-;12842:74;;12925:93;13014:3;12925:93;:::i;:::-;13043:2;13038:3;13034:12;13027:19;;12686:366;;;:::o;13058:419::-;13224:4;13262:2;13251:9;13247:18;13239:26;;13311:9;13305:4;13301:20;13297:1;13286:9;13282:17;13275:47;13339:131;13465:4;13339:131;:::i;:::-;13331:139;;13058:419;;;:::o;13483:224::-;13623:34;13619:1;13611:6;13607:14;13600:58;13692:7;13687:2;13679:6;13675:15;13668:32;13483:224;:::o;13713:366::-;13855:3;13876:67;13940:2;13935:3;13876:67;:::i;:::-;13869:74;;13952:93;14041:3;13952:93;:::i;:::-;14070:2;14065:3;14061:12;14054:19;;13713:366;;;:::o;14085:419::-;14251:4;14289:2;14278:9;14274:18;14266:26;;14338:9;14332:4;14328:20;14324:1;14313:9;14309:17;14302:47;14366:131;14492:4;14366:131;:::i;:::-;14358:139;;14085:419;;;:::o;14510:180::-;14558:77;14555:1;14548:88;14655:4;14652:1;14645:15;14679:4;14676:1;14669:15;14696:233;14735:3;14758:24;14776:5;14758:24;:::i;:::-;14749:33;;14804:66;14797:5;14794:77;14791:103;;14874:18;;:::i;:::-;14791:103;14921:1;14914:5;14910:13;14903:20;;14696:233;;;:::o;14935:225::-;15075:34;15071:1;15063:6;15059:14;15052:58;15144:8;15139:2;15131:6;15127:15;15120:33;14935:225;:::o;15166:366::-;15308:3;15329:67;15393:2;15388:3;15329:67;:::i;:::-;15322:74;;15405:93;15494:3;15405:93;:::i;:::-;15523:2;15518:3;15514:12;15507:19;;15166:366;;;:::o;15538:419::-;15704:4;15742:2;15731:9;15727:18;15719:26;;15791:9;15785:4;15781:20;15777:1;15766:9;15762:17;15755:47;15819:131;15945:4;15819:131;:::i;:::-;15811:139;;15538:419;;;:::o;15963:223::-;16103:34;16099:1;16091:6;16087:14;16080:58;16172:6;16167:2;16159:6;16155:15;16148:31;15963:223;:::o;16192:366::-;16334:3;16355:67;16419:2;16414:3;16355:67;:::i;:::-;16348:74;;16431:93;16520:3;16431:93;:::i;:::-;16549:2;16544:3;16540:12;16533:19;;16192:366;;;:::o;16564:419::-;16730:4;16768:2;16757:9;16753:18;16745:26;;16817:9;16811:4;16807:20;16803:1;16792:9;16788:17;16781:47;16845:131;16971:4;16845:131;:::i;:::-;16837:139;;16564:419;;;:::o;16989:221::-;17129:34;17125:1;17117:6;17113:14;17106:58;17198:4;17193:2;17185:6;17181:15;17174:29;16989:221;:::o;17216:366::-;17358:3;17379:67;17443:2;17438:3;17379:67;:::i;:::-;17372:74;;17455:93;17544:3;17455:93;:::i;:::-;17573:2;17568:3;17564:12;17557:19;;17216:366;;;:::o;17588:419::-;17754:4;17792:2;17781:9;17777:18;17769:26;;17841:9;17835:4;17831:20;17827:1;17816:9;17812:17;17805:47;17869:131;17995:4;17869:131;:::i;:::-;17861:139;;17588:419;;;:::o;18013:176::-;18153:28;18149:1;18141:6;18137:14;18130:52;18013:176;:::o;18195:366::-;18337:3;18358:67;18422:2;18417:3;18358:67;:::i;:::-;18351:74;;18434:93;18523:3;18434:93;:::i;:::-;18552:2;18547:3;18543:12;18536:19;;18195:366;;;:::o;18567:419::-;18733:4;18771:2;18760:9;18756:18;18748:26;;18820:9;18814:4;18810:20;18806:1;18795:9;18791:17;18784:47;18848:131;18974:4;18848:131;:::i;:::-;18840:139;;18567:419;;;:::o;18992:235::-;19132:34;19128:1;19120:6;19116:14;19109:58;19201:18;19196:2;19188:6;19184:15;19177:43;18992:235;:::o;19233:366::-;19375:3;19396:67;19460:2;19455:3;19396:67;:::i;:::-;19389:74;;19472:93;19561:3;19472:93;:::i;:::-;19590:2;19585:3;19581:12;19574:19;;19233:366;;;:::o;19605:419::-;19771:4;19809:2;19798:9;19794:18;19786:26;;19858:9;19852:4;19848:20;19844:1;19833:9;19829:17;19822:47;19886:131;20012:4;19886:131;:::i;:::-;19878:139;;19605:419;;;:::o;20030:410::-;20070:7;20093:20;20111:1;20093:20;:::i;:::-;20088:25;;20127:20;20145:1;20127:20;:::i;:::-;20122:25;;20182:1;20179;20175:9;20204:30;20222:11;20204:30;:::i;:::-;20193:41;;20383:1;20374:7;20370:15;20367:1;20364:22;20344:1;20337:9;20317:83;20294:139;;20413:18;;:::i;:::-;20294:139;20078:362;20030:410;;;;:::o;20446:180::-;20494:77;20491:1;20484:88;20591:4;20588:1;20581:15;20615:4;20612:1;20605:15;20632:185;20672:1;20689:20;20707:1;20689:20;:::i;:::-;20684:25;;20723:20;20741:1;20723:20;:::i;:::-;20718:25;;20762:1;20752:35;;20767:18;;:::i;:::-;20752:35;20809:1;20806;20802:9;20797:14;;20632:185;;;;:::o;20823:194::-;20863:4;20883:20;20901:1;20883:20;:::i;:::-;20878:25;;20917:20;20935:1;20917:20;:::i;:::-;20912:25;;20961:1;20958;20954:9;20946:17;;20985:1;20979:4;20976:11;20973:37;;;20990:18;;:::i;:::-;20973:37;20823:194;;;;:::o;21023:182::-;21163:34;21159:1;21151:6;21147:14;21140:58;21023:182;:::o;21211:366::-;21353:3;21374:67;21438:2;21433:3;21374:67;:::i;:::-;21367:74;;21450:93;21539:3;21450:93;:::i;:::-;21568:2;21563:3;21559:12;21552:19;;21211:366;;;:::o;21583:419::-;21749:4;21787:2;21776:9;21772:18;21764:26;;21836:9;21830:4;21826:20;21822:1;21811:9;21807:17;21800:47;21864:131;21990:4;21864:131;:::i;:::-;21856:139;;21583:419;;;:::o;22008:224::-;22148:34;22144:1;22136:6;22132:14;22125:58;22217:7;22212:2;22204:6;22200:15;22193:32;22008:224;:::o;22238:366::-;22380:3;22401:67;22465:2;22460:3;22401:67;:::i;:::-;22394:74;;22477:93;22566:3;22477:93;:::i;:::-;22595:2;22590:3;22586:12;22579:19;;22238:366;;;:::o;22610:419::-;22776:4;22814:2;22803:9;22799:18;22791:26;;22863:9;22857:4;22853:20;22849:1;22838:9;22834:17;22827:47;22891:131;23017:4;22891:131;:::i;:::-;22883:139;;22610:419;;;:::o;23035:222::-;23175:34;23171:1;23163:6;23159:14;23152:58;23244:5;23239:2;23231:6;23227:15;23220:30;23035:222;:::o;23263:366::-;23405:3;23426:67;23490:2;23485:3;23426:67;:::i;:::-;23419:74;;23502:93;23591:3;23502:93;:::i;:::-;23620:2;23615:3;23611:12;23604:19;;23263:366;;;:::o;23635:419::-;23801:4;23839:2;23828:9;23824:18;23816:26;;23888:9;23882:4;23878:20;23874:1;23863:9;23859:17;23852:47;23916:131;24042:4;23916:131;:::i;:::-;23908:139;;23635:419;;;:::o;24060:225::-;24200:34;24196:1;24188:6;24184:14;24177:58;24269:8;24264:2;24256:6;24252:15;24245:33;24060:225;:::o;24291:366::-;24433:3;24454:67;24518:2;24513:3;24454:67;:::i;:::-;24447:74;;24530:93;24619:3;24530:93;:::i;:::-;24648:2;24643:3;24639:12;24632:19;;24291:366;;;:::o;24663:419::-;24829:4;24867:2;24856:9;24852:18;24844:26;;24916:9;24910:4;24906:20;24902:1;24891:9;24887:17;24880:47;24944:131;25070:4;24944:131;:::i;:::-;24936:139;;24663:419;;;:::o;25088:85::-;25133:7;25162:5;25151:16;;25088:85;;;:::o;25179:158::-;25237:9;25270:61;25288:42;25297:32;25323:5;25297:32;:::i;:::-;25288:42;:::i;:::-;25270:61;:::i;:::-;25257:74;;25179:158;;;:::o;25343:147::-;25438:45;25477:5;25438:45;:::i;:::-;25433:3;25426:58;25343:147;;:::o;25496:114::-;25563:6;25597:5;25591:12;25581:22;;25496:114;;;:::o;25616:184::-;25715:11;25749:6;25744:3;25737:19;25789:4;25784:3;25780:14;25765:29;;25616:184;;;;:::o;25806:132::-;25873:4;25896:3;25888:11;;25926:4;25921:3;25917:14;25909:22;;25806:132;;;:::o;25944:108::-;26021:24;26039:5;26021:24;:::i;:::-;26016:3;26009:37;25944:108;;:::o;26058:179::-;26127:10;26148:46;26190:3;26182:6;26148:46;:::i;:::-;26226:4;26221:3;26217:14;26203:28;;26058:179;;;;:::o;26243:113::-;26313:4;26345;26340:3;26336:14;26328:22;;26243:113;;;:::o;26392:732::-;26511:3;26540:54;26588:5;26540:54;:::i;:::-;26610:86;26689:6;26684:3;26610:86;:::i;:::-;26603:93;;26720:56;26770:5;26720:56;:::i;:::-;26799:7;26830:1;26815:284;26840:6;26837:1;26834:13;26815:284;;;26916:6;26910:13;26943:63;27002:3;26987:13;26943:63;:::i;:::-;26936:70;;27029:60;27082:6;27029:60;:::i;:::-;27019:70;;26875:224;26862:1;26859;26855:9;26850:14;;26815:284;;;26819:14;27115:3;27108:10;;26516:608;;;26392:732;;;;:::o;27130:831::-;27393:4;27431:3;27420:9;27416:19;27408:27;;27445:71;27513:1;27502:9;27498:17;27489:6;27445:71;:::i;:::-;27526:80;27602:2;27591:9;27587:18;27578:6;27526:80;:::i;:::-;27653:9;27647:4;27643:20;27638:2;27627:9;27623:18;27616:48;27681:108;27784:4;27775:6;27681:108;:::i;:::-;27673:116;;27799:72;27867:2;27856:9;27852:18;27843:6;27799:72;:::i;:::-;27881:73;27949:3;27938:9;27934:19;27925:6;27881:73;:::i;:::-;27130:831;;;;;;;;:::o;27967:332::-;28088:4;28126:2;28115:9;28111:18;28103:26;;28139:71;28207:1;28196:9;28192:17;28183:6;28139:71;:::i;:::-;28220:72;28288:2;28277:9;28273:18;28264:6;28220:72;:::i;:::-;27967:332;;;;;:::o;28305:181::-;28445:33;28441:1;28433:6;28429:14;28422:57;28305:181;:::o;28492:366::-;28634:3;28655:67;28719:2;28714:3;28655:67;:::i;:::-;28648:74;;28731:93;28820:3;28731:93;:::i;:::-;28849:2;28844:3;28840:12;28833:19;;28492:366;;;:::o;28864:419::-;29030:4;29068:2;29057:9;29053:18;29045:26;;29117:9;29111:4;29107:20;29103:1;29092:9;29088:17;29081:47;29145:131;29271:4;29145:131;:::i;:::-;29137:139;;28864:419;;;:::o
Swarm Source
ipfs://5da5b04f8d52a02c24c7bf5771b66a341ff7dc75bc916848686b3c08ff1024bd
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.