More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 99 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20528864 | 139 days ago | IN | 0 ETH | 0.00031523 | ||||
Approve | 20479896 | 146 days ago | IN | 0 ETH | 0.00011164 | ||||
Approve | 20278977 | 174 days ago | IN | 0 ETH | 0.00031599 | ||||
Approve | 20091157 | 200 days ago | IN | 0 ETH | 0.00161041 | ||||
Approve | 20088602 | 200 days ago | IN | 0 ETH | 0.00089391 | ||||
Approve | 20058836 | 204 days ago | IN | 0 ETH | 0.0002775 | ||||
Approve | 20054670 | 205 days ago | IN | 0 ETH | 0.00051172 | ||||
Approve | 20015300 | 210 days ago | IN | 0 ETH | 0.00028 | ||||
Approve | 20005117 | 212 days ago | IN | 0 ETH | 0.00062202 | ||||
Approve | 19959148 | 218 days ago | IN | 0 ETH | 0.00044904 | ||||
Approve | 19947875 | 220 days ago | IN | 0 ETH | 0.00022951 | ||||
Approve | 19945482 | 220 days ago | IN | 0 ETH | 0.00026138 | ||||
Approve | 19945378 | 220 days ago | IN | 0 ETH | 0.00023171 | ||||
Approve | 19918085 | 224 days ago | IN | 0 ETH | 0.00082185 | ||||
Approve | 19911039 | 225 days ago | IN | 0 ETH | 0.000277 | ||||
Approve | 19910707 | 225 days ago | IN | 0 ETH | 0.00049634 | ||||
Approve | 19900860 | 226 days ago | IN | 0 ETH | 0.00015041 | ||||
Approve | 19887865 | 228 days ago | IN | 0 ETH | 0.0001724 | ||||
Approve | 19887851 | 228 days ago | IN | 0 ETH | 0.00015745 | ||||
Approve | 19882569 | 229 days ago | IN | 0 ETH | 0.0003499 | ||||
Approve | 19870256 | 231 days ago | IN | 0 ETH | 0.00046503 | ||||
Approve | 19867079 | 231 days ago | IN | 0 ETH | 0.00038351 | ||||
Approve | 19865211 | 231 days ago | IN | 0 ETH | 0.00028115 | ||||
Approve | 19856920 | 233 days ago | IN | 0 ETH | 0.00025701 | ||||
Approve | 19856738 | 233 days ago | IN | 0 ETH | 0.00024854 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DESI
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-06 */ // SPDX-License-Identifier: MIT /* Website: https://desicow.io Telegram: https://t.me/Desi_Cow Twitter: https://twitter.com/Desi_Cow_ */ pragma solidity 0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue( target, data, 0, "Address: low-level call failed" ); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } interface IERC20Errors { error ERC20InsufficientBalance( address sender, uint256 balance, uint256 needed ); error ERC20InvalidSender(address sender); error ERC20InvalidReceiver(address receiver); error ERC20InsufficientAllowance( address spender, uint256 allowance, uint256 needed ); error ERC20InvalidApprover(address approver); error ERC20InvalidSpender(address spender); } abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance < amount) { revert ERC20InsufficientAllowance( recipient, currentAllowance, amount ); } unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addtionalValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addtionalValue ); return true; } function decreaseAllowance(address spender, uint256 subtractionValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractionValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractionValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { if (sender == address(0)) { revert ERC20InvalidSender(address(0)); } if (recipient == address(0)) { revert ERC20InvalidReceiver(address(0)); } uint256 senderBalance = _balances[sender]; if (senderBalance < amount) { revert ERC20InsufficientBalance(sender, senderBalance, amount); } unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface ILpPair { function sync() external; } interface IDexRouter { 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens( 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 addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract DESI is ERC20, Ownable { string private _name; string private _symbol; uint8 private _decimals; IDexRouter public immutable dexRouter; address public immutable lpPair; IERC20 public immutable WETH; bool private swapping; uint256 public swapTokensAtAmount; address public taxAddress = 0xae5950CcB704334108212B88Ad2339c626502572; bool public swapEnabled = false; uint256 private buyFee; uint256 private sellFee; uint256 private transferFee; struct WhitelistWallet { bool isExcludedFromFees; } mapping(address => WhitelistWallet) public _whitelistWallet; mapping(address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledSwap(); event DisabledSwap(); event UpdatedFees(uint256 buyFee, uint256 sellFee, uint256 transferFee); event UpdatedTaxAddress(address indexed newWallet); event OwnerForcedSwapBack(uint256 timestamp); event TransferForeignToken(address token, uint256 amount); event ReuppedApprovals(); event SwapTokensAtAmountUpdated(uint256 newAmount); event WhiteList( bool isExcludedFromFees ); error ChainNotConfigured(); constructor() { _name = "INDIAN DESI COW COIN"; _symbol = "DESI"; _decimals = 18; uint256 totalSupply = 15_000_000_000 * 10**_decimals; swapTokensAtAmount = totalSupply / 500; buyFee = 450; // 4.5% Fees sellFee = 525; // 5.25% Fees transferFee = 100; // 1% Fees address newOwner = msg.sender; // can leave alone if owner is deployer. address _dexRouter; address ethcoinAddress; if (block.chainid == 1) { ethcoinAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; } else if (block.chainid == 11155111) { ethcoinAddress = 0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9; _dexRouter = 0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008; } else { revert ChainNotConfigured(); } // initialize router dexRouter = IDexRouter(_dexRouter); WETH = IERC20(ethcoinAddress); // create pair lpPair = IDexFactory(dexRouter.factory()).createPair( address(this), address(WETH) ); setAutomatedMarketMakerPair(address(lpPair), true); // setWhitelist(address(lpPair), false, false, true); setWhitelist(address(this), true); setWhitelist(address(0xdead), true); setWhitelist(newOwner, true); _createInitialSupply(address(newOwner), totalSupply); transferOwnership(newOwner); WETH.approve(address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); } function name() public view override returns (string memory) { return _name; } function symbol() public view override returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } /// @notice Adds or removes an address from the whitelist. /// @dev Only the owner can call this function. /// @param account The address to whitelist or unwhitelist. /// @param isExcludedFromFees True if the address should be excluded from fees, false otherwise. function setWhitelist( address account, bool isExcludedFromFees ) public { _whitelistWallet[account] = WhitelistWallet( isExcludedFromFees ); emit WhiteList( isExcludedFromFees ); } /// @notice Enables or disables the automatic swap of accumulated fees for WETH. /// @dev This function can only be called by the contract owner. /// @param _enable Set to true to enable automatic swapping, false to disable. function setSwapEnabled(bool _enable) external onlyOwner { swapEnabled = _enable; if (_enable) { emit EnabledSwap(); } else { emit DisabledSwap(); } } /// @notice change the minimum amount of tokens to sell from fees /// @param newAmount The new minimum amount of tokens to sell /// @dev This function allows the contract owner to adjust the threshold at which accumulated fees are automatically swapped for WETH and sent to the tax address. /// Requirements: /// - The `newAmount` must be greater than or equal to 0.001% of the total supply. /// - The `newAmount` must be less than or equal to 1% of the total supply. /// Emits a {SwapTokensAtAmountUpdated} event. function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { uint256 _totalSupply = totalSupply(); require( newAmount >= (_totalSupply * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (_totalSupply * 1) / 100, "Swap amount cannot be higher than 1% total supply." ); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(newAmount); } /// @notice Sets or unsets the automated market maker pair status for a given address. /// @param pair The address of the pair to update. /// @param value True to set the pair as an automated market maker pair, false to unset it. /// @dev This function can only be called by the owner. /// The pair cannot be removed from automatedMarketMakerPairs if it is the lpPair. /// This function also excludes/includes the pair from max transaction limits depending on the value. function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != lpPair || value, "The pair cannot be removed from automatedMarketMakerPairs" ); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } /// @notice Updates the buy, sell, and transfer fees for the token. /// @dev Only callable by the owner. Fees are input as basis points (e.g., 700 for 7%). /// @param _buyFee The new buy fee, in basis points. /// @param _sellFee The new sell fee, in basis points. /// @param _transferFee The new transfer fee, in basis points. function updateFees( uint256 _buyFee, uint256 _sellFee, uint256 _transferFee ) external onlyOwner { require(_buyFee <= 700, "Must keep buy fees at 7% or less"); require(_sellFee <= 700, "Must keep sell fees at 7% or less"); require(_transferFee <= 700, "Must keep transfer fees at 7% or less"); buyFee = _buyFee; sellFee = _sellFee; transferFee = _transferFee; emit UpdatedFees(buyFee, sellFee, transferFee); } /// @notice Returns the buy, sell, and transfer fees for the token, represented as basis points (hundredths of a percent). /// @dev For example, a fee of 5.5% would be returned as 550. /// @return _buyFee The current buy fee in basis points. /// @return _sellFee The current sell fee in basis points. /// @return _transferFee The current transfer fee in basis points. function getFees() external view returns ( uint256 _buyFee, uint256 _sellFee, uint256 _transferFee ) { return (buyFee, sellFee, transferFee); } function _takeFee( address from, address to, uint256 amount ) internal returns (uint256) { if (_whitelistWallet[from].isExcludedFromFees || _whitelistWallet[to].isExcludedFromFees) { return 0; } uint256 fees; if (automatedMarketMakerPairs[to] && sellFee > 0) { fees = (amount * sellFee) / 10000; } else if (automatedMarketMakerPairs[from] && buyFee > 0) { fees = (amount * buyFee) / 10000; } else if (transferFee > 0) { fees = (amount * transferFee) / 10000; } if (fees > 0) { super._transfer(from, address(this), fees); } return fees; } function _executeSwap() internal { if ( balanceOf(address(this)) > swapTokensAtAmount && swapEnabled && !swapping ) { swapping = true; swapBack(); swapping = false; } } function _transfer( address from, address to, uint256 amount ) internal override { uint256 fees = _takeFee(from, to, amount); _executeSwap(); super._transfer(from, to, amount - fees); } function swapTokensForWETH(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = address(WETH); // make the swap dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(taxAddress), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); if (contractBalance == 0) { return; } if (contractBalance > swapTokensAtAmount) { contractBalance = swapTokensAtAmount; } swapTokensForWETH(contractBalance); if (WETH.balanceOf(address(this)) > 0) { WETH.transfer(taxAddress, WETH.balanceOf(address(this))); } } function _forceSwapBack() private { uint256 contractBalance = balanceOf(address(this)); if (contractBalance == 0) { return; } swapTokensForWETH(contractBalance); if (WETH.balanceOf(address(this)) > 0) { WETH.transfer(taxAddress, WETH.balanceOf(address(this))); } } /// @notice Allows the owner to transfer any ERC20 tokens sent to the contract. /// @dev This function can only be called by the owner. /// @param _token The address of the ERC20 token to transfer. /// @param _to The address to transfer the tokens to. /// @dev Emits a {TransferForeignToken} event. /// Requirements: /// - `_token` address cannot be zero. function transferForeignToken(address _token, address _to) external onlyOwner { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); SafeERC20.safeTransfer(IERC20(_token), _to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } /// @notice Sets the tax address where fees are collected. /// @dev Only callable by the owner. /// @param _taxAddress The new tax address. Must not be the zero address. /// @ emits UpdatedTaxAddress event with the new tax address. function setTaxAddress(address _taxAddress) external onlyOwner { require(_taxAddress != address(0), "address cannot be 0"); taxAddress = payable(_taxAddress); setWhitelist(_taxAddress, true); emit UpdatedTaxAddress(_taxAddress); } /// @notice Forcefully swap back accumulated tokens for WETH and send to the tax address, even if the accumulated amount is below the threshold. /// @dev This function can be used to manually trigger a swap in case of slippage issues or other unforeseen circumstances. /// @dev Only callable by the owner. /// Emits an {OwnerForcedSwapBack} event with the current timestamp. function forceSwapBack() external onlyOwner { swapping = true; _forceSwapBack(); swapping = false; emit OwnerForcedSwapBack(block.timestamp); } function updateAllowanceForSwapping() external onlyOwner { WETH.approve(address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); emit ReuppedApprovals(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ChainNotConfigured","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"DisabledSwap","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"ReuppedApprovals","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"UpdatedFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTaxAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isExcludedFromFees","type":"bool"}],"name":"WhiteList","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistWallet","outputs":[{"internalType":"bool","name":"isExcludedFromFees","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractionValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFees","outputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addtionalValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcludedFromFees","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateAllowanceForSwapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e060405273ae5950ccb704334108212b88ad2339c626502572600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860146101000a81548160ff0219169083151502179055503480156200008157600080fd5b50600062000094620005e560201b60201c565b905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280601481526020017f494e4449414e204445534920434f5720434f494e0000000000000000000000008152506004908162000179919062000fd5565b506040518060400160405280600481526020017f444553490000000000000000000000000000000000000000000000000000000081525060059081620001c0919062000fd5565b506012600660006101000a81548160ff021916908360ff1602179055506000600660009054906101000a900460ff16600a620001fd91906200124c565b64037e11d6006200020f91906200129d565b90506101f48162000221919062001317565b6007819055506101c260098190555061020d600a819055506064600b81905550600033905060008060014603620002865773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29050737a250d5630b4cf539739df2c5dacb4c659f2488d9150620002f8565b62aa36a74603620002c557737b79995e5f793a07bc00c21412e50ecae098e7f9905073c532a74256d3db42d0bf7a0400fefdbad76940089150620002f7565b6040517f4cffccf300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d49190620013b9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060c0516040518363ffffffff1660e01b815260040162000412929190620013fc565b6020604051808303816000875af115801562000432573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004589190620013b9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620004a060a0516001620005ed60201b60201c565b620004b3306001620007ad60201b60201c565b620004c861dead6001620007ad60201b60201c565b620004db836001620007ad60201b60201c565b620004ed83856200085d60201b60201c565b620004fe83620009b060201b60201c565b60c05173ffffffffffffffffffffffffffffffffffffffff1663095ea7b36080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200055f9291906200143a565b6020604051808303816000875af11580156200057f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a59190620014a4565b50620005db306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b8460201b60201c565b505050506200172c565b600033905090565b620005fd620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200068f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006869062001537565b60405180910390fd5b60a05173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580620006ca5750805b6200070c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070390620015cf565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6040518060200160405280821515815250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055509050507feef7d1273b513272e863e6cf3068add356fa793a2ca624f49fdf55d9a361bf708160405162000851919062001602565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008d25760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620008c991906200161f565b60405180910390fd5b8060026000828254620008e691906200163c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200093d91906200163c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009a4919062001677565b60405180910390a35050565b620009c0620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a499062001537565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ac4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000abb906200170a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000bf95760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040162000bf091906200161f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000c6e5760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040162000c6591906200161f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d4e919062001677565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ddd57607f821691505b60208210810362000df35762000df262000d95565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e5d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e1e565b62000e69868362000e1e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000eb662000eb062000eaa8462000e81565b62000e8b565b62000e81565b9050919050565b6000819050919050565b62000ed28362000e95565b62000eea62000ee18262000ebd565b84845462000e2b565b825550505050565b600090565b62000f0162000ef2565b62000f0e81848462000ec7565b505050565b5b8181101562000f365762000f2a60008262000ef7565b60018101905062000f14565b5050565b601f82111562000f855762000f4f8162000df9565b62000f5a8462000e0e565b8101602085101562000f6a578190505b62000f8262000f798562000e0e565b83018262000f13565b50505b505050565b600082821c905092915050565b600062000faa6000198460080262000f8a565b1980831691505092915050565b600062000fc5838362000f97565b9150826002028217905092915050565b62000fe08262000d5b565b67ffffffffffffffff81111562000ffc5762000ffb62000d66565b5b62001008825462000dc4565b6200101582828562000f3a565b600060209050601f8311600181146200104d576000841562001038578287015190505b62001044858262000fb7565b865550620010b4565b601f1984166200105d8662000df9565b60005b82811015620010875784890151825560018201915060208501945060208101905062001060565b86831015620010a75784890151620010a3601f89168262000f97565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200114a57808604811115620011225762001121620010bc565b5b6001851615620011325780820291505b80810290506200114285620010eb565b945062001102565b94509492505050565b60008262001165576001905062001238565b8162001175576000905062001238565b81600181146200118e57600281146200119957620011cf565b600191505062001238565b60ff841115620011ae57620011ad620010bc565b5b8360020a915084821115620011c857620011c7620010bc565b5b5062001238565b5060208310610133831016604e8410600b8410161715620012095782820a905083811115620012035762001202620010bc565b5b62001238565b620012188484846001620010f8565b92509050818404811115620012325762001231620010bc565b5b81810290505b9392505050565b600060ff82169050919050565b6000620012598262000e81565b915062001266836200123f565b9250620012957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001153565b905092915050565b6000620012aa8262000e81565b9150620012b78362000e81565b9250828202620012c78162000e81565b91508282048414831517620012e157620012e0620010bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013248262000e81565b9150620013318362000e81565b925082620013445762001343620012e8565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620013818262001354565b9050919050565b620013938162001374565b81146200139f57600080fd5b50565b600081519050620013b38162001388565b92915050565b600060208284031215620013d257620013d16200134f565b5b6000620013e284828501620013a2565b91505092915050565b620013f68162001374565b82525050565b6000604082019050620014136000830185620013eb565b620014226020830184620013eb565b9392505050565b620014348162000e81565b82525050565b6000604082019050620014516000830185620013eb565b62001460602083018462001429565b9392505050565b60008115159050919050565b6200147e8162001467565b81146200148a57600080fd5b50565b6000815190506200149e8162001473565b92915050565b600060208284031215620014bd57620014bc6200134f565b5b6000620014cd848285016200148d565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200151f602083620014d6565b91506200152c82620014e7565b602082019050919050565b60006020820190508181036000830152620015528162001510565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000620015b7603983620014d6565b9150620015c48262001559565b604082019050919050565b60006020820190508181036000830152620015ea81620015a8565b9050919050565b620015fc8162001467565b82525050565b6000602082019050620016196000830184620015f1565b92915050565b6000602082019050620016366000830184620013eb565b92915050565b6000620016498262000e81565b9150620016568362000e81565b9250828201905080821115620016715762001670620010bc565b5b92915050565b60006020820190506200168e600083018462001429565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620016f2602683620014d6565b9150620016ff8262001694565b604082019050919050565b600060208201905081810360008301526200172581620016e3565b9050919050565b60805160a05160c051613df6620017b060003960008181610a6e0152818161171501528181611ed001528181611f7001528181611fcf015281816126f40152818161291a015281816129ba0152612a19015260008181610c89015261133c0152600081816106a101528181610aaa01528181610b5101526127630152613df66000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638366e79a1161010f578063b62496f5116100a2578063dd62ed3e11610071578063dd62ed3e14610587578063e01af92c146105b7578063e2f45605146105d3578063f2fde38b146105f1576101f0565b8063b62496f5146104fd578063b7bda68f1461052d578063d257b34f1461054b578063db8d55f114610567576101f0565b8063a1883d26116100de578063a1883d2614610463578063a457c2d71461047f578063a9059cbb146104af578063ad5c4648146104df576101f0565b80638366e79a146103ef5780638da5cb5b1461040b57806395d89b41146104295780639a7a23d614610447576101f0565b8063313ce5671161018757806353d6fd591161015657806353d6fd591461037b5780636ddd17131461039757806370a08231146103b5578063715018a6146103e5576101f0565b8063313ce567146103055780633950935114610323578063452ed4f11461035357806351f205e414610371576101f0565b806318160ddd116101c357806318160ddd1461029157806322429085146102af57806323b872dd146102cb57806325424896146102fb576101f0565b806306fdde03146101f55780630758d92414610213578063095ea7b3146102315780630b81a5b614610261575b600080fd5b6101fd61060d565b60405161020a9190612d74565b60405180910390f35b61021b61069f565b6040516102289190612e15565b60405180910390f35b61024b60048036038101906102469190612ea9565b6106c3565b6040516102589190612f04565b60405180910390f35b61027b60048036038101906102769190612f1f565b6106e1565b6040516102889190612f04565b60405180910390f35b61029961070c565b6040516102a69190612f5b565b60405180910390f35b6102c960048036038101906102c49190612f76565b610716565b005b6102e560048036038101906102e09190612fc9565b6108d7565b6040516102f29190612f04565b60405180910390f35b6103036109d5565b005b61030d610bc4565b60405161031a9190613038565b60405180910390f35b61033d60048036038101906103389190612ea9565b610bdb565b60405161034a9190612f04565b60405180910390f35b61035b610c87565b6040516103689190613062565b60405180910390f35b610379610cab565b005b610395600480360381019061039091906130a9565b610db9565b005b61039f610e67565b6040516103ac9190612f04565b60405180910390f35b6103cf60048036038101906103ca9190612f1f565b610e7a565b6040516103dc9190612f5b565b60405180910390f35b6103ed610ec2565b005b610409600480360381019061040491906130e9565b61101a565b005b6104136111e7565b6040516104209190613062565b60405180910390f35b610431611211565b60405161043e9190612d74565b60405180910390f35b610461600480360381019061045c91906130a9565b6112a3565b005b61047d60048036038101906104789190612f1f565b611472565b005b61049960048036038101906104949190612ea9565b61160a565b6040516104a69190612f04565b60405180910390f35b6104c960048036038101906104c49190612ea9565b6116f5565b6040516104d69190612f04565b60405180910390f35b6104e7611713565b6040516104f4919061314a565b60405180910390f35b61051760048036038101906105129190612f1f565b611737565b6040516105249190612f04565b60405180910390f35b610535611757565b6040516105429190613062565b60405180910390f35b61056560048036038101906105609190613165565b61177d565b005b61056f61191a565b60405161057e93929190613192565b60405180910390f35b6105a1600480360381019061059c91906130e9565b611933565b6040516105ae9190612f5b565b60405180910390f35b6105d160048036038101906105cc91906131c9565b6119ba565b005b6105db611ad2565b6040516105e89190612f5b565b60405180910390f35b61060b60048036038101906106069190612f1f565b611ad8565b005b60606004805461061c90613225565b80601f016020809104026020016040519081016040528092919081815260200182805461064890613225565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006106d76106d0611c9e565b8484611ca6565b6001905092915050565b600c6020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b6000600254905090565b61071e611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a4906132a2565b60405180910390fd5b6102bc8311156107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99061330e565b60405180910390fd5b6102bc821115610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906133a0565b60405180910390fd5b6102bc81111561087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390613432565b60405180910390fd5b8260098190555081600a8190555080600b819055507fdee9e37af3ea8d668829450175b129f10d826c482d4a23993888ebdd011b9813600954600a54600b546040516108ca93929190613192565b60405180910390a1505050565b60006108e4848484611e75565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061092f611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b5578381846040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016109ac93929190613452565b60405180910390fd5b6109c9856109c1611c9e565b858403611ca6565b60019150509392505050565b6109dd611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a63906132a2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b07929190613489565b6020604051808303816000875af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906134c7565b50610b96307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611ca6565b7f442677e6ee13f56c544261dd3126fe163b578cb60cedbfda8ee82b3d2dec0ab260405160405180910390a1565b6000600660009054906101000a900460ff16905090565b6000610c7d610be8611c9e565b848460016000610bf6611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c789190613523565b611ca6565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610cb3611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d39906132a2565b60405180910390fd5b6001600660016101000a81548160ff021916908315150217905550610d65611ea8565b6000600660016101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610daf9190612f5b565b60405180910390a1565b6040518060200160405280821515815250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055509050507feef7d1273b513272e863e6cf3068add356fa793a2ca624f49fdf55d9a361bf7081604051610e5b9190612f04565b60405180910390a15050565b600860149054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eca611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f50906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611022611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a8906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906135a3565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161115b9190613062565b602060405180830381865afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c91906135d8565b90506111a98383836120cd565b7fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43883826040516111da929190613489565b60405180910390a1505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461122090613225565b80601f016020809104026020016040519081016040528092919081815260200182805461124c90613225565b80156112995780601f1061126e57610100808354040283529160200191611299565b820191906000526020600020905b81548152906001019060200180831161127c57829003601f168201915b5050505050905090565b6112ab611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611331906132a2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806113925750805b6113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613677565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b61147a611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611500906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f906136e3565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115c4816001610db9565b8073ffffffffffffffffffffffffffffffffffffffff167ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc260405160405180910390a250565b60008060016000611619611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613775565b60405180910390fd5b6116ea6116e1611c9e565b85858403611ca6565b600191505092915050565b6000611709611702611c9e565b8484611e75565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d6020528060005260406000206000915054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611785611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906132a2565b60405180910390fd5b600061181e61070c565b9050620186a06001826118319190613795565b61183b9190613806565b82101561187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906138a9565b60405180910390fd5b606460018261188c9190613795565b6118969190613806565b8211156118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf9061393b565b60405180910390fd5b816007819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1458260405161190e9190612f5b565b60405180910390a15050565b6000806000600954600a54600b54925092509250909192565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119c2611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a48906132a2565b60405180910390fd5b80600860146101000a81548160ff0219169083151502179055508015611aa2577fc49c1e96242859ad1fcebbc65d8629059ac9afdb0f8a7524f5097a388ed304c160405160405180910390a1611acf565b7f12be78ac2c29f3b4b0cca88b9c3ef07cc32e0024bc37404683fa40ff95a320cc60405160405180910390a15b50565b60075481565b611ae0611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b66906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd5906139cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d185760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d0f9190613062565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d8a5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d819190613062565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e689190612f5b565b60405180910390a3505050565b6000611e82848484612153565b9050611e8c61235c565b611ea284848385611e9d91906139ed565b6123e0565b50505050565b6000611eb330610e7a565b905060008103611ec357506120cb565b611ecc81612655565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f279190613062565b602060405180830381865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6891906135d8565b11156120c9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120269190613062565b602060405180830381865afa158015612043573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206791906135d8565b6040518363ffffffff1660e01b8152600401612084929190613489565b6020604051808303816000875af11580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c791906134c7565b505b505b565b61214e8363a9059cbb60e01b84846040516024016120ec929190613489565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061281b565b505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16806121fc5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561220a5760009050612355565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561226757506000600a54115b1561228e57612710600a548461227d9190613795565b6122879190613806565b905061233b565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e957506000600954115b1561231057612710600954846122ff9190613795565b6123099190613806565b905061233a565b6000600b54111561233957612710600b548461232c9190613795565b6123369190613806565b90505b5b5b60008111156123505761234f8530836123e0565b5b809150505b9392505050565b60075461236830610e7a565b1180156123815750600860149054906101000a900460ff165b801561239a5750600660019054906101000a900460ff16155b156123de576001600660016101000a81548160ff0219169083151502179055506123c26128e2565b6000600660016101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124525760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016124499190613062565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124c45760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016124bb9190613062565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612550578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161254793929190613452565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125e39190613523565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126479190612f5b565b60405180910390a350505050565b6000600267ffffffffffffffff81111561267257612671613a21565b5b6040519080825280602002602001820160405280156126a05781602001602082028036833780820191505090505b50905030816000815181106126b8576126b7613a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061272757612726613a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016127e5959493929190613b78565b600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b505050505050565b600061287d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612b179092919063ffffffff16565b90506000815111156128dd578080602001905181019061289d91906134c7565b6128dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d390613c44565b60405180910390fd5b5b505050565b60006128ed30610e7a565b9050600081036128fd5750612b15565b60075481111561290d5760075490505b61291681612655565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129719190613062565b602060405180830381865afa15801561298e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b291906135d8565b1115612b13577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a709190613062565b602060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab191906135d8565b6040518363ffffffff1660e01b8152600401612ace929190613489565b6020604051808303816000875af1158015612aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1191906134c7565b505b505b565b6060612b268484600085612b2f565b90509392505050565b606082471015612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90613cd6565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b9d9190613d3d565b60006040518083038185875af1925050503d8060008114612bda576040519150601f19603f3d011682016040523d82523d6000602084013e612bdf565b606091505b5091509150612bf087838387612bfc565b92505050949350505050565b60608315612c5e576000835103612c5657612c1685612c71565b612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c90613da0565b60405180910390fd5b5b829050612c69565b612c688383612c94565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612ca75781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdb9190612d74565b60405180910390fd5b600081519050919050565b600082825260208201905092915050565b60005b83811015612d1e578082015181840152602081019050612d03565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4682612ce4565b612d508185612cef565b9350612d60818560208601612d00565b612d6981612d2a565b840191505092915050565b60006020820190508181036000830152612d8e8184612d3b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612ddb612dd6612dd184612d96565b612db6565b612d96565b9050919050565b6000612ded82612dc0565b9050919050565b6000612dff82612de2565b9050919050565b612e0f81612df4565b82525050565b6000602082019050612e2a6000830184612e06565b92915050565b600080fd5b6000612e4082612d96565b9050919050565b612e5081612e35565b8114612e5b57600080fd5b50565b600081359050612e6d81612e47565b92915050565b6000819050919050565b612e8681612e73565b8114612e9157600080fd5b50565b600081359050612ea381612e7d565b92915050565b60008060408385031215612ec057612ebf612e30565b5b6000612ece85828601612e5e565b9250506020612edf85828601612e94565b9150509250929050565b60008115159050919050565b612efe81612ee9565b82525050565b6000602082019050612f196000830184612ef5565b92915050565b600060208284031215612f3557612f34612e30565b5b6000612f4384828501612e5e565b91505092915050565b612f5581612e73565b82525050565b6000602082019050612f706000830184612f4c565b92915050565b600080600060608486031215612f8f57612f8e612e30565b5b6000612f9d86828701612e94565b9350506020612fae86828701612e94565b9250506040612fbf86828701612e94565b9150509250925092565b600080600060608486031215612fe257612fe1612e30565b5b6000612ff086828701612e5e565b935050602061300186828701612e5e565b925050604061301286828701612e94565b9150509250925092565b600060ff82169050919050565b6130328161301c565b82525050565b600060208201905061304d6000830184613029565b92915050565b61305c81612e35565b82525050565b60006020820190506130776000830184613053565b92915050565b61308681612ee9565b811461309157600080fd5b50565b6000813590506130a38161307d565b92915050565b600080604083850312156130c0576130bf612e30565b5b60006130ce85828601612e5e565b92505060206130df85828601613094565b9150509250929050565b60008060408385031215613100576130ff612e30565b5b600061310e85828601612e5e565b925050602061311f85828601612e5e565b9150509250929050565b600061313482612de2565b9050919050565b61314481613129565b82525050565b600060208201905061315f600083018461313b565b92915050565b60006020828403121561317b5761317a612e30565b5b600061318984828501612e94565b91505092915050565b60006060820190506131a76000830186612f4c565b6131b46020830185612f4c565b6131c16040830184612f4c565b949350505050565b6000602082840312156131df576131de612e30565b5b60006131ed84828501613094565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323d57607f821691505b6020821081036132505761324f6131f6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061328c602083612cef565b915061329782613256565b602082019050919050565b600060208201905081810360008301526132bb8161327f565b9050919050565b7f4d757374206b656570206275792066656573206174203725206f72206c657373600082015250565b60006132f8602083612cef565b9150613303826132c2565b602082019050919050565b60006020820190508181036000830152613327816132eb565b9050919050565b7f4d757374206b6565702073656c6c2066656573206174203725206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061338a602183612cef565b91506133958261332e565b604082019050919050565b600060208201905081810360008301526133b98161337d565b9050919050565b7f4d757374206b656570207472616e736665722066656573206174203725206f7260008201527f206c657373000000000000000000000000000000000000000000000000000000602082015250565b600061341c602583612cef565b9150613427826133c0565b604082019050919050565b6000602082019050818103600083015261344b8161340f565b9050919050565b60006060820190506134676000830186613053565b6134746020830185612f4c565b6134816040830184612f4c565b949350505050565b600060408201905061349e6000830185613053565b6134ab6020830184612f4c565b9392505050565b6000815190506134c18161307d565b92915050565b6000602082840312156134dd576134dc612e30565b5b60006134eb848285016134b2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352e82612e73565b915061353983612e73565b9250828201905080821115613551576135506134f4565b5b92915050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061358d601a83612cef565b915061359882613557565b602082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b6000815190506135d281612e7d565b92915050565b6000602082840312156135ee576135ed612e30565b5b60006135fc848285016135c3565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613661603983612cef565b915061366c82613605565b604082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f616464726573732063616e6e6f74206265203000000000000000000000000000600082015250565b60006136cd601383612cef565b91506136d882613697565b602082019050919050565b600060208201905081810360008301526136fc816136c0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061375f602583612cef565b915061376a82613703565b604082019050919050565b6000602082019050818103600083015261378e81613752565b9050919050565b60006137a082612e73565b91506137ab83612e73565b92508282026137b981612e73565b915082820484148315176137d0576137cf6134f4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061381182612e73565b915061381c83612e73565b92508261382c5761382b6137d7565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613893603583612cef565b915061389e82613837565b604082019050919050565b600060208201905081810360008301526138c281613886565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000613925603283612cef565b9150613930826138c9565b604082019050919050565b6000602082019050818103600083015261395481613918565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139b7602683612cef565b91506139c28261395b565b604082019050919050565b600060208201905081810360008301526139e6816139aa565b9050919050565b60006139f882612e73565b9150613a0383612e73565b9250828203905081811115613a1b57613a1a6134f4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613aa4613a9f613a9a84613a7f565b612db6565b612e73565b9050919050565b613ab481613a89565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613aef81612e35565b82525050565b6000613b018383613ae6565b60208301905092915050565b6000602082019050919050565b6000613b2582613aba565b613b2f8185613ac5565b9350613b3a83613ad6565b8060005b83811015613b6b578151613b528882613af5565b9750613b5d83613b0d565b925050600181019050613b3e565b5085935050505092915050565b600060a082019050613b8d6000830188612f4c565b613b9a6020830187613aab565b8181036040830152613bac8186613b1a565b9050613bbb6060830185613053565b613bc86080830184612f4c565b9695505050505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613c2e602a83612cef565b9150613c3982613bd2565b604082019050919050565b60006020820190508181036000830152613c5d81613c21565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613cc0602683612cef565b9150613ccb82613c64565b604082019050919050565b60006020820190508181036000830152613cef81613cb3565b9050919050565b600081519050919050565b600081905092915050565b6000613d1782613cf6565b613d218185613d01565b9350613d31818560208601612d00565b80840191505092915050565b6000613d498284613d0c565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613d8a601d83612cef565b9150613d9582613d54565b602082019050919050565b60006020820190508181036000830152613db981613d7d565b905091905056fea2646970667358221220b26c1e5c0073af84b4a0993969dbf81b4644dd756316646931586d563677357f64736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80638366e79a1161010f578063b62496f5116100a2578063dd62ed3e11610071578063dd62ed3e14610587578063e01af92c146105b7578063e2f45605146105d3578063f2fde38b146105f1576101f0565b8063b62496f5146104fd578063b7bda68f1461052d578063d257b34f1461054b578063db8d55f114610567576101f0565b8063a1883d26116100de578063a1883d2614610463578063a457c2d71461047f578063a9059cbb146104af578063ad5c4648146104df576101f0565b80638366e79a146103ef5780638da5cb5b1461040b57806395d89b41146104295780639a7a23d614610447576101f0565b8063313ce5671161018757806353d6fd591161015657806353d6fd591461037b5780636ddd17131461039757806370a08231146103b5578063715018a6146103e5576101f0565b8063313ce567146103055780633950935114610323578063452ed4f11461035357806351f205e414610371576101f0565b806318160ddd116101c357806318160ddd1461029157806322429085146102af57806323b872dd146102cb57806325424896146102fb576101f0565b806306fdde03146101f55780630758d92414610213578063095ea7b3146102315780630b81a5b614610261575b600080fd5b6101fd61060d565b60405161020a9190612d74565b60405180910390f35b61021b61069f565b6040516102289190612e15565b60405180910390f35b61024b60048036038101906102469190612ea9565b6106c3565b6040516102589190612f04565b60405180910390f35b61027b60048036038101906102769190612f1f565b6106e1565b6040516102889190612f04565b60405180910390f35b61029961070c565b6040516102a69190612f5b565b60405180910390f35b6102c960048036038101906102c49190612f76565b610716565b005b6102e560048036038101906102e09190612fc9565b6108d7565b6040516102f29190612f04565b60405180910390f35b6103036109d5565b005b61030d610bc4565b60405161031a9190613038565b60405180910390f35b61033d60048036038101906103389190612ea9565b610bdb565b60405161034a9190612f04565b60405180910390f35b61035b610c87565b6040516103689190613062565b60405180910390f35b610379610cab565b005b610395600480360381019061039091906130a9565b610db9565b005b61039f610e67565b6040516103ac9190612f04565b60405180910390f35b6103cf60048036038101906103ca9190612f1f565b610e7a565b6040516103dc9190612f5b565b60405180910390f35b6103ed610ec2565b005b610409600480360381019061040491906130e9565b61101a565b005b6104136111e7565b6040516104209190613062565b60405180910390f35b610431611211565b60405161043e9190612d74565b60405180910390f35b610461600480360381019061045c91906130a9565b6112a3565b005b61047d60048036038101906104789190612f1f565b611472565b005b61049960048036038101906104949190612ea9565b61160a565b6040516104a69190612f04565b60405180910390f35b6104c960048036038101906104c49190612ea9565b6116f5565b6040516104d69190612f04565b60405180910390f35b6104e7611713565b6040516104f4919061314a565b60405180910390f35b61051760048036038101906105129190612f1f565b611737565b6040516105249190612f04565b60405180910390f35b610535611757565b6040516105429190613062565b60405180910390f35b61056560048036038101906105609190613165565b61177d565b005b61056f61191a565b60405161057e93929190613192565b60405180910390f35b6105a1600480360381019061059c91906130e9565b611933565b6040516105ae9190612f5b565b60405180910390f35b6105d160048036038101906105cc91906131c9565b6119ba565b005b6105db611ad2565b6040516105e89190612f5b565b60405180910390f35b61060b60048036038101906106069190612f1f565b611ad8565b005b60606004805461061c90613225565b80601f016020809104026020016040519081016040528092919081815260200182805461064890613225565b80156106955780601f1061066a57610100808354040283529160200191610695565b820191906000526020600020905b81548152906001019060200180831161067857829003601f168201915b5050505050905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006106d76106d0611c9e565b8484611ca6565b6001905092915050565b600c6020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b6000600254905090565b61071e611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a4906132a2565b60405180910390fd5b6102bc8311156107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e99061330e565b60405180910390fd5b6102bc821115610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e906133a0565b60405180910390fd5b6102bc81111561087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390613432565b60405180910390fd5b8260098190555081600a8190555080600b819055507fdee9e37af3ea8d668829450175b129f10d826c482d4a23993888ebdd011b9813600954600a54600b546040516108ca93929190613192565b60405180910390a1505050565b60006108e4848484611e75565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061092f611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156109b5578381846040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016109ac93929190613452565b60405180910390fd5b6109c9856109c1611c9e565b858403611ca6565b60019150509392505050565b6109dd611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a63906132a2565b60405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b07929190613489565b6020604051808303816000875af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906134c7565b50610b96307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611ca6565b7f442677e6ee13f56c544261dd3126fe163b578cb60cedbfda8ee82b3d2dec0ab260405160405180910390a1565b6000600660009054906101000a900460ff16905090565b6000610c7d610be8611c9e565b848460016000610bf6611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c789190613523565b611ca6565b6001905092915050565b7f000000000000000000000000272914a8bf40d24aa4b6e04a1dae12194922bc1981565b610cb3611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d39906132a2565b60405180910390fd5b6001600660016101000a81548160ff021916908315150217905550610d65611ea8565b6000600660016101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610daf9190612f5b565b60405180910390a1565b6040518060200160405280821515815250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055509050507feef7d1273b513272e863e6cf3068add356fa793a2ca624f49fdf55d9a361bf7081604051610e5b9190612f04565b60405180910390a15050565b600860149054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eca611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f50906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611022611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a8906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906135a3565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161115b9190613062565b602060405180830381865afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c91906135d8565b90506111a98383836120cd565b7fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43883826040516111da929190613489565b60405180910390a1505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461122090613225565b80601f016020809104026020016040519081016040528092919081815260200182805461124c90613225565b80156112995780601f1061126e57610100808354040283529160200191611299565b820191906000526020600020905b81548152906001019060200180831161127c57829003601f168201915b5050505050905090565b6112ab611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611331906132a2565b60405180910390fd5b7f000000000000000000000000272914a8bf40d24aa4b6e04a1dae12194922bc1973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806113925750805b6113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613677565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b61147a611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611500906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f906136e3565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115c4816001610db9565b8073ffffffffffffffffffffffffffffffffffffffff167ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc260405160405180910390a250565b60008060016000611619611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613775565b60405180910390fd5b6116ea6116e1611c9e565b85858403611ca6565b600191505092915050565b6000611709611702611c9e565b8484611e75565b6001905092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600d6020528060005260406000206000915054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611785611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906132a2565b60405180910390fd5b600061181e61070c565b9050620186a06001826118319190613795565b61183b9190613806565b82101561187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906138a9565b60405180910390fd5b606460018261188c9190613795565b6118969190613806565b8211156118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf9061393b565b60405180910390fd5b816007819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1458260405161190e9190612f5b565b60405180910390a15050565b6000806000600954600a54600b54925092509250909192565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119c2611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a48906132a2565b60405180910390fd5b80600860146101000a81548160ff0219169083151502179055508015611aa2577fc49c1e96242859ad1fcebbc65d8629059ac9afdb0f8a7524f5097a388ed304c160405160405180910390a1611acf565b7f12be78ac2c29f3b4b0cca88b9c3ef07cc32e0024bc37404683fa40ff95a320cc60405160405180910390a15b50565b60075481565b611ae0611c9e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b66906132a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd5906139cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d185760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611d0f9190613062565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d8a5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d819190613062565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e689190612f5b565b60405180910390a3505050565b6000611e82848484612153565b9050611e8c61235c565b611ea284848385611e9d91906139ed565b6123e0565b50505050565b6000611eb330610e7a565b905060008103611ec357506120cb565b611ecc81612655565b60007f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f279190613062565b602060405180830381865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6891906135d8565b11156120c9577f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120269190613062565b602060405180830381865afa158015612043573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206791906135d8565b6040518363ffffffff1660e01b8152600401612084929190613489565b6020604051808303816000875af11580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c791906134c7565b505b505b565b61214e8363a9059cbb60e01b84846040516024016120ec929190613489565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061281b565b505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16806121fc5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561220a5760009050612355565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561226757506000600a54115b1561228e57612710600a548461227d9190613795565b6122879190613806565b905061233b565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122e957506000600954115b1561231057612710600954846122ff9190613795565b6123099190613806565b905061233a565b6000600b54111561233957612710600b548461232c9190613795565b6123369190613806565b90505b5b5b60008111156123505761234f8530836123e0565b5b809150505b9392505050565b60075461236830610e7a565b1180156123815750600860149054906101000a900460ff165b801561239a5750600660019054906101000a900460ff16155b156123de576001600660016101000a81548160ff0219169083151502179055506123c26128e2565b6000600660016101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124525760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016124499190613062565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124c45760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016124bb9190613062565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612550578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161254793929190613452565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125e39190613523565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126479190612f5b565b60405180910390a350505050565b6000600267ffffffffffffffff81111561267257612671613a21565b5b6040519080825280602002602001820160405280156126a05781602001602082028036833780820191505090505b50905030816000815181106126b8576126b7613a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061272757612726613a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d79583600084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016127e5959493929190613b78565b600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b505050505050565b600061287d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612b179092919063ffffffff16565b90506000815111156128dd578080602001905181019061289d91906134c7565b6128dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d390613c44565b60405180910390fd5b5b505050565b60006128ed30610e7a565b9050600081036128fd5750612b15565b60075481111561290d5760075490505b61291681612655565b60007f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129719190613062565b602060405180830381865afa15801561298e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b291906135d8565b1115612b13577f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a709190613062565b602060405180830381865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab191906135d8565b6040518363ffffffff1660e01b8152600401612ace929190613489565b6020604051808303816000875af1158015612aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1191906134c7565b505b505b565b6060612b268484600085612b2f565b90509392505050565b606082471015612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90613cd6565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b9d9190613d3d565b60006040518083038185875af1925050503d8060008114612bda576040519150601f19603f3d011682016040523d82523d6000602084013e612bdf565b606091505b5091509150612bf087838387612bfc565b92505050949350505050565b60608315612c5e576000835103612c5657612c1685612c71565b612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c90613da0565b60405180910390fd5b5b829050612c69565b612c688383612c94565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612ca75781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdb9190612d74565b60405180910390fd5b600081519050919050565b600082825260208201905092915050565b60005b83811015612d1e578082015181840152602081019050612d03565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4682612ce4565b612d508185612cef565b9350612d60818560208601612d00565b612d6981612d2a565b840191505092915050565b60006020820190508181036000830152612d8e8184612d3b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612ddb612dd6612dd184612d96565b612db6565b612d96565b9050919050565b6000612ded82612dc0565b9050919050565b6000612dff82612de2565b9050919050565b612e0f81612df4565b82525050565b6000602082019050612e2a6000830184612e06565b92915050565b600080fd5b6000612e4082612d96565b9050919050565b612e5081612e35565b8114612e5b57600080fd5b50565b600081359050612e6d81612e47565b92915050565b6000819050919050565b612e8681612e73565b8114612e9157600080fd5b50565b600081359050612ea381612e7d565b92915050565b60008060408385031215612ec057612ebf612e30565b5b6000612ece85828601612e5e565b9250506020612edf85828601612e94565b9150509250929050565b60008115159050919050565b612efe81612ee9565b82525050565b6000602082019050612f196000830184612ef5565b92915050565b600060208284031215612f3557612f34612e30565b5b6000612f4384828501612e5e565b91505092915050565b612f5581612e73565b82525050565b6000602082019050612f706000830184612f4c565b92915050565b600080600060608486031215612f8f57612f8e612e30565b5b6000612f9d86828701612e94565b9350506020612fae86828701612e94565b9250506040612fbf86828701612e94565b9150509250925092565b600080600060608486031215612fe257612fe1612e30565b5b6000612ff086828701612e5e565b935050602061300186828701612e5e565b925050604061301286828701612e94565b9150509250925092565b600060ff82169050919050565b6130328161301c565b82525050565b600060208201905061304d6000830184613029565b92915050565b61305c81612e35565b82525050565b60006020820190506130776000830184613053565b92915050565b61308681612ee9565b811461309157600080fd5b50565b6000813590506130a38161307d565b92915050565b600080604083850312156130c0576130bf612e30565b5b60006130ce85828601612e5e565b92505060206130df85828601613094565b9150509250929050565b60008060408385031215613100576130ff612e30565b5b600061310e85828601612e5e565b925050602061311f85828601612e5e565b9150509250929050565b600061313482612de2565b9050919050565b61314481613129565b82525050565b600060208201905061315f600083018461313b565b92915050565b60006020828403121561317b5761317a612e30565b5b600061318984828501612e94565b91505092915050565b60006060820190506131a76000830186612f4c565b6131b46020830185612f4c565b6131c16040830184612f4c565b949350505050565b6000602082840312156131df576131de612e30565b5b60006131ed84828501613094565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323d57607f821691505b6020821081036132505761324f6131f6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061328c602083612cef565b915061329782613256565b602082019050919050565b600060208201905081810360008301526132bb8161327f565b9050919050565b7f4d757374206b656570206275792066656573206174203725206f72206c657373600082015250565b60006132f8602083612cef565b9150613303826132c2565b602082019050919050565b60006020820190508181036000830152613327816132eb565b9050919050565b7f4d757374206b6565702073656c6c2066656573206174203725206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061338a602183612cef565b91506133958261332e565b604082019050919050565b600060208201905081810360008301526133b98161337d565b9050919050565b7f4d757374206b656570207472616e736665722066656573206174203725206f7260008201527f206c657373000000000000000000000000000000000000000000000000000000602082015250565b600061341c602583612cef565b9150613427826133c0565b604082019050919050565b6000602082019050818103600083015261344b8161340f565b9050919050565b60006060820190506134676000830186613053565b6134746020830185612f4c565b6134816040830184612f4c565b949350505050565b600060408201905061349e6000830185613053565b6134ab6020830184612f4c565b9392505050565b6000815190506134c18161307d565b92915050565b6000602082840312156134dd576134dc612e30565b5b60006134eb848285016134b2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352e82612e73565b915061353983612e73565b9250828201905080821115613551576135506134f4565b5b92915050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061358d601a83612cef565b915061359882613557565b602082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b6000815190506135d281612e7d565b92915050565b6000602082840312156135ee576135ed612e30565b5b60006135fc848285016135c3565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613661603983612cef565b915061366c82613605565b604082019050919050565b6000602082019050818103600083015261369081613654565b9050919050565b7f616464726573732063616e6e6f74206265203000000000000000000000000000600082015250565b60006136cd601383612cef565b91506136d882613697565b602082019050919050565b600060208201905081810360008301526136fc816136c0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061375f602583612cef565b915061376a82613703565b604082019050919050565b6000602082019050818103600083015261378e81613752565b9050919050565b60006137a082612e73565b91506137ab83612e73565b92508282026137b981612e73565b915082820484148315176137d0576137cf6134f4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061381182612e73565b915061381c83612e73565b92508261382c5761382b6137d7565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613893603583612cef565b915061389e82613837565b604082019050919050565b600060208201905081810360008301526138c281613886565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000613925603283612cef565b9150613930826138c9565b604082019050919050565b6000602082019050818103600083015261395481613918565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139b7602683612cef565b91506139c28261395b565b604082019050919050565b600060208201905081810360008301526139e6816139aa565b9050919050565b60006139f882612e73565b9150613a0383612e73565b9250828203905081811115613a1b57613a1a6134f4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613aa4613a9f613a9a84613a7f565b612db6565b612e73565b9050919050565b613ab481613a89565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613aef81612e35565b82525050565b6000613b018383613ae6565b60208301905092915050565b6000602082019050919050565b6000613b2582613aba565b613b2f8185613ac5565b9350613b3a83613ad6565b8060005b83811015613b6b578151613b528882613af5565b9750613b5d83613b0d565b925050600181019050613b3e565b5085935050505092915050565b600060a082019050613b8d6000830188612f4c565b613b9a6020830187613aab565b8181036040830152613bac8186613b1a565b9050613bbb6060830185613053565b613bc86080830184612f4c565b9695505050505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000613c2e602a83612cef565b9150613c3982613bd2565b604082019050919050565b60006020820190508181036000830152613c5d81613c21565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613cc0602683612cef565b9150613ccb82613c64565b604082019050919050565b60006020820190508181036000830152613cef81613cb3565b9050919050565b600081519050919050565b600081905092915050565b6000613d1782613cf6565b613d218185613d01565b9350613d31818560208601612d00565b80840191505092915050565b6000613d498284613d0c565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613d8a601d83612cef565b9150613d9582613d54565b602082019050919050565b60006020820190508181036000830152613db981613d7d565b905091905056fea2646970667358221220b26c1e5c0073af84b4a0993969dbf81b4644dd756316646931586d563677357f64736f6c63430008120033
Deployed Bytecode Sourcemap
16695:12614:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19730:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16822:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10652:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17300:59;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9918:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23365:510;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10870:606;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29072:234;;;:::i;:::-;;19934:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11484:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16866:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28880:184;;;:::i;:::-;;20309:271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17092:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10034:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14333:150;;;:::i;:::-;;27556:390;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14119:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19830:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22647:358;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28206:271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11797:485;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10219:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16906:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17368:57;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17013:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21607:522;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24276:237;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10443:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20830:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16971:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14491:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19730:92;19776:13;19809:5;19802:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19730:92;:::o;16822:37::-;;;:::o;10652:210::-;10771:4;10793:39;10802:12;:10;:12::i;:::-;10816:7;10825:6;10793:8;:39::i;:::-;10850:4;10843:11;;10652:210;;;;:::o;17300:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9918:108::-;9979:7;10006:12;;9999:19;;9918:108;:::o;23365:510::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23525:3:::1;23514:7;:14;;23506:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23596:3;23584:8;:15;;23576:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23672:3;23656:12;:19;;23648:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23737:7;23728:6;:16;;;;23765:8;23755:7;:18;;;;23798:12;23784:11;:26;;;;23826:41;23838:6;;23846:7;;23855:11;;23826:41;;;;;;;;:::i;:::-;;;;;;;;23365:510:::0;;;:::o;10870:606::-;11010:4;11027:36;11037:6;11045:9;11056:6;11027:9;:36::i;:::-;11076:24;11103:11;:19;11115:6;11103:19;;;;;;;;;;;;;;;:33;11123:12;:10;:12::i;:::-;11103:33;;;;;;;;;;;;;;;;11076:60;;11170:6;11151:16;:25;11147:194;;;11245:9;11273:16;11308:6;11200:129;;;;;;;;;;;;;:::i;:::-;;;;;;;;11147:194;11376:57;11385:6;11393:12;:10;:12::i;:::-;11426:6;11407:16;:25;11376:8;:57::i;:::-;11464:4;11457:11;;;10870:606;;;;;:::o;29072:234::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29140:4:::1;:12;;;29161:9;29173:17;29140:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29202:62;29219:4;29234:9;29246:17;29202:8;:62::i;:::-;29280:18;;;;;;;;;;29072:234::o:0;19934:83::-;19975:5;20000:9;;;;;;;;;;;19993:16;;19934:83;:::o;11484:305::-;11603:4;11625:134;11648:12;:10;:12::i;:::-;11675:7;11734:14;11697:11;:25;11709:12;:10;:12::i;:::-;11697:25;;;;;;;;;;;;;;;:34;11723:7;11697:34;;;;;;;;;;;;;;;;:51;;;;:::i;:::-;11625:8;:134::i;:::-;11777:4;11770:11;;11484:305;;;;:::o;16866:31::-;;;:::o;28880:184::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28946:4:::1;28935:8;;:15;;;;;;;;;;;;;;;;;;28961:16;:14;:16::i;:::-;28999:5;28988:8;;:16;;;;;;;;;;;;;;;;;;29020:36;29040:15;29020:36;;;;;;:::i;:::-;;;;;;;;28880:184::o:0;20309:271::-;20444:59;;;;;;;;20474:18;20444:59;;;;;20416:16;:25;20433:7;20416:25;;;;;;;;;;;;;;;:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20519:53;20543:18;20519:53;;;;;;:::i;:::-;;;;;;;;20309:271;;:::o;17092:31::-;;;;;;;;;;;;;:::o;10034:177::-;10153:7;10185:9;:18;10195:7;10185:18;;;;;;;;;;;;;;;;10178:25;;10034:177;;;:::o;14333:150::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14442:1:::1;14405:40;;14426:6;;;;;;;;;;;14405:40;;;;;;;;;;;;14473:1;14456:6;;:19;;;;;;;;;;;;;;;;;;14333:150::o:0;27556:390::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27694:1:::1;27676:20;;:6;:20;;::::0;27668:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27738:24;27772:6;27765:24;;;27798:4;27765:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27738:66;;27815:61;27845:6;27854:3;27859:16;27815:22;:61::i;:::-;27892:46;27913:6;27921:16;27892:46;;;;;;;:::i;:::-;;;;;;;;27657:289;27556:390:::0;;:::o;14119:79::-;14157:7;14184:6;;;;;;;;;;;14177:13;;14119:79;:::o;19830:96::-;19878:13;19911:7;19904:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19830:96;:::o;22647:358::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22791:6:::1;22783:14;;:4;:14;;;;:23;;;;22801:5;22783:23;22761:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;22936:5;22902:25;:31;22928:4;22902:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22991:5;22957:40;;22985:4;22957:40;;;;;;;;;;;;22647:358:::0;;:::o;28206:271::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28311:1:::1;28288:25;;:11;:25;;::::0;28280:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28369:11;28348:10;;:33;;;;;;;;;;;;;;;;;;28392:31;28405:11;28418:4;28392:12;:31::i;:::-;28457:11;28439:30;;;;;;;;;;;;28206:271:::0;:::o;11797:485::-;11918:4;11940:24;11967:11;:25;11979:12;:10;:12::i;:::-;11967:25;;;;;;;;;;;;;;;:34;11993:7;11967:34;;;;;;;;;;;;;;;;11940:61;;12054:16;12034;:36;;12012:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;12171:68;12180:12;:10;:12::i;:::-;12194:7;12222:16;12203;:35;12171:8;:68::i;:::-;12270:4;12263:11;;;11797:485;;;;:::o;10219:216::-;10341:4;10363:42;10373:12;:10;:12::i;:::-;10387:9;10398:6;10363:9;:42::i;:::-;10423:4;10416:11;;10219:216;;;;:::o;16906:28::-;;;:::o;17368:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;17013:70::-;;;;;;;;;;;;;:::o;21607:522::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21690:20:::1;21713:13;:11;:13::i;:::-;21690:36;;21793:6;21788:1;21773:12;:16;;;;:::i;:::-;21772:27;;;;:::i;:::-;21759:9;:40;;21737:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;21947:3;21942:1;21927:12;:16;;;;:::i;:::-;21926:24;;;;:::i;:::-;21913:9;:37;;21891:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;22060:9;22039:18;:30;;;;22085:36;22111:9;22085:36;;;;;;:::i;:::-;;;;;;;;21679:450;21607:522:::0;:::o;24276:237::-;24359:15;24389:16;24420:20;24476:6;;24484:7;;24493:11;;24468:37;;;;;;24276:237;;;:::o;10443:201::-;10577:7;10609:11;:18;10621:5;10609:18;;;;;;;;;;;;;;;:27;10628:7;10609:27;;;;;;;;;;;;;;;;10602:34;;10443:201;;;;:::o;20830:217::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20912:7:::1;20898:11;;:21;;;;;;;;;;;;;;;;;;20934:7;20930:110;;;20963:13;;;;;;;;;;20930:110;;;21014:14;;;;;;;;;;20930:110;20830:217:::0;:::o;16971:33::-;;;;:::o;14491:281::-;14256:12;:10;:12::i;:::-;14246:22;;:6;;;;;;;;;;;:22;;;14238:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14614:1:::1;14594:22;;:8;:22;;::::0;14572:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14727:8;14698:38;;14719:6;;;;;;;;;;;14698:38;;;;;;;;;;;;14756:8;14747:6;;:17;;;;;;;;;;;;;;;;;;14491:281:::0;:::o;221:98::-;274:7;301:10;294:17;;221:98;:::o;13343:425::-;13492:1;13475:19;;:5;:19;;;13471:91;;13547:1;13518:32;;;;;;;;;;;:::i;:::-;;;;;;;;13471:91;13595:1;13576:21;;:7;:21;;;13572:92;;13649:1;13621:31;;;;;;;;;;;:::i;:::-;;;;;;;;13572:92;13706:6;13676:11;:18;13688:5;13676:18;;;;;;;;;;;;;;;:27;13695:7;13676:27;;;;;;;;;;;;;;;:36;;;;13744:7;13728:32;;13737:5;13728:32;;;13753:6;13728:32;;;;;;:::i;:::-;;;;;;;;13343:425;;;:::o;25554:249::-;25678:12;25693:26;25702:4;25708:2;25712:6;25693:8;:26::i;:::-;25678:41;;25730:14;:12;:14::i;:::-;25755:40;25771:4;25777:2;25790:4;25781:6;:13;;;;:::i;:::-;25755:15;:40::i;:::-;25667:136;25554:249;;;:::o;26802:355::-;26847:23;26873:24;26891:4;26873:9;:24::i;:::-;26847:50;;26933:1;26914:15;:20;26910:59;;26951:7;;;26910:59;26981:34;26999:15;26981:17;:34::i;:::-;27064:1;27032:4;:14;;;27055:4;27032:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;27028:122;;;27082:4;:13;;;27096:10;;;;;;;;;;;27108:4;:14;;;27131:4;27108:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27082:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27028:122;26836:321;26802:355;:::o;7488:248::-;7605:123;7639:5;7682:23;;;7707:2;7711:5;7659:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7605:19;:123::i;:::-;7488:248;;;:::o;24521:739::-;24633:7;24659:16;:22;24676:4;24659:22;;;;;;;;;;;;;;;:41;;;;;;;;;;;;:84;;;;24704:16;:20;24721:2;24704:20;;;;;;;;;;;;;;;:39;;;;;;;;;;;;24659:84;24655:125;;;24767:1;24760:8;;;;24655:125;24792:12;24821:25;:29;24847:2;24821:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;24864:1;24854:7;;:11;24821:44;24817:317;;;24910:5;24899:7;;24890:6;:16;;;;:::i;:::-;24889:26;;;;:::i;:::-;24882:33;;24817:317;;;24937:25;:31;24963:4;24937:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;24981:1;24972:6;;:10;24937:45;24933:201;;;25026:5;25016:6;;25007;:15;;;;:::i;:::-;25006:25;;;;:::i;:::-;24999:32;;24933:201;;;25067:1;25053:11;;:15;25049:85;;;25117:5;25102:11;;25093:6;:20;;;;:::i;:::-;25092:30;;;;:::i;:::-;25085:37;;25049:85;24933:201;24817:317;25157:1;25150:4;:8;25146:83;;;25175:42;25191:4;25205;25212;25175:15;:42::i;:::-;25146:83;25248:4;25241:11;;;24521:739;;;;;;:::o;25268:278::-;25357:18;;25330:24;25348:4;25330:9;:24::i;:::-;:45;:73;;;;;25392:11;;;;;;;;;;;25330:73;:99;;;;;25421:8;;;;;;;;;;;25420:9;25330:99;25312:227;;;25467:4;25456:8;;:15;;;;;;;;;;;;;;;;;;25486:10;:8;:10::i;:::-;25522:5;25511:8;;:16;;;;;;;;;;;;;;;;;;25312:227;25268:278::o;12290:696::-;12444:1;12426:20;;:6;:20;;;12422:90;;12497:1;12470:30;;;;;;;;;;;:::i;:::-;;;;;;;;12422:90;12547:1;12526:23;;:9;:23;;;12522:95;;12602:1;12573:32;;;;;;;;;;;:::i;:::-;;;;;;;;12522:95;12627:21;12651:9;:17;12661:6;12651:17;;;;;;;;;;;;;;;;12627:41;;12699:6;12683:13;:22;12679:117;;;12754:6;12762:13;12777:6;12729:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;12679:117;12867:6;12851:13;:22;12831:9;:17;12841:6;12831:17;;;;;;;;;;;;;;;:42;;;;12919:6;12895:9;:20;12905:9;12895:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12960:9;12943:35;;12952:6;12943:35;;;12971:6;12943:35;;;;;;:::i;:::-;;;;;;;;12411:575;12290:696;;;:::o;25811:509::-;25938:21;25976:1;25962:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25938:40;;26007:4;25989;25994:1;25989:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26041:4;26023;26028:1;26023:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26085:9;:63;;;26163:11;26189:1;26233:4;26260:10;;;;;;;;;;;26286:15;26085:227;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25867:453;25811:509;:::o;7744:419::-;7825:23;7851:106;7893:4;7851:106;;;;;;;;;;;;;;;;;7859:5;7851:27;;;;:106;;;;;:::i;:::-;7825:132;;7992:1;7972:10;:17;:21;7968:188;;;8047:10;8036:30;;;;;;;;;;;;:::i;:::-;8010:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;7968:188;7814:349;7744:419;;:::o;26328:466::-;26367:23;26393:24;26411:4;26393:9;:24::i;:::-;26367:50;;26453:1;26434:15;:20;26430:59;;26471:7;;;26430:59;26523:18;;26505:15;:36;26501:105;;;26576:18;;26558:36;;26501:105;26618:34;26636:15;26618:17;:34::i;:::-;26701:1;26669:4;:14;;;26692:4;26669:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;26665:122;;;26719:4;:13;;;26733:10;;;;;;;;;;;26745:4;:14;;;26768:4;26745:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26719:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26665:122;26356:438;26328:466;:::o;1310:229::-;1447:12;1479:52;1501:6;1509:4;1515:1;1518:12;1479:21;:52::i;:::-;1472:59;;1310:229;;;;;:::o;2526:612::-;2696:12;2768:5;2743:21;:30;;2721:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;2851:12;2865:23;2892:6;:11;;2911:5;2932:4;2892:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2850:97;;;;2978:152;3023:6;3048:7;3074:10;3103:12;2978:26;:152::i;:::-;2958:172;;;;2526:612;;;;;;:::o;5661:644::-;5846:12;5875:7;5871:427;;;5924:1;5903:10;:17;:22;5899:290;;6121:18;6132:6;6121:10;:18::i;:::-;6113:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5899:290;6210:10;6203:17;;;;5871:427;6253:33;6261:10;6273:12;6253:7;:33::i;:::-;5661:644;;;;;;;:::o;474:115::-;534:4;580:1;558:7;:19;;;:23;551:30;;474:115;;;:::o;6847:575::-;7051:1;7031:10;:17;:21;7027:388;;;7263:10;7257:17;7320:15;7307:10;7303:2;7299:19;7292:44;7027:388;7390:12;7383:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:99:1;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:145::-;1896:9;1929:37;1960:5;1929:37;:::i;:::-;1916:50;;1827:145;;;:::o;1978:169::-;2084:56;2134:5;2084:56;:::i;:::-;2079:3;2072:69;1978:169;;:::o;2153:260::-;2265:4;2303:2;2292:9;2288:18;2280:26;;2316:90;2403:1;2392:9;2388:17;2379:6;2316:90;:::i;:::-;2153:260;;;;:::o;2500:117::-;2609:1;2606;2599:12;2746:96;2783:7;2812:24;2830:5;2812:24;:::i;:::-;2801:35;;2746:96;;;:::o;2848:122::-;2921:24;2939:5;2921:24;:::i;:::-;2914:5;2911:35;2901:63;;2960:1;2957;2950:12;2901:63;2848:122;:::o;2976:139::-;3022:5;3060:6;3047:20;3038:29;;3076:33;3103:5;3076:33;:::i;:::-;2976:139;;;;:::o;3121:77::-;3158:7;3187:5;3176:16;;3121:77;;;:::o;3204:122::-;3277:24;3295:5;3277:24;:::i;:::-;3270:5;3267:35;3257:63;;3316:1;3313;3306:12;3257:63;3204:122;:::o;3332:139::-;3378:5;3416:6;3403:20;3394:29;;3432:33;3459:5;3432:33;:::i;:::-;3332:139;;;;:::o;3477:474::-;3545:6;3553;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3855:2;3881:53;3926:7;3917:6;3906:9;3902:22;3881:53;:::i;:::-;3871:63;;3826:118;3477:474;;;;;:::o;3957:90::-;3991:7;4034:5;4027:13;4020:21;4009:32;;3957:90;;;:::o;4053:109::-;4134:21;4149:5;4134:21;:::i;:::-;4129:3;4122:34;4053:109;;:::o;4168:210::-;4255:4;4293:2;4282:9;4278:18;4270:26;;4306:65;4368:1;4357:9;4353:17;4344:6;4306:65;:::i;:::-;4168:210;;;;:::o;4384:329::-;4443:6;4492:2;4480:9;4471:7;4467:23;4463:32;4460:119;;;4498:79;;:::i;:::-;4460:119;4618:1;4643:53;4688:7;4679:6;4668:9;4664:22;4643:53;:::i;:::-;4633:63;;4589:117;4384:329;;;;:::o;4719:118::-;4806:24;4824:5;4806:24;:::i;:::-;4801:3;4794:37;4719:118;;:::o;4843:222::-;4936:4;4974:2;4963:9;4959:18;4951:26;;4987:71;5055:1;5044:9;5040:17;5031:6;4987:71;:::i;:::-;4843:222;;;;:::o;5071:619::-;5148:6;5156;5164;5213:2;5201:9;5192:7;5188:23;5184:32;5181:119;;;5219:79;;:::i;:::-;5181:119;5339:1;5364:53;5409:7;5400:6;5389:9;5385:22;5364:53;:::i;:::-;5354:63;;5310:117;5466:2;5492:53;5537:7;5528:6;5517:9;5513:22;5492:53;:::i;:::-;5482:63;;5437:118;5594:2;5620:53;5665:7;5656:6;5645:9;5641:22;5620:53;:::i;:::-;5610:63;;5565:118;5071:619;;;;;:::o;5696:::-;5773:6;5781;5789;5838:2;5826:9;5817:7;5813:23;5809:32;5806:119;;;5844:79;;:::i;:::-;5806:119;5964:1;5989:53;6034:7;6025:6;6014:9;6010:22;5989:53;:::i;:::-;5979:63;;5935:117;6091:2;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6062:118;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;5696:619;;;;;:::o;6321:86::-;6356:7;6396:4;6389:5;6385:16;6374:27;;6321:86;;;:::o;6413:112::-;6496:22;6512:5;6496:22;:::i;:::-;6491:3;6484:35;6413:112;;:::o;6531:214::-;6620:4;6658:2;6647:9;6643:18;6635:26;;6671:67;6735:1;6724:9;6720:17;6711:6;6671:67;:::i;:::-;6531:214;;;;:::o;6751:118::-;6838:24;6856:5;6838:24;:::i;:::-;6833:3;6826:37;6751:118;;:::o;6875:222::-;6968:4;7006:2;6995:9;6991:18;6983:26;;7019:71;7087:1;7076:9;7072:17;7063:6;7019:71;:::i;:::-;6875:222;;;;:::o;7103:116::-;7173:21;7188:5;7173:21;:::i;:::-;7166:5;7163:32;7153:60;;7209:1;7206;7199:12;7153:60;7103:116;:::o;7225:133::-;7268:5;7306:6;7293:20;7284:29;;7322:30;7346:5;7322:30;:::i;:::-;7225:133;;;;:::o;7364:468::-;7429:6;7437;7486:2;7474:9;7465:7;7461:23;7457:32;7454:119;;;7492:79;;:::i;:::-;7454:119;7612:1;7637:53;7682:7;7673:6;7662:9;7658:22;7637:53;:::i;:::-;7627:63;;7583:117;7739:2;7765:50;7807:7;7798:6;7787:9;7783:22;7765:50;:::i;:::-;7755:60;;7710:115;7364:468;;;;;:::o;7838:474::-;7906:6;7914;7963:2;7951:9;7942:7;7938:23;7934:32;7931:119;;;7969:79;;:::i;:::-;7931:119;8089:1;8114:53;8159:7;8150:6;8139:9;8135:22;8114:53;:::i;:::-;8104:63;;8060:117;8216:2;8242:53;8287:7;8278:6;8267:9;8263:22;8242:53;:::i;:::-;8232:63;;8187:118;7838:474;;;;;:::o;8318:140::-;8382:9;8415:37;8446:5;8415:37;:::i;:::-;8402:50;;8318:140;;;:::o;8464:159::-;8565:51;8610:5;8565:51;:::i;:::-;8560:3;8553:64;8464:159;;:::o;8629:250::-;8736:4;8774:2;8763:9;8759:18;8751:26;;8787:85;8869:1;8858:9;8854:17;8845:6;8787:85;:::i;:::-;8629:250;;;;:::o;8885:329::-;8944:6;8993:2;8981:9;8972:7;8968:23;8964:32;8961:119;;;8999:79;;:::i;:::-;8961:119;9119:1;9144:53;9189:7;9180:6;9169:9;9165:22;9144:53;:::i;:::-;9134:63;;9090:117;8885:329;;;;:::o;9220:442::-;9369:4;9407:2;9396:9;9392:18;9384:26;;9420:71;9488:1;9477:9;9473:17;9464:6;9420:71;:::i;:::-;9501:72;9569:2;9558:9;9554:18;9545:6;9501:72;:::i;:::-;9583;9651:2;9640:9;9636:18;9627:6;9583:72;:::i;:::-;9220:442;;;;;;:::o;9668:323::-;9724:6;9773:2;9761:9;9752:7;9748:23;9744:32;9741:119;;;9779:79;;:::i;:::-;9741:119;9899:1;9924:50;9966:7;9957:6;9946:9;9942:22;9924:50;:::i;:::-;9914:60;;9870:114;9668:323;;;;:::o;9997:180::-;10045:77;10042:1;10035:88;10142:4;10139:1;10132:15;10166:4;10163:1;10156:15;10183:320;10227:6;10264:1;10258:4;10254:12;10244:22;;10311:1;10305:4;10301:12;10332:18;10322:81;;10388:4;10380:6;10376:17;10366:27;;10322:81;10450:2;10442:6;10439:14;10419:18;10416:38;10413:84;;10469:18;;:::i;:::-;10413:84;10234:269;10183:320;;;:::o;10509:182::-;10649:34;10645:1;10637:6;10633:14;10626:58;10509:182;:::o;10697:366::-;10839:3;10860:67;10924:2;10919:3;10860:67;:::i;:::-;10853:74;;10936:93;11025:3;10936:93;:::i;:::-;11054:2;11049:3;11045:12;11038:19;;10697:366;;;:::o;11069:419::-;11235:4;11273:2;11262:9;11258:18;11250:26;;11322:9;11316:4;11312:20;11308:1;11297:9;11293:17;11286:47;11350:131;11476:4;11350:131;:::i;:::-;11342:139;;11069:419;;;:::o;11494:182::-;11634:34;11630:1;11622:6;11618:14;11611:58;11494:182;:::o;11682:366::-;11824:3;11845:67;11909:2;11904:3;11845:67;:::i;:::-;11838:74;;11921:93;12010:3;11921:93;:::i;:::-;12039:2;12034:3;12030:12;12023:19;;11682:366;;;:::o;12054:419::-;12220:4;12258:2;12247:9;12243:18;12235:26;;12307:9;12301:4;12297:20;12293:1;12282:9;12278:17;12271:47;12335:131;12461:4;12335:131;:::i;:::-;12327:139;;12054:419;;;:::o;12479:220::-;12619:34;12615:1;12607:6;12603:14;12596:58;12688:3;12683:2;12675:6;12671:15;12664:28;12479:220;:::o;12705:366::-;12847:3;12868:67;12932:2;12927:3;12868:67;:::i;:::-;12861:74;;12944:93;13033:3;12944:93;:::i;:::-;13062:2;13057:3;13053:12;13046:19;;12705:366;;;:::o;13077:419::-;13243:4;13281:2;13270:9;13266:18;13258:26;;13330:9;13324:4;13320:20;13316:1;13305:9;13301:17;13294:47;13358:131;13484:4;13358:131;:::i;:::-;13350:139;;13077:419;;;:::o;13502:224::-;13642:34;13638:1;13630:6;13626:14;13619:58;13711:7;13706:2;13698:6;13694:15;13687:32;13502:224;:::o;13732:366::-;13874:3;13895:67;13959:2;13954:3;13895:67;:::i;:::-;13888:74;;13971:93;14060:3;13971:93;:::i;:::-;14089:2;14084:3;14080:12;14073:19;;13732:366;;;:::o;14104:419::-;14270:4;14308:2;14297:9;14293:18;14285:26;;14357:9;14351:4;14347:20;14343:1;14332:9;14328:17;14321:47;14385:131;14511:4;14385:131;:::i;:::-;14377:139;;14104:419;;;:::o;14529:442::-;14678:4;14716:2;14705:9;14701:18;14693:26;;14729:71;14797:1;14786:9;14782:17;14773:6;14729:71;:::i;:::-;14810:72;14878:2;14867:9;14863:18;14854:6;14810:72;:::i;:::-;14892;14960:2;14949:9;14945:18;14936:6;14892:72;:::i;:::-;14529:442;;;;;;:::o;14977:332::-;15098:4;15136:2;15125:9;15121:18;15113:26;;15149:71;15217:1;15206:9;15202:17;15193:6;15149:71;:::i;:::-;15230:72;15298:2;15287:9;15283:18;15274:6;15230:72;:::i;:::-;14977:332;;;;;:::o;15315:137::-;15369:5;15400:6;15394:13;15385:22;;15416:30;15440:5;15416:30;:::i;:::-;15315:137;;;;:::o;15458:345::-;15525:6;15574:2;15562:9;15553:7;15549:23;15545:32;15542:119;;;15580:79;;:::i;:::-;15542:119;15700:1;15725:61;15778:7;15769:6;15758:9;15754:22;15725:61;:::i;:::-;15715:71;;15671:125;15458:345;;;;:::o;15809:180::-;15857:77;15854:1;15847:88;15954:4;15951:1;15944:15;15978:4;15975:1;15968:15;15995:191;16035:3;16054:20;16072:1;16054:20;:::i;:::-;16049:25;;16088:20;16106:1;16088:20;:::i;:::-;16083:25;;16131:1;16128;16124:9;16117:16;;16152:3;16149:1;16146:10;16143:36;;;16159:18;;:::i;:::-;16143:36;15995:191;;;;:::o;16192:176::-;16332:28;16328:1;16320:6;16316:14;16309:52;16192:176;:::o;16374:366::-;16516:3;16537:67;16601:2;16596:3;16537:67;:::i;:::-;16530:74;;16613:93;16702:3;16613:93;:::i;:::-;16731:2;16726:3;16722:12;16715:19;;16374:366;;;:::o;16746:419::-;16912:4;16950:2;16939:9;16935:18;16927:26;;16999:9;16993:4;16989:20;16985:1;16974:9;16970:17;16963:47;17027:131;17153:4;17027:131;:::i;:::-;17019:139;;16746:419;;;:::o;17171:143::-;17228:5;17259:6;17253:13;17244:22;;17275:33;17302:5;17275:33;:::i;:::-;17171:143;;;;:::o;17320:351::-;17390:6;17439:2;17427:9;17418:7;17414:23;17410:32;17407:119;;;17445:79;;:::i;:::-;17407:119;17565:1;17590:64;17646:7;17637:6;17626:9;17622:22;17590:64;:::i;:::-;17580:74;;17536:128;17320:351;;;;:::o;17677:244::-;17817:34;17813:1;17805:6;17801:14;17794:58;17886:27;17881:2;17873:6;17869:15;17862:52;17677:244;:::o;17927:366::-;18069:3;18090:67;18154:2;18149:3;18090:67;:::i;:::-;18083:74;;18166:93;18255:3;18166:93;:::i;:::-;18284:2;18279:3;18275:12;18268:19;;17927:366;;;:::o;18299:419::-;18465:4;18503:2;18492:9;18488:18;18480:26;;18552:9;18546:4;18542:20;18538:1;18527:9;18523:17;18516:47;18580:131;18706:4;18580:131;:::i;:::-;18572:139;;18299:419;;;:::o;18724:169::-;18864:21;18860:1;18852:6;18848:14;18841:45;18724:169;:::o;18899:366::-;19041:3;19062:67;19126:2;19121:3;19062:67;:::i;:::-;19055:74;;19138:93;19227:3;19138:93;:::i;:::-;19256:2;19251:3;19247:12;19240:19;;18899:366;;;:::o;19271:419::-;19437:4;19475:2;19464:9;19460:18;19452:26;;19524:9;19518:4;19514:20;19510:1;19499:9;19495:17;19488:47;19552:131;19678:4;19552:131;:::i;:::-;19544:139;;19271:419;;;:::o;19696:224::-;19836:34;19832:1;19824:6;19820:14;19813:58;19905:7;19900:2;19892:6;19888:15;19881:32;19696:224;:::o;19926:366::-;20068:3;20089:67;20153:2;20148:3;20089:67;:::i;:::-;20082:74;;20165:93;20254:3;20165:93;:::i;:::-;20283:2;20278:3;20274:12;20267:19;;19926:366;;;:::o;20298:419::-;20464:4;20502:2;20491:9;20487:18;20479:26;;20551:9;20545:4;20541:20;20537:1;20526:9;20522:17;20515:47;20579:131;20705:4;20579:131;:::i;:::-;20571:139;;20298:419;;;:::o;20723:410::-;20763:7;20786:20;20804:1;20786:20;:::i;:::-;20781:25;;20820:20;20838:1;20820:20;:::i;:::-;20815:25;;20875:1;20872;20868:9;20897:30;20915:11;20897:30;:::i;:::-;20886:41;;21076:1;21067:7;21063:15;21060:1;21057:22;21037:1;21030:9;21010:83;20987:139;;21106:18;;:::i;:::-;20987:139;20771:362;20723:410;;;;:::o;21139:180::-;21187:77;21184:1;21177:88;21284:4;21281:1;21274:15;21308:4;21305:1;21298:15;21325:185;21365:1;21382:20;21400:1;21382:20;:::i;:::-;21377:25;;21416:20;21434:1;21416:20;:::i;:::-;21411:25;;21455:1;21445:35;;21460:18;;:::i;:::-;21445:35;21502:1;21499;21495:9;21490:14;;21325:185;;;;:::o;21516:240::-;21656:34;21652:1;21644:6;21640:14;21633:58;21725:23;21720:2;21712:6;21708:15;21701:48;21516:240;:::o;21762:366::-;21904:3;21925:67;21989:2;21984:3;21925:67;:::i;:::-;21918:74;;22001:93;22090:3;22001:93;:::i;:::-;22119:2;22114:3;22110:12;22103:19;;21762:366;;;:::o;22134:419::-;22300:4;22338:2;22327:9;22323:18;22315:26;;22387:9;22381:4;22377:20;22373:1;22362:9;22358:17;22351:47;22415:131;22541:4;22415:131;:::i;:::-;22407:139;;22134:419;;;:::o;22559:237::-;22699:34;22695:1;22687:6;22683:14;22676:58;22768:20;22763:2;22755:6;22751:15;22744:45;22559:237;:::o;22802:366::-;22944:3;22965:67;23029:2;23024:3;22965:67;:::i;:::-;22958:74;;23041:93;23130:3;23041:93;:::i;:::-;23159:2;23154:3;23150:12;23143:19;;22802:366;;;:::o;23174:419::-;23340:4;23378:2;23367:9;23363:18;23355:26;;23427:9;23421:4;23417:20;23413:1;23402:9;23398:17;23391:47;23455:131;23581:4;23455:131;:::i;:::-;23447:139;;23174:419;;;:::o;23599:225::-;23739:34;23735:1;23727:6;23723:14;23716:58;23808:8;23803:2;23795:6;23791:15;23784:33;23599:225;:::o;23830:366::-;23972:3;23993:67;24057:2;24052:3;23993:67;:::i;:::-;23986:74;;24069:93;24158:3;24069:93;:::i;:::-;24187:2;24182:3;24178:12;24171:19;;23830:366;;;:::o;24202:419::-;24368:4;24406:2;24395:9;24391:18;24383:26;;24455:9;24449:4;24445:20;24441:1;24430:9;24426:17;24419:47;24483:131;24609:4;24483:131;:::i;:::-;24475:139;;24202:419;;;:::o;24627:194::-;24667:4;24687:20;24705:1;24687:20;:::i;:::-;24682:25;;24721:20;24739:1;24721:20;:::i;:::-;24716:25;;24765:1;24762;24758:9;24750:17;;24789:1;24783:4;24780:11;24777:37;;;24794:18;;:::i;:::-;24777:37;24627:194;;;;:::o;24827:180::-;24875:77;24872:1;24865:88;24972:4;24969:1;24962:15;24996:4;24993:1;24986:15;25013:180;25061:77;25058:1;25051:88;25158:4;25155:1;25148:15;25182:4;25179:1;25172:15;25199:85;25244:7;25273:5;25262:16;;25199:85;;;:::o;25290:158::-;25348:9;25381:61;25399:42;25408:32;25434:5;25408:32;:::i;:::-;25399:42;:::i;:::-;25381:61;:::i;:::-;25368:74;;25290:158;;;:::o;25454:147::-;25549:45;25588:5;25549:45;:::i;:::-;25544:3;25537:58;25454:147;;:::o;25607:114::-;25674:6;25708:5;25702:12;25692:22;;25607:114;;;:::o;25727:184::-;25826:11;25860:6;25855:3;25848:19;25900:4;25895:3;25891:14;25876:29;;25727:184;;;;:::o;25917:132::-;25984:4;26007:3;25999:11;;26037:4;26032:3;26028:14;26020:22;;25917:132;;;:::o;26055:108::-;26132:24;26150:5;26132:24;:::i;:::-;26127:3;26120:37;26055:108;;:::o;26169:179::-;26238:10;26259:46;26301:3;26293:6;26259:46;:::i;:::-;26337:4;26332:3;26328:14;26314:28;;26169:179;;;;:::o;26354:113::-;26424:4;26456;26451:3;26447:14;26439:22;;26354:113;;;:::o;26503:732::-;26622:3;26651:54;26699:5;26651:54;:::i;:::-;26721:86;26800:6;26795:3;26721:86;:::i;:::-;26714:93;;26831:56;26881:5;26831:56;:::i;:::-;26910:7;26941:1;26926:284;26951:6;26948:1;26945:13;26926:284;;;27027:6;27021:13;27054:63;27113:3;27098:13;27054:63;:::i;:::-;27047:70;;27140:60;27193:6;27140:60;:::i;:::-;27130:70;;26986:224;26973:1;26970;26966:9;26961:14;;26926:284;;;26930:14;27226:3;27219:10;;26627:608;;;26503:732;;;;:::o;27241:831::-;27504:4;27542:3;27531:9;27527:19;27519:27;;27556:71;27624:1;27613:9;27609:17;27600:6;27556:71;:::i;:::-;27637:80;27713:2;27702:9;27698:18;27689:6;27637:80;:::i;:::-;27764:9;27758:4;27754:20;27749:2;27738:9;27734:18;27727:48;27792:108;27895:4;27886:6;27792:108;:::i;:::-;27784:116;;27910:72;27978:2;27967:9;27963:18;27954:6;27910:72;:::i;:::-;27992:73;28060:3;28049:9;28045:19;28036:6;27992:73;:::i;:::-;27241:831;;;;;;;;:::o;28078:229::-;28218:34;28214:1;28206:6;28202:14;28195:58;28287:12;28282:2;28274:6;28270:15;28263:37;28078:229;:::o;28313:366::-;28455:3;28476:67;28540:2;28535:3;28476:67;:::i;:::-;28469:74;;28552:93;28641:3;28552:93;:::i;:::-;28670:2;28665:3;28661:12;28654:19;;28313:366;;;:::o;28685:419::-;28851:4;28889:2;28878:9;28874:18;28866:26;;28938:9;28932:4;28928:20;28924:1;28913:9;28909:17;28902:47;28966:131;29092:4;28966:131;:::i;:::-;28958:139;;28685:419;;;:::o;29110:225::-;29250:34;29246:1;29238:6;29234:14;29227:58;29319:8;29314:2;29306:6;29302:15;29295:33;29110:225;:::o;29341:366::-;29483:3;29504:67;29568:2;29563:3;29504:67;:::i;:::-;29497:74;;29580:93;29669:3;29580:93;:::i;:::-;29698:2;29693:3;29689:12;29682:19;;29341:366;;;:::o;29713:419::-;29879:4;29917:2;29906:9;29902:18;29894:26;;29966:9;29960:4;29956:20;29952:1;29941:9;29937:17;29930:47;29994:131;30120:4;29994:131;:::i;:::-;29986:139;;29713:419;;;:::o;30138:98::-;30189:6;30223:5;30217:12;30207:22;;30138:98;;;:::o;30242:147::-;30343:11;30380:3;30365:18;;30242:147;;;;:::o;30395:386::-;30499:3;30527:38;30559:5;30527:38;:::i;:::-;30581:88;30662:6;30657:3;30581:88;:::i;:::-;30574:95;;30678:65;30736:6;30731:3;30724:4;30717:5;30713:16;30678:65;:::i;:::-;30768:6;30763:3;30759:16;30752:23;;30503:278;30395:386;;;;:::o;30787:271::-;30917:3;30939:93;31028:3;31019:6;30939:93;:::i;:::-;30932:100;;31049:3;31042:10;;30787:271;;;;:::o;31064:179::-;31204:31;31200:1;31192:6;31188:14;31181:55;31064:179;:::o;31249:366::-;31391:3;31412:67;31476:2;31471:3;31412:67;:::i;:::-;31405:74;;31488:93;31577:3;31488:93;:::i;:::-;31606:2;31601:3;31597:12;31590:19;;31249:366;;;:::o;31621:419::-;31787:4;31825:2;31814:9;31810:18;31802:26;;31874:9;31868:4;31864:20;31860:1;31849:9;31845:17;31838:47;31902:131;32028:4;31902:131;:::i;:::-;31894:139;;31621:419;;;:::o
Swarm Source
ipfs://b26c1e5c0073af84b4a0993969dbf81b4644dd756316646931586d563677357f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.