Overview ERC-20
Price
$0.01 @ 0.009226 MATIC (+15.65%)
Fully Diluted Market Cap
Total Supply:
49,870,548.642997 DEXI
Holders:
3,888 addresses
Transfers:
-
Contract:
Decimals:
9
Official Site:
[ Download CSV Export ]
[ Download CSV Export ]
OVERVIEW
Dexioprotocol is a gaming company that uses crypto and blockchain technology to enhance user experience and bridge the gap between traditional enterprise and the Web3 revolution.Market
Volume (24H) | : | $2,426.97 |
Market Capitalization | : | $0.00 |
Circulating Supply | : | 0.00 DEXI |
Market Data Source: Coinmarketcap |
Update? Click here to update the token ICO / general information
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
DEXI
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-06 */ // SPDX-License-Identifier: MIT pragma solidity 0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual 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 SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct Bytes32Set { Set _inner; } function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } // AddressSet struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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 functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library DateTime { struct _DateTime { uint16 year; uint8 month; uint8 day; uint8 hour; uint8 minute; uint8 second; uint8 weekday; } uint constant DAY_IN_SECONDS = 1 days; uint constant YEAR_IN_SECONDS = 365 days; uint constant LEAP_YEAR_IN_SECONDS = 366 days; uint constant HOUR_IN_SECONDS = 1 hours; uint constant MINUTE_IN_SECONDS = 1 minutes; uint16 constant ORIGIN_YEAR = 1970; function isLeapYear(uint16 year) public pure returns (bool) { if (year % 4 != 0) { return false; } if (year % 100 != 0) { return true; } if (year % 400 != 0) { return false; } return true; } function leapYearsBefore(uint year) public pure returns (uint) { year -= 1; return year / 4 - year / 100 + year / 400; } function getDaysInMonth(uint8 month, uint16 year) public pure returns (uint8) { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { return 31; } else if (month == 4 || month == 6 || month == 9 || month == 11) { return 30; } else if (isLeapYear(year)) { return 29; } else { return 28; } } function getYear(uint timestamp) public pure returns (uint16) { uint secondsAccountedFor = 0; uint16 year; uint numLeapYears; // Year year = uint16(ORIGIN_YEAR + timestamp / YEAR_IN_SECONDS); numLeapYears = leapYearsBefore(year) - leapYearsBefore(ORIGIN_YEAR); secondsAccountedFor += LEAP_YEAR_IN_SECONDS * numLeapYears; secondsAccountedFor += YEAR_IN_SECONDS * (year - ORIGIN_YEAR - numLeapYears); while (secondsAccountedFor > timestamp) { if (isLeapYear(uint16(year - 1))) { secondsAccountedFor -= LEAP_YEAR_IN_SECONDS; } else { secondsAccountedFor -= YEAR_IN_SECONDS; } year -= 1; } return year; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract DEXI is IERC20, Ownable { enum TAX_TYPE { BURN, BUY, SELL, TRANSFER } using SafeMath for uint256; using DateTime for uint256; using Address for address; using EnumerableSet for EnumerableSet.AddressSet; uint8 private constant _decimals = 9; string private constant _name = "DEXIOPROTOCOL"; string private constant _symbol = "DEXI"; uint256 private constant max_supply = 250 * 1e6 * 10**uint256(_decimals); uint256 private constant POINTS_DIVISOR = 10000; uint256 public constant ANNUAL_MINTABLE_POINTS = 1000; // 10% uint256 private constant initialSupply = 50 * 1e6 * 10**uint256(_decimals); mapping(address => uint256) private _balances; uint256 private _totalSupply; // % to holders uint8 public buyTax = 5; uint8 public sellTax = 8; uint8 public transferTax = 6; uint8 public burnFee = 10; bool public enableBurnFee = true; bool public enableTaxOnlyForSell = true; bool public enableTaxOnlyForBuy = true; bool public enableTaxOnlyForTransfer = true; bool public excludeEnabled; uint256 public _maxTxAmount = initialSupply.div(1).div(100); address public _burnpoolWalletAddress = address(0x000000000000000000000000000000000000dEaD); mapping (address => mapping (address => uint256)) private _allowances; mapping (uint16 => uint256) public _yearMintedAmount; mapping (uint16 => uint256) public _yearCanMintAmount; mapping (address => bool) public _isBlacklisted; mapping (address => bool) private _isExcludedFromFee; EnumerableSet.AddressSet private swapV2Pairs; event SetMaxTxAmount(uint256 maxTxAmount); event SetExcludeEnabled(bool excludeEnabled); event IsBlackListed(address indexed user, bool indexed flag); event ExcludeFromFee(address account, bool isExcludedFromFee); event SetEnabledFlag(bool _enableFlag, TAX_TYPE _flagType); event TaxesSet(uint8 _buyTax, uint8 _sellTax, uint8 _transferTax, uint8 _burnFee); event AddNewSwapPair(address pair); constructor () public { _totalSupply = initialSupply; _balances[msg.sender] = initialSupply; // set the rest of the contract variables _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; excludeEnabled = true; emit Transfer(address(0), msg.sender, initialSupply); } receive() external payable {} fallback() external payable {} function directTransfer(address account, uint256 amount) external onlyOwner { _transfer(address(this), account, amount); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function mint(address _account, uint256 _amount) external onlyOwner { require(_totalSupply + _amount <= max_supply, "Mint limit reached"); require(_account != address(0), "ERC20: mint to the zero address"); uint16 curYear = DateTime.getYear(block.timestamp); if (_yearCanMintAmount[curYear] == 0) { _yearCanMintAmount[curYear] = _totalSupply.mul(ANNUAL_MINTABLE_POINTS).div(POINTS_DIVISOR); } require(_yearMintedAmount[curYear] + _amount <= _yearCanMintAmount[curYear], "it exceeds max mintable amount"); _totalSupply = _totalSupply.add(_amount); _yearMintedAmount[curYear] = _yearMintedAmount[curYear].add(_amount); _balances[_account] = _balances[_account].add(_amount); emit Transfer(address(0), _account, _amount); } function burn(address _account, uint256 _amount) external onlyOwner { _balances[_account] = _balances[_account].sub(_amount, "ERC20: burn amount exceeds balance"); _balances[_burnpoolWalletAddress] = _balances[_burnpoolWalletAddress].add(_amount); _totalSupply = _totalSupply.sub(_amount); emit Transfer(_account, _burnpoolWalletAddress, _amount); } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function addToBlackList(address[] calldata addresses) external onlyOwner { for (uint256 i; i < addresses.length; ++i) { _isBlacklisted[addresses[i]] = true; emit IsBlackListed(addresses[i], true); } } function removeFromBlackList(address account) external onlyOwner { _isBlacklisted[account] = false; emit IsBlackListed(account, false); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); bool takeFee = true; if(excludeEnabled && (_isExcludedFromFee[from] || _isExcludedFromFee[to])) { takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) { _feelessTransfer(sender, recipient, amount); } else { if (enableTaxOnlyForSell && swapV2Pairs.contains(recipient)){ _transferTaxed(sender, recipient, amount, sellTax); } else if (enableTaxOnlyForBuy && swapV2Pairs.contains(sender)) { _transferTaxed(sender, recipient, amount, buyTax); } else { _transferTaxed(sender, recipient, amount, transferTax); } } } function _transferTaxed(address sender, address recipient, uint256 amount, uint8 tax) private { require(_balances[sender] >= amount, "Transfer amount exceeds the balance."); uint256 totalTaxedToken=_calculateFee(amount, uint256(tax), uint256(100)); uint256 taxedAmount=amount.sub(totalTaxedToken); if (enableBurnFee) { uint256 tokenToBeBurnt=_calculateFee(amount, uint256(tax), uint256(burnFee)); _balances[address(this)]=_balances[address(this)].add(totalTaxedToken).sub(tokenToBeBurnt); _totalSupply = _totalSupply.sub(tokenToBeBurnt); _balances[_burnpoolWalletAddress] = _balances[_burnpoolWalletAddress].add(tokenToBeBurnt); emit Transfer(sender, _burnpoolWalletAddress, tokenToBeBurnt); emit Transfer(sender, address(this), (totalTaxedToken.sub(tokenToBeBurnt))); } else { _balances[address(this)]=_balances[address(this)].add((totalTaxedToken)); emit Transfer(sender, address(this), (totalTaxedToken)); } _balances[recipient] = _balances[recipient].add(taxedAmount); _balances[sender]=_balances[sender].sub(amount); emit Transfer(sender, recipient, taxedAmount); } function _feelessTransfer(address sender, address recipient, uint256 amount) private { _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount > 0, "maxTxAmount should be greater than zero"); _maxTxAmount = maxTxAmount; emit SetMaxTxAmount(maxTxAmount); } //Calculates the token that should be taxed function _calculateFee(uint256 amount, uint256 tax, uint256 taxPercent) private pure returns (uint256) { return amount.mul(tax).mul(taxPercent).div(POINTS_DIVISOR); } function setTaxes(uint8 buyTaxValue, uint8 sellTaxVaule, uint8 transferTaxValue, uint8 burnFeeValue) external onlyOwner { require(buyTaxValue <= 20, "to high fee"); require(sellTaxVaule <= 20, "to high fee"); require(transferTaxValue <= 20, "to high fee"); require(burnFeeValue <= 20, "to high fee"); buyTax = buyTaxValue; sellTax = sellTaxVaule; transferTax = transferTaxValue; burnFee = burnFeeValue; emit TaxesSet(buyTaxValue, sellTaxVaule, transferTaxValue, burnFeeValue); } function setEnabledBurnFee(bool _enabledBurnFee) external onlyOwner { enableBurnFee = _enabledBurnFee; emit SetEnabledFlag(_enabledBurnFee, TAX_TYPE.BURN); } function setEnableTaxOnlyForBuy(bool _enableTaxOnlyForBUy) external onlyOwner { enableTaxOnlyForBuy = _enableTaxOnlyForBUy; emit SetEnabledFlag(_enableTaxOnlyForBUy, TAX_TYPE.BUY); } function setExcludeEnabled(bool _excludeEnabled) external onlyOwner() { excludeEnabled = _excludeEnabled; emit SetExcludeEnabled(_excludeEnabled); } function isExcludedFromFee(address account) external view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) external onlyOwner() { _isExcludedFromFee[account] = true; emit ExcludeFromFee(account, true); } function includeInFee(address account) external onlyOwner() { _isExcludedFromFee[account] = false; emit ExcludeFromFee(account, false); } function addSwapPair(address _pairAddress) external onlyOwner { require(!swapV2Pairs.contains(_pairAddress), 'add: SwapV2Pair already added'); swapV2Pairs.add(_pairAddress); emit AddNewSwapPair(_pairAddress); } function setEnableTaxOnlyForSell(bool _enableTaxOnlyForSell) external onlyOwner { enableTaxOnlyForSell = _enableTaxOnlyForSell; emit SetEnabledFlag(_enableTaxOnlyForSell, TAX_TYPE.SELL); } function setEnableTaxOnlyForTransfer(bool _enableTaxOnlyForTransfer) external onlyOwner { enableTaxOnlyForTransfer = _enableTaxOnlyForTransfer; emit SetEnabledFlag(_enableTaxOnlyForTransfer, TAX_TYPE.TRANSFER); } function withdrawFees(address _receiver) external onlyOwner { uint256 feesAmount = _balances[address(this)]; _balances[address(this)] = 0; _balances[_receiver] = _balances[_receiver].add(feesAmount); emit Transfer(address(this), _receiver, feesAmount); } function rescueFunds(address _token, address _receiver) external onlyOwner { if (_token == address(0)) { uint256 _amount = address(this).balance; payable(_receiver).transfer(_amount); } else { uint256 _amount = IERC20(_token).balanceOf(address(this)); IERC20(_token).transfer(_receiver, _amount); } } function isPoolPair(address _pair) public view returns (bool) { return EnumerableSet.contains(swapV2Pairs, _pair); } function getPairsLength() external view returns (uint256) { return EnumerableSet.length(swapV2Pairs); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"}],"name":"AddNewSwapPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcludedFromFee","type":"bool"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bool","name":"flag","type":"bool"}],"name":"IsBlackListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enableFlag","type":"bool"},{"indexed":false,"internalType":"enum DEXI.TAX_TYPE","name":"_flagType","type":"uint8"}],"name":"SetEnabledFlag","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"excludeEnabled","type":"bool"}],"name":"SetExcludeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"SetMaxTxAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"_buyTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_sellTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_transferTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_burnFee","type":"uint8"}],"name":"TaxesSet","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"ANNUAL_MINTABLE_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnpoolWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"_yearCanMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"_yearMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pairAddress","type":"address"}],"name":"addSwapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"directTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableBurnFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTaxOnlyForBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTaxOnlyForSell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTaxOnlyForTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"excludeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"isPoolPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableTaxOnlyForBUy","type":"bool"}],"name":"setEnableTaxOnlyForBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableTaxOnlyForSell","type":"bool"}],"name":"setEnableTaxOnlyForSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableTaxOnlyForTransfer","type":"bool"}],"name":"setEnableTaxOnlyForTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabledBurnFee","type":"bool"}],"name":"setEnabledBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_excludeEnabled","type":"bool"}],"name":"setExcludeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTaxValue","type":"uint8"},{"internalType":"uint8","name":"sellTaxVaule","type":"uint8"},{"internalType":"uint8","name":"transferTaxValue","type":"uint8"},{"internalType":"uint8","name":"burnFeeValue","type":"uint8"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526005600360006101000a81548160ff021916908360ff1602179055506008600360016101000a81548160ff021916908360ff1602179055506006600360026101000a81548160ff021916908360ff160217905550600a6003806101000a81548160ff021916908360ff1602179055506001600360046101000a81548160ff0219169083151502179055506001600360056101000a81548160ff0219169083151502179055506001600360066101000a81548160ff0219169083151502179055506001600360076101000a81548160ff0219169083151502179055506200012160646200010d6001600960ff16600a0a6302faf08002620003dd60201b620039751790919060201c565b620003dd60201b620039751790919060201c565b60045561dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200017457600080fd5b506000620001876200046860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600960ff16600a0a6302faf08002600281905550600960ff16600a0a6302faf08002600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000620002a06200047060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360086101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960ff16600a0a6302faf080026040518082815260200191505060405180910390a362000499565b600080821162000455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816200045f57fe5b04905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b614ec180620004a96000396000f3fe6080604052600436106102b25760003560e01c8063715018a611610175578063cc1776d3116100dc578063ed07401611610095578063fa5eb8fa1161006f578063fa5eb8fa1461108c578063fce589d8146110b9578063fef1b128146110e7578063ff8975701461113a576102b9565b8063ed07401614610fd3578063f1acc88e14611010578063f2fde38b1461103b576102b9565b8063cc1776d314610dfa578063cfd0d2ea14610e28578063dd62ed3e14610e8f578063e3c8098c14610f14578063e5d1dca314610f41578063ea2f0b3714610f82576102b9565b806395d89b411161012e57806395d89b4114610b75578063996b8a9d14610c055780639dc29fac14610c58578063a457c2d714610cb3578063a9059cbb14610d24578063b803494914610d95576102b9565b8063715018a614610a5c5780637d1db4a514610a735780638124f7ac14610a9e5780638170706c14610acc578063880e75f214610b095780638da5cb5b14610b34576102b9565b80632929bbf4116102195780634a49ac4c116101d25780634a49ac4c146108895780634f7041a5146108da5780635342acb414610908578063661bf2c01461096f5780636c61d60f1461099c57806370a08231146109f7576102b9565b80632929bbf4146106d45780633002ab1814610701578063313ce5671461073e578063395093511461076c57806340c10f19146107dd578063437823ec14610838576102b9565b806318869a171161026b57806318869a17146104b65780631bbae6e0146104f35780631cdd3be31461052e5780631ff9b6f21461059557806323b872dd14610606578063264f652614610697576102b9565b8063036ad6cd146102bb57806306fdde031461030c578063095ea7b31461039c57806312480f501461040d578063164e68de1461043a57806318160ddd1461048b576102b9565b366102b957005b005b3480156102c757600080fd5b5061030a600480360360208110156102de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111c0565b005b34801561031857600080fd5b5061032161135b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610361578082015181840152602081019050610346565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a857600080fd5b506103f5600480360360408110156103bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b60405180821515815260200191505060405180910390f35b34801561041957600080fd5b506104226113af565b60405180821515815260200191505060405180910390f35b34801561044657600080fd5b506104896004803603602081101561045d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c2565b005b34801561049757600080fd5b506104a06115f8565b6040518082815260200191505060405180910390f35b3480156104c257600080fd5b506104f1600480360360208110156104d957600080fd5b81019080803515159060200190929190505050611602565b005b3480156104ff57600080fd5b5061052c6004803603602081101561051657600080fd5b810190808035906020019092919050505061171b565b005b34801561053a57600080fd5b5061057d6004803603602081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611864565b60405180821515815260200191505060405180910390f35b3480156105a157600080fd5b50610604600480360360408110156105b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611884565b005b34801561061257600080fd5b5061067f6004803603606081101561062957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b13565b60405180821515815260200191505060405180910390f35b3480156106a357600080fd5b506106d2600480360360208110156106ba57600080fd5b81019080803515159060200190929190505050611bde565b005b3480156106e057600080fd5b506106e9611cf7565b60405180821515815260200191505060405180910390f35b34801561070d57600080fd5b5061073c6004803603602081101561072457600080fd5b81019080803515159060200190929190505050611d0a565b005b34801561074a57600080fd5b50610753611e0f565b604051808260ff16815260200191505060405180910390f35b34801561077857600080fd5b506107c56004803603604081101561078f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e18565b60405180821515815260200191505060405180910390f35b3480156107e957600080fd5b506108366004803603604081101561080057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebd565b005b34801561084457600080fd5b506108876004803603602081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a9565b005b34801561089557600080fd5b506108d8600480360360208110156108ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250b565b005b3480156108e657600080fd5b506108ef61265c565b604051808260ff16815260200191505060405180910390f35b34801561091457600080fd5b506109576004803603602081101561092b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266f565b60405180821515815260200191505060405180910390f35b34801561097b57600080fd5b506109846126c5565b60405180821515815260200191505060405180910390f35b3480156109a857600080fd5b506109f5600480360360408110156109bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126d8565b005b348015610a0357600080fd5b50610a4660048036036020811015610a1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612796565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a716127df565b005b348015610a7f57600080fd5b50610a8861294c565b6040518082815260200191505060405180910390f35b348015610aaa57600080fd5b50610ab3612952565b604051808260ff16815260200191505060405180910390f35b348015610ad857600080fd5b50610b0760048036036020811015610aef57600080fd5b81019080803515159060200190929190505050612965565b005b348015610b1557600080fd5b50610b1e612a7e565b6040518082815260200191505060405180910390f35b348015610b4057600080fd5b50610b49612a8f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b8157600080fd5b50610b8a612ab8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bca578082015181840152602081019050610baf565b50505050905090810190601f168015610bf75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c1157600080fd5b50610c4260048036036020811015610c2857600080fd5b81019080803561ffff169060200190929190505050612af5565b6040518082815260200191505060405180910390f35b348015610c6457600080fd5b50610cb160048036036040811015610c7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b0d565b005b348015610cbf57600080fd5b50610d0c60048036036040811015610cd657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612dea565b60405180821515815260200191505060405180910390f35b348015610d3057600080fd5b50610d7d60048036036040811015610d4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ea9565b60405180821515815260200191505060405180910390f35b348015610da157600080fd5b50610df860048036036080811015610db857600080fd5b81019080803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190803560ff169060200190929190505050612ec0565b005b348015610e0657600080fd5b50610e0f613223565b604051808260ff16815260200191505060405180910390f35b348015610e3457600080fd5b50610e7760048036036020811015610e4b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613236565b60405180821515815260200191505060405180910390f35b348015610e9b57600080fd5b50610efe60048036036040811015610eb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061324a565b6040518082815260200191505060405180910390f35b348015610f2057600080fd5b50610f296132d1565b60405180821515815260200191505060405180910390f35b348015610f4d57600080fd5b50610f566132e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f8e57600080fd5b50610fd160048036036020811015610fa557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061330a565b005b348015610fdf57600080fd5b5061100e60048036036020811015610ff657600080fd5b8101908080351515906020019092919050505061346c565b005b34801561101c57600080fd5b50611025613585565b6040518082815260200191505060405180910390f35b34801561104757600080fd5b5061108a6004803603602081101561105e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061358b565b005b34801561109857600080fd5b506110a161377d565b60405180821515815260200191505060405180910390f35b3480156110c557600080fd5b506110ce613790565b604051808260ff16815260200191505060405180910390f35b3480156110f357600080fd5b506111246004803603602081101561110a57600080fd5b81019080803561ffff1690602001909291905050506137a1565b6040518082815260200191505060405180910390f35b34801561114657600080fd5b506111be6004803603602081101561115d57600080fd5b810190808035906020019064010000000081111561117a57600080fd5b82018360208201111561118c57600080fd5b803590602001918460208302840111640100000000831117156111ae57600080fd5b90919293919293905050506137b9565b005b6111c86139fe565b73ffffffffffffffffffffffffffffffffffffffff166111e6612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61128381600b613a0690919063ffffffff16565b156112f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6164643a205377617056325061697220616c726561647920616464656400000081525060200191505060405180910390fd5b61130a81600b613a3690919063ffffffff16565b507f786c4a0c667c2b4ec2515f15cf80a09197ad7b87cf7ce9186b6177d1d667dc8881604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60606040518060400160405280600d81526020017f444558494f50524f544f434f4c00000000000000000000000000000000000000815250905090565b60006113a5338484613a66565b6001905092915050565b600360069054906101000a900460ff1681565b6113ca6139fe565b73ffffffffffffffffffffffffffffffffffffffff166113e8612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061154c81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600254905090565b61160a6139fe565b73ffffffffffffffffffffffffffffffffffffffff16611628612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360076101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e300881600360405180831515815260200182600381111561170757fe5b81526020019250505060405180910390a150565b6117236139fe565b73ffffffffffffffffffffffffffffffffffffffff16611741612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008111611823576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180614d136027913960400191505060405180910390fd5b806004819055507f4a02caf9e7317d663463d3d976767ba90289279dd55c0a46f962536efc87a9a6816040518082815260200191505060405180910390a150565b60096020528060005260406000206000915054906101000a900460ff1681565b61188c6139fe565b73ffffffffffffffffffffffffffffffffffffffff166118aa612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611933576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ba5760004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b3573d6000803e3d6000fd5b5050611b0f565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a2357600080fd5b505afa158015611a37573d6000803e3d6000fd5b505050506040513d6020811015611a4d57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ad157600080fd5b505af1158015611ae5573d6000803e3d6000fd5b505050506040513d6020811015611afb57600080fd5b810190808051906020019092919050505050505b5050565b6000611b20848484613ce5565b611bd38433611bce85604051806060016040528060288152602001614dcd60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b613a66565b600190509392505050565b611be66139fe565b73ffffffffffffffffffffffffffffffffffffffff16611c04612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611c8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360066101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e3008816001604051808315158152602001826003811115611ce357fe5b81526020019250505060405180910390a150565b600360059054906101000a900460ff1681565b611d126139fe565b73ffffffffffffffffffffffffffffffffffffffff16611d30612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611db9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360086101000a81548160ff0219169083151502179055507f83edaaca0099288fb481bf23f772baba7ed26de0f877b8aa2f31d42453c859ea8160405180821515815260200191505060405180910390a150565b60006009905090565b6000611eb33384611eae85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b613a66565b6001905092915050565b611ec56139fe565b73ffffffffffffffffffffffffffffffffffffffff16611ee3612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614611f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960ff16600a0a630ee6b2800281600254011115611ff3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d696e74206c696d69742072656163686564000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b600073dc1fea11d6980e629b041c2bd0578698019e0ba76392d66313426040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156120e757600080fd5b505af41580156120fb573d6000803e3d6000fd5b505050506040513d602081101561211157600080fd5b810190808051906020019092919050505090506000600860008361ffff1661ffff168152602001908152602001600020541415612193576121736127106121656103e86002546141cc90919063ffffffff16565b61397590919063ffffffff16565b600860008361ffff1661ffff168152602001908152602001600020819055505b600860008261ffff1661ffff1681526020019081526020016000205482600760008461ffff1661ffff16815260200190815260200160002054011115612241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f69742065786365656473206d6178206d696e7461626c6520616d6f756e74000081525060200191505060405180910390fd5b61225682600254613c5d90919063ffffffff16565b60028190555061228a82600760008461ffff1661ffff16815260200190815260200160002054613c5d90919063ffffffff16565b600760008361ffff1661ffff168152602001908152602001600020819055506122fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6123b16139fe565b73ffffffffffffffffffffffffffffffffffffffff166123cf612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612458576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d816001604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a150565b6125136139fe565b73ffffffffffffffffffffffffffffffffffffffff16612531612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146125ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600015158173ffffffffffffffffffffffffffffffffffffffff167f65d58a482cf61e30f4bae9c83fea5b596d5386e9a0e1872d3a53fc631e78494960405160405180910390a350565b600360009054906101000a900460ff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600360089054906101000a900460ff1681565b6126e06139fe565b73ffffffffffffffffffffffffffffffffffffffff166126fe612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612787576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612792308383613ce5565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6127e76139fe565b73ffffffffffffffffffffffffffffffffffffffff16612805612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461288e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b600360029054906101000a900460ff1681565b61296d6139fe565b73ffffffffffffffffffffffffffffffffffffffff1661298b612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612a14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360056101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e3008816002604051808315158152602001826003811115612a6a57fe5b81526020019250505060405180910390a150565b6000612a8a600b614252565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4445584900000000000000000000000000000000000000000000000000000000815250905090565b60076020528060005260406000206000915090505481565b612b156139fe565b73ffffffffffffffffffffffffffffffffffffffff16612b33612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612bbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612c2881604051806060016040528060228152602001614ca960229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cdf8160016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d598160025461426790919063ffffffff16565b600281905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612e9f3384612e9a85604051806060016040528060258152602001614e6760259139600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b613a66565b6001905092915050565b6000612eb6338484613ce5565b6001905092915050565b612ec86139fe565b73ffffffffffffffffffffffffffffffffffffffff16612ee6612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614612f6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60148460ff161115612fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b60148360ff161115613063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b60148260ff1611156130dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b60148160ff161115613157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f746f20686967682066656500000000000000000000000000000000000000000081525060200191505060405180910390fd5b83600360006101000a81548160ff021916908360ff16021790555082600360016101000a81548160ff021916908360ff16021790555081600360026101000a81548160ff021916908360ff160217905550806003806101000a81548160ff021916908360ff1602179055507fa2c26ee674508cbec54d81b2c401f64849f61ac3445dc448ab16078abd1c6fda84848484604051808560ff1681526020018460ff1681526020018360ff1681526020018260ff16815260200194505050505060405180910390a150505050565b600360019054906101000a900460ff1681565b6000613243600b83613a06565b9050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360079054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6133126139fe565b73ffffffffffffffffffffffffffffffffffffffff16613330612a8f565b73ffffffffffffffffffffffffffffffffffffffff16146133b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d816000604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a150565b6134746139fe565b73ffffffffffffffffffffffffffffffffffffffff16613492612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461351b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360046101000a81548160ff0219169083151502179055507f90ab3dcb6d1bc8e352126d73e1744cefc1a08d8456436d37928c4dd2de2e300881600060405180831515815260200182600381111561357157fe5b81526020019250505060405180910390a150565b6103e881565b6135936139fe565b73ffffffffffffffffffffffffffffffffffffffff166135b1612a8f565b73ffffffffffffffffffffffffffffffffffffffff161461363a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156136c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ccb6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360049054906101000a900460ff1681565b60038054906101000a900460ff1681565b60086020528060005260406000206000915090505481565b6137c16139fe565b73ffffffffffffffffffffffffffffffffffffffff166137df612a8f565b73ffffffffffffffffffffffffffffffffffffffff1614613868576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b828290508110156139705760016009600085858581811061388857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001151583838381811061390657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f65d58a482cf61e30f4bae9c83fea5b596d5386e9a0e1872d3a53fc631e78494960405160405180910390a380600101905061386b565b505050565b60008082116139ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816139f557fe5b04905092915050565b600033905090565b6000613a2e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6142ea565b905092915050565b6000613a5e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61430d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614e436024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614cf16022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080828401905083811015613cdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614e1e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614c866023913960400191505060405180910390fd5b60008111613e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614df56029913960400191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613eee5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b613f68612a8f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613fd65750613fa6612a8f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561403757600454811115614036576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614d846028913960400191505060405180910390fd5b5b600060019050600360089054906101000a900460ff1680156140f65750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806140f55750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b1561410057600090505b61410c8484848461437d565b50505050565b60008383111582906141bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614184578082015181840152602081019050614169565b50505050905090810190601f1680156141b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000808314156141df576000905061424c565b60008284029050828482816141f057fe5b0414614247576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614dac6021913960400191505060405180910390fd5b809150505b92915050565b600061426082600001614458565b9050919050565b6000828211156142df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600061431983836142ea565b614372578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614377565b600090505b92915050565b806143925761438d848484614469565b614452565b600360059054906101000a900460ff1680156143be57506143bd83600b613a0690919063ffffffff16565b5b156143e3576143de848484600360019054906101000a900460ff16614617565b614451565b600360069054906101000a900460ff16801561440f575061440e84600b613a0690919063ffffffff16565b5b156144345761442f848484600360009054906101000a900460ff16614617565b614450565b61444f848484600360029054906101000a900460ff16614617565b5b5b5b50505050565b600081600001805490509050919050565b6144d581604051806060016040528060268152602001614d5e60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546141129092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061456a81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156146af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614d3a6024913960400191505060405180910390fd5b60006146c0838360ff166064614c41565b905060006146d7828561426790919063ffffffff16565b9050600360049054906101000a900460ff16156149af57600061470e858560ff1660038054906101000a900460ff1660ff16614c41565b90506147748161476685600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b61426790919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147cc8160025461426790919063ffffffff16565b6002819055506148468160016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b60016000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614994848761426790919063ffffffff16565b6040518082815260200191505060405180910390a350614aaa565b614a0182600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b614afc81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c5d90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b9184600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461426790919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050505050565b6000614c7c612710614c6e84614c6087896141cc90919063ffffffff16565b6141cc90919063ffffffff16565b61397590919063ffffffff16565b9050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736d61785478416d6f756e742073686f756c642062652067726561746572207468616e207a65726f5472616e7366657220616d6f756e742065786365656473207468652062616c616e63652e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f8c02d46efea2af4c8bb7782eeee868bafb16f6add12f44a04d274391fdd8e8764736f6c634300060c0033
Deployed ByteCode Sourcemap
14063:13307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25703:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16754:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18838:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15069:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26415:295;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17031:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26172:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23602:233;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15564:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26718:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19007:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24840:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15023:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25053:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16940:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19326:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17139:838;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25365:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20082;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14856:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25232:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15164:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16610:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18383:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1008:148;;;;;;;;;;;;;:::i;:::-;;15199:59;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14917:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25953:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27250:117;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;785:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16845;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15445:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17985:390;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19550:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18510:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24080:564;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14886:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27110:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18685:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15114:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15265:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25533:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24652:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14598:53;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1164:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14984:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14952:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15504:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19825:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25703:242;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25785:34:::1;25806:12;25785:11;:20;;:34;;;;:::i;:::-;25784:35;25776:77;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25864:29;25880:12;25864:11;:15;;:29;;;;:::i;:::-;;25909:28;25924:12;25909:28;;;;;;;;;;;;;;;;;;;;25703:242:::0;:::o;16754:83::-;16791:13;16824:5;;;;;;;;;;;;;;;;;16817:12;;16754:83;:::o;18838:161::-;18915:4;18932:37;18941:10;18953:7;18962:6;18932:8;:37::i;:::-;18987:4;18980:11;;18838:161;;;;:::o;15069:38::-;;;;;;;;;;;;;:::o;26415:295::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26486:18:::1;26507:9;:24;26525:4;26507:24;;;;;;;;;;;;;;;;26486:45;;26569:1;26542:9;:24;26560:4;26542:24;;;;;;;;;;;;;;;:28;;;;26604:36;26629:10;26604:9;:20;26614:9;26604:20;;;;;;;;;;;;;;;;:24;;:36;;;;:::i;:::-;26581:9;:20;26591:9;26581:20;;;;;;;;;;;;;;;:59;;;;26680:9;26656:46;;26673:4;26656:46;;;26691:10;26656:46;;;;;;;;;;;;;;;;;;991:1;26415:295:::0;:::o;17031:100::-;17084:7;17111:12;;17104:19;;17031:100;:::o;26172:235::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26298:25:::1;26271:24;;:52;;;;;;;;;;;;;;;;;;26339:60;26354:25;26381:17;26339:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26172:235:::0;:::o;23602:233::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23702:1:::1;23688:11;:15;23680:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23773:11;23758:12;:26;;;;23800:27;23815:11;23800:27;;;;;;;;;;;;;;;;;;23602:233:::0;:::o;15564:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;26718:384::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26826:1:::1;26808:20;;:6;:20;;;26804:291;;;26845:15;26863:21;26845:39;;26907:9;26899:27;;:36;26927:7;26899:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26804:291;;;;26968:15;26993:6;26986:24;;;27019:4;26986:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;26968:57;;27047:6;27040:23;;;27064:9;27075:7;27040:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;26804:291;;26718:384:::0;;:::o;19007:311::-;19107:4;19124:36;19134:6;19142:9;19153:6;19124:9;:36::i;:::-;19171:117;19180:6;19188:10;19200:87;19236:6;19200:87;;;;;;;;;;;;;;;;;:11;:19;19212:6;19200:19;;;;;;;;;;;;;;;:31;19220:10;19200:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;19171:8;:117::i;:::-;19306:4;19299:11;;19007:311;;;;;:::o;24840:205::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24951:20:::1;24929:19;;:42;;;;;;;;;;;;;;;;;;24987:50;25002:20;25024:12;24987:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24840:205:::0;:::o;15023:39::-;;;;;;;;;;;;;:::o;25053:171::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25151:15:::1;25134:14;;:32;;;;;;;;;;;;;;;;;;25182:34;25200:15;25182:34;;;;;;;;;;;;;;;;;;;;25053:171:::0;:::o;16940:83::-;16981:5;14356:1;16999:16;;16940:83;:::o;19326:216::-;19416:4;19433:79;19442:10;19454:7;19463:48;19500:10;19463:11;:23;19475:10;19463:23;;;;;;;;;;;;;;;:32;19487:7;19463:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;19433:8;:79::i;:::-;19530:4;19523:11;;19326:216;;;;:::o;17139:838::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14356:1:::1;14519:18;;14515:2;:22;14503:9;:34;17251:7;17236:12;;:22;:36;;17228:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17334:1;17314:22;;:8;:22;;;;17306:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17383:14;17400:8;:16;17417:15;17400:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17383:50;;17479:1;17448:18;:27;17467:7;17448:27;;;;;;;;;;;;;;;;:32;17444:155;;;17527:60;14586:5;17527:40;14647:4;17527:12;;:16;;:40;;;;:::i;:::-;:44;;:60;;;;:::i;:::-;17497:18;:27;17516:7;17497:27;;;;;;;;;;;;;;;:90;;;;17444:155;17657:18;:27;17676:7;17657:27;;;;;;;;;;;;;;;;17646:7;17617:17;:26;17635:7;17617:26;;;;;;;;;;;;;;;;:36;:67;;17609:110;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17745:25;17762:7;17745:12;;:16;;:25;;;;:::i;:::-;17730:12;:40;;;;17810:39;17841:7;17810:17;:26;17828:7;17810:26;;;;;;;;;;;;;;;;:30;;:39;;;;:::i;:::-;17781:17;:26;17799:7;17781:26;;;;;;;;;;;;;;;:68;;;;17882:32;17906:7;17882:9;:19;17892:8;17882:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;17860:9;:19;17870:8;17860:19;;;;;;;;;;;;;;;:54;;;;17951:8;17930:39;;17947:1;17930:39;;;17961:7;17930:39;;;;;;;;;;;;;;;;;;991:1;17139:838:::0;;:::o;25365:160::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25468:4:::1;25438:18;:27;25457:7;25438:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;25488:29;25503:7;25512:4;25488:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;25365:160:::0;:::o;20082:::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20184:5:::1;20158:14;:23;20173:7;20158:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20228:5;20205:29;;20219:7;20205:29;;;;;;;;;;;;20082:160:::0;:::o;14856:23::-;;;;;;;;;;;;;:::o;25232:125::-;25298:4;25322:18;:27;25341:7;25322:27;;;;;;;;;;;;;;;;;;;;;;;;;25315:34;;25232:125;;;:::o;15164:26::-;;;;;;;;;;;;;:::o;16610:136::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16697:41:::1;16715:4;16722:7;16731:6;16697:9;:41::i;:::-;16610:136:::0;;:::o;18383:119::-;18449:7;18476:9;:18;18486:7;18476:18;;;;;;;;;;;;;;;;18469:25;;18383:119;;;:::o;1008:148::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1115:1:::1;1078:40;;1099:6;::::0;::::1;;;;;;;;1078:40;;;;;;;;;;;;1146:1;1129:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1008:148::o:0;15199:59::-;;;;:::o;14917:28::-;;;;;;;;;;;;;:::o;25953:211::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26067:21:::1;26044:20;;:44;;;;;;;;;;;;;;;;;;26104:52;26119:21;26142:13;26104:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25953:211:::0;:::o;27250:117::-;27299:7;27326:33;27347:11;27326:20;:33::i;:::-;27319:40;;27250:117;:::o;785:87::-;831:7;858:6;;;;;;;;;;;851:13;;785:87;:::o;16845:::-;16884:13;16917:7;;;;;;;;;;;;;;;;;16910:14;;16845:87;:::o;15445:52::-;;;;;;;;;;;;;;;;;:::o;17985:390::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18086:70:::1;18110:7;18086:70;;;;;;;;;;;;;;;;;:9;:19;18096:8;18086:19;;;;;;;;;;;;;;;;:23;;:70;;;;;:::i;:::-;18064:9;:19;18074:8;18064:19;;;;;;;;;;;;;;;:92;;;;18203:46;18241:7;18203:9;:33;18213:22;;;;;;;;;;;18203:33;;;;;;;;;;;;;;;;:37;;:46;;;;:::i;:::-;18167:9;:33;18177:22;;;;;;;;;;;18167:33;;;;;;;;;;;;;;;:82;;;;18275:25;18292:7;18275:12;;:16;;:25;;;;:::i;:::-;18260:12;:40;;;;18335:22;;;;;;;;;;;18316:51;;18325:8;18316:51;;;18359:7;18316:51;;;;;;;;;;;;;;;;;;17985:390:::0;;:::o;19550:267::-;19645:4;19662:125;19671:10;19683:7;19692:94;19729:15;19692:94;;;;;;;;;;;;;;;;;:11;:23;19704:10;19692:23;;;;;;;;;;;;;;;:32;19716:7;19692:32;;;;;;;;;;;;;;;;:36;;:94;;;;;:::i;:::-;19662:8;:125::i;:::-;19805:4;19798:11;;19550:267;;;;:::o;18510:167::-;18590:4;18607:40;18617:10;18629:9;18640:6;18607:9;:40::i;:::-;18665:4;18658:11;;18510:167;;;;:::o;24080:564::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24234:2:::1;24219:11;:17;;;;24211:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24287:2;24271:12;:18;;;;24263:42;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24344:2;24324:16;:22;;;;24316:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24397:2;24381:12;:18;;;;24373:42;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24435:11;24426:6;;:20;;;;;;;;;;;;;;;;;;24467:12;24457:7;;:22;;;;;;;;;;;;;;;;;;24504:16;24490:11;;:30;;;;;;;;;;;;;;;;;;24541:12;24531:7;::::0;:22:::1;;;;;;;;;;;;;;;;;;24569:67;24578:11;24591:12;24605:16;24623:12;24569:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24080:564:::0;;;;:::o;14886:24::-;;;;;;;;;;;;;:::o;27110:130::-;27166:4;27190:42;27213:11;27226:5;27190:22;:42::i;:::-;27183:49;;27110:130;;;:::o;18685:145::-;18768:7;18795:11;:18;18807:5;18795:18;;;;;;;;;;;;;;;:27;18814:7;18795:27;;;;;;;;;;;;;;;;18788:34;;18685:145;;;;:::o;15114:43::-;;;;;;;;;;;;;:::o;15265:91::-;;;;;;;;;;;;;:::o;25533:160::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25634:5:::1;25604:18;:27;25623:7;25604:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25655:30;25670:7;25679:5;25655:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;25533:160:::0;:::o;24652:180::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24747:15:::1;24731:13;;:31;;;;;;;;;;;;;;;;;;24778:46;24793:15;24810:13;24778:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24652:180:::0;:::o;14598:53::-;14647:4;14598:53;:::o;1164:244::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1273:1:::1;1253:22;;:8;:22;;;;1245:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:8;1334:38;;1355:6;::::0;::::1;;;;;;;;1334:38;;;;;;;;;;;;1392:8;1383:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1164:244:::0;:::o;14984:32::-;;;;;;;;;;;;;:::o;14952:25::-;;;;;;;;;;;;:::o;15504:53::-;;;;;;;;;;;;;;;;;:::o;19825:249::-;931:12;:10;:12::i;:::-;920:23;;:7;:5;:7::i;:::-;:23;;;912:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19914:9:::1;19909:158;19929:9;;:16;;19925:1;:20;19909:158;;;19998:4;19967:14;:28;19982:9;;19992:1;19982:12;;;;;;;;;;;;;;;19967:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20050:4;20022:33;;20036:9;;20046:1;20036:12;;;;;;;;;;;;;;;20022:33;;;;;;;;;;;;19947:3;;;;;19909:158;;;;19825:249:::0;;:::o;2924:153::-;2982:7;3014:1;3010;:5;3002:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3068:1;3064;:5;;;;;;3057:12;;2924:153;;;;:::o;93:106::-;146:15;181:10;174:17;;93:106;:::o;6480:167::-;6560:4;6584:55;6594:3;:10;;6630:5;6614:23;;6606:32;;6584:9;:55::i;:::-;6577:62;;6480:167;;;;:::o;6154:152::-;6224:4;6248:50;6253:3;:10;;6289:5;6273:23;;6265:32;;6248:4;:50::i;:::-;6241:57;;6154:152;;;;:::o;20250:337::-;20360:1;20343:19;;:5;:19;;;;20335:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20441:1;20422:21;;:7;:21;;;;20414:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20525:6;20495:11;:18;20507:5;20495:18;;;;;;;;;;;;;;;:27;20514:7;20495:27;;;;;;;;;;;;;;;:36;;;;20563:7;20547:32;;20556:5;20547:32;;;20572:6;20547:32;;;;;;;;;;;;;;;;;;20250:337;;;:::o;2343:179::-;2401:7;2421:9;2437:1;2433;:5;2421:17;;2462:1;2457;:6;;2449:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:1;2506:8;;;2343:179;;;;:::o;20595:787::-;20733:1;20717:18;;:4;:18;;;;20709:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20810:1;20796:16;;:2;:16;;;;20788:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20880:1;20871:6;:10;20863:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20949:14;:20;20964:4;20949:20;;;;;;;;;;;;;;;;;;;;;;;;;20948:21;:44;;;;;20974:14;:18;20989:2;20974:18;;;;;;;;;;;;;;;;;;;;;;;;;20973:19;20948:44;20940:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21048:7;:5;:7::i;:::-;21040:15;;:4;:15;;;;:32;;;;;21065:7;:5;:7::i;:::-;21059:13;;:2;:13;;;;21040:32;21037:125;;;21105:12;;21095:6;:22;;21087:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21037:125;21175:12;21190:4;21175:19;;21210:14;;;;;;;;;;;:70;;;;;21229:18;:24;21248:4;21229:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;21257:18;:22;21276:2;21257:22;;;;;;;;;;;;;;;;;;;;;;;;;21229:50;21210:70;21207:117;;;21307:5;21297:15;;21207:117;21336:38;21351:4;21356:2;21359:6;21366:7;21336:14;:38::i;:::-;20595:787;;;;:::o;3244:166::-;3330:7;3363:1;3358;:6;;3366:12;3350:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:1;3397;:5;3390:12;;3244:166;;;;;:::o;2696:220::-;2754:7;2783:1;2778;:6;2774:20;;;2793:1;2786:8;;;;2774:20;2805:9;2821:1;2817;:5;2805:17;;2850:1;2845;2841;:5;;;;;;:10;2833:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:1;2900:8;;;2696:220;;;;;:::o;6655:117::-;6718:7;6745:19;6753:3;:10;;6745:7;:19::i;:::-;6738:26;;6655:117;;;:::o;2530:158::-;2588:7;2621:1;2616;:6;;2608:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2679:1;2675;:5;2668:12;;2530:158;;;;:::o;4873:129::-;4946:4;4993:1;4970:3;:12;;:19;4983:5;4970:19;;;;;;;;;;;;:24;;4963:31;;4873:129;;;;:::o;3895:291::-;3958:4;3980:21;3990:3;3995:5;3980:9;:21::i;:::-;3975:204;;4018:3;:11;;4035:5;4018:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4078:3;:11;;:18;;;;4056:3;:12;;:19;4069:5;4056:19;;;;;;;;;;;:40;;;;4118:4;4111:11;;;;3975:204;4162:5;4155:12;;3895:291;;;;;:::o;21390:616::-;21501:7;21497:502;;21525:43;21542:6;21550:9;21561:6;21525:16;:43::i;:::-;21497:502;;;21605:20;;;;;;;;;;;:55;;;;;21629:31;21650:9;21629:11;:20;;:31;;;;:::i;:::-;21605:55;21601:387;;;21680:50;21695:6;21703:9;21714:6;21722:7;;;;;;;;;;;21680:14;:50::i;:::-;21601:387;;;21756:19;;;;;;;;;;;:51;;;;;21779:28;21800:6;21779:11;:20;;:28;;;;:::i;:::-;21756:51;21752:236;;;21828:49;21843:6;21851:9;21862:6;21870;;;;;;;;;;;21828:14;:49::i;:::-;21752:236;;;21918:54;21933:6;21941:9;21952:6;21960:11;;;;;;;;;;;21918:14;:54::i;:::-;21752:236;21601:387;21497:502;21390:616;;;;:::o;5010:109::-;5066:7;5093:3;:11;;:18;;;;5086:25;;5010:109;;;:::o;23282:312::-;23398:71;23420:6;23398:71;;;;;;;;;;;;;;;;;:9;:17;23408:6;23398:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;23378:9;:17;23388:6;23378:17;;;;;;;;;;;;;;;:91;;;;23503:32;23528:6;23503:9;:20;23513:9;23503:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23480:9;:20;23490:9;23480:20;;;;;;;;;;;;;;;:55;;;;23568:9;23551:35;;23560:6;23551:35;;;23579:6;23551:35;;;;;;;;;;;;;;;;;;23282:312;;;:::o;22014:1260::-;22148:6;22127:9;:17;22137:6;22127:17;;;;;;;;;;;;;;;;:27;;22119:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22206:23;22230:49;22244:6;22260:3;22252:12;;22274:3;22230:13;:49::i;:::-;22206:73;;22290:19;22310:27;22321:15;22310:6;:10;;:27;;;;:::i;:::-;22290:47;;22352:13;;;;;;;;;;;22348:734;;;22382:22;22405:53;22419:6;22435:3;22427:12;;22449:7;;;;;;;;;;22441:16;;22405:13;:53::i;:::-;22382:76;;22498:65;22548:14;22498:45;22527:15;22498:9;:24;22516:4;22498:24;;;;;;;;;;;;;;;;:28;;:45;;;;:::i;:::-;:49;;:65;;;;:::i;:::-;22473:9;:24;22491:4;22473:24;;;;;;;;;;;;;;;:90;;;;22593:32;22610:14;22593:12;;:16;;:32;;;;:::i;:::-;22578:12;:47;;;;22676:53;22714:14;22676:9;:33;22686:22;;;;;;;;;;;22676:33;;;;;;;;;;;;;;;;:37;;:53;;;;:::i;:::-;22640:9;:33;22650:22;;;;;;;;;;;22640:33;;;;;;;;;;;;;;;:89;;;;22766:22;;;;;;;;;;;22749:56;;22758:6;22749:56;;;22790:14;22749:56;;;;;;;;;;;;;;;;;;22850:4;22825:70;;22834:6;22825:70;;;22858:35;22878:14;22858:15;:19;;:35;;;;:::i;:::-;22825:70;;;;;;;;;;;;;;;;;;22348:734;;;;22953:47;22983:15;22953:9;:24;22971:4;22953:24;;;;;;;;;;;;;;;;:28;;:47;;;;:::i;:::-;22928:9;:24;22946:4;22928:24;;;;;;;;;;;;;;;:72;;;;23045:4;23020:50;;23029:6;23020:50;;;23053:15;23020:50;;;;;;;;;;;;;;;;;;22348:734;23115:37;23140:11;23115:9;:20;23125:9;23115:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;23092:9;:20;23102:9;23092:20;;;;;;;;;;;;;;;:60;;;;23181:29;23203:6;23181:9;:17;23191:6;23181:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;23163:9;:17;23173:6;23163:17;;;;;;;;;;;;;;;:47;;;;23243:9;23226:40;;23235:6;23226:40;;;23254:11;23226:40;;;;;;;;;;;;;;;;;;22014:1260;;;;;;:::o;23892:180::-;23986:7;24013:51;14586:5;24013:31;24033:10;24013:15;24024:3;24013:6;:10;;:15;;;;:::i;:::-;:19;;:31;;;;:::i;:::-;:35;;:51;;;;:::i;:::-;24006:58;;23892:180;;;;;:::o
Swarm Source
ipfs://f8c02d46efea2af4c8bb7782eeee868bafb16f6add12f44a04d274391fdd8e87