Overview
Max Total Supply
6,294 BFHS
Holders
763
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 BFHSLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BFHSphere
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-01-21 */ pragma solidity 0.5.12; // Copyright (c) 2018-2020 double jump.tokyo inc. interface IApprovalProxy { function setApprovalForAll(address _owner, address _spender, bool _approved) external; function isApprovedForAll(address _owner, address _spender, bool _original) external view returns (bool); } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } function toHex(address account) internal pure returns (string memory) { bytes32 value = bytes32(uint256(account)); bytes memory alphabet = "0123456789abcdef"; bytes memory str = new bytes(42); str[0] = '0'; str[1] = 'x'; for (uint i = 0; i < 20; i++) { str[2+i*2] = alphabet[uint(uint8(value[i + 12] >> 4))]; str[3+i*2] = alphabet[uint(uint8(value[i + 12] & 0x0f))]; } return string(str); } } library Roles { struct Role { mapping (address => bool) bearer; } function add(Role storage role, address account) internal { require(!has(role, account), "role already has the account"); role.bearer[account] = true; } function remove(Role storage role, address account) internal { require(has(role, account), "role dosen't have the account"); role.bearer[account] = false; } function has(Role storage role, address account) internal view returns (bool) { return role.bearer[account]; } } library Uint256 { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(a >= b, "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, "multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "division by 0"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "modulo by 0"); return a % b; } function toString(uint256 a) internal pure returns (string memory) { bytes32 retBytes32; uint256 len = 0; if (a == 0) { retBytes32 = "0"; len++; } else { uint256 value = a; while (value > 0) { retBytes32 = bytes32(uint256(retBytes32) / (2 ** 8)); retBytes32 |= bytes32(((value % 10) + 48) * 2 ** (8 * 31)); value /= 10; len++; } } bytes memory ret = new bytes(len); uint256 i; for (i = 0; i < len; i++) { ret[i] = retBytes32[i]; } return string(ret); } } interface IERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient /// after a `transfer`. This function MAY throw to revert and reject the /// transfer. Return of other than the magic value MUST result in the /// transaction being reverted. /// Note: the contract address is always the message sender. /// @param _operator The address which called `safeTransferFrom` function /// @param _from The address which previously owned the token /// @param _tokenId The NFT identifier which is being transferred /// @param _data Additional data with no specified format /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` /// unless throwing function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes calldata _data ) external returns(bytes4); } interface IERC721Metadata /* is ERC721 */ { /// @notice A descriptive name for a collection of NFTs in this contract function name() external view returns (string memory _name); /// @notice An abbreviated name for NFTs in this contract function symbol() external view returns (string memory _symbol); /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC /// 3986. The URI may point to a JSON file that conforms to the "ERC721 /// Metadata JSON Schema". function tokenURI(uint256 _tokenId) external view returns (string memory); } interface IERC165 { function supportsInterface(bytes4 interfaceID) external view returns (bool); } /// @title ERC-165 Standard Interface Detection /// @dev See https://eips.ethereum.org/EIPS/eip-165 contract ERC165 is IERC165 { bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; mapping(bytes4 => bool) private _supportedInterfaces; constructor () internal { _registerInterface(_INTERFACE_ID_ERC165); } function supportsInterface(bytes4 interfaceId) external view returns (bool) { return _supportedInterfaces[interfaceId]; } function _registerInterface(bytes4 interfaceId) internal { require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); _supportedInterfaces[interfaceId] = true; } } interface IERC721 /* is ERC165 */ { event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable; function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; function transferFrom(address _from, address _to, uint256 _tokenId) external payable; function approve(address _approved, uint256 _tokenId) external payable; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll(address _owner, address _operator) external view returns (bool); } library Uint32 { function add(uint32 a, uint32 b) internal pure returns (uint32) { uint32 c = a + b; require(c >= a, "addition overflow"); return c; } function sub(uint32 a, uint32 b) internal pure returns (uint32) { require(a >= b, "subtraction overflow"); return a - b; } function mul(uint32 a, uint32 b) internal pure returns (uint32) { if (a == 0) { return 0; } uint32 c = a * b; require(c / a == b, "multiplication overflow"); return c; } function div(uint32 a, uint32 b) internal pure returns (uint32) { require(b != 0, "division by 0"); return a / b; } function mod(uint32 a, uint32 b) internal pure returns (uint32) { require(b != 0, "modulo by 0"); return a % b; } } library String { function compare(string memory _a, string memory _b) public pure returns (bool) { return (keccak256(abi.encodePacked(_a)) == keccak256(abi.encodePacked(_b))); } function cut(string memory _s, uint256 _from, uint256 _range) public pure returns (string memory) { bytes memory s = bytes(_s); require(s.length >= _from + _range, "_s length must be longer than _from + _range"); bytes memory ret = new bytes(_range); for (uint256 i = 0; i < _range; i++) { ret[i] = s[_from+i]; } return string(ret); } function concat(string memory _a, string memory _b) internal pure returns (string memory) { return string(abi.encodePacked(_a, _b)); } } contract ERC721 is IERC721, ERC165 { using Uint256 for uint256; using Address for address; bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; bytes4 private constant _InterfaceId_ERC721 = 0x80ac58cd; mapping (uint256 => address) private _tokenOwner; mapping (address => uint256) private _balance; mapping (uint256 => address) private _tokenApproved; mapping (address => mapping (address => bool)) private _operatorApprovals; constructor () public { _registerInterface(_InterfaceId_ERC721); } function balanceOf(address _owner) public view returns (uint256) { return _balance[_owner]; } function ownerOf(uint256 _tokenId) public view returns (address) { require(_exist(_tokenId), "`_tokenId` is not a valid NFT."); return _tokenOwner[_tokenId]; } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) public payable { require(_data.length == 0, "data is not implemented"); safeTransferFrom(_from, _to, _tokenId); } function safeTransferFrom(address _from, address _to, uint256 _tokenId) public payable { require(_checkOnERC721Received(_from, _to, _tokenId, ""), "`_to` is a smart contract and onERC721Received is invalid"); transferFrom(_from, _to, _tokenId); } function transferFrom(address _from, address _to, uint256 _tokenId) public payable { require(_transferable(msg.sender, _tokenId), "Unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT."); // solhint-disable-line require(ownerOf(_tokenId) == _from, "`_from` is not the current owner."); require(_to != address(0), "`_to` is the zero address."); require(_exist(_tokenId), "`_tokenId` is not a valid NFT."); _transfer(_from, _to, _tokenId); } function approve(address _approved, uint256 _tokenId) public payable { address owner = ownerOf(_tokenId); require(msg.sender == owner || isApprovedForAll(owner, msg.sender), "Unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner."); _tokenApproved[_tokenId] = _approved; emit Approval(msg.sender, _approved, _tokenId); } function setApprovalForAll(address _operator, bool _approved) public { _setApprovalForAll(msg.sender, _operator, _approved); } function _setApprovalForAll(address _owner, address _operator, bool _approved) internal { _operatorApprovals[_owner][_operator] = _approved; emit ApprovalForAll(_owner, _operator, _approved); } function getApproved(uint256 _tokenId) public view returns (address) { require(_exist(_tokenId), "`_tokenId` is not a valid NFT."); return _tokenApproved[_tokenId]; } function isApprovedForAll(address _owner, address _operator) public view returns (bool) { return _isApprovedForAll(_owner, _operator); } function _isApprovedForAll(address _owner, address _operator) internal view returns (bool) { return _operatorApprovals[_owner][_operator]; } function _transferable(address _spender, uint256 _tokenId) internal view returns (bool){ address owner = ownerOf(_tokenId); return (_spender == owner || getApproved(_tokenId) == _spender || isApprovedForAll(owner, _spender)); } function _transfer(address _from, address _to, uint256 _tokenId) internal { _clearApproval(_tokenId); _tokenOwner[_tokenId] = _to; _balance[_from] = _balance[_from].sub(1); _balance[_to] = _balance[_to].add(1); emit Transfer(_from, _to, _tokenId); } function _mint(address _to, uint256 _tokenId) internal { require(!_exist(_tokenId), "mint token already exists"); _tokenOwner[_tokenId] = _to; _balance[_to] = _balance[_to].add(1); emit Transfer(address(0), _to, _tokenId); } function _burn(uint256 _tokenId) internal { require(_exist(_tokenId), "burn token does not already exists"); address owner = ownerOf(_tokenId); _clearApproval(_tokenId); _tokenOwner[_tokenId] = address(0); _balance[owner] = _balance[owner].sub(1); emit Transfer(owner, address(0), _tokenId); } function _exist(uint256 _tokenId) internal view returns (bool) { address owner = _tokenOwner[_tokenId]; return owner != address(0); } function _checkOnERC721Received( address _from, address _to, uint256 _tokenId, bytes memory _data ) internal returns (bool) { if (!_to.isContract()) { return true; } bytes4 retval = IERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); return (retval == _ERC721_RECEIVED); } function _clearApproval(uint256 tokenId) internal { if (_tokenApproved[tokenId] != address(0)) { _tokenApproved[tokenId] = address(0); } } } interface IERC173 /* is ERC165 */ { /// @dev This emits when ownership of a contract changes. event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /// @notice Get the address of the owner /// @return The address of the owner. function owner() external view returns (address); /// @notice Set the address of the new owner of the contract /// @param _newOwner The address of the new owner of the contract function transferOwnership(address _newOwner) external; } contract ERC173 is IERC173, ERC165 { address private _owner; constructor() public { _registerInterface(0x7f5828d0); _transferOwnership(msg.sender); } modifier onlyOwner() { require(msg.sender == owner(), "Must be owner"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address _newOwner) public onlyOwner() { _transferOwnership(_newOwner); } function _transferOwnership(address _newOwner) internal { address previousOwner = owner(); _owner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } } contract Operatable is ERC173 { using Roles for Roles.Role; event OperatorAdded(address indexed account); event OperatorRemoved(address indexed account); event Paused(address account); event Unpaused(address account); bool private _paused; Roles.Role private operators; constructor() public { operators.add(msg.sender); _paused = false; } modifier onlyOperator() { require(isOperator(msg.sender), "Must be operator"); _; } modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } function transferOwnership(address _newOwner) public onlyOperator() { _transferOwnership(_newOwner); } function isOperator(address account) public view returns (bool) { return operators.has(account); } function addOperator(address account) public onlyOperator() { operators.add(account); emit OperatorAdded(account); } function removeOperator(address account) public onlyOperator() { operators.remove(account); emit OperatorRemoved(account); } function paused() public view returns (bool) { return _paused; } function pause() public onlyOperator() whenNotPaused() { _paused = true; emit Paused(msg.sender); } function unpause() public onlyOperator() whenPaused() { _paused = false; emit Unpaused(msg.sender); } function withdrawEther() public onlyOperator() { msg.sender.transfer(address(this).balance); } } interface IERC721Mintable { event MinterAdded(address indexed account); event MinterRemoved(address indexed account); function exist(uint256 _tokenId) external view returns (bool); function mint(address _to, uint256 _tokenId) external; function isMinter(address account) external view returns (bool); function addMinter(address account) external; function removeMinter(address account) external; } contract ERC721Mintable is ERC721, IERC721Mintable, Operatable { using Roles for Roles.Role; Roles.Role private minters; constructor() public { addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender), "Must be minter"); _; } function isMinter(address account) public view returns (bool) { return minters.has(account); } function addMinter(address account) public onlyOperator() { minters.add(account); emit MinterAdded(account); } function removeMinter(address account) public onlyOperator() { minters.remove(account); emit MinterRemoved(account); } function exist(uint256 tokenId) public view returns (bool) { return _exist(tokenId); } function mint(address to, uint256 tokenId) public onlyMinter() { _mint(to, tokenId); } } contract ERC721Metadata is IERC721Metadata, ERC721, Operatable { using Uint256 for uint256; using String for string; event UpdateTokenURIPrefix( string tokenUriPrefix ); // Metadata string private __name; string private __symbol; string private __tokenUriPrefix; constructor(string memory _name, string memory _symbol, string memory _tokenUriPrefix) public { // ERC721Metadata __name = _name; __symbol = _symbol; setTokenURIPrefix(_tokenUriPrefix); } function setTokenURIPrefix(string memory _tokenUriPrefix) public onlyOperator() { __tokenUriPrefix = _tokenUriPrefix; emit UpdateTokenURIPrefix(_tokenUriPrefix); } function name() public view returns (string memory) { return __name; } function symbol() public view returns (string memory) { return __symbol; } function tokenURI(uint256 _tokenId) public view returns (string memory) { return __tokenUriPrefix.concat(_tokenId.toString()); } } contract ERC721TokenPausable is ERC721,Operatable { using Roles for Roles.Role; Roles.Role private tokenPauser; event TokenPauserAdded(address indexed account); event TokenPauserRemoved(address indexed account); event TokenPaused(uint256 indexed tokenId); event TokenUnpaused(uint256 indexed tokenId); mapping (uint256 => bool) private _tokenPaused; constructor() public { tokenPauser.add(msg.sender); } modifier onlyTokenPauser() { require(isTokenPauser(msg.sender), "Only token pauser can call this method"); _; } modifier whenNotTokenPaused(uint256 _tokenId) { require(!isTokenPaused(_tokenId), "TokenPausable: paused"); _; } modifier whenTokenPaused(uint256 _tokenId) { require(isTokenPaused(_tokenId), "TokenPausable: not paused"); _; } function pauseToken(uint256 _tokenId) public onlyTokenPauser() { require(!isTokenPaused(_tokenId), "Token is already paused"); _tokenPaused[_tokenId] = true; emit TokenPaused(_tokenId); } function unpauseToken(uint256 _tokenId) public onlyTokenPauser() { require(isTokenPaused(_tokenId), "Token is not paused"); _tokenPaused[_tokenId] = false; emit TokenUnpaused(_tokenId); } function isTokenPaused(uint256 _tokenId) public view returns (bool) { return _tokenPaused[_tokenId]; } function isTokenPauser(address account) public view returns (bool) { return tokenPauser.has(account); } function addTokenPauser(address account) public onlyOperator() { tokenPauser.add(account); emit TokenPauserAdded(account); } function removeTokenPauser(address account) public onlyOperator() { tokenPauser.remove(account); emit TokenPauserRemoved(account); } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) public payable whenNotPaused() whenNotTokenPaused(_tokenId) { super.safeTransferFrom(_from, _to, _tokenId, _data); } function safeTransferFrom(address _from, address _to, uint256 _tokenId) public payable whenNotPaused() whenNotTokenPaused(_tokenId) { super.safeTransferFrom(_from, _to, _tokenId); } function transferFrom(address _from, address _to, uint256 _tokenId) public payable whenNotPaused() whenNotTokenPaused(_tokenId) { super.transferFrom(_from, _to, _tokenId); } } interface IERC721CappedSupply /* IERC721Mintable, IERC721 */ { event SetUnitCap(uint32 _assetType, uint32 _unitCap); event SetTypeCap(uint256 _typeCap); function totalSupply() external view returns (uint256); function getTypeOffset() external view returns (uint256); function getTypeCap() external view returns (uint256); function setTypeCap(uint32 _newTypeCap) external; function getTypeCount() external view returns (uint256); function existingType(uint32 _assetType) external view returns (bool); function getUnitCap(uint32 _assetType) external view returns (uint32); function setUnitCap(uint32 _assetType, uint32 _newUnitCap) external; function mint(address _to, uint256 _tokenId) external; } /// @title ERC-721 Capped Supply /// @author double jump.tokyo inc. /// @dev see https://medium.com/@makzent/ca1008866871 contract ERC721CappedSupply is IERC721CappedSupply, ERC721Mintable { using Uint256 for uint256; using Uint32 for uint32; uint32 private assetTypeOffset; mapping(uint32 => uint32) private unitCap; mapping(uint32 => uint32) private unitCount; mapping(uint32 => bool) private unitCapIsSet; uint256 private assetTypeCap = 2**256-1; uint256 private assetTypeCount = 0; uint256 private totalCount = 0; constructor(uint32 _assetTypeOffset) public { setTypeOffset(_assetTypeOffset); } function isValidOffset(uint32 _offset) private pure returns (bool) { for (uint32 i = _offset; i > 0; i = i.div(10)) { if (i == 10) { return true; } if (i.mod(10) != 0) { return false; } } return false; } function totalSupply() public view returns (uint256) { return totalCount; } function setTypeOffset(uint32 _assetTypeOffset) private { require(isValidOffset(_assetTypeOffset), "Offset is invalid"); assetTypeCap = assetTypeCap / _assetTypeOffset; assetTypeOffset = _assetTypeOffset; } function getTypeOffset() public view returns (uint256) { return assetTypeOffset; } function setTypeCap(uint32 _newTypeCap) public onlyMinter() { require(_newTypeCap < assetTypeCap, "New type cap cannot be less than existing type cap"); require(_newTypeCap >= assetTypeCount, "New type cap must be more than current type count"); assetTypeCap = _newTypeCap; emit SetTypeCap(_newTypeCap); } function getTypeCap() public view returns (uint256) { return assetTypeCap; } function getTypeCount() public view returns (uint256) { return assetTypeCount; } function existingType(uint32 _assetType) public view returns (bool) { return unitCapIsSet[_assetType]; } function setUnitCap(uint32 _assetType, uint32 _newUnitCap) public onlyMinter() { require(_assetType != 0, "Asset Type must not be 0"); require(_newUnitCap < assetTypeOffset, "New unit cap must be less than asset type offset"); if (!existingType(_assetType)) { unitCapIsSet[_assetType] = true; assetTypeCount = assetTypeCount.add(1); require(assetTypeCount <= assetTypeCap, "Asset type cap is exceeded"); } else { require(_newUnitCap < getUnitCap(_assetType), "New unit cap must be less than previous unit cap"); require(_newUnitCap >= getUnitCount(_assetType), "New unit cap must be more than current unit count"); } unitCap[_assetType] = _newUnitCap; emit SetUnitCap(_assetType, _newUnitCap); } function getUnitCap(uint32 _assetType) public view returns (uint32) { require(existingType(_assetType), "Asset type does not exist"); return unitCap[_assetType]; } function getUnitCount(uint32 _assetType) public view returns (uint32) { return unitCount[_assetType]; } function mint(address _to, uint256 _tokenId) public onlyMinter() { require(_tokenId.mod(assetTypeOffset) != 0, "Index must not be 0"); uint32 assetType = uint32(_tokenId.div(assetTypeOffset)); unitCount[assetType] = unitCount[assetType].add(1); totalCount = totalCount.add(1); require(unitCount[assetType] <= getUnitCap(assetType), "Asset unit cap is exceed"); super.mint(_to, _tokenId); } } contract BFHSphere is ERC721TokenPausable, ERC721CappedSupply(10000), ERC721Metadata("BFH:Sphere", "BFHS", "https://bravefrontierheroes.com/metadata/spheres/") { event UpdateApprovalProxy(address _newProxyContract); IApprovalProxy public approvalProxy; constructor(address _approvalProxy) public { setApprovalProxy(_approvalProxy); } function setApprovalProxy(address _new) public onlyOperator() { approvalProxy = IApprovalProxy(_new); emit UpdateApprovalProxy(_new); } function setApprovalForAll(address _spender, bool _approved) public { if (address(approvalProxy) != address(0x0) && _spender.isContract()) { approvalProxy.setApprovalForAll(msg.sender, _spender, _approved); } super.setApprovalForAll(_spender, _approved); } function isApprovedForAll(address _owner, address _spender) public view returns (bool) { bool original = super.isApprovedForAll(_owner, _spender); if (address(approvalProxy) != address(0x0)) { return approvalProxy.isApprovedForAll(_owner, _spender, original); } return original; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_approvalProxy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OperatorRemoved","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_typeCap","type":"uint256"}],"name":"SetTypeCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"_assetType","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"_unitCap","type":"uint32"}],"name":"SetUnitCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TokenPauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"TokenPauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newProxyContract","type":"address"}],"name":"UpdateApprovalProxy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"tokenUriPrefix","type":"string"}],"name":"UpdateTokenURIPrefix","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTokenPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"approvalProxy","outputs":[{"internalType":"contract IApprovalProxy","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"}],"name":"existingType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTypeCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTypeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTypeOffset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"}],"name":"getUnitCap","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"}],"name":"getUnitCount","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"isTokenPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTokenPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"pauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeTokenPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setApprovalProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_tokenUriPrefix","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_newTypeCap","type":"uint32"}],"name":"setTypeCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_assetType","type":"uint32"},{"internalType":"uint32","name":"_newUnitCap","type":"uint32"}],"name":"setUnitCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unpauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600019600e556000600f5560006010553480156200002157600080fd5b5060405162003cd938038062003cd9833981810160405260208110156200004757600080fd5b5051604080518082018252600a81527f4246483a5370686572650000000000000000000000000000000000000000000060208281019190915282518084018452600481527f424648530000000000000000000000000000000000000000000000000000000081830152835160608101909452603180855292939092909162003ca890830139612710620001037f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b036200024416565b620001377f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b036200024416565b6200016b7f7f5828d0000000000000000000000000000000000000000000000000000000006001600160e01b036200024416565b6200017f336001600160e01b036200031316565b6200019a3360066200037c60201b620027131790919060201c565b6005805460ff60a01b19169055620001c06007336200037c602090811b6200271317901c565b620001d4336001600160e01b036200042316565b620001e8816001600160e01b03620004f516565b508251620001fe906011906020860190620009c0565b50815162000214906012906020850190620009c0565b5062000229816001600160e01b03620005a716565b5050506200023d81620006dc60201b60201c565b5062000a62565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620002d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b6000620003286001600160e01b03620007b016565b600580546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200039182826001600160e01b03620007c016565b15620003fe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b62000437336001600160e01b03620007df16565b620004a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d757374206265206f70657261746f7200000000000000000000000000000000604482015290519081900360640190fd5b620004be8160096200037c60201b620027131790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b62000509816001600160e01b036200080416565b6200057557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f666673657420697320696e76616c6964000000000000000000000000000000604482015290519081900360640190fd5b8063ffffffff16600e54816200058757fe5b04600e55600a805463ffffffff191663ffffffff92909216919091179055565b620005bb336001600160e01b03620007df16565b6200062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d757374206265206f70657261746f7200000000000000000000000000000000604482015290519081900360640190fd5b80516200063c906013906020840190620009c0565b507fd5e477fc51908e22673125c3b4666c4a72f49feb8665fd3875e224a58ca9659a816040518080602001828103825283818151815260200191508051906020019080838360005b838110156200069e57818101518382015260200162000684565b50505050905090810190601f168015620006cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b620006f0336001600160e01b03620007df16565b6200075c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d757374206265206f70657261746f7200000000000000000000000000000000604482015290519081900360640190fd5b601480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f12be4820d03362d1f48434d870b2fc1549b3a3d16d891eeaac7c3073f3ded8b79181900360200190a150565b6005546001600160a01b03165b90565b6001600160a01b03166000908152602091909152604090205460ff1690565b6000620007fc826006620007c060201b620026f41790919060201c565b90505b919050565b6000815b63ffffffff81161562000891578063ffffffff16600a141562000830576001915050620007ff565b62000851600a8263ffffffff166200089a60201b62002f0d1790919060201c565b63ffffffff161562000868576000915050620007ff565b62000889600a8263ffffffff166200092d60201b62002f6a1790919060201c565b905062000808565b50600092915050565b600063ffffffff82166200090f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6d6f64756c6f2062792030000000000000000000000000000000000000000000604482015290519081900360640190fd5b8163ffffffff168363ffffffff16816200092557fe5b069392505050565b600063ffffffff8216620009a257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6469766973696f6e206279203000000000000000000000000000000000000000604482015290519081900360640190fd5b8163ffffffff168363ffffffff1681620009b857fe5b049392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a0357805160ff191683800117855562000a33565b8280016001018555821562000a33579182015b8281111562000a3357825182559160200191906001019062000a16565b5062000a4192915062000a45565b5090565b620007bd91905b8082111562000a41576000815560010162000a4c565b6132368062000a726000396000f3fe6080604052600436106102725760003560e01c8063776ab6341161014f578063ac8a584a116100c1578063ca1728fd1161007a578063ca1728fd14610a8e578063d644736814610ac6578063e985e9c514610af0578063ed841bf114610b2b578063f2fde38b14610b5e578063fbd395f814610b9157610272565b8063ac8a584a146108f3578063b88d4fde14610926578063b97d7895146109ec578063c000582714610a1c578063c2508c4614610a31578063c87b56dd14610a6457610272565b8063983b2d5611610113578063983b2d56146107395780639870d7fe1461076c57806399e0dd7c1461079f5780639bb5c9c314610852578063a22cb46514610885578063aa271e1a146108c057610272565b8063776ab634146106bb5780637d02b1a3146106e55780638456cb59146106fa5780638da5cb5b1461070f57806395d89b411461072457610272565b80634dd09f33116101e85780636352211e116101ac5780636352211e146105b35780636d70f7ae146105dd57806370a08231146106105780637362377b14610643578063739f66871461065857806374db07d81461068857610272565b80634dd09f33146104e65780634ebbc92a146104fb578063532efe60146105255780635c975abb1461056e57806362977e2c1461058357610272565b806323b872dd1161023a57806323b872dd146103e45780632cff5b391461041a5780633092afd51461042f5780633f4ba83a1461046257806340c10f191461047757806342842e0e146104b057610272565b806301ffc9a71461027757806306fdde03146102bf578063081812fc14610349578063095ea7b31461038f57806318160ddd146103bd575b600080fd5b34801561028357600080fd5b506102ab6004803603602081101561029a57600080fd5b50356001600160e01b031916610bbb565b604080519115158252519081900360200190f35b3480156102cb57600080fd5b506102d4610bda565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561030e5781810151838201526020016102f6565b50505050905090810190601f16801561033b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035557600080fd5b506103736004803603602081101561036c57600080fd5b5035610c71565b604080516001600160a01b039092168252519081900360200190f35b6103bb600480360360408110156103a557600080fd5b506001600160a01b038135169060200135610ce9565b005b3480156103c957600080fd5b506103d2610da7565b60408051918252519081900360200190f35b6103bb600480360360608110156103fa57600080fd5b506001600160a01b03813581169160208101359091169060400135610dad565b34801561042657600080fd5b506103d2610e64565b34801561043b57600080fd5b506103bb6004803603602081101561045257600080fd5b50356001600160a01b0316610e6a565b34801561046e57600080fd5b506103bb610eff565b34801561048357600080fd5b506103bb6004803603604081101561049a57600080fd5b506001600160a01b038135169060200135610fe3565b6103bb600480360360608110156104c657600080fd5b506001600160a01b03813581169160208101359091169060400135611195565b3480156104f257600080fd5b50610373611246565b34801561050757600080fd5b506102ab6004803603602081101561051e57600080fd5b5035611255565b34801561053157600080fd5b506105556004803603602081101561054857600080fd5b503563ffffffff16611266565b6040805163ffffffff9092168252519081900360200190f35b34801561057a57600080fd5b506102ab611281565b34801561058f57600080fd5b506103bb600480360360208110156105a657600080fd5b503563ffffffff16611291565b3480156105bf57600080fd5b50610373600480360360208110156105d657600080fd5b50356113aa565b3480156105e957600080fd5b506102ab6004803603602081101561060057600080fd5b50356001600160a01b0316611422565b34801561061c57600080fd5b506103d26004803603602081101561063357600080fd5b50356001600160a01b0316611435565b34801561064f57600080fd5b506103bb611450565b34801561066457600080fd5b506105556004803603602081101561067b57600080fd5b503563ffffffff166114cd565b34801561069457600080fd5b506103bb600480360360208110156106ab57600080fd5b50356001600160a01b0316611545565b3480156106c757600080fd5b506103bb600480360360208110156106de57600080fd5b50356115da565b3480156106f157600080fd5b506103d26116ae565b34801561070657600080fd5b506103bb6116b4565b34801561071b57600080fd5b5061037361179b565b34801561073057600080fd5b506102d46117aa565b34801561074557600080fd5b506103bb6004803603602081101561075c57600080fd5b50356001600160a01b031661180b565b34801561077857600080fd5b506103bb6004803603602081101561078f57600080fd5b50356001600160a01b03166118a0565b3480156107ab57600080fd5b506103bb600480360360208110156107c257600080fd5b8101906020810181356401000000008111156107dd57600080fd5b8201836020820111156107ef57600080fd5b8035906020019184600183028401116401000000008311171561081157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611935945050505050565b34801561085e57600080fd5b506103bb6004803603602081101561087557600080fd5b50356001600160a01b0316611a32565b34801561089157600080fd5b506103bb600480360360408110156108a857600080fd5b506001600160a01b0381351690602001351515611ad3565b3480156108cc57600080fd5b506102ab600480360360208110156108e357600080fd5b50356001600160a01b0316611b82565b3480156108ff57600080fd5b506103bb6004803603602081101561091657600080fd5b50356001600160a01b0316611b95565b6103bb6004803603608081101561093c57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561097757600080fd5b82018360208201111561098957600080fd5b803590602001918460018302840111640100000000831117156109ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c2a945050505050565b3480156109f857600080fd5b506102ab60048036036020811015610a0f57600080fd5b503563ffffffff16611ce3565b348015610a2857600080fd5b506103d2611cfe565b348015610a3d57600080fd5b506103bb60048036036020811015610a5457600080fd5b50356001600160a01b0316611d0a565b348015610a7057600080fd5b506102d460048036036020811015610a8757600080fd5b5035611d9f565b348015610a9a57600080fd5b506103bb60048036036040811015610ab157600080fd5b5063ffffffff81358116916020013516611e46565b348015610ad257600080fd5b506102ab60048036036020811015610ae957600080fd5b50356120e0565b348015610afc57600080fd5b506102ab60048036036040811015610b1357600080fd5b506001600160a01b03813581169160200135166120f5565b348015610b3757600080fd5b506102ab60048036036020811015610b4e57600080fd5b50356001600160a01b03166121af565b348015610b6a57600080fd5b506103bb60048036036020811015610b8157600080fd5b50356001600160a01b03166121c2565b348015610b9d57600080fd5b506103bb60048036036020811015610bb457600080fd5b5035612218565b6001600160e01b03191660009081526020819052604090205460ff1690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c665780601f10610c3b57610100808354040283529160200191610c66565b820191906000526020600020905b815481529060010190602001808311610c4957829003601f168201915b505050505090505b90565b6000610c7c826122fa565b610ccd576040805162461bcd60e51b815260206004820152601e60248201527f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e0000604482015290519081900360640190fd5b506000908152600360205260409020546001600160a01b031690565b6000610cf4826113aa565b9050336001600160a01b0382161480610d125750610d1281336120f5565b610d4d5760405162461bcd60e51b815260040180806020018281038252605d8152602001806130fb605d913960600191505060405180910390fd5b60008281526003602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051849233917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a4505050565b60105490565b600554600160a01b900460ff1615610dff576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b80610e09816120e0565b15610e53576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b94185d5cd8589b194e881c185d5cd959605a1b604482015290519081900360640190fd5b610e5e848484612317565b50505050565b600e5490565b610e7333611422565b610eb7576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610ec860098263ffffffff61247416565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b610f0833611422565b610f4c576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600554600160a01b900460ff16610fa1576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6005805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b610fec33611b82565b61102e576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b600a5461104690829063ffffffff908116906124f116565b61108d576040805162461bcd60e51b81526020600482015260136024820152720496e646578206d757374206e6f74206265203606c1b604482015290519081900360640190fd5b600a546000906110a890839063ffffffff9081169061254416565b63ffffffff8082166000908152600c60205260409020549192506110d29181169060019061259916565b63ffffffff8281166000908152600c60205260409020805463ffffffff19169282169290921790915560105461110b916001906125f016565b601055611117816114cd565b63ffffffff8281166000908152600c602052604090205491811691161115611186576040805162461bcd60e51b815260206004820152601860248201527f417373657420756e697420636170206973206578636565640000000000000000604482015290519081900360640190fd5b611190838361263e565b505050565b600554600160a01b900460ff16156111e7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b806111f1816120e0565b1561123b576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b94185d5cd8589b194e881c185d5cd959605a1b604482015290519081900360640190fd5b610e5e848484612693565b6014546001600160a01b031681565b6000611260826122fa565b92915050565b63ffffffff9081166000908152600c60205260409020541690565b600554600160a01b900460ff1690565b61129a33611b82565b6112dc576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b600e548163ffffffff16106113225760405162461bcd60e51b81526004018080602001828103825260328152602001806131796032913960400191505060405180910390fd5b600f548163ffffffff1610156113695760405162461bcd60e51b81526004018080602001828103825260318152602001806131ab6031913960400191505060405180910390fd5b63ffffffff8116600e81905560408051918252517fcffe07c9e7982b6c56cb569d21caedd78c8fbc68a0cbdc4d963c21eae6e8f9109181900360200190a150565b60006113b5826122fa565b611406576040805162461bcd60e51b815260206004820152601e60248201527f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e0000604482015290519081900360640190fd5b506000908152600160205260409020546001600160a01b031690565b600061126060068363ffffffff6126f416565b6001600160a01b031660009081526002602052604090205490565b61145933611422565b61149d576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f193505050501580156114ca573d6000803e3d6000fd5b50565b60006114d882611ce3565b611529576040805162461bcd60e51b815260206004820152601960248201527f4173736574207479706520646f6573206e6f7420657869737400000000000000604482015290519081900360640190fd5b5063ffffffff9081166000908152600b60205260409020541690565b61154e33611422565b611592576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6115a360078263ffffffff61271316565b6040516001600160a01b038216907fff12d576e2fecf516eb406e6618d5e97bcc8046690863b984069b15ada11d61290600090a250565b6115e3336121af565b61161e5760405162461bcd60e51b81526004018080602001828103825260268152602001806131dc6026913960400191505060405180910390fd5b611627816120e0565b61166e576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c185d5cd959606a1b604482015290519081900360640190fd5b600081815260086020526040808220805460ff191690555182917f0cfa9cc56bacd896c88effb6a4051b954fcaaf2de7ae98882e39f294ea65184391a250565b600f5490565b6116bd33611422565b611701576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600554600160a01b900460ff1615611753576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6005546001600160a01b031690565b60128054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c665780601f10610c3b57610100808354040283529160200191610c66565b61181433611422565b611858576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b61186960098263ffffffff61271316565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6118a933611422565b6118ed576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6118fe60068263ffffffff61271316565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b61193e33611422565b611982576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b8051611995906013906020840190612e75565b507fd5e477fc51908e22673125c3b4666c4a72f49feb8665fd3875e224a58ca9659a816040518080602001828103825283818151815260200191508051906020019080838360005b838110156119f55781810151838201526020016119dd565b50505050905090810190601f168015611a225780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b611a3b33611422565b611a7f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b601480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f12be4820d03362d1f48434d870b2fc1549b3a3d16d891eeaac7c3073f3ded8b79181900360200190a150565b6014546001600160a01b031615801590611afa5750611afa826001600160a01b0316612794565b15611b745760145460408051631b3b02e560e11b81523360048201526001600160a01b03858116602483015284151560448301529151919092169163367605ca91606480830192600092919082900301818387803b158015611b5b57600080fd5b505af1158015611b6f573d6000803e3d6000fd5b505050505b611b7e828261279a565b5050565b600061126060098363ffffffff6126f416565b611b9e33611422565b611be2576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b611bf360068263ffffffff61247416565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b600554600160a01b900460ff1615611c7c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b81611c86816120e0565b15611cd0576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b94185d5cd8589b194e881c185d5cd959605a1b604482015290519081900360640190fd5b611cdc858585856127a5565b5050505050565b63ffffffff166000908152600d602052604090205460ff1690565b600a5463ffffffff1690565b611d1333611422565b611d57576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b611d6860078263ffffffff61247416565b6040516001600160a01b038216907f2186c7d8e4b2d6a73790355b1a465872175798d2366146e638fc885d54460b8590600090a250565b6060611260611dad83612804565b6013805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611e335780601f10611e0857610100808354040283529160200191611e33565b820191906000526020600020905b815481529060010190602001808311611e1657829003601f168201915b50505050506128d990919063ffffffff16565b611e4f33611b82565b611e91576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b63ffffffff8216611ee9576040805162461bcd60e51b815260206004820152601860248201527f41737365742054797065206d757374206e6f7420626520300000000000000000604482015290519081900360640190fd5b600a5463ffffffff90811690821610611f335760405162461bcd60e51b81526004018080602001828103825260308152602001806130cb6030913960400191505060405180910390fd5b611f3c82611ce3565b611fd45763ffffffff8083166000908152600d60205260409020805460ff19166001908117909155600f54611f74929091906125f016565b600f819055600e541015611fcf576040805162461bcd60e51b815260206004820152601a60248201527f4173736574207479706520636170206973206578636565646564000000000000604482015290519081900360640190fd5b612079565b611fdd826114cd565b63ffffffff168163ffffffff16106120265760405162461bcd60e51b81526004018080602001828103825260308152602001806130316030913960400191505060405180910390fd5b61202f82611266565b63ffffffff168163ffffffff1610156120795760405162461bcd60e51b815260040180806020018281038252603181526020018061309a6031913960400191505060405180910390fd5b63ffffffff8281166000818152600b6020908152604091829020805463ffffffff19169486169485179055815192835282019290925281517f30525f07d1d2ff6b7c2b1817c13c37935c691304253dd353909b5c0381a9dc40929181900390910190a15050565b60009081526008602052604090205460ff1690565b6000806121028484612994565b6014549091506001600160a01b0316156121a857601454604080516346e67e2960e11b81526001600160a01b0387811660048301528681166024830152841515604483015291519190921691638dccfc52916064808301926020929190829003018186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b505050506040513d602081101561219d57600080fd5b505191506112609050565b9392505050565b600061126060078363ffffffff6126f416565b6121cb33611422565b61220f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6114ca816129a0565b612221336121af565b61225c5760405162461bcd60e51b81526004018080602001828103825260268152602001806131dc6026913960400191505060405180910390fd5b612265816120e0565b156122b7576040805162461bcd60e51b815260206004820152601760248201527f546f6b656e20697320616c726561647920706175736564000000000000000000604482015290519081900360640190fd5b600081815260086020526040808220805460ff191660011790555182917fc2d830ac158eec7b589dfadf012044c95b8646222991556ab4cd311e38bc77d191a250565b6000908152600160205260409020546001600160a01b0316151590565b61232133826129fe565b61235c5760405162461bcd60e51b8152600401808060200182810382526067815260200180612fca6067913960800191505060405180910390fd5b826001600160a01b031661236f826113aa565b6001600160a01b0316146123b45760405162461bcd60e51b81526004018080602001828103825260218152602001806131586021913960400191505060405180910390fd5b6001600160a01b03821661240f576040805162461bcd60e51b815260206004820152601a60248201527f605f746f6020697320746865207a65726f20616464726573732e000000000000604482015290519081900360640190fd5b612418816122fa565b612469576040805162461bcd60e51b815260206004820152601e60248201527f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e0000604482015290519081900360640190fd5b611190838383612a5d565b61247e82826126f4565b6124cf576040805162461bcd60e51b815260206004820152601d60248201527f726f6c6520646f73656e2774206861766520746865206163636f756e74000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b600081612533576040805162461bcd60e51b815260206004820152600b60248201526a06d6f64756c6f20627920360ac1b604482015290519081900360640190fd5b81838161253c57fe5b069392505050565b600081612588576040805162461bcd60e51b815260206004820152600d60248201526c06469766973696f6e206279203609c1b604482015290519081900360640190fd5b81838161259157fe5b049392505050565b600082820163ffffffff80851690821610156121a8576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b6000828201838110156121a8576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b61264733611b82565b612689576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b611b7e8282612b30565b6126ae83838360405180602001604052806000815250612c17565b6126e95760405162461bcd60e51b81526004018080602001828103825260398152602001806130616039913960400191505060405180910390fd5b611190838383610dad565b6001600160a01b03166000908152602091909152604090205460ff1690565b61271d82826126f4565b1561276f576040805162461bcd60e51b815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3b151590565b611b7e338383612d4a565b8051156127f9576040805162461bcd60e51b815260206004820152601760248201527f64617461206973206e6f7420696d706c656d656e746564000000000000000000604482015290519081900360640190fd5b610e5e848484611195565b60606000808361281d57600360fc1b915060010161285a565b835b80156128585761010083049250600a8106603001600160f81b0260001b83179250600a818161284a57fe5b60019093019204905061281f565b505b6060816040519080825280601f01601f191660200182016040528015612887576020820181803883390190505b50905060005b828110156128d0578381602081106128a157fe5b1a60f81b8282815181106128b157fe5b60200101906001600160f81b031916908160001a90535060010161288d565b50949350505050565b606082826040516020018083805190602001908083835b6020831061290f5780518252601f1990920191602091820191016128f0565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106129575780518252601f199092019160209182019101612938565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60006121a88383612db8565b60006129aa61179b565b600580546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080612a0a836113aa565b9050806001600160a01b0316846001600160a01b03161480612a455750836001600160a01b0316612a3a84610c71565b6001600160a01b0316145b80612a555750612a5581856120f5565b949350505050565b612a6681612de6565b600081815260016020818152604080842080546001600160a01b0319166001600160a01b038881169190911790915587168452600290915290912054612aab91612e21565b6001600160a01b038085166000908152600260205260408082209390935590841681522054612ae190600163ffffffff6125f016565b6001600160a01b03808416600081815260026020526040808220949094559251849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612b39816122fa565b15612b8b576040805162461bcd60e51b815260206004820152601960248201527f6d696e7420746f6b656e20616c72656164792065786973747300000000000000604482015290519081900360640190fd5b600081815260016020818152604080842080546001600160a01b0319166001600160a01b0388169081179091558452600290915290912054612bcc916125f0565b6001600160a01b0383166000818152600260205260408082209390935591518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000612c2b846001600160a01b0316612794565b612c3757506001612a55565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612d0057600080fd5b505af1158015612d14573d6000803e3d6000fd5b505050506040513d6020811015612d2a57600080fd5b50516001600160e01b031916630a85bd0160e11b14915050949350505050565b6001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805460ff1916861515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000818152600360205260409020546001600160a01b0316156114ca57600090815260036020526040902080546001600160a01b0319169055565b600081831015612e6f576040805162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e206f766572666c6f7760601b604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612eb657805160ff1916838001178555612ee3565b82800160010185558215612ee3579182015b82811115612ee3578251825591602001919060010190612ec8565b50612eef929150612ef3565b5090565b610c6e91905b80821115612eef5760008155600101612ef9565b600063ffffffff8216612f55576040805162461bcd60e51b815260206004820152600b60248201526a06d6f64756c6f20627920360ac1b604482015290519081900360640190fd5b8163ffffffff168363ffffffff168161253c57fe5b600063ffffffff8216612fb4576040805162461bcd60e51b815260206004820152600d60248201526c06469766973696f6e206279203609c1b604482015290519081900360640190fd5b8163ffffffff168363ffffffff168161259157fefe556e6c65737320606d73672e73656e64657260206973207468652063757272656e74206f776e65722c20616e20617574686f72697a6564206f70657261746f722c206f722074686520617070726f766564206164647265737320666f722074686973204e46542e4e657720756e697420636170206d757374206265206c657373207468616e2070726576696f757320756e697420636170605f746f60206973206120736d61727420636f6e747261637420616e64206f6e455243373231526563656976656420697320696e76616c69644e657720756e697420636170206d757374206265206d6f7265207468616e2063757272656e7420756e697420636f756e744e657720756e697420636170206d757374206265206c657373207468616e2061737365742074797065206f6666736574556e6c65737320606d73672e73656e64657260206973207468652063757272656e74204e4654206f776e65722c206f7220616e20617574686f72697a6564206f70657261746f72206f66207468652063757272656e74206f776e65722e605f66726f6d60206973206e6f74207468652063757272656e74206f776e65722e4e65772074797065206361702063616e6e6f74206265206c657373207468616e206578697374696e672074797065206361704e6577207479706520636170206d757374206265206d6f7265207468616e2063757272656e74207479706520636f756e744f6e6c7920746f6b656e207061757365722063616e2063616c6c2074686973206d6574686f64a265627a7a723158206b3b4f7ebc3669a9bd1825f180b7b912271e188990be2d302965d1c48aa7453664736f6c634300050c003268747470733a2f2f627261766566726f6e746965726865726f65732e636f6d2f6d657461646174612f737068657265732f000000000000000000000000aa06e5c117dbe8bc52dbaa18aaf447eda556b13c
Deployed Bytecode
0x6080604052600436106102725760003560e01c8063776ab6341161014f578063ac8a584a116100c1578063ca1728fd1161007a578063ca1728fd14610a8e578063d644736814610ac6578063e985e9c514610af0578063ed841bf114610b2b578063f2fde38b14610b5e578063fbd395f814610b9157610272565b8063ac8a584a146108f3578063b88d4fde14610926578063b97d7895146109ec578063c000582714610a1c578063c2508c4614610a31578063c87b56dd14610a6457610272565b8063983b2d5611610113578063983b2d56146107395780639870d7fe1461076c57806399e0dd7c1461079f5780639bb5c9c314610852578063a22cb46514610885578063aa271e1a146108c057610272565b8063776ab634146106bb5780637d02b1a3146106e55780638456cb59146106fa5780638da5cb5b1461070f57806395d89b411461072457610272565b80634dd09f33116101e85780636352211e116101ac5780636352211e146105b35780636d70f7ae146105dd57806370a08231146106105780637362377b14610643578063739f66871461065857806374db07d81461068857610272565b80634dd09f33146104e65780634ebbc92a146104fb578063532efe60146105255780635c975abb1461056e57806362977e2c1461058357610272565b806323b872dd1161023a57806323b872dd146103e45780632cff5b391461041a5780633092afd51461042f5780633f4ba83a1461046257806340c10f191461047757806342842e0e146104b057610272565b806301ffc9a71461027757806306fdde03146102bf578063081812fc14610349578063095ea7b31461038f57806318160ddd146103bd575b600080fd5b34801561028357600080fd5b506102ab6004803603602081101561029a57600080fd5b50356001600160e01b031916610bbb565b604080519115158252519081900360200190f35b3480156102cb57600080fd5b506102d4610bda565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561030e5781810151838201526020016102f6565b50505050905090810190601f16801561033b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035557600080fd5b506103736004803603602081101561036c57600080fd5b5035610c71565b604080516001600160a01b039092168252519081900360200190f35b6103bb600480360360408110156103a557600080fd5b506001600160a01b038135169060200135610ce9565b005b3480156103c957600080fd5b506103d2610da7565b60408051918252519081900360200190f35b6103bb600480360360608110156103fa57600080fd5b506001600160a01b03813581169160208101359091169060400135610dad565b34801561042657600080fd5b506103d2610e64565b34801561043b57600080fd5b506103bb6004803603602081101561045257600080fd5b50356001600160a01b0316610e6a565b34801561046e57600080fd5b506103bb610eff565b34801561048357600080fd5b506103bb6004803603604081101561049a57600080fd5b506001600160a01b038135169060200135610fe3565b6103bb600480360360608110156104c657600080fd5b506001600160a01b03813581169160208101359091169060400135611195565b3480156104f257600080fd5b50610373611246565b34801561050757600080fd5b506102ab6004803603602081101561051e57600080fd5b5035611255565b34801561053157600080fd5b506105556004803603602081101561054857600080fd5b503563ffffffff16611266565b6040805163ffffffff9092168252519081900360200190f35b34801561057a57600080fd5b506102ab611281565b34801561058f57600080fd5b506103bb600480360360208110156105a657600080fd5b503563ffffffff16611291565b3480156105bf57600080fd5b50610373600480360360208110156105d657600080fd5b50356113aa565b3480156105e957600080fd5b506102ab6004803603602081101561060057600080fd5b50356001600160a01b0316611422565b34801561061c57600080fd5b506103d26004803603602081101561063357600080fd5b50356001600160a01b0316611435565b34801561064f57600080fd5b506103bb611450565b34801561066457600080fd5b506105556004803603602081101561067b57600080fd5b503563ffffffff166114cd565b34801561069457600080fd5b506103bb600480360360208110156106ab57600080fd5b50356001600160a01b0316611545565b3480156106c757600080fd5b506103bb600480360360208110156106de57600080fd5b50356115da565b3480156106f157600080fd5b506103d26116ae565b34801561070657600080fd5b506103bb6116b4565b34801561071b57600080fd5b5061037361179b565b34801561073057600080fd5b506102d46117aa565b34801561074557600080fd5b506103bb6004803603602081101561075c57600080fd5b50356001600160a01b031661180b565b34801561077857600080fd5b506103bb6004803603602081101561078f57600080fd5b50356001600160a01b03166118a0565b3480156107ab57600080fd5b506103bb600480360360208110156107c257600080fd5b8101906020810181356401000000008111156107dd57600080fd5b8201836020820111156107ef57600080fd5b8035906020019184600183028401116401000000008311171561081157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611935945050505050565b34801561085e57600080fd5b506103bb6004803603602081101561087557600080fd5b50356001600160a01b0316611a32565b34801561089157600080fd5b506103bb600480360360408110156108a857600080fd5b506001600160a01b0381351690602001351515611ad3565b3480156108cc57600080fd5b506102ab600480360360208110156108e357600080fd5b50356001600160a01b0316611b82565b3480156108ff57600080fd5b506103bb6004803603602081101561091657600080fd5b50356001600160a01b0316611b95565b6103bb6004803603608081101561093c57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561097757600080fd5b82018360208201111561098957600080fd5b803590602001918460018302840111640100000000831117156109ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c2a945050505050565b3480156109f857600080fd5b506102ab60048036036020811015610a0f57600080fd5b503563ffffffff16611ce3565b348015610a2857600080fd5b506103d2611cfe565b348015610a3d57600080fd5b506103bb60048036036020811015610a5457600080fd5b50356001600160a01b0316611d0a565b348015610a7057600080fd5b506102d460048036036020811015610a8757600080fd5b5035611d9f565b348015610a9a57600080fd5b506103bb60048036036040811015610ab157600080fd5b5063ffffffff81358116916020013516611e46565b348015610ad257600080fd5b506102ab60048036036020811015610ae957600080fd5b50356120e0565b348015610afc57600080fd5b506102ab60048036036040811015610b1357600080fd5b506001600160a01b03813581169160200135166120f5565b348015610b3757600080fd5b506102ab60048036036020811015610b4e57600080fd5b50356001600160a01b03166121af565b348015610b6a57600080fd5b506103bb60048036036020811015610b8157600080fd5b50356001600160a01b03166121c2565b348015610b9d57600080fd5b506103bb60048036036020811015610bb457600080fd5b5035612218565b6001600160e01b03191660009081526020819052604090205460ff1690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c665780601f10610c3b57610100808354040283529160200191610c66565b820191906000526020600020905b815481529060010190602001808311610c4957829003601f168201915b505050505090505b90565b6000610c7c826122fa565b610ccd576040805162461bcd60e51b815260206004820152601e60248201527f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e0000604482015290519081900360640190fd5b506000908152600360205260409020546001600160a01b031690565b6000610cf4826113aa565b9050336001600160a01b0382161480610d125750610d1281336120f5565b610d4d5760405162461bcd60e51b815260040180806020018281038252605d8152602001806130fb605d913960600191505060405180910390fd5b60008281526003602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051849233917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a4505050565b60105490565b600554600160a01b900460ff1615610dff576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b80610e09816120e0565b15610e53576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b94185d5cd8589b194e881c185d5cd959605a1b604482015290519081900360640190fd5b610e5e848484612317565b50505050565b600e5490565b610e7333611422565b610eb7576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b610ec860098263ffffffff61247416565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b610f0833611422565b610f4c576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600554600160a01b900460ff16610fa1576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6005805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b610fec33611b82565b61102e576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b600a5461104690829063ffffffff908116906124f116565b61108d576040805162461bcd60e51b81526020600482015260136024820152720496e646578206d757374206e6f74206265203606c1b604482015290519081900360640190fd5b600a546000906110a890839063ffffffff9081169061254416565b63ffffffff8082166000908152600c60205260409020549192506110d29181169060019061259916565b63ffffffff8281166000908152600c60205260409020805463ffffffff19169282169290921790915560105461110b916001906125f016565b601055611117816114cd565b63ffffffff8281166000908152600c602052604090205491811691161115611186576040805162461bcd60e51b815260206004820152601860248201527f417373657420756e697420636170206973206578636565640000000000000000604482015290519081900360640190fd5b611190838361263e565b505050565b600554600160a01b900460ff16156111e7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b806111f1816120e0565b1561123b576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b94185d5cd8589b194e881c185d5cd959605a1b604482015290519081900360640190fd5b610e5e848484612693565b6014546001600160a01b031681565b6000611260826122fa565b92915050565b63ffffffff9081166000908152600c60205260409020541690565b600554600160a01b900460ff1690565b61129a33611b82565b6112dc576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b600e548163ffffffff16106113225760405162461bcd60e51b81526004018080602001828103825260328152602001806131796032913960400191505060405180910390fd5b600f548163ffffffff1610156113695760405162461bcd60e51b81526004018080602001828103825260318152602001806131ab6031913960400191505060405180910390fd5b63ffffffff8116600e81905560408051918252517fcffe07c9e7982b6c56cb569d21caedd78c8fbc68a0cbdc4d963c21eae6e8f9109181900360200190a150565b60006113b5826122fa565b611406576040805162461bcd60e51b815260206004820152601e60248201527f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e0000604482015290519081900360640190fd5b506000908152600160205260409020546001600160a01b031690565b600061126060068363ffffffff6126f416565b6001600160a01b031660009081526002602052604090205490565b61145933611422565b61149d576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f193505050501580156114ca573d6000803e3d6000fd5b50565b60006114d882611ce3565b611529576040805162461bcd60e51b815260206004820152601960248201527f4173736574207479706520646f6573206e6f7420657869737400000000000000604482015290519081900360640190fd5b5063ffffffff9081166000908152600b60205260409020541690565b61154e33611422565b611592576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6115a360078263ffffffff61271316565b6040516001600160a01b038216907fff12d576e2fecf516eb406e6618d5e97bcc8046690863b984069b15ada11d61290600090a250565b6115e3336121af565b61161e5760405162461bcd60e51b81526004018080602001828103825260268152602001806131dc6026913960400191505060405180910390fd5b611627816120e0565b61166e576040805162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c185d5cd959606a1b604482015290519081900360640190fd5b600081815260086020526040808220805460ff191690555182917f0cfa9cc56bacd896c88effb6a4051b954fcaaf2de7ae98882e39f294ea65184391a250565b600f5490565b6116bd33611422565b611701576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b600554600160a01b900460ff1615611753576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6005546001600160a01b031690565b60128054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c665780601f10610c3b57610100808354040283529160200191610c66565b61181433611422565b611858576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b61186960098263ffffffff61271316565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6118a933611422565b6118ed576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6118fe60068263ffffffff61271316565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b61193e33611422565b611982576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b8051611995906013906020840190612e75565b507fd5e477fc51908e22673125c3b4666c4a72f49feb8665fd3875e224a58ca9659a816040518080602001828103825283818151815260200191508051906020019080838360005b838110156119f55781810151838201526020016119dd565b50505050905090810190601f168015611a225780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b611a3b33611422565b611a7f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b601480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f12be4820d03362d1f48434d870b2fc1549b3a3d16d891eeaac7c3073f3ded8b79181900360200190a150565b6014546001600160a01b031615801590611afa5750611afa826001600160a01b0316612794565b15611b745760145460408051631b3b02e560e11b81523360048201526001600160a01b03858116602483015284151560448301529151919092169163367605ca91606480830192600092919082900301818387803b158015611b5b57600080fd5b505af1158015611b6f573d6000803e3d6000fd5b505050505b611b7e828261279a565b5050565b600061126060098363ffffffff6126f416565b611b9e33611422565b611be2576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b611bf360068263ffffffff61247416565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b600554600160a01b900460ff1615611c7c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b81611c86816120e0565b15611cd0576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b94185d5cd8589b194e881c185d5cd959605a1b604482015290519081900360640190fd5b611cdc858585856127a5565b5050505050565b63ffffffff166000908152600d602052604090205460ff1690565b600a5463ffffffff1690565b611d1333611422565b611d57576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b611d6860078263ffffffff61247416565b6040516001600160a01b038216907f2186c7d8e4b2d6a73790355b1a465872175798d2366146e638fc885d54460b8590600090a250565b6060611260611dad83612804565b6013805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611e335780601f10611e0857610100808354040283529160200191611e33565b820191906000526020600020905b815481529060010190602001808311611e1657829003601f168201915b50505050506128d990919063ffffffff16565b611e4f33611b82565b611e91576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b63ffffffff8216611ee9576040805162461bcd60e51b815260206004820152601860248201527f41737365742054797065206d757374206e6f7420626520300000000000000000604482015290519081900360640190fd5b600a5463ffffffff90811690821610611f335760405162461bcd60e51b81526004018080602001828103825260308152602001806130cb6030913960400191505060405180910390fd5b611f3c82611ce3565b611fd45763ffffffff8083166000908152600d60205260409020805460ff19166001908117909155600f54611f74929091906125f016565b600f819055600e541015611fcf576040805162461bcd60e51b815260206004820152601a60248201527f4173736574207479706520636170206973206578636565646564000000000000604482015290519081900360640190fd5b612079565b611fdd826114cd565b63ffffffff168163ffffffff16106120265760405162461bcd60e51b81526004018080602001828103825260308152602001806130316030913960400191505060405180910390fd5b61202f82611266565b63ffffffff168163ffffffff1610156120795760405162461bcd60e51b815260040180806020018281038252603181526020018061309a6031913960400191505060405180910390fd5b63ffffffff8281166000818152600b6020908152604091829020805463ffffffff19169486169485179055815192835282019290925281517f30525f07d1d2ff6b7c2b1817c13c37935c691304253dd353909b5c0381a9dc40929181900390910190a15050565b60009081526008602052604090205460ff1690565b6000806121028484612994565b6014549091506001600160a01b0316156121a857601454604080516346e67e2960e11b81526001600160a01b0387811660048301528681166024830152841515604483015291519190921691638dccfc52916064808301926020929190829003018186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b505050506040513d602081101561219d57600080fd5b505191506112609050565b9392505050565b600061126060078363ffffffff6126f416565b6121cb33611422565b61220f576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba1031329037b832b930ba37b960811b604482015290519081900360640190fd5b6114ca816129a0565b612221336121af565b61225c5760405162461bcd60e51b81526004018080602001828103825260268152602001806131dc6026913960400191505060405180910390fd5b612265816120e0565b156122b7576040805162461bcd60e51b815260206004820152601760248201527f546f6b656e20697320616c726561647920706175736564000000000000000000604482015290519081900360640190fd5b600081815260086020526040808220805460ff191660011790555182917fc2d830ac158eec7b589dfadf012044c95b8646222991556ab4cd311e38bc77d191a250565b6000908152600160205260409020546001600160a01b0316151590565b61232133826129fe565b61235c5760405162461bcd60e51b8152600401808060200182810382526067815260200180612fca6067913960800191505060405180910390fd5b826001600160a01b031661236f826113aa565b6001600160a01b0316146123b45760405162461bcd60e51b81526004018080602001828103825260218152602001806131586021913960400191505060405180910390fd5b6001600160a01b03821661240f576040805162461bcd60e51b815260206004820152601a60248201527f605f746f6020697320746865207a65726f20616464726573732e000000000000604482015290519081900360640190fd5b612418816122fa565b612469576040805162461bcd60e51b815260206004820152601e60248201527f605f746f6b656e496460206973206e6f7420612076616c6964204e46542e0000604482015290519081900360640190fd5b611190838383612a5d565b61247e82826126f4565b6124cf576040805162461bcd60e51b815260206004820152601d60248201527f726f6c6520646f73656e2774206861766520746865206163636f756e74000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b600081612533576040805162461bcd60e51b815260206004820152600b60248201526a06d6f64756c6f20627920360ac1b604482015290519081900360640190fd5b81838161253c57fe5b069392505050565b600081612588576040805162461bcd60e51b815260206004820152600d60248201526c06469766973696f6e206279203609c1b604482015290519081900360640190fd5b81838161259157fe5b049392505050565b600082820163ffffffff80851690821610156121a8576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b6000828201838110156121a8576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b61264733611b82565b612689576040805162461bcd60e51b815260206004820152600e60248201526d26bab9ba1031329036b4b73a32b960911b604482015290519081900360640190fd5b611b7e8282612b30565b6126ae83838360405180602001604052806000815250612c17565b6126e95760405162461bcd60e51b81526004018080602001828103825260398152602001806130616039913960400191505060405180910390fd5b611190838383610dad565b6001600160a01b03166000908152602091909152604090205460ff1690565b61271d82826126f4565b1561276f576040805162461bcd60e51b815260206004820152601c60248201527f726f6c6520616c72656164792068617320746865206163636f756e7400000000604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3b151590565b611b7e338383612d4a565b8051156127f9576040805162461bcd60e51b815260206004820152601760248201527f64617461206973206e6f7420696d706c656d656e746564000000000000000000604482015290519081900360640190fd5b610e5e848484611195565b60606000808361281d57600360fc1b915060010161285a565b835b80156128585761010083049250600a8106603001600160f81b0260001b83179250600a818161284a57fe5b60019093019204905061281f565b505b6060816040519080825280601f01601f191660200182016040528015612887576020820181803883390190505b50905060005b828110156128d0578381602081106128a157fe5b1a60f81b8282815181106128b157fe5b60200101906001600160f81b031916908160001a90535060010161288d565b50949350505050565b606082826040516020018083805190602001908083835b6020831061290f5780518252601f1990920191602091820191016128f0565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106129575780518252601f199092019160209182019101612938565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60006121a88383612db8565b60006129aa61179b565b600580546001600160a01b0319166001600160a01b0385811691821790925560405192935091908316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080612a0a836113aa565b9050806001600160a01b0316846001600160a01b03161480612a455750836001600160a01b0316612a3a84610c71565b6001600160a01b0316145b80612a555750612a5581856120f5565b949350505050565b612a6681612de6565b600081815260016020818152604080842080546001600160a01b0319166001600160a01b038881169190911790915587168452600290915290912054612aab91612e21565b6001600160a01b038085166000908152600260205260408082209390935590841681522054612ae190600163ffffffff6125f016565b6001600160a01b03808416600081815260026020526040808220949094559251849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612b39816122fa565b15612b8b576040805162461bcd60e51b815260206004820152601960248201527f6d696e7420746f6b656e20616c72656164792065786973747300000000000000604482015290519081900360640190fd5b600081815260016020818152604080842080546001600160a01b0319166001600160a01b0388169081179091558452600290915290912054612bcc916125f0565b6001600160a01b0383166000818152600260205260408082209390935591518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000612c2b846001600160a01b0316612794565b612c3757506001612a55565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612d0057600080fd5b505af1158015612d14573d6000803e3d6000fd5b505050506040513d6020811015612d2a57600080fd5b50516001600160e01b031916630a85bd0160e11b14915050949350505050565b6001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805460ff1916861515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000818152600360205260409020546001600160a01b0316156114ca57600090815260036020526040902080546001600160a01b0319169055565b600081831015612e6f576040805162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e206f766572666c6f7760601b604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612eb657805160ff1916838001178555612ee3565b82800160010185558215612ee3579182015b82811115612ee3578251825591602001919060010190612ec8565b50612eef929150612ef3565b5090565b610c6e91905b80821115612eef5760008155600101612ef9565b600063ffffffff8216612f55576040805162461bcd60e51b815260206004820152600b60248201526a06d6f64756c6f20627920360ac1b604482015290519081900360640190fd5b8163ffffffff168363ffffffff168161253c57fe5b600063ffffffff8216612fb4576040805162461bcd60e51b815260206004820152600d60248201526c06469766973696f6e206279203609c1b604482015290519081900360640190fd5b8163ffffffff168363ffffffff168161259157fefe556e6c65737320606d73672e73656e64657260206973207468652063757272656e74206f776e65722c20616e20617574686f72697a6564206f70657261746f722c206f722074686520617070726f766564206164647265737320666f722074686973204e46542e4e657720756e697420636170206d757374206265206c657373207468616e2070726576696f757320756e697420636170605f746f60206973206120736d61727420636f6e747261637420616e64206f6e455243373231526563656976656420697320696e76616c69644e657720756e697420636170206d757374206265206d6f7265207468616e2063757272656e7420756e697420636f756e744e657720756e697420636170206d757374206265206c657373207468616e2061737365742074797065206f6666736574556e6c65737320606d73672e73656e64657260206973207468652063757272656e74204e4654206f776e65722c206f7220616e20617574686f72697a6564206f70657261746f72206f66207468652063757272656e74206f776e65722e605f66726f6d60206973206e6f74207468652063757272656e74206f776e65722e4e65772074797065206361702063616e6e6f74206265206c657373207468616e206578697374696e672074797065206361704e6577207479706520636170206d757374206265206d6f7265207468616e2063757272656e74207479706520636f756e744f6e6c7920746f6b656e207061757365722063616e2063616c6c2074686973206d6574686f64a265627a7a723158206b3b4f7ebc3669a9bd1825f180b7b912271e188990be2d302965d1c48aa7453664736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000Aa06e5c117dbe8bC52dBaa18AaF447eDA556B13c
-----Decoded View---------------
Arg [0] : _approvalProxy (address): 0xAa06e5c117dbe8bC52dBaa18AaF447eDA556B13c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000Aa06e5c117dbe8bC52dBaa18AaF447eDA556B13c
Deployed Bytecode Sourcemap
26574:1268:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5497:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5497:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5497:135:0;-1:-1:-1;;;;;;5497:135:0;;:::i;:::-;;;;;;;;;;;;;;;;;;19097:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19097:84:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19097:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11432:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11432:206:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11432:206:0;;:::i;:::-;;;;-1:-1:-1;;;;;11432:206:0;;;;;;;;;;;;;;10633:419;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10633:419:0;;;;;;;;:::i;:::-;;23832:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23832:89:0;;;:::i;:::-;;;;;;;;;;;;;;;;21847:216;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21847:216:0;;;;;;;;;;;;;;;;;:::i;24634:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24634:90:0;;;:::i;17944:141::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17944:141:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17944:141:0;-1:-1:-1;;;;;17944:141:0;;:::i;16686:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16686:124:0;;;:::i;26119:448::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26119:448:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;26119:448:0;;;;;;;;:::i;21615:224::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21615:224:0;;;;;;;;;;;;;;;;;:::i;26886:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26886:35:0;;;:::i;18097:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18097:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18097:100:0;;:::i;25994:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25994:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25994:117:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16470:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16470:78:0;;;:::i;24280:346::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24280:346:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24280:346:0;;;;:::i;9281:199::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9281:199:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9281:199:0;;:::i;16048:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16048:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16048:112:0;-1:-1:-1;;;;;16048:112:0;;:::i;9166:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9166:107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9166:107:0;-1:-1:-1;;;;;9166:107:0;;:::i;16818:108::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16818:108:0;;;:::i;25800:186::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25800:186:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25800:186:0;;;;:::i;21038:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21038:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21038:147:0;-1:-1:-1;;;;;21038:147:0;;:::i;20562:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20562:219:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20562:219:0;;:::i;24732:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24732:94:0;;;:::i;16556:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16556:122:0;;;:::i;14786:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14786:79:0;;;:::i;19189:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19189:88:0;;;:::i;17803:133::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17803:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17803:133:0;-1:-1:-1;;;;;17803:133:0;;:::i;16168:139::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16168:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16168:139:0;-1:-1:-1;;;;;16168:139:0;;:::i;18903:186::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18903:186:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18903:186:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18903:186:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18903:186:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18903:186:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;18903:186:0;;-1:-1:-1;18903:186:0;;-1:-1:-1;;;;;18903:186:0:i;27030:158::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27030:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27030:158:0;-1:-1:-1;;;;;27030:158:0;;:::i;27196:301::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27196:301:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27196:301:0;;;;;;;;;;:::i;17687:108::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17687:108:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17687:108:0;-1:-1:-1;;;;;17687:108:0;;:::i;16315:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16315:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16315:147:0;-1:-1:-1;;;;;16315:147:0;;:::i;21356:251::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;21356:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;21356:251:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21356:251:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21356:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21356:251:0;;-1:-1:-1;21356:251:0;;-1:-1:-1;;;;;21356:251:0:i;24834:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24834:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24834:118:0;;;;:::i;24176:96::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24176:96:0;;;:::i;21193:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21193:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21193:155:0;-1:-1:-1;;;;;21193:155:0;;:::i;19285:142::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19285:142:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19285:142:0;;:::i;24960:832::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24960:832:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24960:832:0;;;;;;;;;;;:::i;20789:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20789:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20789:116:0;;:::i;27505:334::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27505:334:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27505:334:0;;;;;;;;;;:::i;20913:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20913:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20913:117:0;-1:-1:-1;;;;;20913:117:0;;:::i;15924:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15924:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15924:116:0;-1:-1:-1;;;;;15924:116:0;;:::i;20335:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20335:219:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20335:219:0;;:::i;5497:135::-;-1:-1:-1;;;;;;5591:33:0;5567:4;5591:33;;;;;;;;;;;;;;5497:135::o;19097:84::-;19167:6;19160:13;;;;;;;;-1:-1:-1;;19160:13:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19134;;19160;;19167:6;;19160:13;;19167:6;19160:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19097:84;;:::o;11432:206::-;11492:7;11520:16;11527:8;11520:6;:16::i;:::-;11512:76;;;;;-1:-1:-1;;;11512:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11606:24:0;;;;:14;:24;;;;;;-1:-1:-1;;;;;11606:24:0;;11432:206::o;10633:419::-;10713:13;10729:17;10737:8;10729:7;:17::i;:::-;10713:33;-1:-1:-1;10765:10:0;-1:-1:-1;;;;;10765:19:0;;;;:58;;;10788:35;10805:5;10812:10;10788:16;:35::i;:::-;10757:181;;;;-1:-1:-1;;;10757:181:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10951:24;;;;:14;:24;;;;;;:36;;-1:-1:-1;;;;;;10951:36:0;-1:-1:-1;;;;;10951:36:0;;;;;;;;11003:41;;10951:24;;11012:10;;11003:41;;10951:24;11003:41;10633:419;;;:::o;23832:89::-;23903:10;;23832:89;:::o;21847:216::-;15767:7;;-1:-1:-1;;;15767:7:0;;;;15766:8;15758:37;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;;;;21994:8;20115:23;20129:8;20115:13;:23::i;:::-;20114:24;20106:58;;;;;-1:-1:-1;;;20106:58:0;;;;;;;;;;;;-1:-1:-1;;;20106:58:0;;;;;;;;;;;;;;;22015:40;22034:5;22041:3;22046:8;22015:18;:40::i;:::-;15806:1;21847:216;;;:::o;24634:90::-;24704:12;;24634:90;:::o;17944:141::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;18016:23;:7;18031;18016:23;:14;:23;:::i;:::-;18055:22;;-1:-1:-1;;;;;18055:22:0;;;;;;;;17944:141;:::o;16686:124::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;15864:7;;-1:-1:-1;;;15864:7:0;;;;15856:40;;;;;-1:-1:-1;;;15856:40:0;;;;;;;;;;;;-1:-1:-1;;;15856:40:0;;;;;;;;;;;;;;;16751:7;:15;;-1:-1:-1;;;;16751:15:0;;;16782:20;;;16791:10;16782:20;;;;;;;;;;;;;16686:124::o;26119:448::-;17620:20;17629:10;17620:8;:20::i;:::-;17612:47;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;;;;26216:15;;26203:29;;:8;;26216:15;;;;;26203:12;:29;:::i;:::-;26195:66;;;;;-1:-1:-1;;;26195:66:0;;;;;;;;;;;;-1:-1:-1;;;26195:66:0;;;;;;;;;;;;;;;26311:15;;26272:16;;26298:29;;:8;;26311:15;;;;;26298:12;:29;:::i;:::-;26362:20;;;;;;;;:9;:20;;;;;;26272:56;;-1:-1:-1;26362:27:0;;:20;;;26387:1;;26362:24;:27;:::i;:::-;26339:20;;;;;;;;:9;:20;;;;;:50;;-1:-1:-1;;26339:50:0;;;;;;;;;;;26413:10;;:17;;-1:-1:-1;;26413:14:0;:17;:::i;:::-;26400:10;:30;26473:21;26484:9;26473:10;:21::i;:::-;26449:45;:20;;;;;;;:9;:20;;;;;;:45;;;:20;;:45;;26441:82;;;;;-1:-1:-1;;;26441:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26534:25;26545:3;26550:8;26534:10;:25::i;:::-;17670:1;26119:448;;:::o;21615:224::-;15767:7;;-1:-1:-1;;;15767:7:0;;;;15766:8;15758:37;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;;;;21766:8;20115:23;20129:8;20115:13;:23::i;:::-;20114:24;20106:58;;;;;-1:-1:-1;;;20106:58:0;;;;;;;;;;;;-1:-1:-1;;;20106:58:0;;;;;;;;;;;;;;;21787:44;21810:5;21817:3;21822:8;21787:22;:44::i;26886:35::-;;;-1:-1:-1;;;;;26886:35:0;;:::o;18097:100::-;18150:4;18174:15;18181:7;18174:6;:15::i;:::-;18167:22;18097:100;-1:-1:-1;;18097:100:0:o;25994:117::-;26082:21;;;;26056:6;26082:21;;;:9;:21;;;;;;;;25994:117::o;16470:78::-;16533:7;;-1:-1:-1;;;16533:7:0;;;;;16470:78::o;24280:346::-;17620:20;17629:10;17620:8;:20::i;:::-;17612:47;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;;;;24373:12;;24359:11;:26;;;24351:89;;;;-1:-1:-1;;;24351:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24474:14;;24459:11;:29;;;;24451:91;;;;-1:-1:-1;;;24451:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24553:26;;;:12;:26;;;24595:23;;;;;;;;;;;;;;;;24280:346;:::o;9281:199::-;9337:7;9365:16;9372:8;9365:6;:16::i;:::-;9357:76;;;;;-1:-1:-1;;;9357:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9451:21:0;;;;:11;:21;;;;;;-1:-1:-1;;;;;9451:21:0;;9281:199::o;16048:112::-;16106:4;16130:22;:9;16144:7;16130:22;:13;:22;:::i;9166:107::-;-1:-1:-1;;;;;9249:16:0;9222:7;9249:16;;;:8;:16;;;;;;;9166:107::o;16818:108::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;16876:42;;:10;;16904:4;16896:21;16876:42;;;;;;;;;16896:21;16876:10;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16876:42:0;16818:108::o;25800:186::-;25860:6;25887:24;25900:10;25887:12;:24::i;:::-;25879:62;;;;;-1:-1:-1;;;25879:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25959:19:0;;;;;;;;:7;:19;;;;;;;;25800:186::o;21038:147::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;21112:24;:11;21128:7;21112:24;:15;:24;:::i;:::-;21152:25;;-1:-1:-1;;;;;21152:25:0;;;;;;;;21038:147;:::o;20562:219::-;19953:25;19967:10;19953:13;:25::i;:::-;19945:76;;;;-1:-1:-1;;;19945:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20646:23;20660:8;20646:13;:23::i;:::-;20638:55;;;;;-1:-1:-1;;;20638:55:0;;;;;;;;;;;;-1:-1:-1;;;20638:55:0;;;;;;;;;;;;;;;20729:5;20704:22;;;:12;:22;;;;;;:30;;-1:-1:-1;;20704:30:0;;;20750:23;20717:8;;20750:23;;;20562:219;:::o;24732:94::-;24804:14;;24732:94;:::o;16556:122::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;15767:7;;-1:-1:-1;;;15767:7:0;;;;15766:8;15758:37;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;;;;16622:7;:14;;-1:-1:-1;;;;16622:14:0;-1:-1:-1;;;16622:14:0;;;16652:18;;;16659:10;16652:18;;;;;;;;;;;;;16556:122::o;14786:79::-;14851:6;;-1:-1:-1;;;;;14851:6:0;14786:79;:::o;19189:88::-;19261:8;19254:15;;;;;;;;-1:-1:-1;;19254:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19228:13;;19254:15;;19261:8;;19254:15;;19261:8;19254:15;;;;;;;;;;;;;;;;;;;;;;;;17803:133;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;17872:20;:7;17884;17872:20;:11;:20;:::i;:::-;17908;;-1:-1:-1;;;;;17908:20:0;;;;;;;;17803:133;:::o;16168:139::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;16239:22;:9;16253:7;16239:22;:13;:22;:::i;:::-;16277;;-1:-1:-1;;;;;16277:22:0;;;;;;;;16168:139;:::o;18903:186::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;18994:34;;;;:16;;:34;;;;;:::i;:::-;;19044:37;19065:15;19044:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19044:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18903:186;:::o;27030:158::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;27103:13;:36;;-1:-1:-1;;;;;27103:36:0;;-1:-1:-1;;;;;;27103:36:0;;;;;;;;27155:25;;;;;;;;;;;;;;;;27030:158;:::o;27196:301::-;27287:13;;-1:-1:-1;;;;;27287:13:0;27279:38;;;;:63;;;27321:21;:8;-1:-1:-1;;;;;27321:19:0;;:21::i;:::-;27275:160;;;27359:13;;:64;;;-1:-1:-1;;;27359:64:0;;27391:10;27359:64;;;;-1:-1:-1;;;;;27359:64:0;;;;;;;;;;;;;;;;:13;;;;;:31;;:64;;;;;:13;;:64;;;;;;;:13;;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;27359:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27359:64:0;;;;27275:160;27445:44;27469:8;27479:9;27445:23;:44::i;:::-;27196:301;;:::o;17687:108::-;17743:4;17767:20;:7;17779;17767:20;:11;:20;:::i;16315:147::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;16389:25;:9;16406:7;16389:25;:16;:25;:::i;:::-;16430:24;;-1:-1:-1;;;;;16430:24:0;;;;;;;;16315:147;:::o;21356:251::-;15767:7;;-1:-1:-1;;;15767:7:0;;;;15766:8;15758:37;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;-1:-1:-1;;;15758:37:0;;;;;;;;;;;;;;;21527:8;20115:23;20129:8;20115:13;:23::i;:::-;20114:24;20106:58;;;;;-1:-1:-1;;;20106:58:0;;;;;;;;;;;;-1:-1:-1;;;20106:58:0;;;;;;;;;;;;;;;21548:51;21571:5;21578:3;21583:8;21593:5;21548:22;:51::i;:::-;15806:1;21356:251;;;;:::o;24834:118::-;24920:24;;24896:4;24920:24;;;:12;:24;;;;;;;;;24834:118::o;24176:96::-;24249:15;;;;24176:96;:::o;21193:155::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;21270:27;:11;21289:7;21270:27;:18;:27;:::i;:::-;21313;;-1:-1:-1;;;;;21313:27:0;;;;;;;;21193:155;:::o;19285:142::-;19342:13;19375:44;19399:19;:8;:17;:19::i;:::-;19375:16;:23;;;;;;;;;;;;;-1:-1:-1;;19375:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;:23;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;:::i;24960:832::-;17620:20;17629:10;17620:8;:20::i;:::-;17612:47;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;;;;25058:15;;;25050:52;;;;;-1:-1:-1;;;25050:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25135:15;;;;;;25121:29;;;;25113:90;;;;-1:-1:-1;;;25113:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25221:24;25234:10;25221:12;:24::i;:::-;25216:472;;25262:24;;;;;;;;:12;:24;;;;;:31;;-1:-1:-1;;25262:31:0;25289:4;25262:31;;;;;;25325:14;;:21;;:14;;25289:4;25325:18;:21;:::i;:::-;25308:14;:38;;;25387:12;;-1:-1:-1;25369:30:0;25361:69;;;;;-1:-1:-1;;;25361:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25216:472;;;25485:22;25496:10;25485;:22::i;:::-;25471:36;;:11;:36;;;25463:97;;;;-1:-1:-1;;;25463:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25598:24;25611:10;25598:12;:24::i;:::-;25583:39;;:11;:39;;;;25575:101;;;;-1:-1:-1;;;25575:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25700:19;;;;;;;;:7;:19;;;;;;;;;:33;;-1:-1:-1;;25700:33:0;;;;;;;;;25749:35;;;;;;;;;;;;;;;;;;;;;;;;24960:832;;:::o;20789:116::-;20851:4;20875:22;;;:12;:22;;;;;;;;;20789:116::o;27505:334::-;27586:4;27603:13;27619:40;27642:6;27650:8;27619:22;:40::i;:::-;27682:13;;27603:56;;-1:-1:-1;;;;;;27682:13:0;27674:38;27670:136;;27736:13;;:58;;;-1:-1:-1;;;27736:58:0;;-1:-1:-1;;;;;27736:58:0;;;;;;;;;;;;;;;;;;;;;;;:13;;;;;:30;;:58;;;;;;;;;;;;;;:13;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;27736:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27736:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27736:58:0;;-1:-1:-1;27729:65:0;;-1:-1:-1;27729:65:0;27670:136;27823:8;27505:334;-1:-1:-1;;;27505:334:0:o;20913:117::-;20974:4;20998:24;:11;21014:7;20998:24;:15;:24;:::i;15924:116::-;15651:22;15662:10;15651;:22::i;:::-;15643:51;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;-1:-1:-1;;;15643:51:0;;;;;;;;;;;;;;;16003:29;16022:9;16003:18;:29::i;20335:219::-;19953:25;19967:10;19953:13;:25::i;:::-;19945:76;;;;-1:-1:-1;;;19945:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20418:23;20432:8;20418:13;:23::i;:::-;20417:24;20409:60;;;;;-1:-1:-1;;;20409:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20480:22;;;;:12;:22;;;;;;:29;;-1:-1:-1;;20480:29:0;20505:4;20480:29;;;20525:21;20493:8;;20525:21;;;20335:219;:::o;13172:156::-;13229:4;13262:21;;;:11;:21;;;;;;-1:-1:-1;;;;;13262:21:0;13301:19;;;13172:156::o;10018:607::-;10120:35;10134:10;10146:8;10120:13;:35::i;:::-;10112:168;;;;-1:-1:-1;;;10112:168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10344:5;-1:-1:-1;;;;;10323:26:0;:17;10331:8;10323:7;:17::i;:::-;-1:-1:-1;;;;;10323:26:0;;10315:89;;;;-1:-1:-1;;;10315:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10423:17:0;;10415:73;;;;;-1:-1:-1;;;10415:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10507:16;10514:8;10507:6;:16::i;:::-;10499:76;;;;;-1:-1:-1;;;10499:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10586:31;10596:5;10603:3;10608:8;10586:9;:31::i;1427:179::-;1507:18;1511:4;1517:7;1507:3;:18::i;:::-;1499:60;;;;;-1:-1:-1;;;1499:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1570:20:0;1593:5;1570:20;;;;;;;;;;;:28;;-1:-1:-1;;1570:28:0;;;1427:179::o;2496:139::-;2554:7;2582:6;2574:30;;;;;-1:-1:-1;;;2574:30:0;;;;;;;;;;;;-1:-1:-1;;;2574:30:0;;;;;;;;;;;;;;;2626:1;2622;:5;;;;;;;2496:139;-1:-1:-1;;;2496:139:0:o;2347:141::-;2405:7;2433:6;2425:32;;;;;-1:-1:-1;;;2425:32:0;;;;;;;;;;;;-1:-1:-1;;;2425:32:0;;;;;;;;;;;;;;;2479:1;2475;:5;;;;;;;2347:141;-1:-1:-1;;;2347:141:0:o;6964:165::-;7020:6;7050:5;;;7074:6;;;;;;;;;7066:36;;;;;-1:-1:-1;;;7066:36:0;;;;;;;;;;;;-1:-1:-1;;;7066:36:0;;;;;;;;;;;;;;1770:169;1828:7;1860:5;;;1884:6;;;;1876:36;;;;;-1:-1:-1;;;1876:36:0;;;;;;;;;;;;-1:-1:-1;;;1876:36:0;;;;;;;;;;;;;;18205:100;17620:20;17629:10;17620:8;:20::i;:::-;17612:47;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;-1:-1:-1;;;17612:47:0;;;;;;;;;;;;;;;18279:18;18285:2;18289:7;18279:5;:18::i;9724:286::-;9830:48;9853:5;9860:3;9865:8;9830:48;;;;;;;;;;;;:22;:48::i;:::-;9822:135;;;;-1:-1:-1;;;9822:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9968:34;9981:5;9988:3;9993:8;9968:12;:34::i;1614:124::-;-1:-1:-1;;;;;1710:20:0;1686:4;1710:20;;;;;;;;;;;;;;;1614:124::o;1244:175::-;1322:18;1326:4;1332:7;1322:3;:18::i;:::-;1321:19;1313:60;;;;;-1:-1:-1;;;1313:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1384:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;1384:27:0;1407:4;1384:27;;;1244:175::o;335:174::-;454:20;493:8;;;335:174::o;11060:140::-;11140:52;11159:10;11171:9;11182;11140:18;:52::i;9488:228::-;9614:12;;:17;9606:53;;;;;-1:-1:-1;;;9606:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9670:38;9687:5;9694:3;9699:8;9670:16;:38::i;2643:697::-;2695:13;2721:18;;2780:6;2776:375;;-1:-1:-1;;;2803:16:0;-1:-1:-1;2834:5:0;;2776:375;;;2888:1;2904:236;2911:9;;2904:236;;2985:6;2970:10;2962:30;;-1:-1:-1;3044:2:0;3036:5;:10;3050:2;3035:17;-1:-1:-1;;;3034:35:0;3026:44;;3012:58;;;;3098:2;3089:11;;;;;;3119:5;;;;;3089:11;;-1:-1:-1;2904:236:0;;;2776:375;;3163:16;3192:3;3182:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;3182:14:0;87:34:-1;135:17;;-1:-1;3182:14:0;-1:-1:-1;3163:33:0;-1:-1:-1;3207:9:0;3229:75;3245:3;3241:1;:7;3229:75;;;3279:10;3290:1;3279:13;;;;;;;;;;3270:3;3274:1;3270:6;;;;;;;;;;;:22;-1:-1:-1;;;;;3270:22:0;;;;;;;;-1:-1:-1;3250:3:0;;3229:75;;;-1:-1:-1;3328:3:0;2643:697;-1:-1:-1;;;;2643:697:0:o;8443:148::-;8518:13;8575:2;8579;8558:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;8558:24:0;;;;;;;;;;-1:-1:-1;8558:24:0;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8558:24:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8558:24:0;;;8544:39;;8443:148;;;;:::o;11646:150::-;11728:4;11752:36;11770:6;11778:9;11752:17;:36::i;14994:190::-;15061:21;15085:7;:5;:7::i;:::-;15096:6;:18;;-1:-1:-1;;;;;;15096:18:0;-1:-1:-1;;;;;15096:18:0;;;;;;;;;15130:46;;15061:31;;-1:-1:-1;15096:18:0;15130:46;;;;;;-1:-1:-1;;15130:46:0;14994:190;;:::o;11970:250::-;12052:4;12068:13;12084:17;12092:8;12084:7;:17::i;:::-;12068:33;;12132:5;-1:-1:-1;;;;;12120:17:0;:8;-1:-1:-1;;;;;12120:17:0;;:54;;;;12166:8;-1:-1:-1;;;;;12141:33:0;:21;12153:8;12141:11;:21::i;:::-;-1:-1:-1;;;;;12141:33:0;;12120:54;:91;;;;12178:33;12195:5;12202:8;12178:16;:33::i;:::-;12112:100;11970:250;-1:-1:-1;;;;11970:250:0:o;12228:299::-;12313:24;12328:8;12313:14;:24::i;:::-;12348:21;;;;:11;:21;;;;;;;;:27;;-1:-1:-1;;;;;;12348:27:0;-1:-1:-1;;;;;12348:27:0;;;;;;;;;;12404:15;;;;:8;:15;;;;;;;:22;;:19;:22::i;:::-;-1:-1:-1;;;;;12386:15:0;;;;;;;:8;:15;;;;;;:40;;;;12453:13;;;;;;;:20;;12471:1;12453:20;:17;:20;:::i;:::-;-1:-1:-1;;;;;12437:13:0;;;;;;;:8;:13;;;;;;:36;;;;12489:30;;12510:8;;12437:13;;12489:30;;;;;;12228:299;;;:::o;12537:265::-;12612:16;12619:8;12612:6;:16::i;:::-;12611:17;12603:55;;;;;-1:-1:-1;;;12603:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12669:21;;;;:11;:21;;;;;;;;:27;;-1:-1:-1;;;;;;12669:27:0;-1:-1:-1;;;;;12669:27:0;;;;;;;;12723:13;;:8;:13;;;;;;;:20;;:17;:20::i;:::-;-1:-1:-1;;;;;12707:13:0;;;;;;:8;:13;;;;;;:36;;;;12759:35;;12785:8;;12707:13;12759:35;;12707:13;;12759:35;12537:265;;:::o;13336:420::-;13514:4;13542:16;:3;-1:-1:-1;;;;;13542:14:0;;:16::i;:::-;13537:61;;-1:-1:-1;13582:4:0;13575:11;;13537:61;13624:78;;-1:-1:-1;;;13624:78:0;;13667:10;13624:78;;;;;;-1:-1:-1;;;;;13624:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13608:13;;13624:42;;;;;;13667:10;;13679:5;;13686:8;;13696:5;;13624:78;;;;;;;;;;;13608:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13624:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13624:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13624:78:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13624:78:0;-1:-1:-1;;;;;;13721:26:0;-1:-1:-1;;;13721:26:0;;-1:-1:-1;;13336:420:0;;;;;;:::o;11208:216::-;-1:-1:-1;;;;;11307:26:0;;;;;;;:18;:26;;;;;;;;:37;;;;;;;;;;;;;:49;;-1:-1:-1;;11307:49:0;;;;;;;;;;11372:44;;;;;;;;;;;;;;;;;11208:216;;;:::o;11808:154::-;-1:-1:-1;;;;;11917:26:0;;;11893:4;11917:26;;;:18;:26;;;;;;;;:37;;;;;;;;;;;;;;;11808:154::o;13764:174::-;13864:1;13829:23;;;:14;:23;;;;;;-1:-1:-1;;;;;13829:23:0;:37;13825:106;;13917:1;13883:23;;;:14;:23;;;;;:36;;-1:-1:-1;;;;;;13883:36:0;;;13764:174::o;1947:148::-;2005:7;2038:1;2033;:6;;2025:39;;;;;-1:-1:-1;;;2025:39:0;;;;;;;;;;;;-1:-1:-1;;;2025:39:0;;;;;;;;;;;;;;;-1:-1:-1;2082:5:0;;;1947:148::o;26574:1268::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26574:1268:0;;;-1:-1:-1;26574:1268:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;7676:136;7732:6;7759;;;7751:30;;;;;-1:-1:-1;;;7751:30:0;;;;;;;;;;;;-1:-1:-1;;;7751:30:0;;;;;;;;;;;;;;;7803:1;7799:5;;:1;:5;;;;;;7530:138;7586:6;7613;;;7605:32;;;;;-1:-1:-1;;;7605:32:0;;;;;;;;;;;;-1:-1:-1;;;7605:32:0;;;;;;;;;;;;;;;7659:1;7655:5;;:1;:5;;;;;
Swarm Source
bzzr://6b3b4f7ebc3669a9bd1825f180b7b912271e188990be2d302965d1c48aa74536
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.