ERC-20
Overview
Max Total Supply
10,000 BOKZ
Holders
527
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
100.002610903429605289 BOKZValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BOKZ
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-12-06 */ pragma solidity 0.8.26; // SPDX-License-Identifier: MIT //BOKZ - your ticket to an effortless autonomous mining journey. //website - https://bokz.io //x.com - https://x.com/bokzio //telegram - https://t.me/bokzchannel abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20{ /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } } 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() public 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; } } 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 safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, 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"); } } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } } interface IPriceFeed { function latestAnswer() external view returns (int256); } interface ILpPair { function sync() external; function mint(address to) external; } interface IWETH { function deposit() external payable; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract BOKZ is ERC20, Ownable { mapping (address => bool) public exemptFromFees; mapping (address => bool) public exemptFromLimits; bool public tradingAllowed; mapping (address => bool) public isAMMPair; address public tacticsAddress; address public strategyAddress; uint24 public buyTax; uint24 public sellTax; uint256 public lastSwapBackBlock; mapping(address => uint256) private _holderLastTransferBlock; bool public limited = true; uint256 public maxWallet; uint256 public immutable swapTokensAtAmt; address public immutable lpPair; IDexRouter public immutable dexRouter; address public immutable WETH; uint64 public constant FEE_DIVISOR = 10000; uint256 public launchTimestamp; bool public transferDelayEnabled = false; event UpdatedWalletLimit(uint newMax); event SetExcludedFromFees(address _address, bool _isExcluded); event SetExcludedFromLimits(address _address, bool _isExcluded); event RemovedLimits(); event TaxUpdated(uint24 buyTax_, uint24 sellTax_); // constructor constructor() ERC20("BOKZ", "BOKZ") { uint256 _totalSupply = 10_000 * 1e18; tacticsAddress = 0x815B8e1A864892A9cB8f964f069C9710b7955920; strategyAddress = 0x98468Eb56f2DA73C567d5E3F0535DD4b00ed2C63; address _v2Router; // @dev assumes WETH pair if(block.chainid == 1){ _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; } else if(block.chainid == 8453){ // BASE _v2Router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; } else { revert("Chain not configured"); } dexRouter = IDexRouter(_v2Router); _mint(address(msg.sender), _totalSupply); swapTokensAtAmt = totalSupply() * 25 / 100000; buyTax = 5000; sellTax = 5000; maxWallet = uint128(totalSupply() * 5 / 1000); WETH = dexRouter.WETH(); lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), WETH); isAMMPair[lpPair] = true; exemptFromLimits[lpPair] = true; exemptFromLimits[msg.sender] = true; exemptFromLimits[address(this)] = true; exemptFromLimits[address(0xdead)] = true; exemptFromFees[msg.sender] = true; exemptFromFees[address(this)] = true; exemptFromFees[address(dexRouter)] = true; exemptFromFees[address(0xdead)] = true; _approve(address(this), address(dexRouter), type(uint256).max); _approve(address(msg.sender), address(dexRouter), totalSupply()); } function _transfer( address from, address to, uint256 amount ) internal virtual override { if(!exemptFromFees[from] && !exemptFromFees[to]){ require(tradingAllowed, "Trading not active"); amount -= handleTax(from, to, amount); checkLimits(from, to, amount); } super._transfer(from,to,amount); } function checkLimits(address from, address to, uint256 amount) internal { if(limited){ bool exFromLimitsTo = exemptFromLimits[to]; uint256 balanceOfTo = balanceOf(to); // buy if (isAMMPair[from] && !exFromLimitsTo) { require(amount + balanceOfTo <= maxWallet, "Max Wallet"); } else if(!exFromLimitsTo) { require(amount + balanceOfTo <= maxWallet, "Max Wallet"); } if(transferDelayEnabled){ if (to != address(dexRouter) && to != address(lpPair)){ require(_holderLastTransferBlock[tx.origin] < block.number, "Transfer Delay"); if(from == address(lpPair)){ require(tx.origin == to, "no buying to external wallets yet"); } _holderLastTransferBlock[to] = block.number; _holderLastTransferBlock[tx.origin] = block.number; } } } } function handleTax(address from, address to, uint256 amount) internal returns (uint256){ if(balanceOf(address(this)) >= swapTokensAtAmt && !isAMMPair[from] && lastSwapBackBlock + 1 <= block.number) { convertTaxes(); } uint128 tax = 0; uint24 taxes; if (isAMMPair[to]){ taxes = sellTax; } else if(isAMMPair[from]){ taxes = buyTax; } if(taxes > 0){ tax = uint128(amount * taxes / FEE_DIVISOR); super._transfer(from, address(this), tax); } return tax; } function swapTokensForETH(uint256 tokenAmt) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmt, 0, path, address(this), block.timestamp ); } function convertTaxes() private { uint256 contractBalance = balanceOf(address(this)); if(contractBalance == 0) {return;} lastSwapBackBlock = block.number; if(contractBalance > swapTokensAtAmt * 10){ contractBalance = swapTokensAtAmt * 10; } if(contractBalance > 0){ swapTokensForETH(contractBalance); uint256 ethBalance = address(this).balance; bool success; if(strategyAddress != address(0)){ uint256 amountForStrategy = ethBalance / 2; (success,) = strategyAddress.call{value: amountForStrategy}(""); ethBalance -= amountForStrategy; } (success,) = tacticsAddress.call{value: ethBalance}(""); } } // owner functions function setExemptFromFee(address _address, bool _isExcluded) external onlyOwner { require(_address != address(0), "Zero Address"); require(_address != address(this), "Cannot unexclude contract"); exemptFromFees[_address] = _isExcluded; emit SetExcludedFromFees(_address, _isExcluded); } function setExemptFromLimits(address _address, bool _isExcluded) external onlyOwner { require(_address != address(0), "Zero Address"); if(!_isExcluded){ require(_address != lpPair, "Cannot remove pair"); } exemptFromLimits[_address] = _isExcluded; emit SetExcludedFromLimits(_address, _isExcluded); } function enableTrading() external onlyOwner { require(!tradingAllowed, "Trading already enabled"); tradingAllowed = true; launchTimestamp = block.timestamp; transferDelayEnabled = true; } function updateMaxWallet(uint128 newNumInTokens) external onlyOwner { require(newNumInTokens * (10**decimals()) >= maxWallet, "Too low"); maxWallet = uint128(newNumInTokens * (10**decimals())); emit UpdatedWalletLimit(maxWallet); } function updateTax(uint24 _buyTax, uint24 _sellTax) external onlyOwner { require(_buyTax < buyTax || _buyTax <= 500, "Cannot raise buy tax over 5%"); require(_sellTax < sellTax || _sellTax <= 500, "Cannot raise buy tax over 5%"); buyTax = _buyTax; sellTax = _sellTax; emit TaxUpdated(_buyTax, _sellTax); } function removeLimits() external onlyOwner { require(limited, "Limits already removed"); limited = false; emit RemovedLimits(); } function removeTransferDelay() external onlyOwner { transferDelayEnabled = false; } function updateTacticsAddress(address _address) external onlyOwner { require(_address != address(0), "zero address"); tacticsAddress = _address; } function updateStrategyAddress(address _address) external onlyOwner { require(_address != address(0), "zero address"); strategyAddress = _address; } receive() payable external {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExcluded","type":"bool"}],"name":"SetExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExcluded","type":"bool"}],"name":"SetExcludedFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint24","name":"buyTax_","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"sellTax_","type":"uint24"}],"name":"TaxUpdated","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":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedWalletLimit","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapBackBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExcluded","type":"bool"}],"name":"setExemptFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExcluded","type":"bool"}],"name":"setExemptFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","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":"tacticsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newNumInTokens","type":"uint128"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateStrategyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateTacticsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"_buyTax","type":"uint24"},{"internalType":"uint24","name":"_sellTax","type":"uint24"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6101006040526001600e5f6101000a81548160ff0219169083151502179055505f60115f6101000a81548160ff021916908315150217905550348015610043575f80fd5b506040518060400160405280600481526020017f424f4b5a000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f424f4b5a0000000000000000000000000000000000000000000000000000000081525081600390816100bf9190610e14565b5080600490816100cf9190610e14565b5050505f6100e16108cf60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f69021e19e0c9bab2400000905073815b8e1a864892a9cb8f964f069c9710b7955920600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398468eb56f2da73c567d5e3f0535dd4b00ed2c63600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6001460361025957737a250d5630b4cf539739df2c5dacb4c659f2488d90506102ba565b612105460361027e57734752ba5dbc23f44d87826276bf6fd6b1c372ad2490506102b9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b090610f3d565b60405180910390fd5b5b8073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506102fe33836108d660201b60201c565b620186a06019610312610a0e60201b60201c565b61031c9190610f88565b6103269190610ff6565b60808181525050611388600b60146101000a81548162ffffff021916908362ffffff160217905550611388600b60176101000a81548162ffffff021916908362ffffff1602179055506103e86005610382610a0e60201b60201c565b61038c9190610f88565b6103969190610ff6565b6fffffffffffffffffffffffffffffffff16600f8190555060c05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041d9190611084565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505060c05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561049b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104bf9190611084565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060e0516040518363ffffffff1660e01b81526004016104fb9291906110be565b6020604051808303815f875af1158015610517573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061053b9190611084565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050600160095f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60c05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506108a83060c0517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a1760201b60201c565b6108c83360c0516108bd610a0e60201b60201c565b610a1760201b60201c565b50506112c4565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b9061112f565b60405180910390fd5b8060025f828254610955919061114d565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a02919061118f565b60405180910390a35050565b5f600254905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90611218565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea906112a6565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bcd919061118f565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c5557607f821691505b602082108103610c6857610c67610c11565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610cca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610c8f565b610cd48683610c8f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d18610d13610d0e84610cec565b610cf5565b610cec565b9050919050565b5f819050919050565b610d3183610cfe565b610d45610d3d82610d1f565b848454610c9b565b825550505050565b5f90565b610d59610d4d565b610d64818484610d28565b505050565b5b81811015610d8757610d7c5f82610d51565b600181019050610d6a565b5050565b601f821115610dcc57610d9d81610c6e565b610da684610c80565b81016020851015610db5578190505b610dc9610dc185610c80565b830182610d69565b50505b505050565b5f82821c905092915050565b5f610dec5f1984600802610dd1565b1980831691505092915050565b5f610e048383610ddd565b9150826002028217905092915050565b610e1d82610bda565b67ffffffffffffffff811115610e3657610e35610be4565b5b610e408254610c3e565b610e4b828285610d8b565b5f60209050601f831160018114610e7c575f8415610e6a578287015190505b610e748582610df9565b865550610edb565b601f198416610e8a86610c6e565b5f5b82811015610eb157848901518255600182019150602085019450602081019050610e8c565b86831015610ece5784890151610eca601f891682610ddd565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f436861696e206e6f7420636f6e666967757265640000000000000000000000005f82015250565b5f610f27601483610ee3565b9150610f3282610ef3565b602082019050919050565b5f6020820190508181035f830152610f5481610f1b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f9282610cec565b9150610f9d83610cec565b9250828202610fab81610cec565b91508282048414831517610fc257610fc1610f5b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61100082610cec565b915061100b83610cec565b92508261101b5761101a610fc9565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110538261102a565b9050919050565b61106381611049565b811461106d575f80fd5b50565b5f8151905061107e8161105a565b92915050565b5f6020828403121561109957611098611026565b5b5f6110a684828501611070565b91505092915050565b6110b881611049565b82525050565b5f6040820190506110d15f8301856110af565b6110de60208301846110af565b9392505050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611119601f83610ee3565b9150611124826110e5565b602082019050919050565b5f6020820190508181035f8301526111468161110d565b9050919050565b5f61115782610cec565b915061116283610cec565b925082820190508082111561117a57611179610f5b565b5b92915050565b61118981610cec565b82525050565b5f6020820190506111a25f830184611180565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611202602483610ee3565b915061120d826111a8565b604082019050919050565b5f6020820190508181035f83015261122f816111f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611290602283610ee3565b915061129b82611236565b604082019050919050565b5f6020820190508181035f8301526112bd81611284565b9050919050565b60805160a05160c05160e0516142316113365f395f81816117a20152612d1801525f8181610a1b015281816125820152612d8701525f8181610adc015281816115eb015281816125d901526126ae01525f8181611a0b0152818161221301528181612a760152612aaa01526142315ff3fe608060405260043610610249575f3560e01c8063860a32ec11610138578063b0249cc6116100b5578063cc1776d311610079578063cc1776d31461086e578063dd62ed3e14610898578063e2a92c14146108d4578063f2fde38b146108fc578063f8686f0714610924578063f8b45b051461093a57610250565b8063b0249cc61461078c578063bc6b74ab146107c8578063bedafd01146107f2578063c78d0fa01461081a578063c876d0b91461084457610250565b80639e93ad8e116100fc5780639e93ad8e14610698578063a13d1a2b146106c2578063a457c2d7146106ea578063a9059cbb14610726578063ad5c46481461076257610250565b8063860a32ec146105c85780638a8c523c146105f25780638d3e6e40146106085780638da5cb5b1461064457806395d89b411461066e57610250565b80634b356f47116101c657806365cf7c9b1161018a57806365cf7c9b1461050e57806370a0823114610538578063715018a614610574578063751039fc1461058a5780638369b9ee146105a057610250565b80634b356f471461042e5780634f7041a51461045657806353371be0146104805780635a90a49e146104aa578063638cb6af146104e657610250565b806323b872dd1161020d57806323b872dd14610338578063313ce56714610374578063395093511461039e578063432e95a5146103da578063452ed4f11461040457610250565b80630131161c1461025457806306fdde031461027e5780630758d924146102a8578063095ea7b3146102d257806318160ddd1461030e57610250565b3661025057005b5f80fd5b34801561025f575f80fd5b50610268610964565b6040516102759190612e56565b60405180910390f35b348015610289575f80fd5b50610292610989565b60405161029f9190612edf565b60405180910390f35b3480156102b3575f80fd5b506102bc610a19565b6040516102c99190612f5a565b60405180910390f35b3480156102dd575f80fd5b506102f860048036038101906102f39190612fd4565b610a3d565b604051610305919061302c565b60405180910390f35b348015610319575f80fd5b50610322610a5f565b60405161032f9190613054565b60405180910390f35b348015610343575f80fd5b5061035e6004803603810190610359919061306d565b610a68565b60405161036b919061302c565b60405180910390f35b34801561037f575f80fd5b50610388610a96565b60405161039591906130d8565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612fd4565b610a9e565b6040516103d1919061302c565b60405180910390f35b3480156103e5575f80fd5b506103ee610ad4565b6040516103fb9190613054565b60405180910390f35b34801561040f575f80fd5b50610418610ada565b6040516104259190612e56565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f9190613129565b610afe565b005b348015610461575f80fd5b5061046a610ced565b6040516104779190613176565b60405180910390f35b34801561048b575f80fd5b50610494610d02565b6040516104a1919061302c565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb919061318f565b610d14565b6040516104dd919061302c565b60405180910390f35b3480156104f1575f80fd5b5061050c600480360381019061050791906131ff565b610d31565b005b348015610519575f80fd5b50610522610ec1565b60405161052f9190613054565b60405180910390f35b348015610543575f80fd5b5061055e6004803603810190610559919061318f565b610ec7565b60405161056b9190613054565b60405180910390f35b34801561057f575f80fd5b50610588610f0c565b005b348015610595575f80fd5b5061059e61105f565b005b3480156105ab575f80fd5b506105c660048036038101906105c1919061318f565b61118a565b005b3480156105d3575f80fd5b506105dc6112d1565b6040516105e9919061302c565b60405180910390f35b3480156105fd575f80fd5b506106066112e3565b005b348015610613575f80fd5b5061062e6004803603810190610629919061318f565b611405565b60405161063b919061302c565b60405180910390f35b34801561064f575f80fd5b50610658611422565b6040516106659190612e56565b60405180910390f35b348015610679575f80fd5b5061068261144a565b60405161068f9190612edf565b60405180910390f35b3480156106a3575f80fd5b506106ac6114da565b6040516106b9919061324c565b60405180910390f35b3480156106cd575f80fd5b506106e860048036038101906106e3919061328f565b6114e0565b005b3480156106f5575f80fd5b50610710600480360381019061070b9190612fd4565b611709565b60405161071d919061302c565b60405180910390f35b348015610731575f80fd5b5061074c60048036038101906107479190612fd4565b61177e565b604051610759919061302c565b60405180910390f35b34801561076d575f80fd5b506107766117a0565b6040516107839190612e56565b60405180910390f35b348015610797575f80fd5b506107b260048036038101906107ad919061318f565b6117c4565b6040516107bf919061302c565b60405180910390f35b3480156107d3575f80fd5b506107dc6117e1565b6040516107e99190612e56565b60405180910390f35b3480156107fd575f80fd5b506108186004803603810190610813919061328f565b611806565b005b348015610825575f80fd5b5061082e611a09565b60405161083b9190613054565b60405180910390f35b34801561084f575f80fd5b50610858611a2d565b604051610865919061302c565b60405180910390f35b348015610879575f80fd5b50610882611a3f565b60405161088f9190613176565b60405180910390f35b3480156108a3575f80fd5b506108be60048036038101906108b991906132cd565b611a54565b6040516108cb9190613054565b60405180910390f35b3480156108df575f80fd5b506108fa60048036038101906108f5919061318f565b611ad6565b005b348015610907575f80fd5b50610922600480360381019061091d919061318f565b611c1d565b005b34801561092f575f80fd5b50610938611ddf565b005b348015610945575f80fd5b5061094e611e90565b60405161095b9190613054565b60405180910390f35b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606003805461099890613338565b80601f01602080910402602001604051908101604052809291908181526020018280546109c490613338565b8015610a0f5780601f106109e657610100808354040283529160200191610a0f565b820191905f5260205f20905b8154815290600101906020018083116109f257829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f80610a47611e96565b9050610a54818585611e9d565b600191505092915050565b5f600254905090565b5f80610a72611e96565b9050610a7f858285612060565b610a8a8585856120eb565b60019150509392505050565b5f6012905090565b5f80610aa8611e96565b9050610ac9818585610aba8589611a54565b610ac49190613395565b611e9d565b600191505092915050565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b610b06611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b90613412565b60405180910390fd5b600b60149054906101000a900462ffffff1662ffffff168262ffffff161080610bc457506101f48262ffffff1611155b610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa9061347a565b60405180910390fd5b600b60179054906101000a900462ffffff1662ffffff168162ffffff161080610c3357506101f48162ffffff1611155b610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c699061347a565b60405180910390fd5b81600b60146101000a81548162ffffff021916908362ffffff16021790555080600b60176101000a81548162ffffff021916908362ffffff1602179055507f365d5f75a9bc29d89636efe82a2f86cfd2837de54d93735f78ea4a60fd84879d8282604051610ce1929190613498565b60405180910390a15050565b600b60149054906101000a900462ffffff1681565b60085f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b610d39611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90613412565b60405180910390fd5b600f54610dd2610a96565b600a610dde91906135ee565b826fffffffffffffffffffffffffffffffff16610dfb9190613638565b1015610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e33906136c3565b60405180910390fd5b610e44610a96565b600a610e5091906135ee565b816fffffffffffffffffffffffffffffffff16610e6d9190613638565b6fffffffffffffffffffffffffffffffff16600f819055507fde064515fae8f8bb6d8ff19d2c6ba704322def7494147d8a971266430ade0788600f54604051610eb69190613054565b60405180910390a150565b60105481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f14611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611067611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90613412565b60405180910390fd5b600e5f9054906101000a900460ff16611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061372b565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611192611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128590613793565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5f9054906101000a900460ff1681565b6112eb611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137090613412565b60405180910390fd5b60085f9054906101000a900460ff16156113c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bf906137fb565b60405180910390fd5b600160085f6101000a81548160ff02191690831515021790555042601081905550600160115f6101000a81548160ff021916908315150217905550565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461145990613338565b80601f016020809104026020016040519081016040528092919081815260200182805461148590613338565b80156114d05780601f106114a7576101008083540402835291602001916114d0565b820191905f5260205f20905b8154815290600101906020018083116114b357829003601f168201915b5050505050905090565b61271081565b6114e8611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90613863565b60405180910390fd5b80611678577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e906138cb565b60405180910390fd5b5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f0712a8411c7892e205c3d35c5d2beabe76bb0b484bec43945f2024cd28eaae8d82826040516116fd9291906138e9565b60405180910390a15050565b5f80611713611e96565b90505f6117208286611a54565b905083811015611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90613980565b60405180910390fd5b6117728286868403611e9d565b60019250505092915050565b5f80611788611e96565b90506117958185856120eb565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6009602052805f5260405f205f915054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61180e611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189390613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190613863565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f906139e8565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fc4eea32423e96d678d53f47ddd9b7a5103eea02606d7daa81c77038c54dc8edb82826040516119fd9291906138e9565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60115f9054906101000a900460ff1681565b600b60179054906101000a900462ffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ade611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd190613793565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c25611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1890613a76565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611de7611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90613412565b60405180910390fd5b5f60115f6101000a81548160ff021916908315150217905550565b600f5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290613b04565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7090613b92565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120539190613054565b60405180910390a3505050565b5f61206b8484611a54565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120e557818110156120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce90613bfa565b60405180910390fd5b6120e48484848403611e9d565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612189575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122005760085f9054906101000a900460ff166121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d390613c62565b60405180910390fd5b6121e7838383612210565b816121f29190613c80565b90506121ff8383836123fa565b5b61220b8383836127fc565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000061223b30610ec7565b10158015612290575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122aa5750436001600c546122a79190613395565b11155b156122b8576122b7612a52565b5b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561232257600b60179054906101000a900462ffffff169050612387565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561238657600b60149054906101000a900462ffffff1690505b5b5f8162ffffff1611156123dc5761271067ffffffffffffffff168162ffffff16856123b29190613638565b6123bc9190613ce0565b91506123db8630846fffffffffffffffffffffffffffffffff166127fc565b5b816fffffffffffffffffffffffffffffffff16925050509392505050565b600e5f9054906101000a900460ff16156127f7575f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690505f61246584610ec7565b905060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124bb575081155b1561251557600f5481846124cf9190613395565b1115612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250790613d5a565b60405180910390fd5b61256c565b8161256b57600f5481846125299190613395565b111561256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256190613d5a565b60405180910390fd5b5b5b60115f9054906101000a900460ff16156127f4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561262857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127f35743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390613dc2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361276e578373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461276d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276490613e50565b60405180910390fd5b5b43600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555043600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b50505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190613ede565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf90613f6c565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290613ffa565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a449190613054565b60405180910390a350505050565b5f612a5c30610ec7565b90505f8103612a6b5750612c79565b43600c81905550600a7f0000000000000000000000000000000000000000000000000000000000000000612a9f9190613638565b811115612ad657600a7f0000000000000000000000000000000000000000000000000000000000000000612ad39190613638565b90505b5f811115612c7757612ae781612c7b565b5f4790505f8073ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bea575f600283612b4e9190613ce0565b9050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612b9590614045565b5f6040518083038185875af1925050503d805f8114612bcf576040519150601f19603f3d011682016040523d82523d5f602084013e612bd4565b606091505b5050809250508083612be69190613c80565b9250505b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612c2f90614045565b5f6040518083038185875af1925050503d805f8114612c69576040519150601f19603f3d011682016040523d82523d5f602084013e612c6e565b606091505b50508091505050505b505b565b5f600267ffffffffffffffff811115612c9757612c96614059565b5b604051908082528060200260200182016040528015612cc55781602001602082028036833780820191505090505b50905030815f81518110612cdc57612cdb614086565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612d4b57612d4a614086565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612de69594939291906141a3565b5f604051808303815f87803b158015612dfd575f80fd5b505af1158015612e0f573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e4082612e17565b9050919050565b612e5081612e36565b82525050565b5f602082019050612e695f830184612e47565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612eb182612e6f565b612ebb8185612e79565b9350612ecb818560208601612e89565b612ed481612e97565b840191505092915050565b5f6020820190508181035f830152612ef78184612ea7565b905092915050565b5f819050919050565b5f612f22612f1d612f1884612e17565b612eff565b612e17565b9050919050565b5f612f3382612f08565b9050919050565b5f612f4482612f29565b9050919050565b612f5481612f3a565b82525050565b5f602082019050612f6d5f830184612f4b565b92915050565b5f80fd5b612f8081612e36565b8114612f8a575f80fd5b50565b5f81359050612f9b81612f77565b92915050565b5f819050919050565b612fb381612fa1565b8114612fbd575f80fd5b50565b5f81359050612fce81612faa565b92915050565b5f8060408385031215612fea57612fe9612f73565b5b5f612ff785828601612f8d565b925050602061300885828601612fc0565b9150509250929050565b5f8115159050919050565b61302681613012565b82525050565b5f60208201905061303f5f83018461301d565b92915050565b61304e81612fa1565b82525050565b5f6020820190506130675f830184613045565b92915050565b5f805f6060848603121561308457613083612f73565b5b5f61309186828701612f8d565b93505060206130a286828701612f8d565b92505060406130b386828701612fc0565b9150509250925092565b5f60ff82169050919050565b6130d2816130bd565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f62ffffff82169050919050565b613108816130f1565b8114613112575f80fd5b50565b5f81359050613123816130ff565b92915050565b5f806040838503121561313f5761313e612f73565b5b5f61314c85828601613115565b925050602061315d85828601613115565b9150509250929050565b613170816130f1565b82525050565b5f6020820190506131895f830184613167565b92915050565b5f602082840312156131a4576131a3612f73565b5b5f6131b184828501612f8d565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6131de816131ba565b81146131e8575f80fd5b50565b5f813590506131f9816131d5565b92915050565b5f6020828403121561321457613213612f73565b5b5f613221848285016131eb565b91505092915050565b5f67ffffffffffffffff82169050919050565b6132468161322a565b82525050565b5f60208201905061325f5f83018461323d565b92915050565b61326e81613012565b8114613278575f80fd5b50565b5f8135905061328981613265565b92915050565b5f80604083850312156132a5576132a4612f73565b5b5f6132b285828601612f8d565b92505060206132c38582860161327b565b9150509250929050565b5f80604083850312156132e3576132e2612f73565b5b5f6132f085828601612f8d565b925050602061330185828601612f8d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061334f57607f821691505b6020821081036133625761336161330b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61339f82612fa1565b91506133aa83612fa1565b92508282019050808211156133c2576133c1613368565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133fc602083612e79565b9150613407826133c8565b602082019050919050565b5f6020820190508181035f830152613429816133f0565b9050919050565b7f43616e6e6f742072616973652062757920746178206f766572203525000000005f82015250565b5f613464601c83612e79565b915061346f82613430565b602082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b5f6040820190506134ab5f830185613167565b6134b86020830184613167565b9392505050565b5f8160011c9050919050565b5f808291508390505b6001851115613514578086048111156134f0576134ef613368565b5b60018516156134ff5780820291505b808102905061350d856134bf565b94506134d4565b94509492505050565b5f8261352c57600190506135e7565b81613539575f90506135e7565b816001811461354f576002811461355957613588565b60019150506135e7565b60ff84111561356b5761356a613368565b5b8360020a91508482111561358257613581613368565b5b506135e7565b5060208310610133831016604e8410600b84101617156135bd5782820a9050838111156135b8576135b7613368565b5b6135e7565b6135ca84848460016134cb565b925090508184048111156135e1576135e0613368565b5b81810290505b9392505050565b5f6135f882612fa1565b9150613603836130bd565b92506136307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461351d565b905092915050565b5f61364282612fa1565b915061364d83612fa1565b925082820261365b81612fa1565b9150828204841483151761367257613671613368565b5b5092915050565b7f546f6f206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f6136ad600783612e79565b91506136b882613679565b602082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f613715601683612e79565b9150613720826136e1565b602082019050919050565b5f6020820190508181035f83015261374281613709565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f61377d600c83612e79565b915061378882613749565b602082019050919050565b5f6020820190508181035f8301526137aa81613771565b9050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f6137e5601783612e79565b91506137f0826137b1565b602082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f61384d600c83612e79565b915061385882613819565b602082019050919050565b5f6020820190508181035f83015261387a81613841565b9050919050565b7f43616e6e6f742072656d6f7665207061697200000000000000000000000000005f82015250565b5f6138b5601283612e79565b91506138c082613881565b602082019050919050565b5f6020820190508181035f8301526138e2816138a9565b9050919050565b5f6040820190506138fc5f830185612e47565b613909602083018461301d565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61396a602583612e79565b915061397582613910565b604082019050919050565b5f6020820190508181035f8301526139978161395e565b9050919050565b7f43616e6e6f7420756e6578636c75646520636f6e7472616374000000000000005f82015250565b5f6139d2601983612e79565b91506139dd8261399e565b602082019050919050565b5f6020820190508181035f8301526139ff816139c6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a60602683612e79565b9150613a6b82613a06565b604082019050919050565b5f6020820190508181035f830152613a8d81613a54565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613aee602483612e79565b9150613af982613a94565b604082019050919050565b5f6020820190508181035f830152613b1b81613ae2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7c602283612e79565b9150613b8782613b22565b604082019050919050565b5f6020820190508181035f830152613ba981613b70565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613be4601d83612e79565b9150613bef82613bb0565b602082019050919050565b5f6020820190508181035f830152613c1181613bd8565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613c4c601283612e79565b9150613c5782613c18565b602082019050919050565b5f6020820190508181035f830152613c7981613c40565b9050919050565b5f613c8a82612fa1565b9150613c9583612fa1565b9250828203905081811115613cad57613cac613368565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613cea82612fa1565b9150613cf583612fa1565b925082613d0557613d04613cb3565b5b828204905092915050565b7f4d61782057616c6c6574000000000000000000000000000000000000000000005f82015250565b5f613d44600a83612e79565b9150613d4f82613d10565b602082019050919050565b5f6020820190508181035f830152613d7181613d38565b9050919050565b7f5472616e736665722044656c61790000000000000000000000000000000000005f82015250565b5f613dac600e83612e79565b9150613db782613d78565b602082019050919050565b5f6020820190508181035f830152613dd981613da0565b9050919050565b7f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079655f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e3a602183612e79565b9150613e4582613de0565b604082019050919050565b5f6020820190508181035f830152613e6781613e2e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613ec8602583612e79565b9150613ed382613e6e565b604082019050919050565b5f6020820190508181035f830152613ef581613ebc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613f56602383612e79565b9150613f6182613efc565b604082019050919050565b5f6020820190508181035f830152613f8381613f4a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613fe4602683612e79565b9150613fef82613f8a565b604082019050919050565b5f6020820190508181035f83015261401181613fd8565b9050919050565b5f81905092915050565b50565b5f6140305f83614018565b915061403b82614022565b5f82019050919050565b5f61404f82614025565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6140d66140d16140cc846140b3565b612eff565b612fa1565b9050919050565b6140e6816140bc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61411e81612e36565b82525050565b5f61412f8383614115565b60208301905092915050565b5f602082019050919050565b5f614151826140ec565b61415b81856140f6565b935061416683614106565b805f5b8381101561419657815161417d8882614124565b97506141888361413b565b925050600181019050614169565b5085935050505092915050565b5f60a0820190506141b65f830188613045565b6141c360208301876140dd565b81810360408301526141d58186614147565b90506141e46060830185612e47565b6141f16080830184613045565b969550505050505056fea264697066735822122070e7c5806c8e26f2722507c2092fa6aec166621a9a9e1004ea68f284195dce7d64736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610249575f3560e01c8063860a32ec11610138578063b0249cc6116100b5578063cc1776d311610079578063cc1776d31461086e578063dd62ed3e14610898578063e2a92c14146108d4578063f2fde38b146108fc578063f8686f0714610924578063f8b45b051461093a57610250565b8063b0249cc61461078c578063bc6b74ab146107c8578063bedafd01146107f2578063c78d0fa01461081a578063c876d0b91461084457610250565b80639e93ad8e116100fc5780639e93ad8e14610698578063a13d1a2b146106c2578063a457c2d7146106ea578063a9059cbb14610726578063ad5c46481461076257610250565b8063860a32ec146105c85780638a8c523c146105f25780638d3e6e40146106085780638da5cb5b1461064457806395d89b411461066e57610250565b80634b356f47116101c657806365cf7c9b1161018a57806365cf7c9b1461050e57806370a0823114610538578063715018a614610574578063751039fc1461058a5780638369b9ee146105a057610250565b80634b356f471461042e5780634f7041a51461045657806353371be0146104805780635a90a49e146104aa578063638cb6af146104e657610250565b806323b872dd1161020d57806323b872dd14610338578063313ce56714610374578063395093511461039e578063432e95a5146103da578063452ed4f11461040457610250565b80630131161c1461025457806306fdde031461027e5780630758d924146102a8578063095ea7b3146102d257806318160ddd1461030e57610250565b3661025057005b5f80fd5b34801561025f575f80fd5b50610268610964565b6040516102759190612e56565b60405180910390f35b348015610289575f80fd5b50610292610989565b60405161029f9190612edf565b60405180910390f35b3480156102b3575f80fd5b506102bc610a19565b6040516102c99190612f5a565b60405180910390f35b3480156102dd575f80fd5b506102f860048036038101906102f39190612fd4565b610a3d565b604051610305919061302c565b60405180910390f35b348015610319575f80fd5b50610322610a5f565b60405161032f9190613054565b60405180910390f35b348015610343575f80fd5b5061035e6004803603810190610359919061306d565b610a68565b60405161036b919061302c565b60405180910390f35b34801561037f575f80fd5b50610388610a96565b60405161039591906130d8565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612fd4565b610a9e565b6040516103d1919061302c565b60405180910390f35b3480156103e5575f80fd5b506103ee610ad4565b6040516103fb9190613054565b60405180910390f35b34801561040f575f80fd5b50610418610ada565b6040516104259190612e56565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f9190613129565b610afe565b005b348015610461575f80fd5b5061046a610ced565b6040516104779190613176565b60405180910390f35b34801561048b575f80fd5b50610494610d02565b6040516104a1919061302c565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb919061318f565b610d14565b6040516104dd919061302c565b60405180910390f35b3480156104f1575f80fd5b5061050c600480360381019061050791906131ff565b610d31565b005b348015610519575f80fd5b50610522610ec1565b60405161052f9190613054565b60405180910390f35b348015610543575f80fd5b5061055e6004803603810190610559919061318f565b610ec7565b60405161056b9190613054565b60405180910390f35b34801561057f575f80fd5b50610588610f0c565b005b348015610595575f80fd5b5061059e61105f565b005b3480156105ab575f80fd5b506105c660048036038101906105c1919061318f565b61118a565b005b3480156105d3575f80fd5b506105dc6112d1565b6040516105e9919061302c565b60405180910390f35b3480156105fd575f80fd5b506106066112e3565b005b348015610613575f80fd5b5061062e6004803603810190610629919061318f565b611405565b60405161063b919061302c565b60405180910390f35b34801561064f575f80fd5b50610658611422565b6040516106659190612e56565b60405180910390f35b348015610679575f80fd5b5061068261144a565b60405161068f9190612edf565b60405180910390f35b3480156106a3575f80fd5b506106ac6114da565b6040516106b9919061324c565b60405180910390f35b3480156106cd575f80fd5b506106e860048036038101906106e3919061328f565b6114e0565b005b3480156106f5575f80fd5b50610710600480360381019061070b9190612fd4565b611709565b60405161071d919061302c565b60405180910390f35b348015610731575f80fd5b5061074c60048036038101906107479190612fd4565b61177e565b604051610759919061302c565b60405180910390f35b34801561076d575f80fd5b506107766117a0565b6040516107839190612e56565b60405180910390f35b348015610797575f80fd5b506107b260048036038101906107ad919061318f565b6117c4565b6040516107bf919061302c565b60405180910390f35b3480156107d3575f80fd5b506107dc6117e1565b6040516107e99190612e56565b60405180910390f35b3480156107fd575f80fd5b506108186004803603810190610813919061328f565b611806565b005b348015610825575f80fd5b5061082e611a09565b60405161083b9190613054565b60405180910390f35b34801561084f575f80fd5b50610858611a2d565b604051610865919061302c565b60405180910390f35b348015610879575f80fd5b50610882611a3f565b60405161088f9190613176565b60405180910390f35b3480156108a3575f80fd5b506108be60048036038101906108b991906132cd565b611a54565b6040516108cb9190613054565b60405180910390f35b3480156108df575f80fd5b506108fa60048036038101906108f5919061318f565b611ad6565b005b348015610907575f80fd5b50610922600480360381019061091d919061318f565b611c1d565b005b34801561092f575f80fd5b50610938611ddf565b005b348015610945575f80fd5b5061094e611e90565b60405161095b9190613054565b60405180910390f35b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606003805461099890613338565b80601f01602080910402602001604051908101604052809291908181526020018280546109c490613338565b8015610a0f5780601f106109e657610100808354040283529160200191610a0f565b820191905f5260205f20905b8154815290600101906020018083116109f257829003601f168201915b5050505050905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f80610a47611e96565b9050610a54818585611e9d565b600191505092915050565b5f600254905090565b5f80610a72611e96565b9050610a7f858285612060565b610a8a8585856120eb565b60019150509392505050565b5f6012905090565b5f80610aa8611e96565b9050610ac9818585610aba8589611a54565b610ac49190613395565b611e9d565b600191505092915050565b600c5481565b7f000000000000000000000000dfc90e71873ee3da7a351376ef709c01f0b7026181565b610b06611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b90613412565b60405180910390fd5b600b60149054906101000a900462ffffff1662ffffff168262ffffff161080610bc457506101f48262ffffff1611155b610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa9061347a565b60405180910390fd5b600b60179054906101000a900462ffffff1662ffffff168162ffffff161080610c3357506101f48162ffffff1611155b610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c699061347a565b60405180910390fd5b81600b60146101000a81548162ffffff021916908362ffffff16021790555080600b60176101000a81548162ffffff021916908362ffffff1602179055507f365d5f75a9bc29d89636efe82a2f86cfd2837de54d93735f78ea4a60fd84879d8282604051610ce1929190613498565b60405180910390a15050565b600b60149054906101000a900462ffffff1681565b60085f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b610d39611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90613412565b60405180910390fd5b600f54610dd2610a96565b600a610dde91906135ee565b826fffffffffffffffffffffffffffffffff16610dfb9190613638565b1015610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e33906136c3565b60405180910390fd5b610e44610a96565b600a610e5091906135ee565b816fffffffffffffffffffffffffffffffff16610e6d9190613638565b6fffffffffffffffffffffffffffffffff16600f819055507fde064515fae8f8bb6d8ff19d2c6ba704322def7494147d8a971266430ade0788600f54604051610eb69190613054565b60405180910390a150565b60105481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f14611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611067611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90613412565b60405180910390fd5b600e5f9054906101000a900460ff16611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a9061372b565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611192611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121790613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128590613793565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5f9054906101000a900460ff1681565b6112eb611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137090613412565b60405180910390fd5b60085f9054906101000a900460ff16156113c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bf906137fb565b60405180910390fd5b600160085f6101000a81548160ff02191690831515021790555042601081905550600160115f6101000a81548160ff021916908315150217905550565b6007602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461145990613338565b80601f016020809104026020016040519081016040528092919081815260200182805461148590613338565b80156114d05780601f106114a7576101008083540402835291602001916114d0565b820191905f5260205f20905b8154815290600101906020018083116114b357829003601f168201915b5050505050905090565b61271081565b6114e8611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90613863565b60405180910390fd5b80611678577f000000000000000000000000dfc90e71873ee3da7a351376ef709c01f0b7026173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e906138cb565b60405180910390fd5b5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f0712a8411c7892e205c3d35c5d2beabe76bb0b484bec43945f2024cd28eaae8d82826040516116fd9291906138e9565b60405180910390a15050565b5f80611713611e96565b90505f6117208286611a54565b905083811015611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90613980565b60405180910390fd5b6117728286868403611e9d565b60019250505092915050565b5f80611788611e96565b90506117958185856120eb565b600191505092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6009602052805f5260405f205f915054906101000a900460ff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61180e611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189390613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190613863565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f906139e8565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fc4eea32423e96d678d53f47ddd9b7a5103eea02606d7daa81c77038c54dc8edb82826040516119fd9291906138e9565b60405180910390a15050565b7f00000000000000000000000000000000000000000000000022b1c8c1227a000081565b60115f9054906101000a900460ff1681565b600b60179054906101000a900462ffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ade611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd190613793565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c25611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613412565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1890613a76565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611de7611e96565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6c90613412565b60405180910390fd5b5f60115f6101000a81548160ff021916908315150217905550565b600f5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0290613b04565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7090613b92565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120539190613054565b60405180910390a3505050565b5f61206b8484611a54565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120e557818110156120d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ce90613bfa565b60405180910390fd5b6120e48484848403611e9d565b5b50505050565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612189575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122005760085f9054906101000a900460ff166121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d390613c62565b60405180910390fd5b6121e7838383612210565b816121f29190613c80565b90506121ff8383836123fa565b5b61220b8383836127fc565b505050565b5f7f00000000000000000000000000000000000000000000000022b1c8c1227a000061223b30610ec7565b10158015612290575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122aa5750436001600c546122a79190613395565b11155b156122b8576122b7612a52565b5b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561232257600b60179054906101000a900462ffffff169050612387565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561238657600b60149054906101000a900462ffffff1690505b5b5f8162ffffff1611156123dc5761271067ffffffffffffffff168162ffffff16856123b29190613638565b6123bc9190613ce0565b91506123db8630846fffffffffffffffffffffffffffffffff166127fc565b5b816fffffffffffffffffffffffffffffffff16925050509392505050565b600e5f9054906101000a900460ff16156127f7575f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690505f61246584610ec7565b905060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124bb575081155b1561251557600f5481846124cf9190613395565b1115612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250790613d5a565b60405180910390fd5b61256c565b8161256b57600f5481846125299190613395565b111561256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256190613d5a565b60405180910390fd5b5b5b60115f9054906101000a900460ff16156127f4577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561262857507f000000000000000000000000dfc90e71873ee3da7a351376ef709c01f0b7026173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127f35743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390613dc2565b60405180910390fd5b7f000000000000000000000000dfc90e71873ee3da7a351376ef709c01f0b7026173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361276e578373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461276d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276490613e50565b60405180910390fd5b5b43600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555043600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b50505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190613ede565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf90613f6c565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290613ffa565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a449190613054565b60405180910390a350505050565b5f612a5c30610ec7565b90505f8103612a6b5750612c79565b43600c81905550600a7f00000000000000000000000000000000000000000000000022b1c8c1227a0000612a9f9190613638565b811115612ad657600a7f00000000000000000000000000000000000000000000000022b1c8c1227a0000612ad39190613638565b90505b5f811115612c7757612ae781612c7b565b5f4790505f8073ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bea575f600283612b4e9190613ce0565b9050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612b9590614045565b5f6040518083038185875af1925050503d805f8114612bcf576040519150601f19603f3d011682016040523d82523d5f602084013e612bd4565b606091505b5050809250508083612be69190613c80565b9250505b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612c2f90614045565b5f6040518083038185875af1925050503d805f8114612c69576040519150601f19603f3d011682016040523d82523d5f602084013e612c6e565b606091505b50508091505050505b505b565b5f600267ffffffffffffffff811115612c9757612c96614059565b5b604051908082528060200260200182016040528015612cc55781602001602082028036833780820191505090505b50905030815f81518110612cdc57612cdb614086565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612d4b57612d4a614086565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612de69594939291906141a3565b5f604051808303815f87803b158015612dfd575f80fd5b505af1158015612e0f573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612e4082612e17565b9050919050565b612e5081612e36565b82525050565b5f602082019050612e695f830184612e47565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612eb182612e6f565b612ebb8185612e79565b9350612ecb818560208601612e89565b612ed481612e97565b840191505092915050565b5f6020820190508181035f830152612ef78184612ea7565b905092915050565b5f819050919050565b5f612f22612f1d612f1884612e17565b612eff565b612e17565b9050919050565b5f612f3382612f08565b9050919050565b5f612f4482612f29565b9050919050565b612f5481612f3a565b82525050565b5f602082019050612f6d5f830184612f4b565b92915050565b5f80fd5b612f8081612e36565b8114612f8a575f80fd5b50565b5f81359050612f9b81612f77565b92915050565b5f819050919050565b612fb381612fa1565b8114612fbd575f80fd5b50565b5f81359050612fce81612faa565b92915050565b5f8060408385031215612fea57612fe9612f73565b5b5f612ff785828601612f8d565b925050602061300885828601612fc0565b9150509250929050565b5f8115159050919050565b61302681613012565b82525050565b5f60208201905061303f5f83018461301d565b92915050565b61304e81612fa1565b82525050565b5f6020820190506130675f830184613045565b92915050565b5f805f6060848603121561308457613083612f73565b5b5f61309186828701612f8d565b93505060206130a286828701612f8d565b92505060406130b386828701612fc0565b9150509250925092565b5f60ff82169050919050565b6130d2816130bd565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f62ffffff82169050919050565b613108816130f1565b8114613112575f80fd5b50565b5f81359050613123816130ff565b92915050565b5f806040838503121561313f5761313e612f73565b5b5f61314c85828601613115565b925050602061315d85828601613115565b9150509250929050565b613170816130f1565b82525050565b5f6020820190506131895f830184613167565b92915050565b5f602082840312156131a4576131a3612f73565b5b5f6131b184828501612f8d565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6131de816131ba565b81146131e8575f80fd5b50565b5f813590506131f9816131d5565b92915050565b5f6020828403121561321457613213612f73565b5b5f613221848285016131eb565b91505092915050565b5f67ffffffffffffffff82169050919050565b6132468161322a565b82525050565b5f60208201905061325f5f83018461323d565b92915050565b61326e81613012565b8114613278575f80fd5b50565b5f8135905061328981613265565b92915050565b5f80604083850312156132a5576132a4612f73565b5b5f6132b285828601612f8d565b92505060206132c38582860161327b565b9150509250929050565b5f80604083850312156132e3576132e2612f73565b5b5f6132f085828601612f8d565b925050602061330185828601612f8d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061334f57607f821691505b6020821081036133625761336161330b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61339f82612fa1565b91506133aa83612fa1565b92508282019050808211156133c2576133c1613368565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133fc602083612e79565b9150613407826133c8565b602082019050919050565b5f6020820190508181035f830152613429816133f0565b9050919050565b7f43616e6e6f742072616973652062757920746178206f766572203525000000005f82015250565b5f613464601c83612e79565b915061346f82613430565b602082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b5f6040820190506134ab5f830185613167565b6134b86020830184613167565b9392505050565b5f8160011c9050919050565b5f808291508390505b6001851115613514578086048111156134f0576134ef613368565b5b60018516156134ff5780820291505b808102905061350d856134bf565b94506134d4565b94509492505050565b5f8261352c57600190506135e7565b81613539575f90506135e7565b816001811461354f576002811461355957613588565b60019150506135e7565b60ff84111561356b5761356a613368565b5b8360020a91508482111561358257613581613368565b5b506135e7565b5060208310610133831016604e8410600b84101617156135bd5782820a9050838111156135b8576135b7613368565b5b6135e7565b6135ca84848460016134cb565b925090508184048111156135e1576135e0613368565b5b81810290505b9392505050565b5f6135f882612fa1565b9150613603836130bd565b92506136307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461351d565b905092915050565b5f61364282612fa1565b915061364d83612fa1565b925082820261365b81612fa1565b9150828204841483151761367257613671613368565b5b5092915050565b7f546f6f206c6f77000000000000000000000000000000000000000000000000005f82015250565b5f6136ad600783612e79565b91506136b882613679565b602082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b7f4c696d69747320616c72656164792072656d6f766564000000000000000000005f82015250565b5f613715601683612e79565b9150613720826136e1565b602082019050919050565b5f6020820190508181035f83015261374281613709565b9050919050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f61377d600c83612e79565b915061378882613749565b602082019050919050565b5f6020820190508181035f8301526137aa81613771565b9050919050565b7f54726164696e6720616c726561647920656e61626c65640000000000000000005f82015250565b5f6137e5601783612e79565b91506137f0826137b1565b602082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b7f5a65726f204164647265737300000000000000000000000000000000000000005f82015250565b5f61384d600c83612e79565b915061385882613819565b602082019050919050565b5f6020820190508181035f83015261387a81613841565b9050919050565b7f43616e6e6f742072656d6f7665207061697200000000000000000000000000005f82015250565b5f6138b5601283612e79565b91506138c082613881565b602082019050919050565b5f6020820190508181035f8301526138e2816138a9565b9050919050565b5f6040820190506138fc5f830185612e47565b613909602083018461301d565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61396a602583612e79565b915061397582613910565b604082019050919050565b5f6020820190508181035f8301526139978161395e565b9050919050565b7f43616e6e6f7420756e6578636c75646520636f6e7472616374000000000000005f82015250565b5f6139d2601983612e79565b91506139dd8261399e565b602082019050919050565b5f6020820190508181035f8301526139ff816139c6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a60602683612e79565b9150613a6b82613a06565b604082019050919050565b5f6020820190508181035f830152613a8d81613a54565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613aee602483612e79565b9150613af982613a94565b604082019050919050565b5f6020820190508181035f830152613b1b81613ae2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7c602283612e79565b9150613b8782613b22565b604082019050919050565b5f6020820190508181035f830152613ba981613b70565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613be4601d83612e79565b9150613bef82613bb0565b602082019050919050565b5f6020820190508181035f830152613c1181613bd8565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613c4c601283612e79565b9150613c5782613c18565b602082019050919050565b5f6020820190508181035f830152613c7981613c40565b9050919050565b5f613c8a82612fa1565b9150613c9583612fa1565b9250828203905081811115613cad57613cac613368565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613cea82612fa1565b9150613cf583612fa1565b925082613d0557613d04613cb3565b5b828204905092915050565b7f4d61782057616c6c6574000000000000000000000000000000000000000000005f82015250565b5f613d44600a83612e79565b9150613d4f82613d10565b602082019050919050565b5f6020820190508181035f830152613d7181613d38565b9050919050565b7f5472616e736665722044656c61790000000000000000000000000000000000005f82015250565b5f613dac600e83612e79565b9150613db782613d78565b602082019050919050565b5f6020820190508181035f830152613dd981613da0565b9050919050565b7f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079655f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e3a602183612e79565b9150613e4582613de0565b604082019050919050565b5f6020820190508181035f830152613e6781613e2e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613ec8602583612e79565b9150613ed382613e6e565b604082019050919050565b5f6020820190508181035f830152613ef581613ebc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613f56602383612e79565b9150613f6182613efc565b604082019050919050565b5f6020820190508181035f830152613f8381613f4a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613fe4602683612e79565b9150613fef82613f8a565b604082019050919050565b5f6020820190508181035f83015261401181613fd8565b9050919050565b5f81905092915050565b50565b5f6140305f83614018565b915061403b82614022565b5f82019050919050565b5f61404f82614025565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6140d66140d16140cc846140b3565b612eff565b612fa1565b9050919050565b6140e6816140bc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61411e81612e36565b82525050565b5f61412f8383614115565b60208301905092915050565b5f602082019050919050565b5f614151826140ec565b61415b81856140f6565b935061416683614106565b805f5b8381101561419657815161417d8882614124565b97506141888361413b565b925050600181019050614169565b5085935050505092915050565b5f60a0820190506141b65f830188613045565b6141c360208301876140dd565b81810360408301526141d58186614147565b90506141e46060830185612e47565b6141f16080830184613045565b969550505050505056fea264697066735822122070e7c5806c8e26f2722507c2092fa6aec166621a9a9e1004ea68f284195dce7d64736f6c634300081a0033
Deployed Bytecode Sourcemap
22074:8378:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22313:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4357:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22706:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6717:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5486:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7498:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5328:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8168:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22445:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22668:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29427:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22388:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22227:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22115:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29156:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22839:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5657:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13271:148;;;;;;;;;;;;;:::i;:::-;;29790:161;;;;;;;;;;;;;:::i;:::-;;30064:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22553:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28920:228;;;;;;;;;;;;;:::i;:::-;;22169:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13057:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4576:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22788:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28549:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8909:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5990:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22750:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22262:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22349:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28213:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22619:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22878;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22415:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6246:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30241:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13427:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29959:97;;;;;;;;;;;;;:::i;:::-;;22586:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22313:29;;;;;;;;;;;;;:::o;4357:100::-;4411:13;4444:5;4437:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4357:100;:::o;22706:37::-;;;:::o;6717:201::-;6800:4;6817:13;6833:12;:10;:12::i;:::-;6817:28;;6856:32;6865:5;6872:7;6881:6;6856:8;:32::i;:::-;6906:4;6899:11;;;6717:201;;;;:::o;5486:108::-;5547:7;5574:12;;5567:19;;5486:108;:::o;7498:261::-;7595:4;7612:15;7630:12;:10;:12::i;:::-;7612:30;;7653:38;7669:4;7675:7;7684:6;7653:15;:38::i;:::-;7702:27;7712:4;7718:2;7722:6;7702:9;:27::i;:::-;7747:4;7740:11;;;7498:261;;;;;:::o;5328:93::-;5386:5;5411:2;5404:9;;5328:93;:::o;8168:238::-;8256:4;8273:13;8289:12;:10;:12::i;:::-;8273:28;;8312:64;8321:5;8328:7;8365:10;8337:25;8347:5;8354:7;8337:9;:25::i;:::-;:38;;;;:::i;:::-;8312:8;:64::i;:::-;8394:4;8387:11;;;8168:238;;;;:::o;22445:32::-;;;;:::o;22668:31::-;;;:::o;29427:355::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29527:6:::1;;;;;;;;;;;29517:16;;:7;:16;;;:34;;;;29548:3;29537:7;:14;;;;29517:34;29509:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;29614:7;;;;;;;;;;;29603:18;;:8;:18;;;:37;;;;29637:3;29625:8;:15;;;;29603:37;29595:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;29693:7;29684:6;;:16;;;;;;;;;;;;;;;;;;29721:8;29711:7;;:18;;;;;;;;;;;;;;;;;;29745:29;29756:7;29765:8;29745:29;;;;;;;:::i;:::-;;;;;;;;29427:355:::0;;:::o;22388:20::-;;;;;;;;;;;;;:::o;22227:26::-;;;;;;;;;;;;;:::o;22115:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;29156:263::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29280:9:::1;;29265:10;:8;:10::i;:::-;29261:2;:14;;;;:::i;:::-;29243;:33;;;;;;:::i;:::-;:46;;29235:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29354:10;:8;:10::i;:::-;29350:2;:14;;;;:::i;:::-;29332;:33;;;;;;:::i;:::-;29312:54;;:9;:54;;;;29382:29;29401:9;;29382:29;;;;;;:::i;:::-;;;;;;;;29156:263:::0;:::o;22839:30::-;;;;:::o;5657:127::-;5731:7;5758:9;:18;5768:7;5758:18;;;;;;;;;;;;;;;;5751:25;;5657:127;;;:::o;13271:148::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13378:1:::1;13341:40;;13362:6;;;;;;;;;;;13341:40;;;;;;;;;;;;13409:1;13392:6;;:19;;;;;;;;;;;;;;;;;;13271:148::o:0;29790:161::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29852:7:::1;;;;;;;;;;;29844:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;29907:5;29897:7;;:15;;;;;;;;;;;;;;;;;;29928;;;;;;;;;;29790:161::o:0;30064:169::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30170:1:::1;30150:22;;:8;:22;;::::0;30142:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30217:8;30200:14;;:25;;;;;;;;;;;;;;;;;;30064:169:::0;:::o;22553:26::-;;;;;;;;;;;;;:::o;28920:228::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28984:14:::1;;;;;;;;;;;28983:15;28975:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;29054:4;29037:14;;:21;;;;;;;;;;;;;;;;;;29087:15;29069;:33;;;;29136:4;29113:20;;:27;;;;;;;;;;;;;;;;;;28920:228::o:0;22169:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;13057:79::-;13095:7;13122:6;;;;;;;;;;;13115:13;;13057:79;:::o;4576:104::-;4632:13;4665:7;4658:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4576:104;:::o;22788:42::-;22825:5;22788:42;:::o;28549:363::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28672:1:::1;28652:22;;:8;:22;;::::0;28644:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28706:11;28702:92;;28753:6;28741:18;;:8;:18;;::::0;28733:49:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28702:92;28833:11;28804:16;:26;28821:8;28804:26;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;28860:44;28882:8;28892:11;28860:44;;;;;;;:::i;:::-;;;;;;;;28549:363:::0;;:::o;8909:436::-;9002:4;9019:13;9035:12;:10;:12::i;:::-;9019:28;;9058:24;9085:25;9095:5;9102:7;9085:9;:25::i;:::-;9058:52;;9149:15;9129:16;:35;;9121:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9242:60;9251:5;9258:7;9286:15;9267:16;:34;9242:8;:60::i;:::-;9333:4;9326:11;;;;8909:436;;;;:::o;5990:193::-;6069:4;6086:13;6102:12;:10;:12::i;:::-;6086:28;;6125;6135:5;6142:2;6146:6;6125:9;:28::i;:::-;6171:4;6164:11;;;5990:193;;;;:::o;22750:29::-;;;:::o;22262:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;22349:30::-;;;;;;;;;;;;;:::o;28213:328::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28333:1:::1;28313:22;;:8;:22;;::::0;28305:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28391:4;28371:25;;:8;:25;;::::0;28363:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28464:11;28437:14;:24;28452:8;28437:24;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;28491:42;28511:8;28521:11;28491:42;;;;;;;:::i;:::-;;;;;;;;28213:328:::0;;:::o;22619:40::-;;;:::o;22878:::-;;;;;;;;;;;;;:::o;22415:21::-;;;;;;;;;;;;;:::o;6246:151::-;6335:7;6362:11;:18;6374:5;6362:18;;;;;;;;;;;;;;;:27;6381:7;6362:27;;;;;;;;;;;;;;;;6355:34;;6246:151;;;;:::o;30241:171::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30348:1:::1;30328:22;;:8;:22;;::::0;30320:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30396:8;30378:15;;:26;;;;;;;;;;;;;;;;;;30241:171:::0;:::o;13427:244::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13536:1:::1;13516:22;;:8;:22;;::::0;13508:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13626:8;13597:38;;13618:6;;;;;;;;;;;13597:38;;;;;;;;;;;;13655:8;13646:6;;:17;;;;;;;;;;;;;;;;;;13427:244:::0;:::o;29959:97::-;13194:12;:10;:12::i;:::-;13184:22;;:6;;;;;;;;;;;:22;;;13176:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30043:5:::1;30020:20;;:28;;;;;;;;;;;;;;;;;;29959:97::o:0;22586:24::-;;;;:::o;263:98::-;316:7;343:10;336:17;;263:98;:::o;11670:346::-;11789:1;11772:19;;:5;:19;;;11764:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11870:1;11851:21;;:7;:21;;;11843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11954:6;11924:11;:18;11936:5;11924:18;;;;;;;;;;;;;;;:27;11943:7;11924:27;;;;;;;;;;;;;;;:36;;;;11992:7;11976:32;;11985:5;11976:32;;;12001:6;11976:32;;;;;;:::i;:::-;;;;;;;;11670:346;;;:::o;12307:419::-;12408:24;12435:25;12445:5;12452:7;12435:9;:25::i;:::-;12408:52;;12495:17;12475:16;:37;12471:248;;12557:6;12537:16;:26;;12529:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12641:51;12650:5;12657:7;12685:6;12666:16;:25;12641:8;:51::i;:::-;12471:248;12397:329;12307:419;;;:::o;24801:409::-;24947:14;:20;24962:4;24947:20;;;;;;;;;;;;;;;;;;;;;;;;;24946:21;:44;;;;;24972:14;:18;24987:2;24972:18;;;;;;;;;;;;;;;;;;;;;;;;;24971:19;24946:44;24943:216;;;25014:14;;;;;;;;;;;25006:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;25076:27;25086:4;25092:2;25096:6;25076:9;:27::i;:::-;25066:37;;;;;:::i;:::-;;;25118:29;25130:4;25136:2;25140:6;25118:11;:29::i;:::-;24943:216;25171:31;25187:4;25192:2;25195:6;25171:15;:31::i;:::-;24801:409;;;:::o;26305:638::-;26384:7;26436:15;26408:24;26426:4;26408:9;:24::i;:::-;:43;;:63;;;;;26456:9;:15;26466:4;26456:15;;;;;;;;;;;;;;;;;;;;;;;;;26455:16;26408:63;:104;;;;;26500:12;26495:1;26475:17;;:21;;;;:::i;:::-;:37;;26408:104;26405:150;;;26529:14;:12;:14::i;:::-;26405:150;26575:11;26603:12;26632:9;:13;26642:2;26632:13;;;;;;;;;;;;;;;;;;;;;;;;;26628:126;;;26669:7;;;;;;;;;;;26661:15;;26628:126;;;26697:9;:15;26707:4;26697:15;;;;;;;;;;;;;;;;;;;;;;;;;26694:60;;;26736:6;;;;;;;;;;;26728:14;;26694:60;26628:126;26777:1;26769:5;:9;;;26766:139;;;22825:5;26808:28;;26817:5;26808:14;;:6;:14;;;;:::i;:::-;:28;;;;:::i;:::-;26794:43;;26852:41;26868:4;26882;26889:3;26852:41;;:15;:41::i;:::-;26766:139;26932:3;26925:10;;;;;;26305:638;;;;;:::o;25218:1079::-;25304:7;;;;;;;;;;;25301:989;;;25341:19;25363:16;:20;25380:2;25363:20;;;;;;;;;;;;;;;;;;;;;;;;;25341:42;;25398:19;25420:13;25430:2;25420:9;:13::i;:::-;25398:35;;25474:9;:15;25484:4;25474:15;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;25494:14;25493:15;25474:34;25470:261;;;25561:9;;25546:11;25537:6;:20;;;;:::i;:::-;:33;;25529:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;25470:261;;;25624:14;25620:111;;25691:9;;25676:11;25667:6;:20;;;;:::i;:::-;:33;;25659:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;25620:111;25470:261;25750:20;;;;;;;;;;;25747:532;;;25808:9;25794:24;;:2;:24;;;;:49;;;;;25836:6;25822:21;;:2;:21;;;;25794:49;25790:474;;;25913:12;25875:24;:35;25900:9;25875:35;;;;;;;;;;;;;;;;:50;25867:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;25986:6;25970:23;;:4;:23;;;25967:139;;26042:2;26029:15;;:9;:15;;;26021:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25967:139;26159:12;26128:24;:28;26153:2;26128:28;;;;;;;;;;;;;;;:43;;;;26232:12;26194:24;:35;26219:9;26194:35;;;;;;;;;;;;;;;:50;;;;25790:474;25747:532;25312:978;;25301:989;25218:1079;;;:::o;9815:705::-;9928:1;9912:18;;:4;:18;;;9904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10005:1;9991:16;;:2;:16;;;9983:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10060:19;10082:9;:15;10092:4;10082:15;;;;;;;;;;;;;;;;10060:37;;10131:6;10116:11;:21;;10108:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10248:6;10234:11;:20;10216:9;:15;10226:4;10216:15;;;;;;;;;;;;;;;:38;;;;10451:6;10434:9;:13;10444:2;10434:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;10501:2;10486:26;;10495:4;10486:26;;;10505:6;10486:26;;;;;;:::i;:::-;;;;;;;;9893:627;9815:705;;;:::o;27331:848::-;27376:23;27402:24;27420:4;27402:9;:24::i;:::-;27376:50;;27469:1;27450:15;:20;27447:34;;27473:7;;;27447:34;27513:12;27493:17;:32;;;;27577:2;27559:15;:20;;;;:::i;:::-;27541:15;:38;27538:107;;;27631:2;27613:15;:20;;;;:::i;:::-;27595:38;;27538:107;27678:1;27660:15;:19;27657:515;;;27697:33;27714:15;27697:16;:33::i;:::-;27759:18;27780:21;27759:42;;27818:12;27877:1;27850:29;;:15;;;;;;;;;;;:29;;;27847:242;;27899:25;27940:1;27927:10;:14;;;;:::i;:::-;27899:42;;27973:15;;;;;;;;;;;:20;;28001:17;27973:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27960:63;;;;;28056:17;28042:31;;;;;:::i;:::-;;;27880:209;27847:242;28118:14;;;;;;;;;;;:19;;28145:10;28118:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28105:55;;;;;27680:492;;27657:515;27363:816;27331:848;:::o;26951:372::-;27016:21;27054:1;27040:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27016:40;;27085:4;27067;27072:1;27067:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27111:4;27101;27106:1;27101:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;27128:9;:60;;;27203:8;27226:1;27242:4;27269;27289:15;27128:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27003:320;26951:372;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:139::-;962:6;957:3;952;946:23;1003:1;994:6;989:3;985:16;978:27;873:139;;;:::o;1018:102::-;1059:6;1110:2;1106:7;1101:2;1094:5;1090:14;1086:28;1076:38;;1018:102;;;:::o;1126:377::-;1214:3;1242:39;1275:5;1242:39;:::i;:::-;1297:71;1361:6;1356:3;1297:71;:::i;:::-;1290:78;;1377:65;1435:6;1430:3;1423:4;1416:5;1412:16;1377:65;:::i;:::-;1467:29;1489:6;1467:29;:::i;:::-;1462:3;1458:39;1451:46;;1218:285;1126:377;;;;:::o;1509:313::-;1622:4;1660:2;1649:9;1645:18;1637:26;;1709:9;1703:4;1699:20;1695:1;1684:9;1680:17;1673:47;1737:78;1810:4;1801:6;1737:78;:::i;:::-;1729:86;;1509:313;;;;:::o;1828:60::-;1856:3;1877:5;1870:12;;1828:60;;;:::o;1894:142::-;1944:9;1977:53;1995:34;2004:24;2022:5;2004:24;:::i;:::-;1995:34;:::i;:::-;1977:53;:::i;:::-;1964:66;;1894:142;;;:::o;2042:126::-;2092:9;2125:37;2156:5;2125:37;:::i;:::-;2112:50;;2042:126;;;:::o;2174:145::-;2243:9;2276:37;2307:5;2276:37;:::i;:::-;2263:50;;2174:145;;;:::o;2325:169::-;2431:56;2481:5;2431:56;:::i;:::-;2426:3;2419:69;2325:169;;:::o;2500:260::-;2612:4;2650:2;2639:9;2635:18;2627:26;;2663:90;2750:1;2739:9;2735:17;2726:6;2663:90;:::i;:::-;2500:260;;;;:::o;2847:117::-;2956:1;2953;2946:12;3093:122;3166:24;3184:5;3166:24;:::i;:::-;3159:5;3156:35;3146:63;;3205:1;3202;3195:12;3146:63;3093:122;:::o;3221:139::-;3267:5;3305:6;3292:20;3283:29;;3321:33;3348:5;3321:33;:::i;:::-;3221:139;;;;:::o;3366:77::-;3403:7;3432:5;3421:16;;3366:77;;;:::o;3449:122::-;3522:24;3540:5;3522:24;:::i;:::-;3515:5;3512:35;3502:63;;3561:1;3558;3551:12;3502:63;3449:122;:::o;3577:139::-;3623:5;3661:6;3648:20;3639:29;;3677:33;3704:5;3677:33;:::i;:::-;3577:139;;;;:::o;3722:474::-;3790:6;3798;3847:2;3835:9;3826:7;3822:23;3818:32;3815:119;;;3853:79;;:::i;:::-;3815:119;3973:1;3998:53;4043:7;4034:6;4023:9;4019:22;3998:53;:::i;:::-;3988:63;;3944:117;4100:2;4126:53;4171:7;4162:6;4151:9;4147:22;4126:53;:::i;:::-;4116:63;;4071:118;3722:474;;;;;:::o;4202:90::-;4236:7;4279:5;4272:13;4265:21;4254:32;;4202:90;;;:::o;4298:109::-;4379:21;4394:5;4379:21;:::i;:::-;4374:3;4367:34;4298:109;;:::o;4413:210::-;4500:4;4538:2;4527:9;4523:18;4515:26;;4551:65;4613:1;4602:9;4598:17;4589:6;4551:65;:::i;:::-;4413:210;;;;:::o;4629:118::-;4716:24;4734:5;4716:24;:::i;:::-;4711:3;4704:37;4629:118;;:::o;4753:222::-;4846:4;4884:2;4873:9;4869:18;4861:26;;4897:71;4965:1;4954:9;4950:17;4941:6;4897:71;:::i;:::-;4753:222;;;;:::o;4981:619::-;5058:6;5066;5074;5123:2;5111:9;5102:7;5098:23;5094:32;5091:119;;;5129:79;;:::i;:::-;5091:119;5249:1;5274:53;5319:7;5310:6;5299:9;5295:22;5274:53;:::i;:::-;5264:63;;5220:117;5376:2;5402:53;5447:7;5438:6;5427:9;5423:22;5402:53;:::i;:::-;5392:63;;5347:118;5504:2;5530:53;5575:7;5566:6;5555:9;5551:22;5530:53;:::i;:::-;5520:63;;5475:118;4981:619;;;;;:::o;5606:86::-;5641:7;5681:4;5674:5;5670:16;5659:27;;5606:86;;;:::o;5698:112::-;5781:22;5797:5;5781:22;:::i;:::-;5776:3;5769:35;5698:112;;:::o;5816:214::-;5905:4;5943:2;5932:9;5928:18;5920:26;;5956:67;6020:1;6009:9;6005:17;5996:6;5956:67;:::i;:::-;5816:214;;;;:::o;6036:91::-;6072:7;6112:8;6105:5;6101:20;6090:31;;6036:91;;;:::o;6133:120::-;6205:23;6222:5;6205:23;:::i;:::-;6198:5;6195:34;6185:62;;6243:1;6240;6233:12;6185:62;6133:120;:::o;6259:137::-;6304:5;6342:6;6329:20;6320:29;;6358:32;6384:5;6358:32;:::i;:::-;6259:137;;;;:::o;6402:470::-;6468:6;6476;6525:2;6513:9;6504:7;6500:23;6496:32;6493:119;;;6531:79;;:::i;:::-;6493:119;6651:1;6676:52;6720:7;6711:6;6700:9;6696:22;6676:52;:::i;:::-;6666:62;;6622:116;6777:2;6803:52;6847:7;6838:6;6827:9;6823:22;6803:52;:::i;:::-;6793:62;;6748:117;6402:470;;;;;:::o;6878:115::-;6963:23;6980:5;6963:23;:::i;:::-;6958:3;6951:36;6878:115;;:::o;6999:218::-;7090:4;7128:2;7117:9;7113:18;7105:26;;7141:69;7207:1;7196:9;7192:17;7183:6;7141:69;:::i;:::-;6999:218;;;;:::o;7223:329::-;7282:6;7331:2;7319:9;7310:7;7306:23;7302:32;7299:119;;;7337:79;;:::i;:::-;7299:119;7457:1;7482:53;7527:7;7518:6;7507:9;7503:22;7482:53;:::i;:::-;7472:63;;7428:117;7223:329;;;;:::o;7558:118::-;7595:7;7635:34;7628:5;7624:46;7613:57;;7558:118;;;:::o;7682:122::-;7755:24;7773:5;7755:24;:::i;:::-;7748:5;7745:35;7735:63;;7794:1;7791;7784:12;7735:63;7682:122;:::o;7810:139::-;7856:5;7894:6;7881:20;7872:29;;7910:33;7937:5;7910:33;:::i;:::-;7810:139;;;;:::o;7955:329::-;8014:6;8063:2;8051:9;8042:7;8038:23;8034:32;8031:119;;;8069:79;;:::i;:::-;8031:119;8189:1;8214:53;8259:7;8250:6;8239:9;8235:22;8214:53;:::i;:::-;8204:63;;8160:117;7955:329;;;;:::o;8290:101::-;8326:7;8366:18;8359:5;8355:30;8344:41;;8290:101;;;:::o;8397:115::-;8482:23;8499:5;8482:23;:::i;:::-;8477:3;8470:36;8397:115;;:::o;8518:218::-;8609:4;8647:2;8636:9;8632:18;8624:26;;8660:69;8726:1;8715:9;8711:17;8702:6;8660:69;:::i;:::-;8518:218;;;;:::o;8742:116::-;8812:21;8827:5;8812:21;:::i;:::-;8805:5;8802:32;8792:60;;8848:1;8845;8838:12;8792:60;8742:116;:::o;8864:133::-;8907:5;8945:6;8932:20;8923:29;;8961:30;8985:5;8961:30;:::i;:::-;8864:133;;;;:::o;9003:468::-;9068:6;9076;9125:2;9113:9;9104:7;9100:23;9096:32;9093:119;;;9131:79;;:::i;:::-;9093:119;9251:1;9276:53;9321:7;9312:6;9301:9;9297:22;9276:53;:::i;:::-;9266:63;;9222:117;9378:2;9404:50;9446:7;9437:6;9426:9;9422:22;9404:50;:::i;:::-;9394:60;;9349:115;9003:468;;;;;:::o;9477:474::-;9545:6;9553;9602:2;9590:9;9581:7;9577:23;9573:32;9570:119;;;9608:79;;:::i;:::-;9570:119;9728:1;9753:53;9798:7;9789:6;9778:9;9774:22;9753:53;:::i;:::-;9743:63;;9699:117;9855:2;9881:53;9926:7;9917:6;9906:9;9902:22;9881:53;:::i;:::-;9871:63;;9826:118;9477:474;;;;;:::o;9957:180::-;10005:77;10002:1;9995:88;10102:4;10099:1;10092:15;10126:4;10123:1;10116:15;10143:320;10187:6;10224:1;10218:4;10214:12;10204:22;;10271:1;10265:4;10261:12;10292:18;10282:81;;10348:4;10340:6;10336:17;10326:27;;10282:81;10410:2;10402:6;10399:14;10379:18;10376:38;10373:84;;10429:18;;:::i;:::-;10373:84;10194:269;10143:320;;;:::o;10469:180::-;10517:77;10514:1;10507:88;10614:4;10611:1;10604:15;10638:4;10635:1;10628:15;10655:191;10695:3;10714:20;10732:1;10714:20;:::i;:::-;10709:25;;10748:20;10766:1;10748:20;:::i;:::-;10743:25;;10791:1;10788;10784:9;10777:16;;10812:3;10809:1;10806:10;10803:36;;;10819:18;;:::i;:::-;10803:36;10655:191;;;;:::o;10852:182::-;10992:34;10988:1;10980:6;10976:14;10969:58;10852:182;:::o;11040:366::-;11182:3;11203:67;11267:2;11262:3;11203:67;:::i;:::-;11196:74;;11279:93;11368:3;11279:93;:::i;:::-;11397:2;11392:3;11388:12;11381:19;;11040:366;;;:::o;11412:419::-;11578:4;11616:2;11605:9;11601:18;11593:26;;11665:9;11659:4;11655:20;11651:1;11640:9;11636:17;11629:47;11693:131;11819:4;11693:131;:::i;:::-;11685:139;;11412:419;;;:::o;11837:178::-;11977:30;11973:1;11965:6;11961:14;11954:54;11837:178;:::o;12021:366::-;12163:3;12184:67;12248:2;12243:3;12184:67;:::i;:::-;12177:74;;12260:93;12349:3;12260:93;:::i;:::-;12378:2;12373:3;12369:12;12362:19;;12021:366;;;:::o;12393:419::-;12559:4;12597:2;12586:9;12582:18;12574:26;;12646:9;12640:4;12636:20;12632:1;12621:9;12617:17;12610:47;12674:131;12800:4;12674:131;:::i;:::-;12666:139;;12393:419;;;:::o;12818:324::-;12935:4;12973:2;12962:9;12958:18;12950:26;;12986:69;13052:1;13041:9;13037:17;13028:6;12986:69;:::i;:::-;13065:70;13131:2;13120:9;13116:18;13107:6;13065:70;:::i;:::-;12818:324;;;;;:::o;13148:102::-;13190:8;13237:5;13234:1;13230:13;13209:34;;13148:102;;;:::o;13256:848::-;13317:5;13324:4;13348:6;13339:15;;13372:5;13363:14;;13386:712;13407:1;13397:8;13394:15;13386:712;;;13502:4;13497:3;13493:14;13487:4;13484:24;13481:50;;;13511:18;;:::i;:::-;13481:50;13561:1;13551:8;13547:16;13544:451;;;13976:4;13969:5;13965:16;13956:25;;13544:451;14026:4;14020;14016:15;14008:23;;14056:32;14079:8;14056:32;:::i;:::-;14044:44;;13386:712;;;13256:848;;;;;;;:::o;14110:1073::-;14164:5;14355:8;14345:40;;14376:1;14367:10;;14378:5;;14345:40;14404:4;14394:36;;14421:1;14412:10;;14423:5;;14394:36;14490:4;14538:1;14533:27;;;;14574:1;14569:191;;;;14483:277;;14533:27;14551:1;14542:10;;14553:5;;;14569:191;14614:3;14604:8;14601:17;14598:43;;;14621:18;;:::i;:::-;14598:43;14670:8;14667:1;14663:16;14654:25;;14705:3;14698:5;14695:14;14692:40;;;14712:18;;:::i;:::-;14692:40;14745:5;;;14483:277;;14869:2;14859:8;14856:16;14850:3;14844:4;14841:13;14837:36;14819:2;14809:8;14806:16;14801:2;14795:4;14792:12;14788:35;14772:111;14769:246;;;14925:8;14919:4;14915:19;14906:28;;14960:3;14953:5;14950:14;14947:40;;;14967:18;;:::i;:::-;14947:40;15000:5;;14769:246;15040:42;15078:3;15068:8;15062:4;15059:1;15040:42;:::i;:::-;15025:57;;;;15114:4;15109:3;15105:14;15098:5;15095:25;15092:51;;;15123:18;;:::i;:::-;15092:51;15172:4;15165:5;15161:16;15152:25;;14110:1073;;;;;;:::o;15189:281::-;15247:5;15271:23;15289:4;15271:23;:::i;:::-;15263:31;;15315:25;15331:8;15315:25;:::i;:::-;15303:37;;15359:104;15396:66;15386:8;15380:4;15359:104;:::i;:::-;15350:113;;15189:281;;;;:::o;15476:410::-;15516:7;15539:20;15557:1;15539:20;:::i;:::-;15534:25;;15573:20;15591:1;15573:20;:::i;:::-;15568:25;;15628:1;15625;15621:9;15650:30;15668:11;15650:30;:::i;:::-;15639:41;;15829:1;15820:7;15816:15;15813:1;15810:22;15790:1;15783:9;15763:83;15740:139;;15859:18;;:::i;:::-;15740:139;15524:362;15476:410;;;;:::o;15892:157::-;16032:9;16028:1;16020:6;16016:14;16009:33;15892:157;:::o;16055:365::-;16197:3;16218:66;16282:1;16277:3;16218:66;:::i;:::-;16211:73;;16293:93;16382:3;16293:93;:::i;:::-;16411:2;16406:3;16402:12;16395:19;;16055:365;;;:::o;16426:419::-;16592:4;16630:2;16619:9;16615:18;16607:26;;16679:9;16673:4;16669:20;16665:1;16654:9;16650:17;16643:47;16707:131;16833:4;16707:131;:::i;:::-;16699:139;;16426:419;;;:::o;16851:172::-;16991:24;16987:1;16979:6;16975:14;16968:48;16851:172;:::o;17029:366::-;17171:3;17192:67;17256:2;17251:3;17192:67;:::i;:::-;17185:74;;17268:93;17357:3;17268:93;:::i;:::-;17386:2;17381:3;17377:12;17370:19;;17029:366;;;:::o;17401:419::-;17567:4;17605:2;17594:9;17590:18;17582:26;;17654:9;17648:4;17644:20;17640:1;17629:9;17625:17;17618:47;17682:131;17808:4;17682:131;:::i;:::-;17674:139;;17401:419;;;:::o;17826:162::-;17966:14;17962:1;17954:6;17950:14;17943:38;17826:162;:::o;17994:366::-;18136:3;18157:67;18221:2;18216:3;18157:67;:::i;:::-;18150:74;;18233:93;18322:3;18233:93;:::i;:::-;18351:2;18346:3;18342:12;18335:19;;17994:366;;;:::o;18366:419::-;18532:4;18570:2;18559:9;18555:18;18547:26;;18619:9;18613:4;18609:20;18605:1;18594:9;18590:17;18583:47;18647:131;18773:4;18647:131;:::i;:::-;18639:139;;18366:419;;;:::o;18791:173::-;18931:25;18927:1;18919:6;18915:14;18908:49;18791:173;:::o;18970:366::-;19112:3;19133:67;19197:2;19192:3;19133:67;:::i;:::-;19126:74;;19209:93;19298:3;19209:93;:::i;:::-;19327:2;19322:3;19318:12;19311:19;;18970:366;;;:::o;19342:419::-;19508:4;19546:2;19535:9;19531:18;19523:26;;19595:9;19589:4;19585:20;19581:1;19570:9;19566:17;19559:47;19623:131;19749:4;19623:131;:::i;:::-;19615:139;;19342:419;;;:::o;19767:162::-;19907:14;19903:1;19895:6;19891:14;19884:38;19767:162;:::o;19935:366::-;20077:3;20098:67;20162:2;20157:3;20098:67;:::i;:::-;20091:74;;20174:93;20263:3;20174:93;:::i;:::-;20292:2;20287:3;20283:12;20276:19;;19935:366;;;:::o;20307:419::-;20473:4;20511:2;20500:9;20496:18;20488:26;;20560:9;20554:4;20550:20;20546:1;20535:9;20531:17;20524:47;20588:131;20714:4;20588:131;:::i;:::-;20580:139;;20307:419;;;:::o;20732:168::-;20872:20;20868:1;20860:6;20856:14;20849:44;20732:168;:::o;20906:366::-;21048:3;21069:67;21133:2;21128:3;21069:67;:::i;:::-;21062:74;;21145:93;21234:3;21145:93;:::i;:::-;21263:2;21258:3;21254:12;21247:19;;20906:366;;;:::o;21278:419::-;21444:4;21482:2;21471:9;21467:18;21459:26;;21531:9;21525:4;21521:20;21517:1;21506:9;21502:17;21495:47;21559:131;21685:4;21559:131;:::i;:::-;21551:139;;21278:419;;;:::o;21703:320::-;21818:4;21856:2;21845:9;21841:18;21833:26;;21869:71;21937:1;21926:9;21922:17;21913:6;21869:71;:::i;:::-;21950:66;22012:2;22001:9;21997:18;21988:6;21950:66;:::i;:::-;21703:320;;;;;:::o;22029:224::-;22169:34;22165:1;22157:6;22153:14;22146:58;22238:7;22233:2;22225:6;22221:15;22214:32;22029:224;:::o;22259:366::-;22401:3;22422:67;22486:2;22481:3;22422:67;:::i;:::-;22415:74;;22498:93;22587:3;22498:93;:::i;:::-;22616:2;22611:3;22607:12;22600:19;;22259:366;;;:::o;22631:419::-;22797:4;22835:2;22824:9;22820:18;22812:26;;22884:9;22878:4;22874:20;22870:1;22859:9;22855:17;22848:47;22912:131;23038:4;22912:131;:::i;:::-;22904:139;;22631:419;;;:::o;23056:175::-;23196:27;23192:1;23184:6;23180:14;23173:51;23056:175;:::o;23237:366::-;23379:3;23400:67;23464:2;23459:3;23400:67;:::i;:::-;23393:74;;23476:93;23565:3;23476:93;:::i;:::-;23594:2;23589:3;23585:12;23578:19;;23237:366;;;:::o;23609:419::-;23775:4;23813:2;23802:9;23798:18;23790:26;;23862:9;23856:4;23852:20;23848:1;23837:9;23833:17;23826:47;23890:131;24016:4;23890:131;:::i;:::-;23882:139;;23609:419;;;:::o;24034:225::-;24174:34;24170:1;24162:6;24158:14;24151:58;24243:8;24238:2;24230:6;24226:15;24219:33;24034:225;:::o;24265:366::-;24407:3;24428:67;24492:2;24487:3;24428:67;:::i;:::-;24421:74;;24504:93;24593:3;24504:93;:::i;:::-;24622:2;24617:3;24613:12;24606:19;;24265:366;;;:::o;24637:419::-;24803:4;24841:2;24830:9;24826:18;24818:26;;24890:9;24884:4;24880:20;24876:1;24865:9;24861:17;24854:47;24918:131;25044:4;24918:131;:::i;:::-;24910:139;;24637:419;;;:::o;25062:223::-;25202:34;25198:1;25190:6;25186:14;25179:58;25271:6;25266:2;25258:6;25254:15;25247:31;25062:223;:::o;25291:366::-;25433:3;25454:67;25518:2;25513:3;25454:67;:::i;:::-;25447:74;;25530:93;25619:3;25530:93;:::i;:::-;25648:2;25643:3;25639:12;25632:19;;25291:366;;;:::o;25663:419::-;25829:4;25867:2;25856:9;25852:18;25844:26;;25916:9;25910:4;25906:20;25902:1;25891:9;25887:17;25880:47;25944:131;26070:4;25944:131;:::i;:::-;25936:139;;25663:419;;;:::o;26088:221::-;26228:34;26224:1;26216:6;26212:14;26205:58;26297:4;26292:2;26284:6;26280:15;26273:29;26088:221;:::o;26315:366::-;26457:3;26478:67;26542:2;26537:3;26478:67;:::i;:::-;26471:74;;26554:93;26643:3;26554:93;:::i;:::-;26672:2;26667:3;26663:12;26656:19;;26315:366;;;:::o;26687:419::-;26853:4;26891:2;26880:9;26876:18;26868:26;;26940:9;26934:4;26930:20;26926:1;26915:9;26911:17;26904:47;26968:131;27094:4;26968:131;:::i;:::-;26960:139;;26687:419;;;:::o;27112:179::-;27252:31;27248:1;27240:6;27236:14;27229:55;27112:179;:::o;27297:366::-;27439:3;27460:67;27524:2;27519:3;27460:67;:::i;:::-;27453:74;;27536:93;27625:3;27536:93;:::i;:::-;27654:2;27649:3;27645:12;27638:19;;27297:366;;;:::o;27669:419::-;27835:4;27873:2;27862:9;27858:18;27850:26;;27922:9;27916:4;27912:20;27908:1;27897:9;27893:17;27886:47;27950:131;28076:4;27950:131;:::i;:::-;27942:139;;27669:419;;;:::o;28094:168::-;28234:20;28230:1;28222:6;28218:14;28211:44;28094:168;:::o;28268:366::-;28410:3;28431:67;28495:2;28490:3;28431:67;:::i;:::-;28424:74;;28507:93;28596:3;28507:93;:::i;:::-;28625:2;28620:3;28616:12;28609:19;;28268:366;;;:::o;28640:419::-;28806:4;28844:2;28833:9;28829:18;28821:26;;28893:9;28887:4;28883:20;28879:1;28868:9;28864:17;28857:47;28921:131;29047:4;28921:131;:::i;:::-;28913:139;;28640:419;;;:::o;29065:194::-;29105:4;29125:20;29143:1;29125:20;:::i;:::-;29120:25;;29159:20;29177:1;29159:20;:::i;:::-;29154:25;;29203:1;29200;29196:9;29188:17;;29227:1;29221:4;29218:11;29215:37;;;29232:18;;:::i;:::-;29215:37;29065:194;;;;:::o;29265:180::-;29313:77;29310:1;29303:88;29410:4;29407:1;29400:15;29434:4;29431:1;29424:15;29451:185;29491:1;29508:20;29526:1;29508:20;:::i;:::-;29503:25;;29542:20;29560:1;29542:20;:::i;:::-;29537:25;;29581:1;29571:35;;29586:18;;:::i;:::-;29571:35;29628:1;29625;29621:9;29616:14;;29451:185;;;;:::o;29642:160::-;29782:12;29778:1;29770:6;29766:14;29759:36;29642:160;:::o;29808:366::-;29950:3;29971:67;30035:2;30030:3;29971:67;:::i;:::-;29964:74;;30047:93;30136:3;30047:93;:::i;:::-;30165:2;30160:3;30156:12;30149:19;;29808:366;;;:::o;30180:419::-;30346:4;30384:2;30373:9;30369:18;30361:26;;30433:9;30427:4;30423:20;30419:1;30408:9;30404:17;30397:47;30461:131;30587:4;30461:131;:::i;:::-;30453:139;;30180:419;;;:::o;30605:164::-;30745:16;30741:1;30733:6;30729:14;30722:40;30605:164;:::o;30775:366::-;30917:3;30938:67;31002:2;30997:3;30938:67;:::i;:::-;30931:74;;31014:93;31103:3;31014:93;:::i;:::-;31132:2;31127:3;31123:12;31116:19;;30775:366;;;:::o;31147:419::-;31313:4;31351:2;31340:9;31336:18;31328:26;;31400:9;31394:4;31390:20;31386:1;31375:9;31371:17;31364:47;31428:131;31554:4;31428:131;:::i;:::-;31420:139;;31147:419;;;:::o;31572:220::-;31712:34;31708:1;31700:6;31696:14;31689:58;31781:3;31776:2;31768:6;31764:15;31757:28;31572:220;:::o;31798:366::-;31940:3;31961:67;32025:2;32020:3;31961:67;:::i;:::-;31954:74;;32037:93;32126:3;32037:93;:::i;:::-;32155:2;32150:3;32146:12;32139:19;;31798:366;;;:::o;32170:419::-;32336:4;32374:2;32363:9;32359:18;32351:26;;32423:9;32417:4;32413:20;32409:1;32398:9;32394:17;32387:47;32451:131;32577:4;32451:131;:::i;:::-;32443:139;;32170:419;;;:::o;32595:224::-;32735:34;32731:1;32723:6;32719:14;32712:58;32804:7;32799:2;32791:6;32787:15;32780:32;32595:224;:::o;32825:366::-;32967:3;32988:67;33052:2;33047:3;32988:67;:::i;:::-;32981:74;;33064:93;33153:3;33064:93;:::i;:::-;33182:2;33177:3;33173:12;33166:19;;32825:366;;;:::o;33197:419::-;33363:4;33401:2;33390:9;33386:18;33378:26;;33450:9;33444:4;33440:20;33436:1;33425:9;33421:17;33414:47;33478:131;33604:4;33478:131;:::i;:::-;33470:139;;33197:419;;;:::o;33622:222::-;33762:34;33758:1;33750:6;33746:14;33739:58;33831:5;33826:2;33818:6;33814:15;33807:30;33622:222;:::o;33850:366::-;33992:3;34013:67;34077:2;34072:3;34013:67;:::i;:::-;34006:74;;34089:93;34178:3;34089:93;:::i;:::-;34207:2;34202:3;34198:12;34191:19;;33850:366;;;:::o;34222:419::-;34388:4;34426:2;34415:9;34411:18;34403:26;;34475:9;34469:4;34465:20;34461:1;34450:9;34446:17;34439:47;34503:131;34629:4;34503:131;:::i;:::-;34495:139;;34222:419;;;:::o;34647:225::-;34787:34;34783:1;34775:6;34771:14;34764:58;34856:8;34851:2;34843:6;34839:15;34832:33;34647:225;:::o;34878:366::-;35020:3;35041:67;35105:2;35100:3;35041:67;:::i;:::-;35034:74;;35117:93;35206:3;35117:93;:::i;:::-;35235:2;35230:3;35226:12;35219:19;;34878:366;;;:::o;35250:419::-;35416:4;35454:2;35443:9;35439:18;35431:26;;35503:9;35497:4;35493:20;35489:1;35478:9;35474:17;35467:47;35531:131;35657:4;35531:131;:::i;:::-;35523:139;;35250:419;;;:::o;35675:147::-;35776:11;35813:3;35798:18;;35675:147;;;;:::o;35828:114::-;;:::o;35948:398::-;36107:3;36128:83;36209:1;36204:3;36128:83;:::i;:::-;36121:90;;36220:93;36309:3;36220:93;:::i;:::-;36338:1;36333:3;36329:11;36322:18;;35948:398;;;:::o;36352:379::-;36536:3;36558:147;36701:3;36558:147;:::i;:::-;36551:154;;36722:3;36715:10;;36352:379;;;:::o;36737:180::-;36785:77;36782:1;36775:88;36882:4;36879:1;36872:15;36906:4;36903:1;36896:15;36923:180;36971:77;36968:1;36961:88;37068:4;37065:1;37058:15;37092:4;37089:1;37082:15;37109:85;37154:7;37183:5;37172:16;;37109:85;;;:::o;37200:158::-;37258:9;37291:61;37309:42;37318:32;37344:5;37318:32;:::i;:::-;37309:42;:::i;:::-;37291:61;:::i;:::-;37278:74;;37200:158;;;:::o;37364:147::-;37459:45;37498:5;37459:45;:::i;:::-;37454:3;37447:58;37364:147;;:::o;37517:114::-;37584:6;37618:5;37612:12;37602:22;;37517:114;;;:::o;37637:184::-;37736:11;37770:6;37765:3;37758:19;37810:4;37805:3;37801:14;37786:29;;37637:184;;;;:::o;37827:132::-;37894:4;37917:3;37909:11;;37947:4;37942:3;37938:14;37930:22;;37827:132;;;:::o;37965:108::-;38042:24;38060:5;38042:24;:::i;:::-;38037:3;38030:37;37965:108;;:::o;38079:179::-;38148:10;38169:46;38211:3;38203:6;38169:46;:::i;:::-;38247:4;38242:3;38238:14;38224:28;;38079:179;;;;:::o;38264:113::-;38334:4;38366;38361:3;38357:14;38349:22;;38264:113;;;:::o;38413:732::-;38532:3;38561:54;38609:5;38561:54;:::i;:::-;38631:86;38710:6;38705:3;38631:86;:::i;:::-;38624:93;;38741:56;38791:5;38741:56;:::i;:::-;38820:7;38851:1;38836:284;38861:6;38858:1;38855:13;38836:284;;;38937:6;38931:13;38964:63;39023:3;39008:13;38964:63;:::i;:::-;38957:70;;39050:60;39103:6;39050:60;:::i;:::-;39040:70;;38896:224;38883:1;38880;38876:9;38871:14;;38836:284;;;38840:14;39136:3;39129:10;;38537:608;;;38413:732;;;;:::o;39151:831::-;39414:4;39452:3;39441:9;39437:19;39429:27;;39466:71;39534:1;39523:9;39519:17;39510:6;39466:71;:::i;:::-;39547:80;39623:2;39612:9;39608:18;39599:6;39547:80;:::i;:::-;39674:9;39668:4;39664:20;39659:2;39648:9;39644:18;39637:48;39702:108;39805:4;39796:6;39702:108;:::i;:::-;39694:116;;39820:72;39888:2;39877:9;39873:18;39864:6;39820:72;:::i;:::-;39902:73;39970:3;39959:9;39955:19;39946:6;39902:73;:::i;:::-;39151:831;;;;;;;;:::o
Swarm Source
ipfs://70e7c5806c8e26f2722507c2092fa6aec166621a9a9e1004ea68f284195dce7d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.