Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 2,605 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 22659820 | 36 mins ago | IN | 0 ETH | 0.0000332 | ||||
Approve | 22659022 | 3 hrs ago | IN | 0 ETH | 0.00017162 | ||||
Approve | 22658618 | 4 hrs ago | IN | 0 ETH | 0.00004381 | ||||
Approve | 22658198 | 6 hrs ago | IN | 0 ETH | 0.00004387 | ||||
Approve | 22655801 | 14 hrs ago | IN | 0 ETH | 0.00006757 | ||||
Approve | 22653835 | 20 hrs ago | IN | 0 ETH | 0.00029661 | ||||
Approve | 22653451 | 21 hrs ago | IN | 0 ETH | 0.00021062 | ||||
Approve | 22652793 | 24 hrs ago | IN | 0 ETH | 0.00015005 | ||||
Approve | 22652134 | 26 hrs ago | IN | 0 ETH | 0.00008634 | ||||
Approve | 22652017 | 26 hrs ago | IN | 0 ETH | 0.00007816 | ||||
Approve | 22650345 | 32 hrs ago | IN | 0 ETH | 0.00005774 | ||||
Approve | 22648925 | 37 hrs ago | IN | 0 ETH | 0.00012536 | ||||
Transfer | 22648565 | 38 hrs ago | IN | 0 ETH | 0.00061808 | ||||
Approve | 22648197 | 39 hrs ago | IN | 0 ETH | 0.00013562 | ||||
Transfer | 22648119 | 39 hrs ago | IN | 0 ETH | 0.00016444 | ||||
Approve | 22648050 | 40 hrs ago | IN | 0 ETH | 0.00013594 | ||||
Approve | 22647890 | 40 hrs ago | IN | 0 ETH | 0.00007757 | ||||
Approve | 22647491 | 41 hrs ago | IN | 0 ETH | 0.00030395 | ||||
Approve | 22647426 | 42 hrs ago | IN | 0 ETH | 0.00479917 | ||||
Approve | 22647289 | 42 hrs ago | IN | 0 ETH | 0.00031206 | ||||
Approve | 22646934 | 43 hrs ago | IN | 0 ETH | 0.00026704 | ||||
Approve | 22646927 | 43 hrs ago | IN | 0 ETH | 0.00026422 | ||||
Approve | 22646920 | 43 hrs ago | IN | 0 ETH | 0.00014735 | ||||
Approve | 22646912 | 43 hrs ago | IN | 0 ETH | 0.00030246 | ||||
Approve | 22646782 | 44 hrs ago | IN | 0 ETH | 0.00024633 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 22659023 | 3 hrs ago | 0.16051888 ETH | ||||
Transfer | 22659023 | 3 hrs ago | 0.16538308 ETH | ||||
Transfer | 22659023 | 3 hrs ago | 0.16051888 ETH | ||||
Transfer | 22659023 | 3 hrs ago | 0.48642085 ETH | ||||
Transfer | 22653924 | 20 hrs ago | 0.1484169 ETH | ||||
Transfer | 22653924 | 20 hrs ago | 0.15291438 ETH | ||||
Transfer | 22653924 | 20 hrs ago | 0.1484169 ETH | ||||
Transfer | 22653924 | 20 hrs ago | 0.4497482 ETH | ||||
Transfer | 22653391 | 22 hrs ago | 0.16248814 ETH | ||||
Transfer | 22653391 | 22 hrs ago | 0.16741203 ETH | ||||
Transfer | 22653391 | 22 hrs ago | 0.16248814 ETH | ||||
Transfer | 22653391 | 22 hrs ago | 0.49238832 ETH | ||||
Transfer | 22651880 | 27 hrs ago | 0.16654961 ETH | ||||
Transfer | 22651880 | 27 hrs ago | 0.17159657 ETH | ||||
Transfer | 22651880 | 27 hrs ago | 0.16654961 ETH | ||||
Transfer | 22651880 | 27 hrs ago | 0.50469579 ETH | ||||
Transfer | 22648921 | 37 hrs ago | 0.18379405 ETH | ||||
Transfer | 22648921 | 37 hrs ago | 0.18936357 ETH | ||||
Transfer | 22648921 | 37 hrs ago | 0.18379405 ETH | ||||
Transfer | 22648921 | 37 hrs ago | 0.55695168 ETH | ||||
Transfer | 22648404 | 38 hrs ago | 0.15891437 ETH | ||||
Transfer | 22648404 | 38 hrs ago | 0.16372996 ETH | ||||
Transfer | 22648404 | 38 hrs ago | 0.15891437 ETH | ||||
Transfer | 22648404 | 38 hrs ago | 0.4815587 ETH | ||||
Transfer | 22648218 | 39 hrs ago | 0.163664 ETH |
Loading...
Loading
Contract Name:
NKP
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** *Submitted for verification at Etherscan.io on 2024-09-18 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.21; pragma experimental ABIEncoderV2; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; abstract contract Ownable { address private _owner; constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _owner = address(0); } } library SafeERC20 { function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED'); } } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external; function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); } interface IWhitelistManager { function isWhitelisted(address) external view returns (bool); } contract NKP is Ownable, ReentrancyGuard { string private constant _name = unicode"NonKyotoProtocol"; // string private constant _symbol = unicode"NKP"; // uint256 private constant _totalSupply = 1_000_000_000 * 1e18; // uint256 private constant MAX_SWAP_SLIPPAGE_PCT = 20; uint256 private constant MIN_LIQUIDITY_ETH = 10 ether; uint256 public maxTransactionAmount = 100_000 * 1e18; // uint256 public maxWallet = 100_000 * 1e18; // uint256 public swapTokensAtAmount = 500_000 * 1e18; // address private revWallet = 0xC39E0B56ae2341484100024234263814dC8953D6; // address private treasuryWallet = 0xA492d6AdB1B2E7395B0731567cA29fCf9252232E; // address private teamWallet = 0xce66d115571B844291DB1f292aBd2eEf1a21e11a; // address private seedWallet = 0x4db17f9b1253776747c5Ae65E6BCBA7bfA083749; // address private bizDevWallet = 0x62b3C685957A44A79D5E0BDDe6Eeab9Ef5bD6e7f; // address private marketingWallet = 0xcfb7D34a36ab927e6BD30CC91D11Ce3C7A8Eb439; // address private partnershipWallet = 0x77A9e5a39F85009FC27175740B7dBE4334CD6c23; // address private ecosystemWallet = 0x8cC99e883a43913C155FEafc04C6a0a229342b42; // address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // uint8 public buyTotalFees = 50; uint8 public sellTotalFees = 50; uint8 public revFee = 33; uint8 public treasuryFee = 34; uint8 public bizDevFee = 33; bool private swapping; bool public limitsInEffect = true; bool private launched; IWhitelistManager public whitelistManager; uint256 public launchTimestamp; uint256 private constant WHITELIST_DURATION = 15 minutes; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 revETH, uint256 TreasuryETH); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public immutable uniswapV2Pair; constructor() { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH); automatedMarketMakerPairs[uniswapV2Pair] = true; setExcludedFromFees(owner(), true); setExcludedFromFees(address(0xdead), true); setExcludedFromFees(revWallet, true); setExcludedFromMaxTransaction(owner(), true); setExcludedFromMaxTransaction(address(uniswapV2Router), true); setExcludedFromMaxTransaction(address(0xdead), true); setExcludedFromMaxTransaction(address(uniswapV2Pair), true); setExcludedFromMaxTransaction(revWallet, true); // Treasury -> %15 setExcludedFromFees(treasuryWallet, true); setExcludedFromMaxTransaction(treasuryWallet, true); _balances[treasuryWallet] = 150_000_000 * 1e18; emit Transfer(address(0), treasuryWallet, _balances[treasuryWallet]); // Partnership -> %10 setExcludedFromFees(partnershipWallet, true); setExcludedFromMaxTransaction(partnershipWallet, true); _balances[partnershipWallet] = 100_000_000 * 1e18; emit Transfer(address(0), partnershipWallet, _balances[partnershipWallet]); // Marketing -> %10 setExcludedFromFees(marketingWallet, true); setExcludedFromMaxTransaction(marketingWallet, true); _balances[marketingWallet] = 100_000_000 * 1e18; emit Transfer(address(0), marketingWallet, _balances[marketingWallet]); // Ecosystem -> %5 setExcludedFromFees(ecosystemWallet, true); setExcludedFromMaxTransaction(ecosystemWallet, true); _balances[ecosystemWallet] = 50_000_000 * 1e18; emit Transfer(address(0), ecosystemWallet, _balances[ecosystemWallet]); // Team -> %20 setExcludedFromFees(teamWallet, true); setExcludedFromMaxTransaction(teamWallet, true); _balances[teamWallet] = 200_000_000 * 1e18; emit Transfer(address(0), teamWallet, _balances[teamWallet]); // Seed -> %5 setExcludedFromFees(seedWallet, true); setExcludedFromMaxTransaction(seedWallet, true); _balances[seedWallet] = 50_000_000 * 1e18; emit Transfer(address(0), seedWallet, _balances[seedWallet]); // BizDev -> %0 setExcludedFromFees(bizDevWallet, true); setExcludedFromMaxTransaction(bizDevWallet, true); _balances[bizDevWallet] = 0 * 1e18; emit Transfer(address(0), bizDevWallet, _balances[bizDevWallet]); // LP -> 35% setExcludedFromFees(address(this), true); setExcludedFromMaxTransaction(address(this), true); _balances[address(this)] = 350_000_000 * 1e18; emit Transfer(address(0), address(this), _balances[address(this)]); _approve(address(this), address(uniswapV2Router), type(uint256).max); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return 18; } function totalSupply() public pure returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { 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 transfer(address recipient, uint256 amount) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function setWhitelistManager(address mgr) external onlyOwner { require(address(whitelistManager) == address(0), "WhitelistManager already set"); whitelistManager = IWhitelistManager(mgr); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (!launched && (from != owner() && from != address(this) && to != owner())) { revert("Trading not enabled"); } if(launched && block.timestamp <= launchTimestamp + WHITELIST_DURATION && address(whitelistManager)!=address(0)){ if(automatedMarketMakerPairs[from]) require(whitelistManager.isWhitelisted(to),"Buyer not whitelisted"); else if(automatedMarketMakerPairs[to]) require(whitelistManager.isWhitelisted(from),"Seller not whitelisted"); } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx"); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx"); } else if (!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 1000; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 1000; } if (fees > 0) { unchecked { amount = amount - fees; _balances[from] -= fees; _balances[address(this)] += fees; } emit Transfer(from, address(this), fees); } } unchecked { _balances[from] -= amount; _balances[to] += amount; } emit Transfer(from, to, amount); } function removeLimits() external onlyOwner { limitsInEffect = false; } function setDistributionFees(uint8 _RevFee, uint8 _TreasuryFee, uint8 _BizDevFee) external onlyOwner { revFee = _RevFee; treasuryFee = _TreasuryFee; bizDevFee = _BizDevFee; require((revFee + treasuryFee + bizDevFee) == 100, "Distribution have to be equal to 100%"); } function setFees(uint8 _buyTotalFees, uint8 _sellTotalFees) external onlyOwner { require(_buyTotalFees <= 50, "Buy fees must be less than or equal to 5%"); require(_sellTotalFees <= 50, "Sell fees must be less than or equal to 5%"); buyTotalFees = _buyTotalFees; sellTotalFees = _sellTotalFees; } function setExcludedFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner { _isExcludedMaxTransactionAmount[account] = excluded; } function airdropWallets(address[] memory addresses, uint256[] memory amounts) external onlyOwner { require(!launched, "Already launched"); require(addresses.length == amounts.length, "Arrays length mismatch"); for (uint256 i = 0; i < addresses.length; i++) { require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance"); _balances[addresses[i]] += amounts[i]; _balances[msg.sender] -= amounts[i]; emit Transfer(msg.sender, addresses[i], amounts[i]); } } function openTrade() external onlyOwner { require(!launched, "Already launched"); require(address(whitelistManager) != address(0), "WL not set"); launched = true; launchTimestamp = block.timestamp; } function AddUniswapLiquidity() external payable onlyOwner { require(!launched, "Already launched"); require(msg.value >= MIN_LIQUIDITY_ETH, "Liquidity: need >= 10 ETH"); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), _balances[address(this)], 0, 0, treasuryWallet, block.timestamp ); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed"); automatedMarketMakerPairs[pair] = value; } function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner { require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply"); require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply"); swapTokensAtAmount = newSwapAmount; } function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner { require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%"); maxTransactionAmount = newMaxTx * (10**18); } function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner { require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%"); maxWallet = newMaxWallet * (10**18); } function updateRevWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); revWallet = newAddress; } function updateTreasuryWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); treasuryWallet = newAddress; } function updateTeamWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); teamWallet = newAddress; } function excludedFromFee(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function withdrawStuckToken(address token, address to) external onlyOwner { uint256 _contractBalance = IERC20(token).balanceOf(address(this)); SafeERC20.safeTransfer(token, to, _contractBalance); } function withdrawStuckETH(address addr) external onlyOwner { require(addr != address(0), "Invalid address"); (bool success, ) = addr.call{value: address(this).balance}(""); require(success, "Withdrawal failed"); } function swapBack() private nonReentrant { uint256 swapThreshold = swapTokensAtAmount; bool success; if (balanceOf(address(this)) > swapTokensAtAmount * 20) { swapThreshold = swapTokensAtAmount * 20; } address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 quotedEth = uniswapV2Router.getAmountsOut(swapThreshold, path)[1]; if (quotedEth == 0) return; // pool too thin uint256 minOut = quotedEth * (100 - MAX_SWAP_SLIPPAGE_PCT) / 100; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, minOut, path, address(this), block.timestamp); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { uint256 ethForRev = (ethBalance * revFee) / 100; uint256 ethForTeam = (ethBalance * bizDevFee) / 100; uint256 ethForTreasury = ethBalance - ethForRev - ethForTeam; (success, ) = address(teamWallet).call{value: ethForTeam}(""); (success, ) = address(treasuryWallet).call{value: ethForTreasury}(""); (success, ) = address(revWallet).call{value: ethForRev}(""); emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRev, ethForTreasury); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [] }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"TreasuryETH","type":"uint256"}],"name":"SwapAndLiquify","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":"AddUniswapLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bizDevFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_TreasuryFee","type":"uint8"},{"internalType":"uint8","name":"_BizDevFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mgr","type":"address"}],"name":"setWhitelistManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"treasuryFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistManager","outputs":[{"internalType":"contract IWhitelistManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405269152d02c7e14af680000060025569152d02c7e14af68000006003556969e10de76676d080000060045573c39e0b56ae2341484100024234263814dc8953d660055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a492d6adb1b2e7395b0731567ca29fcf9252232e60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ce66d115571b844291db1f292abd2eef1a21e11a60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734db17f9b1253776747c5ae65e6bcba7bfa08374960085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507362b3c685957a44a79d5e0bdde6eeab9ef5bd6e7f60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cfb7d34a36ab927e6bd30cc91d11ce3c7a8eb439600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507377a9e5a39f85009fc27175740b7dbe4334cd6c23600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738cc99e883a43913c155feafc04c6a0a229342b42600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506032600c60146101000a81548160ff021916908360ff1602179055506032600c60156101000a81548160ff021916908360ff1602179055506021600c60166101000a81548160ff021916908360ff1602179055506022600c60176101000a81548160ff021916908360ff1602179055506021600c60186101000a81548160ff021916908360ff1602179055506001600c601a6101000a81548160ff02191690831515021790555034801562000381575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000426573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200044c919062001800565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b81526004016200049c92919062001841565b6020604051808303815f875af1158015620004b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004df919062001800565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160135f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200058b6200057d620013f960201b60201c565b60016200142060201b60201c565b620005a061dead60016200142060201b60201c565b620005d460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b620005f6620005e8620013f960201b60201c565b6001620014f860201b60201c565b6200061d737a250d5630b4cf539739df2c5dacb4c659f2488d6001620014f860201b60201c565b6200063261dead6001620014f860201b60201c565b620006476080516001620014f860201b60201c565b6200067b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b620006af60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b620006e360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b6a7c13bc4b2c133c56000000600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200082f919062001886565b60405180910390a36200086b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b6200089f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b6a52b7d2dcc80cd2e4000000600f5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620009eb919062001886565b60405180910390a362000a27600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b62000a5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b6a52b7d2dcc80cd2e4000000600f5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000ba7919062001886565b60405180910390a362000be3600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b62000c17600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b6a295be96e64066972000000600f5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000d63919062001886565b60405180910390a362000d9f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b62000dd360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b6aa56fa5b99019a5c8000000600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000f1f919062001886565b60405180910390a362000f5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b62000f8f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b6a295be96e64066972000000600f5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620010db919062001886565b60405180910390a36200111760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200142060201b60201c565b6200114b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620014f860201b60201c565b5f600f5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200128c919062001886565b60405180910390a3620012a73060016200142060201b60201c565b620012ba306001620014f860201b60201c565b6b0121836204bc2ce21e000000600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620013a4919062001886565b60405180910390a3620013f330737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620015d060201b60201c565b62001a47565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1662001447620013f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620014a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200149790620018ff565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff166200151f620013f960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462001578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200156f90620018ff565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362001641576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620016389062001993565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620016b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620016a99062001a27565b60405180910390fd5b8060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200178e919062001886565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620017ca826200179f565b9050919050565b620017dc81620017be565b8114620017e7575f80fd5b50565b5f81519050620017fa81620017d1565b92915050565b5f602082840312156200181857620018176200179b565b5b5f6200182784828501620017ea565b91505092915050565b6200183b81620017be565b82525050565b5f604082019050620018565f83018562001830565b62001865602083018462001830565b9392505050565b5f819050919050565b62001880816200186c565b82525050565b5f6020820190506200189b5f83018462001875565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620018e7602083620018a1565b9150620018f482620018b1565b602082019050919050565b5f6020820190508181035f8301526200191881620018d9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6200197b602483620018a1565b915062001988826200191f565b604082019050919050565b5f6020820190508181035f830152620019ac816200196d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62001a0f602283620018a1565b915062001a1c82620019b3565b604082019050919050565b5f6020820190508181035f83015262001a408162001a01565b9050919050565b608051615a7f62001a675f395f81816110e50152611b5e0152615a7f5ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063bc205ad3116100b5578063d85ba06311610079578063d85ba06314610872578063dd62ed3e1461089c578063e2f45605146108d8578063e710794714610902578063f8b45b051461092a578063fb201b1d1461095457610266565b8063bc205ad3146107a4578063bcfa9287146107cc578063c8c8ebe4146107f6578063cc32d17614610820578063d201b01e1461084a57610266565b806385ecafd71161010757806385ecafd7146106885780638da5cb5b146106c457806395d89b41146106ee5780639a7a23d614610718578063a9059cbb14610740578063adfa29e51461077c57610266565b8063715018a6146105e457806374010ece146105fa578063751039fc146106225780637cb332bb14610638578063809d458d1461066057610266565b80633c090c46116101dc578063590ffdce116101a0578063590ffdce146104dc5780636402511e1461050457806365cf7c9b1461052c57806366650dae146105565780636a486a8e1461057e57806370a08231146105a857610266565b80633c090c461461041057806341a494091461043857806349bd5a5e146104605780634a62bb651461048a5780634fcd2446146104b457610266565b806323b872dd1161022357806323b872dd1461034e57806326563b401461038a57806327a14fc2146103b45780632ec64b6c146103dc578063313ce567146103e657610266565b806306fdde031461026a578063095ea7b3146102945780631694505e146102d057806318160ddd146102fa57806321d37e391461032457610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e61096a565b60405161028b9190613d96565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613e54565b6109a7565b6040516102c79190613eac565b60405180910390f35b3480156102db575f80fd5b506102e46109bd565b6040516102f19190613f20565b60405180910390f35b348015610305575f80fd5b5061030e6109d5565b60405161031b9190613f48565b60405180910390f35b34801561032f575f80fd5b506103386109e8565b6040516103459190613f7c565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190613f95565b6109fb565b6040516103819190613eac565b60405180910390f35b348015610395575f80fd5b5061039e610b07565b6040516103ab9190614005565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d5919061401e565b610b2c565b005b6103e4610c34565b005b3480156103f1575f80fd5b506103fa610e40565b6040516104079190613f7c565b60405180910390f35b34801561041b575f80fd5b5061043660048036038101906104319190614073565b610e48565b005b348015610443575f80fd5b5061045e600480360381019061045991906140c3565b610f9c565b005b34801561046b575f80fd5b506104746110e3565b60405161048191906140fd565b60405180910390f35b348015610495575f80fd5b5061049e611107565b6040516104ab9190613eac565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d59190614116565b61111a565b005b3480156104e7575f80fd5b5061050260048036038101906104fd919061417e565b611257565b005b34801561050f575f80fd5b5061052a6004803603810190610525919061401e565b611324565b005b348015610537575f80fd5b5061054061146a565b60405161054d9190613f48565b60405180910390f35b348015610561575f80fd5b5061057c6004803603810190610577919061417e565b611470565b005b348015610589575f80fd5b5061059261153d565b60405161059f9190613f7c565b60405180910390f35b3480156105b3575f80fd5b506105ce60048036038101906105c991906140c3565b611550565b6040516105db9190613f48565b60405180910390f35b3480156105ef575f80fd5b506105f8611596565b005b348015610605575f80fd5b50610620600480360381019061061b919061401e565b61164c565b005b34801561062d575f80fd5b50610636611754565b005b348015610643575f80fd5b5061065e600480360381019061065991906140c3565b6117e5565b005b34801561066b575f80fd5b50610686600480360381019061068191906140c3565b61190b565b005b348015610693575f80fd5b506106ae60048036038101906106a991906140c3565b611a31565b6040516106bb9190613eac565b60405180910390f35b3480156106cf575f80fd5b506106d8611a83565b6040516106e591906140fd565b60405180910390f35b3480156106f9575f80fd5b50610702611aaa565b60405161070f9190613d96565b60405180910390f35b348015610723575f80fd5b5061073e6004803603810190610739919061417e565b611ae7565b005b34801561074b575f80fd5b5061076660048036038101906107619190613e54565b611c42565b6040516107739190613eac565b60405180910390f35b348015610787575f80fd5b506107a2600480360381019061079d91906140c3565b611c58565b005b3480156107af575f80fd5b506107ca60048036038101906107c591906141bc565b611d7e565b005b3480156107d7575f80fd5b506107e0611e7e565b6040516107ed9190613f7c565b60405180910390f35b348015610801575f80fd5b5061080a611e91565b6040516108179190613f48565b60405180910390f35b34801561082b575f80fd5b50610834611e97565b6040516108419190613f7c565b60405180910390f35b348015610855575f80fd5b50610870600480360381019061086b91906140c3565b611eaa565b005b34801561087d575f80fd5b50610886612039565b6040516108939190613f7c565b60405180910390f35b3480156108a7575f80fd5b506108c260048036038101906108bd91906141bc565b61204c565b6040516108cf9190613f48565b60405180910390f35b3480156108e3575f80fd5b506108ec6120ce565b6040516108f99190613f48565b60405180910390f35b34801561090d575f80fd5b50610928600480360381019061092391906143fa565b6120d4565b005b348015610935575f80fd5b5061093e612427565b60405161094b9190613f48565b60405180910390f35b34801561095f575f80fd5b5061096861242d565b005b60606040518060400160405280601081526020017f4e6f6e4b796f746f50726f746f636f6c00000000000000000000000000000000815250905090565b5f6109b33384846125a5565b6001905092915050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f6b033b2e3c9fd0803ce8000000905090565b600c60169054906101000a900460ff1681565b5f8060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610af05782811015610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad9906144e0565b60405180910390fd5b610aef85338584036125a5565b5b610afb858585612768565b60019150509392505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610b4b611a83565b73ffffffffffffffffffffffffffffffffffffffff1614610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890614548565b60405180910390fd5b670de0b6b3a76400006103e86001610bb76109d5565b610bc19190614593565b610bcb9190614601565b610bd59190614601565b811015610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e906146a1565b60405180910390fd5b670de0b6b3a764000081610c2b9190614593565b60038190555050565b3373ffffffffffffffffffffffffffffffffffffffff16610c53611a83565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090614548565b60405180910390fd5b600c601b9054906101000a900460ff1615610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090614709565b60405180910390fd5b678ac7230489e80000341015610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90614771565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7193430600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20545f8060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610dfa969594939291906147c8565b60606040518083038185885af1158015610e16573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3b919061483b565b505050565b5f6012905090565b3373ffffffffffffffffffffffffffffffffffffffff16610e67611a83565b73ffffffffffffffffffffffffffffffffffffffff1614610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb490614548565b60405180910390fd5b82600c60166101000a81548160ff021916908360ff16021790555081600c60176101000a81548160ff021916908360ff16021790555080600c60186101000a81548160ff021916908360ff1602179055506064600c60189054906101000a900460ff16600c60179054906101000a900460ff16600c60169054906101000a900460ff16610f4a919061488b565b610f54919061488b565b60ff1614610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8e9061492f565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610fbb611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790614997565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c601a9054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611139611a83565b73ffffffffffffffffffffffffffffffffffffffff161461118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690614548565b60405180910390fd5b60328260ff1611156111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90614a25565b60405180910390fd5b60328160ff16111561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490614ab3565b60405180910390fd5b81600c60146101000a81548160ff021916908360ff16021790555080600c60156101000a81548160ff021916908360ff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16611276611a83565b73ffffffffffffffffffffffffffffffffffffffff16146112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c390614548565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16611343611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090614548565b60405180910390fd5b620186a060016113a76109d5565b6113b19190614593565b6113bb9190614601565b8110156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490614b41565b60405180910390fd5b6103e8600561140a6109d5565b6114149190614593565b61141e9190614601565b811115611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145790614bcf565b60405180910390fd5b8060048190555050565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff1661148f611a83565b73ffffffffffffffffffffffffffffffffffffffff16146114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90614548565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c60159054906101000a900460ff1681565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166115b5611a83565b73ffffffffffffffffffffffffffffffffffffffff161461160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290614548565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1661166b611a83565b73ffffffffffffffffffffffffffffffffffffffff16146116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890614548565b60405180910390fd5b670de0b6b3a76400006103e860016116d76109d5565b6116e19190614593565b6116eb9190614601565b6116f59190614601565b811015611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90614c5d565b60405180910390fd5b670de0b6b3a76400008161174b9190614593565b60028190555050565b3373ffffffffffffffffffffffffffffffffffffffff16611773611a83565b73ffffffffffffffffffffffffffffffffffffffff16146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090614548565b60405180910390fd5b5f600c601a6101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff16611804611a83565b73ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90614cc5565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1661192a611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590614cc5565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4e4b500000000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff16611b06611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390614548565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190614d2d565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611c4e338484612768565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611c77611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc490614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290614cc5565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16611d9d611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614548565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e2d91906140fd565b602060405180830381865afa158015611e48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6c9190614d4b565b9050611e7983838361364f565b505050565b600c60189054906101000a900460ff1681565b60025481565b600c60179054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611ec9611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1690614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490614dc0565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff1647604051611fb290614e0b565b5f6040518083038185875af1925050503d805f8114611fec576040519150601f19603f3d011682016040523d82523d5f602084013e611ff1565b606091505b5050905080612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c90614e69565b60405180910390fd5b5050565b600c60149054906101000a900460ff1681565b5f60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff166120f3611a83565b73ffffffffffffffffffffffffffffffffffffffff1614612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214090614548565b60405180910390fd5b600c601b9054906101000a900460ff1615612199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219090614709565b60405180910390fd5b80518251146121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d490614ed1565b60405180910390fd5b5f5b8251811015612422578181815181106121fb576121fa614eef565b5b6020026020010151600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227990614f8c565b60405180910390fd5b81818151811061229557612294614eef565b5b6020026020010151600f5f8584815181106122b3576122b2614eef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123029190614faa565b9250508190555081818151811061231c5761231b614eef565b5b6020026020010151600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461236f9190614fdd565b9250508190555082818151811061238957612388614eef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484815181106123f2576123f1614eef565b5b60200260200101516040516124079190613f48565b60405180910390a3808061241a90615010565b9150506121df565b505050565b60035481565b3373ffffffffffffffffffffffffffffffffffffffff1661244c611a83565b73ffffffffffffffffffffffffffffffffffffffff16146124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614548565b60405180910390fd5b600c601b9054906101000a900460ff16156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614709565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612578906150a1565b60405180910390fd5b6001600c601b6101000a81548160ff02191690831515021790555042600e81905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a9061512f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612678906151bd565b60405180910390fd5b8060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161275b9190613f48565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cd9061524b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283b906152d9565b60405180910390fd5b5f8111612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d90615367565b60405180910390fd5b600c601b9054906101000a900460ff1615801561294d57506128a6611a83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561290d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561294c575061291c611a83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b1561298d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612984906153cf565b60405180910390fd5b600c601b9054906101000a900460ff1680156129b85750610384600e546129b49190614faa565b4211155b8015612a1157505f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15612c6c5760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b4257600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf836040518263ffffffff1660e01b8152600401612abf91906140fd565b602060405180830381865afa158015612ada573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612afe9190615401565b612b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3490615476565b60405180910390fd5b612c6b565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c6a57600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf846040518263ffffffff1660e01b8152600401612beb91906140fd565b602060405180830381865afa158015612c06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c2a9190615401565b612c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c60906154de565b60405180910390fd5b5b5b5b600c601a9054906101000a900460ff161561306257612c89611a83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf75750612cc7611a83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d69575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d825750600c60199054906101000a900460ff16155b156130615760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e24575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ecb57600254811115612e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e659061556c565b60405180910390fd5b600354612e7a83611550565b82612e859190614faa565b1115612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd906155d4565b60405180910390fd5b613060565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f68575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fb757600254811115612fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa990615662565b60405180910390fd5b61305f565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661305e5760035461301183611550565b8261301c9190614faa565b111561305d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613054906155d4565b60405180910390fd5b5b5b5b5b5b5f60045461306f30611550565b1015905080801561308d5750600c60199054906101000a900460ff16155b80156130e0575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613133575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613186575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131c9576001600c60196101000a81548160ff0219169083151502179055506131ae61379e565b5f600c60196101000a81548160ff0219169083151502179055505b5f600c60199054906101000a900460ff1615905060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613278575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613281575f90505b5f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fc90614f8c565b60405180910390fd5b5f821561354d5760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561337357505f600c60159054906101000a900460ff1660ff16115b156133aa576103e8600c60159054906101000a900460ff1660ff16866133999190614593565b6133a39190614601565b9050613445565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561341157505f600c60149054906101000a900460ff1660ff16115b15613444576103e8600c60149054906101000a900460ff1660ff16866134379190614593565b6134419190614601565b90505b5b5f81111561354c57808503945080600f5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254039250508190555080600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135439190613f48565b60405180910390a35b5b84600f5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254039250508190555084600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161363e9190613f48565b60405180910390a350505050505050565b5f808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401613683929190615680565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516136ed91906156e1565b5f604051808303815f865af19150503d805f8114613726576040519150601f19603f3d011682016040523d82523d5f602084013e61372b565b606091505b509150915081801561375857505f815114806137575750808060200190518101906137569190615401565b5b5b613797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378e90615767565b60405180910390fd5b5050505050565b6137a6613cb4565b5f60045490505f60146004546137bc9190614593565b6137c530611550565b11156137dd5760146004546137da9190614593565b91505b5f600267ffffffffffffffff8111156137f9576137f86141fe565b5b6040519080825280602002602001820160405280156138275781602001602082028036833780820191505090505b50905030815f8151811061383e5761383d614eef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106138a1576138a0614eef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85846040518363ffffffff1660e01b815260040161392b92919061583c565b5f60405180830381865afa158015613945573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061396d91906158ff565b6001815181106139805761397f614eef565b5b602002602001015190505f810361399a5750505050613caa565b5f6064601460646139ab9190614fdd565b836139b69190614593565b6139c09190614601565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94786838630426040518663ffffffff1660e01b8152600401613a17959493929190615946565b5f604051808303815f87803b158015613a2e575f80fd5b505af1158015613a40573d5f803e3d5ffd5b505050505f4790505f811115613ca3575f6064600c60169054906101000a900460ff1660ff1683613a719190614593565b613a7b9190614601565b90505f6064600c60189054906101000a900460ff1660ff1684613a9e9190614593565b613aa89190614601565b90505f818385613ab89190614fdd565b613ac29190614fdd565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613b0990614e0b565b5f6040518083038185875af1925050503d805f8114613b43576040519150601f19603f3d011682016040523d82523d5f602084013e613b48565b606091505b50508098505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b9390614e0b565b5f6040518083038185875af1925050503d805f8114613bcd576040519150601f19603f3d011682016040523d82523d5f602084013e613bd2565b606091505b50508098505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613c1d90614e0b565b5f6040518083038185875af1925050503d805f8114613c57576040519150601f19603f3d011682016040523d82523d5f602084013e613c5c565b606091505b5050809850507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f89838584604051613c97949392919061599e565b60405180910390a15050505b5050505050505b613cb2613d03565b565b600260015403613cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cf090615a2b565b60405180910390fd5b6002600181905550565b60018081905550565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613d43578082015181840152602081019050613d28565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613d6882613d0c565b613d728185613d16565b9350613d82818560208601613d26565b613d8b81613d4e565b840191505092915050565b5f6020820190508181035f830152613dae8184613d5e565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613df082613dc7565b9050919050565b613e0081613de6565b8114613e0a575f80fd5b50565b5f81359050613e1b81613df7565b92915050565b5f819050919050565b613e3381613e21565b8114613e3d575f80fd5b50565b5f81359050613e4e81613e2a565b92915050565b5f8060408385031215613e6a57613e69613dbf565b5b5f613e7785828601613e0d565b9250506020613e8885828601613e40565b9150509250929050565b5f8115159050919050565b613ea681613e92565b82525050565b5f602082019050613ebf5f830184613e9d565b92915050565b5f819050919050565b5f613ee8613ee3613ede84613dc7565b613ec5565b613dc7565b9050919050565b5f613ef982613ece565b9050919050565b5f613f0a82613eef565b9050919050565b613f1a81613f00565b82525050565b5f602082019050613f335f830184613f11565b92915050565b613f4281613e21565b82525050565b5f602082019050613f5b5f830184613f39565b92915050565b5f60ff82169050919050565b613f7681613f61565b82525050565b5f602082019050613f8f5f830184613f6d565b92915050565b5f805f60608486031215613fac57613fab613dbf565b5b5f613fb986828701613e0d565b9350506020613fca86828701613e0d565b9250506040613fdb86828701613e40565b9150509250925092565b5f613fef82613eef565b9050919050565b613fff81613fe5565b82525050565b5f6020820190506140185f830184613ff6565b92915050565b5f6020828403121561403357614032613dbf565b5b5f61404084828501613e40565b91505092915050565b61405281613f61565b811461405c575f80fd5b50565b5f8135905061406d81614049565b92915050565b5f805f6060848603121561408a57614089613dbf565b5b5f6140978682870161405f565b93505060206140a88682870161405f565b92505060406140b98682870161405f565b9150509250925092565b5f602082840312156140d8576140d7613dbf565b5b5f6140e584828501613e0d565b91505092915050565b6140f781613de6565b82525050565b5f6020820190506141105f8301846140ee565b92915050565b5f806040838503121561412c5761412b613dbf565b5b5f6141398582860161405f565b925050602061414a8582860161405f565b9150509250929050565b61415d81613e92565b8114614167575f80fd5b50565b5f8135905061417881614154565b92915050565b5f806040838503121561419457614193613dbf565b5b5f6141a185828601613e0d565b92505060206141b28582860161416a565b9150509250929050565b5f80604083850312156141d2576141d1613dbf565b5b5f6141df85828601613e0d565b92505060206141f085828601613e0d565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61423482613d4e565b810181811067ffffffffffffffff82111715614253576142526141fe565b5b80604052505050565b5f614265613db6565b9050614271828261422b565b919050565b5f67ffffffffffffffff8211156142905761428f6141fe565b5b602082029050602081019050919050565b5f80fd5b5f6142b76142b284614276565b61425c565b905080838252602082019050602084028301858111156142da576142d96142a1565b5b835b8181101561430357806142ef8882613e0d565b8452602084019350506020810190506142dc565b5050509392505050565b5f82601f830112614321576143206141fa565b5b81356143318482602086016142a5565b91505092915050565b5f67ffffffffffffffff821115614354576143536141fe565b5b602082029050602081019050919050565b5f6143776143728461433a565b61425c565b9050808382526020820190506020840283018581111561439a576143996142a1565b5b835b818110156143c357806143af8882613e40565b84526020840193505060208101905061439c565b5050509392505050565b5f82601f8301126143e1576143e06141fa565b5b81356143f1848260208601614365565b91505092915050565b5f80604083850312156144105761440f613dbf565b5b5f83013567ffffffffffffffff81111561442d5761442c613dc3565b5b6144398582860161430d565b925050602083013567ffffffffffffffff81111561445a57614459613dc3565b5b614466858286016143cd565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6144ca602883613d16565b91506144d582614470565b604082019050919050565b5f6020820190508181035f8301526144f7816144be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614532602083613d16565b915061453d826144fe565b602082019050919050565b5f6020820190508181035f83015261455f81614526565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61459d82613e21565b91506145a883613e21565b92508282026145b681613e21565b915082820484148315176145cd576145cc614566565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61460b82613e21565b915061461683613e21565b925082614626576146256145d4565b5b828204905092915050565b7f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e5f8201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b5f61468b602583613d16565b915061469682614631565b604082019050919050565b5f6020820190508181035f8301526146b88161467f565b9050919050565b7f416c7265616479206c61756e63686564000000000000000000000000000000005f82015250565b5f6146f3601083613d16565b91506146fe826146bf565b602082019050919050565b5f6020820190508181035f830152614720816146e7565b9050919050565b7f4c69717569646974793a206e656564203e3d20313020455448000000000000005f82015250565b5f61475b601983613d16565b915061476682614727565b602082019050919050565b5f6020820190508181035f8301526147888161474f565b9050919050565b5f819050919050565b5f6147b26147ad6147a88461478f565b613ec5565b613e21565b9050919050565b6147c281614798565b82525050565b5f60c0820190506147db5f8301896140ee565b6147e86020830188613f39565b6147f560408301876147b9565b61480260608301866147b9565b61480f60808301856140ee565b61481c60a0830184613f39565b979650505050505050565b5f8151905061483581613e2a565b92915050565b5f805f6060848603121561485257614851613dbf565b5b5f61485f86828701614827565b935050602061487086828701614827565b925050604061488186828701614827565b9150509250925092565b5f61489582613f61565b91506148a083613f61565b9250828201905060ff8111156148b9576148b8614566565b5b92915050565b7f446973747269627574696f6e206861766520746f20626520657175616c20746f5f8201527f2031303025000000000000000000000000000000000000000000000000000000602082015250565b5f614919602583613d16565b9150614924826148bf565b604082019050919050565b5f6020820190508181035f8301526149468161490d565b9050919050565b7f57686974656c6973744d616e6167657220616c726561647920736574000000005f82015250565b5f614981601c83613d16565b915061498c8261494d565b602082019050919050565b5f6020820190508181035f8301526149ae81614975565b9050919050565b7f4275792066656573206d757374206265206c657373207468616e206f722065715f8201527f75616c20746f2035250000000000000000000000000000000000000000000000602082015250565b5f614a0f602983613d16565b9150614a1a826149b5565b604082019050919050565b5f6020820190508181035f830152614a3c81614a03565b9050919050565b7f53656c6c2066656573206d757374206265206c657373207468616e206f7220655f8201527f7175616c20746f20352500000000000000000000000000000000000000000000602082015250565b5f614a9d602a83613d16565b9150614aa882614a43565b604082019050919050565b5f6020820190508181035f830152614aca81614a91565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e30303125206f662074686520737570706c790000000000000000000000602082015250565b5f614b2b603583613d16565b9150614b3682614ad1565b604082019050919050565b5f6020820190508181035f830152614b5881614b1f565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e3525206f662074686520737570706c79000000000000000000000000602082015250565b5f614bb9603483613d16565b9150614bc482614b5f565b604082019050919050565b5f6020820190508181035f830152614be681614bad565b9050919050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f7765725f8201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b5f614c47602a83613d16565b9150614c5282614bed565b604082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b7f416464726573732063616e6e6f74206265207a65726f000000000000000000005f82015250565b5f614caf601683613d16565b9150614cba82614c7b565b602082019050919050565b5f6020820190508181035f830152614cdc81614ca3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665640000000000005f82015250565b5f614d17601a83613d16565b9150614d2282614ce3565b602082019050919050565b5f6020820190508181035f830152614d4481614d0b565b9050919050565b5f60208284031215614d6057614d5f613dbf565b5b5f614d6d84828501614827565b91505092915050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f614daa600f83613d16565b9150614db582614d76565b602082019050919050565b5f6020820190508181035f830152614dd781614d9e565b9050919050565b5f81905092915050565b50565b5f614df65f83614dde565b9150614e0182614de8565b5f82019050919050565b5f614e1582614deb565b9150819050919050565b7f5769746864726177616c206661696c65640000000000000000000000000000005f82015250565b5f614e53601183613d16565b9150614e5e82614e1f565b602082019050919050565b5f6020820190508181035f830152614e8081614e47565b9050919050565b7f417272617973206c656e677468206d69736d61746368000000000000000000005f82015250565b5f614ebb601683613d16565b9150614ec682614e87565b602082019050919050565b5f6020820190508181035f830152614ee881614eaf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614f76602683613d16565b9150614f8182614f1c565b604082019050919050565b5f6020820190508181035f830152614fa381614f6a565b9050919050565b5f614fb482613e21565b9150614fbf83613e21565b9250828201905080821115614fd757614fd6614566565b5b92915050565b5f614fe782613e21565b9150614ff283613e21565b925082820390508181111561500a57615009614566565b5b92915050565b5f61501a82613e21565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361504c5761504b614566565b5b600182019050919050565b7f574c206e6f7420736574000000000000000000000000000000000000000000005f82015250565b5f61508b600a83613d16565b915061509682615057565b602082019050919050565b5f6020820190508181035f8301526150b88161507f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f615119602483613d16565b9150615124826150bf565b604082019050919050565b5f6020820190508181035f8301526151468161510d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6151a7602283613d16565b91506151b28261514d565b604082019050919050565b5f6020820190508181035f8301526151d48161519b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f615235602583613d16565b9150615240826151db565b604082019050919050565b5f6020820190508181035f83015261526281615229565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6152c3602383613d16565b91506152ce82615269565b604082019050919050565b5f6020820190508181035f8301526152f0816152b7565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615351602983613d16565b915061535c826152f7565b604082019050919050565b5f6020820190508181035f83015261537e81615345565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f6153b9601383613d16565b91506153c482615385565b602082019050919050565b5f6020820190508181035f8301526153e6816153ad565b9050919050565b5f815190506153fb81614154565b92915050565b5f6020828403121561541657615415613dbf565b5b5f615423848285016153ed565b91505092915050565b7f4275796572206e6f742077686974656c697374656400000000000000000000005f82015250565b5f615460601583613d16565b915061546b8261542c565b602082019050919050565b5f6020820190508181035f83015261548d81615454565b9050919050565b7f53656c6c6572206e6f742077686974656c6973746564000000000000000000005f82015250565b5f6154c8601683613d16565b91506154d382615494565b602082019050919050565b5f6020820190508181035f8301526154f5816154bc565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785478000000000000000000000000000000000000000000000000000000602082015250565b5f615556602583613d16565b9150615561826154fc565b604082019050919050565b5f6020820190508181035f8301526155838161554a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6155be601383613d16565b91506155c98261558a565b602082019050919050565b5f6020820190508181035f8301526155eb816155b2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854780000000000000000000000000000000000000000000000000000602082015250565b5f61564c602683613d16565b9150615657826155f2565b604082019050919050565b5f6020820190508181035f83015261567981615640565b9050919050565b5f6040820190506156935f8301856140ee565b6156a06020830184613f39565b9392505050565b5f81519050919050565b5f6156bb826156a7565b6156c58185614dde565b93506156d5818560208601613d26565b80840191505092915050565b5f6156ec82846156b1565b915081905092915050565b7f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346455f8201527f525f4641494c4544000000000000000000000000000000000000000000000000602082015250565b5f615751602883613d16565b915061575c826156f7565b604082019050919050565b5f6020820190508181035f83015261577e81615745565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6157b781613de6565b82525050565b5f6157c883836157ae565b60208301905092915050565b5f602082019050919050565b5f6157ea82615785565b6157f4818561578f565b93506157ff8361579f565b805f5b8381101561582f57815161581688826157bd565b9750615821836157d4565b925050600181019050615802565b5085935050505092915050565b5f60408201905061584f5f830185613f39565b818103602083015261586181846157e0565b90509392505050565b5f61587c6158778461433a565b61425c565b9050808382526020820190506020840283018581111561589f5761589e6142a1565b5b835b818110156158c857806158b48882614827565b8452602084019350506020810190506158a1565b5050509392505050565b5f82601f8301126158e6576158e56141fa565b5b81516158f684826020860161586a565b91505092915050565b5f6020828403121561591457615913613dbf565b5b5f82015167ffffffffffffffff81111561593157615930613dc3565b5b61593d848285016158d2565b91505092915050565b5f60a0820190506159595f830188613f39565b6159666020830187613f39565b818103604083015261597881866157e0565b905061598760608301856140ee565b6159946080830184613f39565b9695505050505050565b5f6080820190506159b15f830187613f39565b6159be6020830186613f39565b6159cb6040830185613f39565b6159d86060830184613f39565b95945050505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f615a15601f83613d16565b9150615a20826159e1565b602082019050919050565b5f6020820190508181035f830152615a4281615a09565b905091905056fea2646970667358221220fffff52711b90460b16b8644041df97ee1af373d3c210fe58adc4e667c77f82864736f6c63430008150033
Deployed Bytecode
0x60806040526004361061025f575f3560e01c8063715018a611610143578063bc205ad3116100b5578063d85ba06311610079578063d85ba06314610872578063dd62ed3e1461089c578063e2f45605146108d8578063e710794714610902578063f8b45b051461092a578063fb201b1d1461095457610266565b8063bc205ad3146107a4578063bcfa9287146107cc578063c8c8ebe4146107f6578063cc32d17614610820578063d201b01e1461084a57610266565b806385ecafd71161010757806385ecafd7146106885780638da5cb5b146106c457806395d89b41146106ee5780639a7a23d614610718578063a9059cbb14610740578063adfa29e51461077c57610266565b8063715018a6146105e457806374010ece146105fa578063751039fc146106225780637cb332bb14610638578063809d458d1461066057610266565b80633c090c46116101dc578063590ffdce116101a0578063590ffdce146104dc5780636402511e1461050457806365cf7c9b1461052c57806366650dae146105565780636a486a8e1461057e57806370a08231146105a857610266565b80633c090c461461041057806341a494091461043857806349bd5a5e146104605780634a62bb651461048a5780634fcd2446146104b457610266565b806323b872dd1161022357806323b872dd1461034e57806326563b401461038a57806327a14fc2146103b45780632ec64b6c146103dc578063313ce567146103e657610266565b806306fdde031461026a578063095ea7b3146102945780631694505e146102d057806318160ddd146102fa57806321d37e391461032457610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e61096a565b60405161028b9190613d96565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613e54565b6109a7565b6040516102c79190613eac565b60405180910390f35b3480156102db575f80fd5b506102e46109bd565b6040516102f19190613f20565b60405180910390f35b348015610305575f80fd5b5061030e6109d5565b60405161031b9190613f48565b60405180910390f35b34801561032f575f80fd5b506103386109e8565b6040516103459190613f7c565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190613f95565b6109fb565b6040516103819190613eac565b60405180910390f35b348015610395575f80fd5b5061039e610b07565b6040516103ab9190614005565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d5919061401e565b610b2c565b005b6103e4610c34565b005b3480156103f1575f80fd5b506103fa610e40565b6040516104079190613f7c565b60405180910390f35b34801561041b575f80fd5b5061043660048036038101906104319190614073565b610e48565b005b348015610443575f80fd5b5061045e600480360381019061045991906140c3565b610f9c565b005b34801561046b575f80fd5b506104746110e3565b60405161048191906140fd565b60405180910390f35b348015610495575f80fd5b5061049e611107565b6040516104ab9190613eac565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d59190614116565b61111a565b005b3480156104e7575f80fd5b5061050260048036038101906104fd919061417e565b611257565b005b34801561050f575f80fd5b5061052a6004803603810190610525919061401e565b611324565b005b348015610537575f80fd5b5061054061146a565b60405161054d9190613f48565b60405180910390f35b348015610561575f80fd5b5061057c6004803603810190610577919061417e565b611470565b005b348015610589575f80fd5b5061059261153d565b60405161059f9190613f7c565b60405180910390f35b3480156105b3575f80fd5b506105ce60048036038101906105c991906140c3565b611550565b6040516105db9190613f48565b60405180910390f35b3480156105ef575f80fd5b506105f8611596565b005b348015610605575f80fd5b50610620600480360381019061061b919061401e565b61164c565b005b34801561062d575f80fd5b50610636611754565b005b348015610643575f80fd5b5061065e600480360381019061065991906140c3565b6117e5565b005b34801561066b575f80fd5b50610686600480360381019061068191906140c3565b61190b565b005b348015610693575f80fd5b506106ae60048036038101906106a991906140c3565b611a31565b6040516106bb9190613eac565b60405180910390f35b3480156106cf575f80fd5b506106d8611a83565b6040516106e591906140fd565b60405180910390f35b3480156106f9575f80fd5b50610702611aaa565b60405161070f9190613d96565b60405180910390f35b348015610723575f80fd5b5061073e6004803603810190610739919061417e565b611ae7565b005b34801561074b575f80fd5b5061076660048036038101906107619190613e54565b611c42565b6040516107739190613eac565b60405180910390f35b348015610787575f80fd5b506107a2600480360381019061079d91906140c3565b611c58565b005b3480156107af575f80fd5b506107ca60048036038101906107c591906141bc565b611d7e565b005b3480156107d7575f80fd5b506107e0611e7e565b6040516107ed9190613f7c565b60405180910390f35b348015610801575f80fd5b5061080a611e91565b6040516108179190613f48565b60405180910390f35b34801561082b575f80fd5b50610834611e97565b6040516108419190613f7c565b60405180910390f35b348015610855575f80fd5b50610870600480360381019061086b91906140c3565b611eaa565b005b34801561087d575f80fd5b50610886612039565b6040516108939190613f7c565b60405180910390f35b3480156108a7575f80fd5b506108c260048036038101906108bd91906141bc565b61204c565b6040516108cf9190613f48565b60405180910390f35b3480156108e3575f80fd5b506108ec6120ce565b6040516108f99190613f48565b60405180910390f35b34801561090d575f80fd5b50610928600480360381019061092391906143fa565b6120d4565b005b348015610935575f80fd5b5061093e612427565b60405161094b9190613f48565b60405180910390f35b34801561095f575f80fd5b5061096861242d565b005b60606040518060400160405280601081526020017f4e6f6e4b796f746f50726f746f636f6c00000000000000000000000000000000815250905090565b5f6109b33384846125a5565b6001905092915050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f6b033b2e3c9fd0803ce8000000905090565b600c60169054906101000a900460ff1681565b5f8060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610af05782811015610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad9906144e0565b60405180910390fd5b610aef85338584036125a5565b5b610afb858585612768565b60019150509392505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610b4b611a83565b73ffffffffffffffffffffffffffffffffffffffff1614610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890614548565b60405180910390fd5b670de0b6b3a76400006103e86001610bb76109d5565b610bc19190614593565b610bcb9190614601565b610bd59190614601565b811015610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e906146a1565b60405180910390fd5b670de0b6b3a764000081610c2b9190614593565b60038190555050565b3373ffffffffffffffffffffffffffffffffffffffff16610c53611a83565b73ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090614548565b60405180910390fd5b600c601b9054906101000a900460ff1615610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090614709565b60405180910390fd5b678ac7230489e80000341015610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90614771565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7193430600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20545f8060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401610dfa969594939291906147c8565b60606040518083038185885af1158015610e16573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e3b919061483b565b505050565b5f6012905090565b3373ffffffffffffffffffffffffffffffffffffffff16610e67611a83565b73ffffffffffffffffffffffffffffffffffffffff1614610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb490614548565b60405180910390fd5b82600c60166101000a81548160ff021916908360ff16021790555081600c60176101000a81548160ff021916908360ff16021790555080600c60186101000a81548160ff021916908360ff1602179055506064600c60189054906101000a900460ff16600c60179054906101000a900460ff16600c60169054906101000a900460ff16610f4a919061488b565b610f54919061488b565b60ff1614610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8e9061492f565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610fbb611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790614997565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000ba123e7cad737b7f8d4580d04e525724c3c80f1a81565b600c601a9054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611139611a83565b73ffffffffffffffffffffffffffffffffffffffff161461118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690614548565b60405180910390fd5b60328260ff1611156111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd90614a25565b60405180910390fd5b60328160ff16111561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490614ab3565b60405180910390fd5b81600c60146101000a81548160ff021916908360ff16021790555080600c60156101000a81548160ff021916908360ff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16611276611a83565b73ffffffffffffffffffffffffffffffffffffffff16146112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c390614548565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16611343611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090614548565b60405180910390fd5b620186a060016113a76109d5565b6113b19190614593565b6113bb9190614601565b8110156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490614b41565b60405180910390fd5b6103e8600561140a6109d5565b6114149190614593565b61141e9190614601565b811115611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145790614bcf565b60405180910390fd5b8060048190555050565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff1661148f611a83565b73ffffffffffffffffffffffffffffffffffffffff16146114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90614548565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c60159054906101000a900460ff1681565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166115b5611a83565b73ffffffffffffffffffffffffffffffffffffffff161461160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290614548565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1661166b611a83565b73ffffffffffffffffffffffffffffffffffffffff16146116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890614548565b60405180910390fd5b670de0b6b3a76400006103e860016116d76109d5565b6116e19190614593565b6116eb9190614601565b6116f59190614601565b811015611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90614c5d565b60405180910390fd5b670de0b6b3a76400008161174b9190614593565b60028190555050565b3373ffffffffffffffffffffffffffffffffffffffff16611773611a83565b73ffffffffffffffffffffffffffffffffffffffff16146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090614548565b60405180910390fd5b5f600c601a6101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff16611804611a83565b73ffffffffffffffffffffffffffffffffffffffff161461185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90614cc5565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1661192a611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e590614cc5565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4e4b500000000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff16611b06611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390614548565b60405180910390fd5b7f000000000000000000000000ba123e7cad737b7f8d4580d04e525724c3c80f1a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190614d2d565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611c4e338484612768565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611c77611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc490614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290614cc5565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16611d9d611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614548565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e2d91906140fd565b602060405180830381865afa158015611e48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6c9190614d4b565b9050611e7983838361364f565b505050565b600c60189054906101000a900460ff1681565b60025481565b600c60179054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16611ec9611a83565b73ffffffffffffffffffffffffffffffffffffffff1614611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1690614548565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8490614dc0565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff1647604051611fb290614e0b565b5f6040518083038185875af1925050503d805f8114611fec576040519150601f19603f3d011682016040523d82523d5f602084013e611ff1565b606091505b5050905080612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c90614e69565b60405180910390fd5b5050565b600c60149054906101000a900460ff1681565b5f60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff166120f3611a83565b73ffffffffffffffffffffffffffffffffffffffff1614612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214090614548565b60405180910390fd5b600c601b9054906101000a900460ff1615612199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219090614709565b60405180910390fd5b80518251146121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d490614ed1565b60405180910390fd5b5f5b8251811015612422578181815181106121fb576121fa614eef565b5b6020026020010151600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227990614f8c565b60405180910390fd5b81818151811061229557612294614eef565b5b6020026020010151600f5f8584815181106122b3576122b2614eef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123029190614faa565b9250508190555081818151811061231c5761231b614eef565b5b6020026020010151600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461236f9190614fdd565b9250508190555082818151811061238957612388614eef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484815181106123f2576123f1614eef565b5b60200260200101516040516124079190613f48565b60405180910390a3808061241a90615010565b9150506121df565b505050565b60035481565b3373ffffffffffffffffffffffffffffffffffffffff1661244c611a83565b73ffffffffffffffffffffffffffffffffffffffff16146124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614548565b60405180910390fd5b600c601b9054906101000a900460ff16156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614709565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612581576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612578906150a1565b60405180910390fd5b6001600c601b6101000a81548160ff02191690831515021790555042600e81905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a9061512f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612681576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612678906151bd565b60405180910390fd5b8060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161275b9190613f48565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cd9061524b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283b906152d9565b60405180910390fd5b5f8111612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d90615367565b60405180910390fd5b600c601b9054906101000a900460ff1615801561294d57506128a6611a83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561290d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561294c575061291c611a83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b1561298d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612984906153cf565b60405180910390fd5b600c601b9054906101000a900460ff1680156129b85750610384600e546129b49190614faa565b4211155b8015612a1157505f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15612c6c5760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b4257600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf836040518263ffffffff1660e01b8152600401612abf91906140fd565b602060405180830381865afa158015612ada573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612afe9190615401565b612b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3490615476565b60405180910390fd5b612c6b565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c6a57600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633af32abf846040518263ffffffff1660e01b8152600401612beb91906140fd565b602060405180830381865afa158015612c06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c2a9190615401565b612c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c60906154de565b60405180910390fd5b5b5b5b600c601a9054906101000a900460ff161561306257612c89611a83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf75750612cc7611a83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d69575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d825750600c60199054906101000a900460ff16155b156130615760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e24575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ecb57600254811115612e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e659061556c565b60405180910390fd5b600354612e7a83611550565b82612e859190614faa565b1115612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd906155d4565b60405180910390fd5b613060565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f68575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fb757600254811115612fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa990615662565b60405180910390fd5b61305f565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661305e5760035461301183611550565b8261301c9190614faa565b111561305d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613054906155d4565b60405180910390fd5b5b5b5b5b5b5f60045461306f30611550565b1015905080801561308d5750600c60199054906101000a900460ff16155b80156130e0575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613133575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613186575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156131c9576001600c60196101000a81548160ff0219169083151502179055506131ae61379e565b5f600c60196101000a81548160ff0219169083151502179055505b5f600c60199054906101000a900460ff1615905060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613278575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613281575f90505b5f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015613305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fc90614f8c565b60405180910390fd5b5f821561354d5760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561337357505f600c60159054906101000a900460ff1660ff16115b156133aa576103e8600c60159054906101000a900460ff1660ff16866133999190614593565b6133a39190614601565b9050613445565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561341157505f600c60149054906101000a900460ff1660ff16115b15613444576103e8600c60149054906101000a900460ff1660ff16866134379190614593565b6134419190614601565b90505b5b5f81111561354c57808503945080600f5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254039250508190555080600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135439190613f48565b60405180910390a35b5b84600f5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254039250508190555084600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161363e9190613f48565b60405180910390a350505050505050565b5f808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401613683929190615680565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516136ed91906156e1565b5f604051808303815f865af19150503d805f8114613726576040519150601f19603f3d011682016040523d82523d5f602084013e61372b565b606091505b509150915081801561375857505f815114806137575750808060200190518101906137569190615401565b5b5b613797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378e90615767565b60405180910390fd5b5050505050565b6137a6613cb4565b5f60045490505f60146004546137bc9190614593565b6137c530611550565b11156137dd5760146004546137da9190614593565b91505b5f600267ffffffffffffffff8111156137f9576137f86141fe565b5b6040519080825280602002602001820160405280156138275781602001602082028036833780820191505090505b50905030815f8151811061383e5761383d614eef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106138a1576138a0614eef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85846040518363ffffffff1660e01b815260040161392b92919061583c565b5f60405180830381865afa158015613945573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061396d91906158ff565b6001815181106139805761397f614eef565b5b602002602001015190505f810361399a5750505050613caa565b5f6064601460646139ab9190614fdd565b836139b69190614593565b6139c09190614601565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94786838630426040518663ffffffff1660e01b8152600401613a17959493929190615946565b5f604051808303815f87803b158015613a2e575f80fd5b505af1158015613a40573d5f803e3d5ffd5b505050505f4790505f811115613ca3575f6064600c60169054906101000a900460ff1660ff1683613a719190614593565b613a7b9190614601565b90505f6064600c60189054906101000a900460ff1660ff1684613a9e9190614593565b613aa89190614601565b90505f818385613ab89190614fdd565b613ac29190614fdd565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613b0990614e0b565b5f6040518083038185875af1925050503d805f8114613b43576040519150601f19603f3d011682016040523d82523d5f602084013e613b48565b606091505b50508098505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b9390614e0b565b5f6040518083038185875af1925050503d805f8114613bcd576040519150601f19603f3d011682016040523d82523d5f602084013e613bd2565b606091505b50508098505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613c1d90614e0b565b5f6040518083038185875af1925050503d805f8114613c57576040519150601f19603f3d011682016040523d82523d5f602084013e613c5c565b606091505b5050809850507f93efcf28fbf701a930e0ad258987a2e4f08eb3aa99f9c02029e7ba049f69405f89838584604051613c97949392919061599e565b60405180910390a15050505b5050505050505b613cb2613d03565b565b600260015403613cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cf090615a2b565b60405180910390fd5b6002600181905550565b60018081905550565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613d43578082015181840152602081019050613d28565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613d6882613d0c565b613d728185613d16565b9350613d82818560208601613d26565b613d8b81613d4e565b840191505092915050565b5f6020820190508181035f830152613dae8184613d5e565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613df082613dc7565b9050919050565b613e0081613de6565b8114613e0a575f80fd5b50565b5f81359050613e1b81613df7565b92915050565b5f819050919050565b613e3381613e21565b8114613e3d575f80fd5b50565b5f81359050613e4e81613e2a565b92915050565b5f8060408385031215613e6a57613e69613dbf565b5b5f613e7785828601613e0d565b9250506020613e8885828601613e40565b9150509250929050565b5f8115159050919050565b613ea681613e92565b82525050565b5f602082019050613ebf5f830184613e9d565b92915050565b5f819050919050565b5f613ee8613ee3613ede84613dc7565b613ec5565b613dc7565b9050919050565b5f613ef982613ece565b9050919050565b5f613f0a82613eef565b9050919050565b613f1a81613f00565b82525050565b5f602082019050613f335f830184613f11565b92915050565b613f4281613e21565b82525050565b5f602082019050613f5b5f830184613f39565b92915050565b5f60ff82169050919050565b613f7681613f61565b82525050565b5f602082019050613f8f5f830184613f6d565b92915050565b5f805f60608486031215613fac57613fab613dbf565b5b5f613fb986828701613e0d565b9350506020613fca86828701613e0d565b9250506040613fdb86828701613e40565b9150509250925092565b5f613fef82613eef565b9050919050565b613fff81613fe5565b82525050565b5f6020820190506140185f830184613ff6565b92915050565b5f6020828403121561403357614032613dbf565b5b5f61404084828501613e40565b91505092915050565b61405281613f61565b811461405c575f80fd5b50565b5f8135905061406d81614049565b92915050565b5f805f6060848603121561408a57614089613dbf565b5b5f6140978682870161405f565b93505060206140a88682870161405f565b92505060406140b98682870161405f565b9150509250925092565b5f602082840312156140d8576140d7613dbf565b5b5f6140e584828501613e0d565b91505092915050565b6140f781613de6565b82525050565b5f6020820190506141105f8301846140ee565b92915050565b5f806040838503121561412c5761412b613dbf565b5b5f6141398582860161405f565b925050602061414a8582860161405f565b9150509250929050565b61415d81613e92565b8114614167575f80fd5b50565b5f8135905061417881614154565b92915050565b5f806040838503121561419457614193613dbf565b5b5f6141a185828601613e0d565b92505060206141b28582860161416a565b9150509250929050565b5f80604083850312156141d2576141d1613dbf565b5b5f6141df85828601613e0d565b92505060206141f085828601613e0d565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61423482613d4e565b810181811067ffffffffffffffff82111715614253576142526141fe565b5b80604052505050565b5f614265613db6565b9050614271828261422b565b919050565b5f67ffffffffffffffff8211156142905761428f6141fe565b5b602082029050602081019050919050565b5f80fd5b5f6142b76142b284614276565b61425c565b905080838252602082019050602084028301858111156142da576142d96142a1565b5b835b8181101561430357806142ef8882613e0d565b8452602084019350506020810190506142dc565b5050509392505050565b5f82601f830112614321576143206141fa565b5b81356143318482602086016142a5565b91505092915050565b5f67ffffffffffffffff821115614354576143536141fe565b5b602082029050602081019050919050565b5f6143776143728461433a565b61425c565b9050808382526020820190506020840283018581111561439a576143996142a1565b5b835b818110156143c357806143af8882613e40565b84526020840193505060208101905061439c565b5050509392505050565b5f82601f8301126143e1576143e06141fa565b5b81356143f1848260208601614365565b91505092915050565b5f80604083850312156144105761440f613dbf565b5b5f83013567ffffffffffffffff81111561442d5761442c613dc3565b5b6144398582860161430d565b925050602083013567ffffffffffffffff81111561445a57614459613dc3565b5b614466858286016143cd565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6144ca602883613d16565b91506144d582614470565b604082019050919050565b5f6020820190508181035f8301526144f7816144be565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614532602083613d16565b915061453d826144fe565b602082019050919050565b5f6020820190508181035f83015261455f81614526565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61459d82613e21565b91506145a883613e21565b92508282026145b681613e21565b915082820484148315176145cd576145cc614566565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61460b82613e21565b915061461683613e21565b925082614626576146256145d4565b5b828204905092915050565b7f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e5f8201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b5f61468b602583613d16565b915061469682614631565b604082019050919050565b5f6020820190508181035f8301526146b88161467f565b9050919050565b7f416c7265616479206c61756e63686564000000000000000000000000000000005f82015250565b5f6146f3601083613d16565b91506146fe826146bf565b602082019050919050565b5f6020820190508181035f830152614720816146e7565b9050919050565b7f4c69717569646974793a206e656564203e3d20313020455448000000000000005f82015250565b5f61475b601983613d16565b915061476682614727565b602082019050919050565b5f6020820190508181035f8301526147888161474f565b9050919050565b5f819050919050565b5f6147b26147ad6147a88461478f565b613ec5565b613e21565b9050919050565b6147c281614798565b82525050565b5f60c0820190506147db5f8301896140ee565b6147e86020830188613f39565b6147f560408301876147b9565b61480260608301866147b9565b61480f60808301856140ee565b61481c60a0830184613f39565b979650505050505050565b5f8151905061483581613e2a565b92915050565b5f805f6060848603121561485257614851613dbf565b5b5f61485f86828701614827565b935050602061487086828701614827565b925050604061488186828701614827565b9150509250925092565b5f61489582613f61565b91506148a083613f61565b9250828201905060ff8111156148b9576148b8614566565b5b92915050565b7f446973747269627574696f6e206861766520746f20626520657175616c20746f5f8201527f2031303025000000000000000000000000000000000000000000000000000000602082015250565b5f614919602583613d16565b9150614924826148bf565b604082019050919050565b5f6020820190508181035f8301526149468161490d565b9050919050565b7f57686974656c6973744d616e6167657220616c726561647920736574000000005f82015250565b5f614981601c83613d16565b915061498c8261494d565b602082019050919050565b5f6020820190508181035f8301526149ae81614975565b9050919050565b7f4275792066656573206d757374206265206c657373207468616e206f722065715f8201527f75616c20746f2035250000000000000000000000000000000000000000000000602082015250565b5f614a0f602983613d16565b9150614a1a826149b5565b604082019050919050565b5f6020820190508181035f830152614a3c81614a03565b9050919050565b7f53656c6c2066656573206d757374206265206c657373207468616e206f7220655f8201527f7175616c20746f20352500000000000000000000000000000000000000000000602082015250565b5f614a9d602a83613d16565b9150614aa882614a43565b604082019050919050565b5f6020820190508181035f830152614aca81614a91565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e30303125206f662074686520737570706c790000000000000000000000602082015250565b5f614b2b603583613d16565b9150614b3682614ad1565b604082019050919050565b5f6020820190508181035f830152614b5881614b1f565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e3525206f662074686520737570706c79000000000000000000000000602082015250565b5f614bb9603483613d16565b9150614bc482614b5f565b604082019050919050565b5f6020820190508181035f830152614be681614bad565b9050919050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f7765725f8201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b5f614c47602a83613d16565b9150614c5282614bed565b604082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b7f416464726573732063616e6e6f74206265207a65726f000000000000000000005f82015250565b5f614caf601683613d16565b9150614cba82614c7b565b602082019050919050565b5f6020820190508181035f830152614cdc81614ca3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665640000000000005f82015250565b5f614d17601a83613d16565b9150614d2282614ce3565b602082019050919050565b5f6020820190508181035f830152614d4481614d0b565b9050919050565b5f60208284031215614d6057614d5f613dbf565b5b5f614d6d84828501614827565b91505092915050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f614daa600f83613d16565b9150614db582614d76565b602082019050919050565b5f6020820190508181035f830152614dd781614d9e565b9050919050565b5f81905092915050565b50565b5f614df65f83614dde565b9150614e0182614de8565b5f82019050919050565b5f614e1582614deb565b9150819050919050565b7f5769746864726177616c206661696c65640000000000000000000000000000005f82015250565b5f614e53601183613d16565b9150614e5e82614e1f565b602082019050919050565b5f6020820190508181035f830152614e8081614e47565b9050919050565b7f417272617973206c656e677468206d69736d61746368000000000000000000005f82015250565b5f614ebb601683613d16565b9150614ec682614e87565b602082019050919050565b5f6020820190508181035f830152614ee881614eaf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614f76602683613d16565b9150614f8182614f1c565b604082019050919050565b5f6020820190508181035f830152614fa381614f6a565b9050919050565b5f614fb482613e21565b9150614fbf83613e21565b9250828201905080821115614fd757614fd6614566565b5b92915050565b5f614fe782613e21565b9150614ff283613e21565b925082820390508181111561500a57615009614566565b5b92915050565b5f61501a82613e21565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361504c5761504b614566565b5b600182019050919050565b7f574c206e6f7420736574000000000000000000000000000000000000000000005f82015250565b5f61508b600a83613d16565b915061509682615057565b602082019050919050565b5f6020820190508181035f8301526150b88161507f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f615119602483613d16565b9150615124826150bf565b604082019050919050565b5f6020820190508181035f8301526151468161510d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6151a7602283613d16565b91506151b28261514d565b604082019050919050565b5f6020820190508181035f8301526151d48161519b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f615235602583613d16565b9150615240826151db565b604082019050919050565b5f6020820190508181035f83015261526281615229565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6152c3602383613d16565b91506152ce82615269565b604082019050919050565b5f6020820190508181035f8301526152f0816152b7565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f615351602983613d16565b915061535c826152f7565b604082019050919050565b5f6020820190508181035f83015261537e81615345565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f6153b9601383613d16565b91506153c482615385565b602082019050919050565b5f6020820190508181035f8301526153e6816153ad565b9050919050565b5f815190506153fb81614154565b92915050565b5f6020828403121561541657615415613dbf565b5b5f615423848285016153ed565b91505092915050565b7f4275796572206e6f742077686974656c697374656400000000000000000000005f82015250565b5f615460601583613d16565b915061546b8261542c565b602082019050919050565b5f6020820190508181035f83015261548d81615454565b9050919050565b7f53656c6c6572206e6f742077686974656c6973746564000000000000000000005f82015250565b5f6154c8601683613d16565b91506154d382615494565b602082019050919050565b5f6020820190508181035f8301526154f5816154bc565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785478000000000000000000000000000000000000000000000000000000602082015250565b5f615556602583613d16565b9150615561826154fc565b604082019050919050565b5f6020820190508181035f8301526155838161554a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6155be601383613d16565b91506155c98261558a565b602082019050919050565b5f6020820190508181035f8301526155eb816155b2565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854780000000000000000000000000000000000000000000000000000602082015250565b5f61564c602683613d16565b9150615657826155f2565b604082019050919050565b5f6020820190508181035f83015261567981615640565b9050919050565b5f6040820190506156935f8301856140ee565b6156a06020830184613f39565b9392505050565b5f81519050919050565b5f6156bb826156a7565b6156c58185614dde565b93506156d5818560208601613d26565b80840191505092915050565b5f6156ec82846156b1565b915081905092915050565b7f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346455f8201527f525f4641494c4544000000000000000000000000000000000000000000000000602082015250565b5f615751602883613d16565b915061575c826156f7565b604082019050919050565b5f6020820190508181035f83015261577e81615745565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6157b781613de6565b82525050565b5f6157c883836157ae565b60208301905092915050565b5f602082019050919050565b5f6157ea82615785565b6157f4818561578f565b93506157ff8361579f565b805f5b8381101561582f57815161581688826157bd565b9750615821836157d4565b925050600181019050615802565b5085935050505092915050565b5f60408201905061584f5f830185613f39565b818103602083015261586181846157e0565b90509392505050565b5f61587c6158778461433a565b61425c565b9050808382526020820190506020840283018581111561589f5761589e6142a1565b5b835b818110156158c857806158b48882614827565b8452602084019350506020810190506158a1565b5050509392505050565b5f82601f8301126158e6576158e56141fa565b5b81516158f684826020860161586a565b91505092915050565b5f6020828403121561591457615913613dbf565b5b5f82015167ffffffffffffffff81111561593157615930613dc3565b5b61593d848285016158d2565b91505092915050565b5f60a0820190506159595f830188613f39565b6159666020830187613f39565b818103604083015261597881866157e0565b905061598760608301856140ee565b6159946080830184613f39565b9695505050505050565b5f6080820190506159b15f830187613f39565b6159be6020830186613f39565b6159cb6040830185613f39565b6159d86060830184613f39565b95945050505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f615a15601f83613d16565b9150615a20826159e1565b602082019050919050565b5f6020820190508181035f830152615a4281615a09565b905091905056fea2646970667358221220fffff52711b90460b16b8644041df97ee1af373d3c210fe58adc4e667c77f82864736f6c63430008150033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.