More Info
Private Name Tags
ContractCreator:
TokenTracker
Latest 25 from a total of 14,700 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 54891307 | 8 days ago | IN | 0 MATIC | 0.0016971 | ||||
Safe Transfer Fr... | 54774893 | 11 days ago | IN | 0 MATIC | 0.0034908 | ||||
Safe Transfer Fr... | 54774822 | 11 days ago | IN | 0 MATIC | 0.00342464 | ||||
Set Approval For... | 54766334 | 11 days ago | IN | 0 MATIC | 0.00180424 | ||||
Set Approval For... | 54740289 | 12 days ago | IN | 0 MATIC | 0.00233912 | ||||
Set Approval For... | 54542209 | 17 days ago | IN | 0 MATIC | 0.00387404 | ||||
Set Approval For... | 54487968 | 18 days ago | IN | 0 MATIC | 0.00475254 | ||||
Set Approval For... | 54016948 | 30 days ago | IN | 0 MATIC | 0.00155187 | ||||
Set Approval For... | 54016464 | 30 days ago | IN | 0 MATIC | 0.00155187 | ||||
Set Approval For... | 53984754 | 31 days ago | IN | 0 MATIC | 0.00903089 | ||||
Set Approval For... | 53609121 | 40 days ago | IN | 0 MATIC | 0.00187145 | ||||
Set Approval For... | 53577722 | 41 days ago | IN | 0 MATIC | 0.00248512 | ||||
Transfer From | 53127857 | 53 days ago | IN | 0 MATIC | 0.00625051 | ||||
Transfer From | 53117500 | 53 days ago | IN | 0 MATIC | 0.00789574 | ||||
Set Approval For... | 52948444 | 57 days ago | IN | 0 MATIC | 0.00169979 | ||||
Set Approval For... | 52686577 | 64 days ago | IN | 0 MATIC | 0.00094567 | ||||
Set Approval For... | 52583079 | 67 days ago | IN | 0 MATIC | 0.00171418 | ||||
Safe Transfer Fr... | 52582277 | 67 days ago | IN | 0 MATIC | 0.00425746 | ||||
Safe Transfer Fr... | 52582265 | 67 days ago | IN | 0 MATIC | 0.00506828 | ||||
Safe Transfer Fr... | 52582257 | 67 days ago | IN | 0 MATIC | 0.00385769 | ||||
Safe Transfer Fr... | 52582249 | 67 days ago | IN | 0 MATIC | 0.00403884 | ||||
Safe Transfer Fr... | 52582241 | 67 days ago | IN | 0 MATIC | 0.00485852 | ||||
Safe Transfer Fr... | 52582234 | 67 days ago | IN | 0 MATIC | 0.0050533 | ||||
Safe Transfer Fr... | 52582229 | 67 days ago | IN | 0 MATIC | 0.0049098 | ||||
Safe Transfer Fr... | 52578944 | 67 days ago | IN | 0 MATIC | 0.00265532 |
Latest 25 internal transactions (View All)
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
31598434 | 600 days ago | 75 MATIC | ||||
25201083 | 766 days ago | 90 MATIC | ||||
23385154 | 812 days ago | 75 MATIC | ||||
23217557 | 817 days ago | 90 MATIC | ||||
22836508 | 827 days ago | 80 MATIC | ||||
22634671 | 832 days ago | 2 MATIC | ||||
22416105 | 837 days ago | 90 MATIC | ||||
22006993 | 848 days ago | 690 MATIC | ||||
21701220 | 856 days ago | 100 MATIC | ||||
21561800 | 860 days ago | 80 MATIC | ||||
21538633 | 860 days ago | 75 MATIC | ||||
21506461 | 861 days ago | 75 MATIC | ||||
21122314 | 871 days ago | 75 MATIC | ||||
21095269 | 872 days ago | 50 MATIC | ||||
21087512 | 872 days ago | 75 MATIC | ||||
20823001 | 879 days ago | 300 MATIC | ||||
20490659 | 888 days ago | 100 MATIC | ||||
20353704 | 892 days ago | 100 MATIC | ||||
20347535 | 892 days ago | 75 MATIC | ||||
20194958 | 896 days ago | 200 MATIC | ||||
19660693 | 910 days ago | 75 MATIC | ||||
19485579 | 915 days ago | 75 MATIC | ||||
19448974 | 916 days ago | 75 MATIC | ||||
19421696 | 917 days ago | 75 MATIC | ||||
19408020 | 917 days ago | 2 MATIC |
Loading...
Loading
Contract Name:
Polypunk
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-07-03 */ /** *Submitted for verification at polygonscan.com on 2021-07-03 */ pragma solidity 0.7.6; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { 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 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom(address from, address to, uint256 tokenId) external; function transferFrom(address from, address to, uint256 tokenId) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } interface ERC721TokenReceiver { function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4); } library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a); return c; } } contract Polypunk is IERC721 { using SafeMath for uint256; event Mint(uint indexed index, address indexed minter); event PunkOffered(uint indexed punkIndex, uint minValue, address indexed toAddress); event PunkBidEntered(uint indexed punkIndex, uint value, address indexed fromAddress); event PunkBidWithdrawn(uint indexed punkIndex, uint value, address indexed fromAddress); event PunkBought(uint indexed punkIndex, uint value, address indexed fromAddress, address indexed toAddress); event PunkNoLongerForSale(uint indexed punkIndex); /** * Event emitted when the public sale begins. */ event SaleBegins(); bytes4 internal constant MAGIC_ON_ERC721_RECEIVED = 0x150b7a02; uint public constant TOKEN_LIMIT = 10000; mapping(bytes4 => bool) internal supportedInterfaces; mapping (uint256 => address) internal idToOwner; mapping (uint256 => address) internal idToApproval; mapping (address => mapping (address => bool)) internal ownerToOperators; mapping(address => uint256[]) internal ownerToIds; mapping(uint256 => uint256) internal idToOwnerIndex; string internal nftName = "Polypunk"; string internal nftSymbol = "Polypunk"; // You can use this hash to verify the image file containing all the punks string public imageHash; uint internal numTokens = 0; uint internal numSales = 0; address payable internal deployer; address payable internal marketer; address payable internal developer; bool public publicSale = false; uint private mintPrice = 75 ether; uint public saleStartTime; //// Random index assignment uint internal nonce = 0; uint[TOKEN_LIMIT] internal indices; //// Market bool public marketPaused; bool public contractSealed; mapping (address => uint256) public ethBalance; mapping (bytes32 => bool) public cancelledOffers; modifier onlyDeployer() { require(msg.sender == deployer, "Only deployer."); _; } bool private reentrancyLock = false; /* Prevent a contract function from being reentrant-called. */ modifier reentrancyGuard { if (reentrancyLock) { revert(); } reentrancyLock = true; _; reentrancyLock = false; } modifier canOperate(uint256 _tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == msg.sender || ownerToOperators[tokenOwner][msg.sender], "Cannot operate."); _; } modifier canTransfer(uint256 _tokenId) { address tokenOwner = idToOwner[_tokenId]; require( tokenOwner == msg.sender || idToApproval[_tokenId] == msg.sender || ownerToOperators[tokenOwner][msg.sender], "Cannot transfer." ); _; } modifier validNFToken(uint256 _tokenId) { require(idToOwner[_tokenId] != address(0), "Invalid token."); _; } constructor(address payable _marketer, address payable _developer, string memory _imageHash) { supportedInterfaces[0x01ffc9a7] = true; // ERC165 supportedInterfaces[0x80ac58cd] = true; // ERC721 supportedInterfaces[0x780e9d63] = true; // ERC721 Enumerable supportedInterfaces[0x5b5e139f] = true; // ERC721 Metadata deployer = msg.sender; marketer = _marketer; developer = _developer; imageHash = _imageHash; } function startSale() external onlyDeployer { require(!publicSale); saleStartTime = block.timestamp; publicSale = true; emit SaleBegins(); } function pauseMarket(bool _paused) external onlyDeployer { require(!contractSealed, "Contract sealed."); marketPaused = _paused; } function sealContract() external onlyDeployer { contractSealed = true; } ////////////////////////// //// ERC 721 and 165 //// ////////////////////////// function isContract(address _addr) internal view returns (bool addressCheck) { uint256 size; assembly { size := extcodesize(_addr) } // solhint-disable-line addressCheck = size > 0; } function supportsInterface(bytes4 _interfaceID) external view override returns (bool) { return supportedInterfaces[_interfaceID]; } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata _data) external override { _safeTransferFrom(_from, _to, _tokenId, _data); } function safeTransferFrom(address _from, address _to, uint256 _tokenId) external override { _safeTransferFrom(_from, _to, _tokenId, ""); } function transferFrom(address _from, address _to, uint256 _tokenId) external override canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, "Wrong from address."); require(_to != address(0), "Cannot send to 0x0."); _transfer(_to, _tokenId); } function approve(address _approved, uint256 _tokenId) external override canOperate(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(_approved != tokenOwner); idToApproval[_tokenId] = _approved; emit Approval(tokenOwner, _approved, _tokenId); } function setApprovalForAll(address _operator, bool _approved) external override { ownerToOperators[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } function balanceOf(address _owner) external view override returns (uint256) { require(_owner != address(0)); return _getOwnerNFTCount(_owner); } function ownerOf(uint256 _tokenId) public view override returns (address _owner) { require(idToOwner[_tokenId] != address(0)); _owner = idToOwner[_tokenId]; } function getApproved(uint256 _tokenId) external view override validNFToken(_tokenId) returns (address) { return idToApproval[_tokenId]; } function isApprovedForAll(address _owner, address _operator) external override view returns (bool) { return ownerToOperators[_owner][_operator]; } function _transfer(address _to, uint256 _tokenId) internal { address from = idToOwner[_tokenId]; _clearApproval(_tokenId); _removeNFToken(from, _tokenId); _addNFToken(_to, _tokenId); emit Transfer(from, _to, _tokenId); } function randomIndex() internal returns (uint) { uint totalSize = TOKEN_LIMIT - numTokens; uint index = uint(keccak256(abi.encodePacked(nonce, msg.sender, block.difficulty, block.timestamp))) % totalSize; uint value = 0; if (indices[index] != 0) { value = indices[index]; } else { value = index; } // Move last value to selected position if (indices[totalSize - 1] == 0) { // Array position not initialized, so use position indices[index] = totalSize - 1; } else { // Array position holds a value so use that indices[index] = indices[totalSize - 1]; } nonce++; // Don't allow a zero index, start counting at 1 return value.add(1); } function mintsRemaining() external view returns (uint) { return TOKEN_LIMIT.sub(numSales); } /** * Public sale minting. */ function mint(uint256 numberOfNfts) external payable reentrancyGuard { require(publicSale, "Sale not started."); require(!marketPaused); require(numberOfNfts > 0, "numberOfNfts cannot be 0"); require(numberOfNfts <= 20, "You can not buy more than 20 NFTs at once"); require(totalSupply().add(numberOfNfts) <= TOKEN_LIMIT, "Exceeds TOKEN_LIMIT"); require(mintPrice.mul(numberOfNfts) == msg.value, "eth value sent is not correct"); marketer.transfer(msg.value.div(2)); developer.transfer(msg.value.div(2)); for (uint i = 0; i < numberOfNfts; i++) { numSales++; _mint(msg.sender); } } function _mint(address _to) internal returns (uint) { require(_to != address(0), "Cannot mint to 0x0."); require(numTokens < TOKEN_LIMIT, "Token limit reached."); uint id = randomIndex(); numTokens = numTokens + 1; _addNFToken(_to, id); emit Mint(id, _to); emit Transfer(address(0), _to, id); return id; } function _addNFToken(address _to, uint256 _tokenId) internal { require(idToOwner[_tokenId] == address(0), "Cannot add, already owned."); idToOwner[_tokenId] = _to; ownerToIds[_to].push(_tokenId); idToOwnerIndex[_tokenId] = ownerToIds[_to].length.sub(1); } function _removeNFToken(address _from, uint256 _tokenId) internal { require(idToOwner[_tokenId] == _from, "Incorrect owner."); delete idToOwner[_tokenId]; uint256 tokenToRemoveIndex = idToOwnerIndex[_tokenId]; uint256 lastTokenIndex = ownerToIds[_from].length.sub(1); if (lastTokenIndex != tokenToRemoveIndex) { uint256 lastToken = ownerToIds[_from][lastTokenIndex]; ownerToIds[_from][tokenToRemoveIndex] = lastToken; idToOwnerIndex[lastToken] = tokenToRemoveIndex; } ownerToIds[_from].pop(); } function _getOwnerNFTCount(address _owner) internal view returns (uint256) { return ownerToIds[_owner].length; } function _safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) private canTransfer(_tokenId) validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, "Incorrect owner."); require(_to != address(0)); _transfer(_to, _tokenId); if (isContract(_to)) { bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); require(retval == MAGIC_ON_ERC721_RECEIVED); } } function _safeTransfer(address _from, address _to, uint256 _tokenId, bytes memory _data) private validNFToken(_tokenId) { address tokenOwner = idToOwner[_tokenId]; require(tokenOwner == _from, "Incorrect owner."); require(_to != address(0)); _transfer(_to, _tokenId); if (isContract(_to)) { bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data); require(retval == MAGIC_ON_ERC721_RECEIVED); } } function _clearApproval(uint256 _tokenId) private { if (idToApproval[_tokenId] != address(0)) { delete idToApproval[_tokenId]; } } //// Enumerable function totalSupply() public view returns (uint256) { return numTokens; } function tokenByIndex(uint256 index) public pure returns (uint256) { require(index >= 0 && index < TOKEN_LIMIT); return index + 1; } function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256) { require(_index < ownerToIds[_owner].length); return ownerToIds[_owner][_index]; } //// Metadata /** * @dev Converts a `uint256` to its ASCII `string` representation. */ function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); uint256 index = digits - 1; temp = value; while (temp != 0) { buffer[index--] = bytes1(uint8(48 + temp % 10)); temp /= 10; } return string(buffer); } /** * @dev Returns a descriptive name for a collection of NFTokens. * @return _name Representing name. */ function name() external view returns (string memory _name) { _name = nftName; } /** * @dev Returns an abbreviated name for NFTokens. * @return _symbol Representing symbol. */ function symbol() external view returns (string memory _symbol) { _symbol = nftSymbol; } /** * @dev A distinct URI (RFC 3986) for a given NFT. * @param _tokenId Id for which we want uri. * @return _tokenId URI of _tokenId. */ function tokenURI(uint256 _tokenId) external view validNFToken(_tokenId) returns (string memory) { return string(abi.encodePacked("https://polypunks.app/punks/", toString(_tokenId))); } //// MARKET struct Offer { bool isForSale; uint punkIndex; address seller; uint minValue; // in ether address onlySellTo; // specify to sell only to a specific person } struct Bid { bool hasBid; uint punkIndex; address bidder; uint value; } // A record of punks that are offered for sale at a specific minimum value, and perhaps to a specific person mapping (uint => Offer) public punksOfferedForSale; // A record of the highest punk bid mapping (uint => Bid) public punkBids; mapping (address => uint) public pendingWithdrawals; modifier onlyTokenOwner (uint256 _tokenId) { require(_tokenId < 10000, "punk number is wrong"); require(ownerOf(_tokenId) == msg.sender, "Incorrect owner."); _; } function punkNoLongerForSale(uint punkIndex) public reentrancyGuard onlyTokenOwner(punkIndex) { _punkNoLongerForSale(punkIndex); } function _punkNoLongerForSale(uint punkIndex) private { punksOfferedForSale[punkIndex] = Offer(false, punkIndex, msg.sender, 0, address(0)); emit PunkNoLongerForSale(punkIndex); } function offerPunkForSale(uint punkIndex, uint minSalePriceInWei) public reentrancyGuard onlyTokenOwner(punkIndex){ require(marketPaused == false, 'Market Paused'); punksOfferedForSale[punkIndex] = Offer(true, punkIndex, msg.sender, minSalePriceInWei, address(0)); emit PunkOffered(punkIndex, minSalePriceInWei, address(0)); } function offerPunkForSaleToAddress(uint punkIndex, uint minSalePriceInWei, address toAddress) public reentrancyGuard onlyTokenOwner(punkIndex){ require(marketPaused == false, 'Market Paused'); punksOfferedForSale[punkIndex] = Offer(true, punkIndex, msg.sender, minSalePriceInWei, toAddress); emit PunkOffered(punkIndex, minSalePriceInWei, toAddress); } function buyPunk(uint punkIndex) public payable reentrancyGuard{ require(marketPaused == false, 'Market Paused'); require(punkIndex < 10000, "punk number is wrong"); Offer memory offer = punksOfferedForSale[punkIndex]; require(offer.isForSale, "punk not actually for sale"); require(offer.onlySellTo == address(0) || offer.onlySellTo == msg.sender, "punk not supposed to be sold to this user"); require(msg.value >= offer.minValue, "Didn't send enough amount"); require(ownerOf(punkIndex) == offer.seller, "Seller no longer owner of punk"); address seller = offer.seller; _safeTransfer(seller, msg.sender, punkIndex, ""); _punkNoLongerForSale(punkIndex); pendingWithdrawals[seller] += msg.value; emit PunkBought(punkIndex, msg.value, seller, msg.sender); // Check for the case where there is a bid from the new owner and refund it. // Any other bid can stay in place. Bid memory bid = punkBids[punkIndex]; if (bid.bidder == msg.sender) { // Kill bid and refund value pendingWithdrawals[msg.sender] += bid.value; punkBids[punkIndex] = Bid(false, punkIndex, address(0), 0); } } function withdraw() public reentrancyGuard{ uint amount = pendingWithdrawals[msg.sender]; // Remember to zero the pending refund before // sending to prevent re-entrancy attacks pendingWithdrawals[msg.sender] = 0; msg.sender.transfer(amount); } function enterBidForPunk(uint punkIndex) public payable reentrancyGuard{ require(marketPaused == false, 'Market Paused'); require(punkIndex < 10000, "punk number is wrong"); require(ownerOf(punkIndex) != msg.sender, 'you can not bid on your punk'); require(msg.value > 0, 'bid can not be zero'); Bid memory existing = punkBids[punkIndex]; require(msg.value > existing.value, "you can not bid lower than last bid"); if (existing.value > 0) { // Refund the failing bid pendingWithdrawals[existing.bidder] += existing.value; } punkBids[punkIndex] = Bid(true, punkIndex, msg.sender, msg.value); emit PunkBidEntered(punkIndex, msg.value, msg.sender); } function acceptBidForPunk(uint punkIndex, uint minPrice) public reentrancyGuard onlyTokenOwner(punkIndex){ require(marketPaused == false, 'Market Paused'); address seller = msg.sender; Bid memory bid = punkBids[punkIndex]; require(bid.value > 0, 'there is not any bid'); require(bid.value >= minPrice, 'bid is lower than min price'); _punkNoLongerForSale(punkIndex); _safeTransfer(seller, bid.bidder, punkIndex, ""); uint amount = bid.value; punkBids[punkIndex] = Bid(false, punkIndex, address(0), 0); pendingWithdrawals[seller] += amount; emit PunkBought(punkIndex, bid.value, seller, bid.bidder); } function withdrawBidForPunk(uint punkIndex) public reentrancyGuard{ require(punkIndex < 10000, "punk number is wrong"); require(ownerOf(punkIndex) != msg.sender, "wrong action"); require(punkBids[punkIndex].bidder == msg.sender, "Only bidder can withdraw"); Bid memory bid = punkBids[punkIndex]; emit PunkBidWithdrawn(punkIndex, bid.value, msg.sender); uint amount = bid.value; punkBids[punkIndex] = Bid(false, punkIndex, address(0), 0); // Refund the bid money msg.sender.transfer(amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_marketer","type":"address"},{"internalType":"address payable","name":"_developer","type":"address"},{"internalType":"string","name":"_imageHash","type":"string"}],"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":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"punkIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"}],"name":"PunkBidEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"punkIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"}],"name":"PunkBidWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"punkIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"PunkBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"punkIndex","type":"uint256"}],"name":"PunkNoLongerForSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"punkIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minValue","type":"uint256"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"PunkOffered","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleBegins","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"},{"inputs":[],"name":"TOKEN_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"},{"internalType":"uint256","name":"minPrice","type":"uint256"}],"name":"acceptBidForPunk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"}],"name":"buyPunk","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"cancelledOffers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"}],"name":"enterBidForPunk","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"imageHash","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfNfts","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintsRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"},{"internalType":"uint256","name":"minSalePriceInWei","type":"uint256"}],"name":"offerPunkForSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"},{"internalType":"uint256","name":"minSalePriceInWei","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"offerPunkForSaleToAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"pauseMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingWithdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"punkBids","outputs":[{"internalType":"bool","name":"hasBid","type":"bool"},{"internalType":"uint256","name":"punkIndex","type":"uint256"},{"internalType":"address","name":"bidder","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"}],"name":"punkNoLongerForSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"punksOfferedForSale","outputs":[{"internalType":"bool","name":"isForSale","type":"bool"},{"internalType":"uint256","name":"punkIndex","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"address","name":"onlySellTo","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sealContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"punkIndex","type":"uint256"}],"name":"withdrawBidForPunk","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600881526020017f506f6c7970756e6b000000000000000000000000000000000000000000000000815250600690805190602001906200005192919062000424565b506040518060400160405280600881526020017f506f6c7970756e6b000000000000000000000000000000000000000000000000815250600790805190602001906200009f92919062000424565b5060006009556000600a556000600d60146101000a81548160ff021916908315150217905550680410d586a20a4c0000600e556000601055600061272460006101000a81548160ff0219169083151502179055503480156200010057600080fd5b506040516200649b3803806200649b833981810160405260608110156200012657600080fd5b810190808051906020019092919080519060200190929190805160405193929190846401000000008211156200015b57600080fd5b838201915060208201858111156200017257600080fd5b82518660018202830111640100000000821117156200019057600080fd5b8083526020830192505050908051906020019080838360005b83811015620001c6578082015181840152602081019050620001a9565b50505050905090810190601f168015620001f45780820380516001836020036101000a031916815260200191505b5060405250505060016000806301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000806380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160008063780e9d6360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600080635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600890805190602001906200041a92919062000424565b50505050620004da565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200045c5760008555620004a8565b82601f106200047757805160ff1916838001178555620004a8565b82800160010185558215620004a8579182015b82811115620004a75782518255916020019190600101906200048a565b5b509050620004b79190620004bb565b5090565b5b80821115620004d6576000816000905550600101620004bc565b5090565b615fb180620004ea6000396000f3fe60806040526004361061023b5760003560e01c80636352211e1161012e578063b6501637116100ab578063c87b56dd1161006f578063c87b56dd14610d9a578063d8f3790f14610e4e578063e985e9c514610eb3578063f3f4370314610f3a578063f6eeff1e14610f9f5761023b565b8063b650163714610bdc578063b66a0e5d14610c09578063b88d4fde14610c20578063bf31196f14610cf0578063c44193c314610d555761023b565b806395d89b41116100f257806395d89b4114610a35578063979bc63814610ac55780639f7bf76214610b00578063a0712d6814610b51578063a22cb46514610b7f5761023b565b80636352211e146108aa57806368bd580e1461090f5780636e743fa91461092657806370a08231146109a25780638264fe9814610a075761023b565b806323b872dd116101bc57806342842e0e1161018057806342842e0e146106e857806344c66be7146107635780634f6ccce71461078e57806351605d80146107dd5780635ec390d81461086d5761023b565b806323b872dd1461058d5780632f745c591461060857806333bc1c5c146106775780633a283bd2146106a45780633ccfd60b146106d15761023b565b8063091dbfd211610203578063091dbfd214610469578063095ea7b31461049757806318160ddd146104f25780631cbaee2d1461051d57806323165b75146105485761023b565b806301ffc9a714610240578063031bd4c4146102b057806306fdde03146102db578063081812fc1461036b578063088f11f3146103d0575b600080fd5b34801561024c57600080fd5b506102986004803603602081101561026357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610fda565b60405180821515815260200191505060405180910390f35b3480156102bc57600080fd5b506102c5611041565b6040518082815260200191505060405180910390f35b3480156102e757600080fd5b506102f0611047565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610330578082015181840152602081019050610315565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037757600080fd5b506103a46004803603602081101561038e57600080fd5b81019080803590602001909291905050506110e9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103dc57600080fd5b50610409600480360360208110156103f357600080fd5b81019080803590602001909291905050506111fe565b6040518086151581526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6104956004803603602081101561047f57600080fd5b8101908080359060200190929190505050611282565b005b3480156104a357600080fd5b506104f0600480360360408110156104ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061177d565b005b3480156104fe57600080fd5b50610507611ae5565b6040518082815260200191505060405180910390f35b34801561052957600080fd5b50610532611aef565b6040518082815260200191505060405180910390f35b34801561055457600080fd5b5061058b6004803603604081101561056b57600080fd5b810190808035906020019092919080359060200190929190505050611af5565b005b34801561059957600080fd5b50610606600480360360608110156105b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612057565b005b34801561061457600080fd5b506106616004803603604081101561062b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612491565b6040518082815260200191505060405180910390f35b34801561068357600080fd5b5061068c61253e565b60405180821515815260200191505060405180910390f35b3480156106b057600080fd5b506106b9612551565b60405180821515815260200191505060405180910390f35b3480156106dd57600080fd5b506106e6612565565b005b3480156106f457600080fd5b506107616004803603606081101561070b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061268d565b005b34801561076f57600080fd5b506107786126ad565b6040518082815260200191505060405180910390f35b34801561079a57600080fd5b506107c7600480360360208110156107b157600080fd5b81019080803590602001909291905050506126cb565b6040518082815260200191505060405180910390f35b3480156107e957600080fd5b506107f26126f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610832578082015181840152602081019050610817565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087957600080fd5b506108a86004803603602081101561089057600080fd5b81019080803515159060200190929190505050612790565b005b3480156108b657600080fd5b506108e3600480360360208110156108cd57600080fd5b81019080803590602001909291905050506128f5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561091b57600080fd5b5061092461299e565b005b34801561093257600080fd5b5061095f6004803603602081101561094957600080fd5b8101908080359060200190929190505050612a7f565b6040518085151581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b3480156109ae57600080fd5b506109f1600480360360208110156109c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612add565b6040518082815260200191505060405180910390f35b610a3360048036036020811015610a1d57600080fd5b8101908080359060200190929190505050612b28565b005b348015610a4157600080fd5b50610a4a6132c3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a8a578082015181840152602081019050610a6f565b50505050905090810190601f168015610ab75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ad157600080fd5b50610afe60048036036020811015610ae857600080fd5b8101908080359060200190929190505050613365565b005b348015610b0c57600080fd5b50610b3960048036036020811015610b2357600080fd5b81019080803590602001909291905050506137cf565b60405180821515815260200191505060405180910390f35b610b7d60048036036020811015610b6757600080fd5b81019080803590602001909291905050506137f0565b005b348015610b8b57600080fd5b50610bda60048036036040811015610ba257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613bfa565b005b348015610be857600080fd5b50610bf1613cf9565b60405180821515815260200191505060405180910390f35b348015610c1557600080fd5b50610c1e613d0d565b005b348015610c2c57600080fd5b50610cee60048036036080811015610c4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610caa57600080fd5b820183602082011115610cbc57600080fd5b80359060200191846001830284011164010000000083111715610cde57600080fd5b9091929391929390505050613e3a565b005b348015610cfc57600080fd5b50610d5360048036036060811015610d1357600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e91565b005b348015610d6157600080fd5b50610d9860048036036040811015610d7857600080fd5b810190808035906020019092919080359060200190929190505050614213565b005b348015610da657600080fd5b50610dd360048036036020811015610dbd57600080fd5b8101908080359060200190929190505050614596565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e13578082015181840152602081019050610df8565b50505050905090810190601f168015610e405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e5a57600080fd5b50610e9d60048036036020811015610e7157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614712565b6040518082815260200191505060405180910390f35b348015610ebf57600080fd5b50610f2260048036036040811015610ed657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061472b565b60405180821515815260200191505060405180910390f35b348015610f4657600080fd5b50610f8960048036036020811015610f5d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506147bf565b6040518082815260200191505060405180910390f35b348015610fab57600080fd5b50610fd860048036036020811015610fc257600080fd5b81019080803590602001909291905050506147d8565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b61271081565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110df5780601f106110b4576101008083540402835291602001916110df565b820191906000526020600020905b8154815290600101906020018083116110c257829003601f168201915b5050505050905090565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b6002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6127256020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b61272460009054906101000a900460ff161561129d57600080fd5b600161272460006101000a81548160ff0219169083151502179055506000151561272160009054906101000a900460ff16151514611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b61271081106113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166113da826128f5565b73ffffffffffffffffffffffffffffffffffffffff161415611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f796f752063616e206e6f7420626964206f6e20796f75722070756e6b0000000081525060200191505060405180910390fd5b600034116114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6269642063616e206e6f74206265207a65726f0000000000000000000000000081525060200191505060405180910390fd5b600061272660008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815250509050806060015134116115de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f596023913960400191505060405180910390fd5b6000816060015111156116425780606001516127276000836040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b60405180608001604052806001151581526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815260200134815250612726600084815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff16827f5b859394fabae0c1ba88baffe67e751ab5248d2e879028b8c8d6897b0519f56a346040518082815260200191505060405180910390a350600061272460006101000a81548160ff02191690831515021790555050565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118765750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43616e6e6f74206f7065726174652e000000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611a3057600080fd5b856002600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050505050565b6000600954905090565b600f5481565b61272460009054906101000a900460ff1615611b1057600080fd5b600161272460006101000a81548160ff021916908315150217905550816127108110611ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16611bc4826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614611c4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6000151561272160009054906101000a900460ff16151514611cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000339050600061272660008681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090506000816060015111611dfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7468657265206973206e6f7420616e792062696400000000000000000000000081525060200191505060405180910390fd5b8381606001511015611e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f626964206973206c6f776572207468616e206d696e207072696365000000000081525060200191505060405180910390fd5b611e8185614959565b611ea08282604001518760405180602001604052806000815250614aba565b6000816060015190506040518060800160405280600015158152602001878152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250612726600088815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050508061272760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816040015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16877f58e5d5a525e3b40bc15abaa38b5882678db1ee68befd2f60bafe3a7fd06db9e385606001516040518082815260200191505060405180910390a450505050600061272460006101000a81548160ff0219169083151502179055505050565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061212857503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806121b95750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61222b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f57726f6e672066726f6d20616464726573732e0000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561247e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f742073656e6420746f203078302e0000000000000000000000000081525060200191505060405180910390fd5b6124888686614e52565b50505050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905082106124e157600080fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061252b57fe5b9060005260206000200154905092915050565b600d60149054906101000a900460ff1681565b61272160009054906101000a900460ff1681565b61272460009054906101000a900460ff161561258057600080fd5b600161272460006101000a81548160ff021916908315150217905550600061272760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061272760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561266d573d6000803e3d6000fd5b5050600061272460006101000a81548160ff021916908315150217905550565b6126a883838360405180602001604052806000815250614f07565b505050565b60006126c6600a5461271061547590919063ffffffff16565b905090565b60008082101580156126de575061271082105b6126e757600080fd5b600182019050919050565b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127885780601f1061275d57610100808354040283529160200191612788565b820191906000526020600020905b81548152906001019060200180831161276b57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f6e6c79206465706c6f7965722e00000000000000000000000000000000000081525060200191505060405180910390fd5b61272160019054906101000a900460ff16156128d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f436f6e7472616374207365616c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b8061272160006101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561296357600080fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f6e6c79206465706c6f7965722e00000000000000000000000000000000000081525060200191505060405180910390fd5b600161272160016101000a81548160ff021916908315150217905550565b6127266020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b1857600080fd5b612b218261548f565b9050919050565b61272460009054906101000a900460ff1615612b4357600080fd5b600161272460006101000a81548160ff0219169083151502179055506000151561272160009054906101000a900460ff16151514612be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6127108110612c60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b600061272560008381526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090508060000151612dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f70756e6b206e6f742061637475616c6c7920666f722073616c6500000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff161480612e4357503373ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff16145b612e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615f076029913960400191505060405180910390fd5b8060600151341015612f12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4469646e27742073656e6420656e6f75676820616d6f756e740000000000000081525060200191505060405180910390fd5b806040015173ffffffffffffffffffffffffffffffffffffffff16612f36836128f5565b73ffffffffffffffffffffffffffffffffffffffff1614612fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53656c6c6572206e6f206c6f6e676572206f776e6572206f662070756e6b000081525060200191505060405180910390fd5b600081604001519050612fe381338560405180602001604052806000815250614aba565b612fec83614959565b3461272760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16847f58e5d5a525e3b40bc15abaa38b5882678db1ee68befd2f60bafe3a7fd06db9e3346040518082815260200191505060405180910390a4600061272660008581526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614156132a157806060015161272760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506040518060800160405280600015158152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250612726600086815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050505b505050600061272460006101000a81548160ff02191690831515021790555050565b606060078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561335b5780601f106133305761010080835404028352916020019161335b565b820191906000526020600020905b81548152906001019060200180831161333e57829003601f168201915b5050505050905090565b61272460009054906101000a900460ff161561338057600080fd5b600161272460006101000a81548160ff0219169083151502179055506127108110613413576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613433826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614156134bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720616374696f6e000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16612726600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f6e6c79206269646465722063616e207769746864726177000000000000000081525060200191505060405180910390fd5b600061272660008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090503373ffffffffffffffffffffffffffffffffffffffff16827f6f30e1ee4d81dcc7a8a478577f65d2ed2edb120565960ac45fe7c50551c8793283606001516040518082815260200191505060405180910390a36000816060015190506040518060800160405280600015158152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250612726600085815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137ad573d6000803e3d6000fd5b505050600061272460006101000a81548160ff02191690831515021790555050565b6127236020528060005260406000206000915054906101000a900460ff1681565b61272460009054906101000a900460ff161561380b57600080fd5b600161272460006101000a81548160ff021916908315150217905550600d60149054906101000a900460ff166138a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f53616c65206e6f7420737461727465642e00000000000000000000000000000081525060200191505060405180910390fd5b61272160009054906101000a900460ff16156138c457600080fd5b6000811161393a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e756d6265724f664e6674732063616e6e6f742062652030000000000000000081525060200191505060405180910390fd5b6014811115613994576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615f306029913960400191505060405180910390fd5b6127106139b1826139a3611ae5565b6154db90919063ffffffff16565b1115613a25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4578636565647320544f4b454e5f4c494d49540000000000000000000000000081525060200191505060405180910390fd5b34613a3b82600e546154f590919063ffffffff16565b14613aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6574682076616c75652073656e74206973206e6f7420636f727265637400000081525060200191505060405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613afe60023461552990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613b29573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613b7a60023461552990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613ba5573d6000803e3d6000fd5b5060005b81811015613bda57600a60008154809291906001019190505550613bcc3361553d565b508080600101915050613ba9565b50600061272460006101000a81548160ff02191690831515021790555050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b61272160019054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613dd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f6e6c79206465706c6f7965722e00000000000000000000000000000000000081525060200191505060405180910390fd5b600d60149054906101000a900460ff1615613dea57600080fd5b42600f819055506001600d60146101000a81548160ff0219169083151502179055507f771cfe172460b7d64cc46cca57a1e1f40f52b47cf1d16fe30c78a2935b3dd58060405160405180910390a1565b613e8a85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614f07565b5050505050565b61272460009054906101000a900460ff1615613eac57600080fd5b600161272460006101000a81548160ff021916908315150217905550826127108110613f40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613f60826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614613fe9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6000151561272160009054906101000a900460ff16151514614073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060a001604052806001151581526020018581526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815250612725600086815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508173ffffffffffffffffffffffffffffffffffffffff16847f3c7b682d5da98001a9b8cbda6c647d2c63d698a4184fd1d55e2ce7b66f5d21eb856040518082815260200191505060405180910390a350600061272460006101000a81548160ff021916908315150217905550505050565b61272460009054906101000a900460ff161561422e57600080fd5b600161272460006101000a81548160ff0219169083151502179055508161271081106142c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166142e2826128f5565b73ffffffffffffffffffffffffffffffffffffffff161461436b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6000151561272160009054906101000a900460ff161515146143f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060a001604052806001151581526020018481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001838152602001600073ffffffffffffffffffffffffffffffffffffffff16815250612725600085815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600073ffffffffffffffffffffffffffffffffffffffff16837f3c7b682d5da98001a9b8cbda6c647d2c63d698a4184fd1d55e2ce7b66f5d21eb846040518082815260200191505060405180910390a350600061272460006101000a81548160ff0219169083151502179055505050565b606081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561466f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b61467883615725565b60405160200180807f68747470733a2f2f706f6c7970756e6b732e6170702f70756e6b732f00000000815250601c0182805190602001908083835b602083106146d657805182526020820191506020810190506020830392506146b3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052915050919050565b6127226020528060005260406000206000915090505481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6127276020528060005260406000206000915090505481565b61272460009054906101000a900460ff16156147f357600080fd5b600161272460006101000a81548160ff021916908315150217905550806127108110614887576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166148a7826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614614930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b61493982614959565b50600061272460006101000a81548160ff02191690831515021790555050565b6040518060a001604052806000151581526020018281526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815250612725600083815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050807fb0e0a660b4e50f26f0b7ce75c24655fc76cc66e3334a54ff410277229fa10bd460405160405180910390a250565b81600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614b91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415614ca457600080fd5b614cae8585614e52565b614cb78561586c565b15614e4a5760008573ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614d6b578082015181840152602081019050614d50565b50505050905090810190601f168015614d985780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015614dba57600080fd5b505af1158015614dce573d6000803e3d6000fd5b505050506040513d6020811015614de457600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614614e4857600080fd5b505b505050505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614e938261587f565b614e9d8183615920565b614ea78383615bd3565b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8160006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480614fd857503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806150695750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6150db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b83600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156151b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461528b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156152c557600080fd5b6152cf8787614e52565b6152d88761586c565b1561546b5760008773ffffffffffffffffffffffffffffffffffffffff1663150b7a02338b8a8a6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561538c578082015181840152602081019050615371565b50505050905090810190601f1680156153b95780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156153db57600080fd5b505af11580156153ef573d6000803e3d6000fd5b505050506040513d602081101561540557600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461546957600080fd5b505b5050505050505050565b60008282111561548457600080fd5b818303905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008183019050828110156154ef57600080fd5b92915050565b6000808314156155085760009050615523565b81830290508183828161551757fe5b041461552257600080fd5b5b92915050565b600081838161553457fe5b04905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156155e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f74206d696e7420746f203078302e0000000000000000000000000081525060200191505060405180910390fd5b6127106009541061565a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f546f6b656e206c696d697420726561636865642e00000000000000000000000081525060200191505060405180910390fd5b6000615664615dd1565b905060016009540160098190555061567c8382615bd3565b8273ffffffffffffffffffffffffffffffffffffffff16817ff3cea5493d790af0133817606f7350a91d7f154ea52eaa79d179d4d231e5010260405160405180910390a3808373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480915050919050565b6060600082141561576d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050615867565b600082905060005b60008214615797578080600101915050600a828161578f57fe5b049150615775565b60008167ffffffffffffffff811180156157b057600080fd5b506040519080825280601f01601f1916602001820160405280156157e35781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461585f57600a848161580457fe5b0660300160f81b8282806001900393508151811061581e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161585757fe5b0493506157f2565b819450505050505b919050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461591d576002600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50565b8173ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146159f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6001600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600560008381526020019081526020016000205490506000615a9a6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061547590919063ffffffff16565b9050818114615b6f576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110615aef57fe5b9060005260206000200154905080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110615b4757fe5b9060005260206000200181905550826005600083815260200190815260200160002081905550505b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480615bb757fe5b6001900381819060005260206000200160009055905550505050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616e6e6f74206164642c20616c7265616479206f776e65642e00000000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055615db66001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061547590919063ffffffff16565b60056000838152602001908152602001600020819055505050565b600080600954612710039050600081601054334442604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c81615e4457fe5b0690506000806011836127108110615e5857fe5b015414615e76576011826127108110615e6d57fe5b01549050615e7a565b8190505b60006011600185036127108110615e8d57fe5b01541415615eb157600183036011836127108110615ea757fe5b0181905550615ed8565b6011600184036127108110615ec257fe5b01546011836127108110615ed257fe5b01819055505b601060008154809291906001019190505550615efe6001826154db90919063ffffffff16565b93505050509056fe70756e6b206e6f7420737570706f73656420746f20626520736f6c6420746f20746869732075736572596f752063616e206e6f7420627579206d6f7265207468616e203230204e465473206174206f6e6365796f752063616e206e6f7420626964206c6f776572207468616e206c61737420626964a26469706673582212206365ce7d27e517e7fd10e2b943aabe7f40a8956ee15dc957bf850757c2a76a9464736f6c6343000706003300000000000000000000000050492711c39cda016774ed0ebb3125633e4125e2000000000000000000000000e199659366c5eb279434f1f6bee721a3ee1d202a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004061633339616634373933313139656534366262666633353164386362366235663233646136303232323132366164643432363865323631313939613239323162
Deployed Bytecode
0x60806040526004361061023b5760003560e01c80636352211e1161012e578063b6501637116100ab578063c87b56dd1161006f578063c87b56dd14610d9a578063d8f3790f14610e4e578063e985e9c514610eb3578063f3f4370314610f3a578063f6eeff1e14610f9f5761023b565b8063b650163714610bdc578063b66a0e5d14610c09578063b88d4fde14610c20578063bf31196f14610cf0578063c44193c314610d555761023b565b806395d89b41116100f257806395d89b4114610a35578063979bc63814610ac55780639f7bf76214610b00578063a0712d6814610b51578063a22cb46514610b7f5761023b565b80636352211e146108aa57806368bd580e1461090f5780636e743fa91461092657806370a08231146109a25780638264fe9814610a075761023b565b806323b872dd116101bc57806342842e0e1161018057806342842e0e146106e857806344c66be7146107635780634f6ccce71461078e57806351605d80146107dd5780635ec390d81461086d5761023b565b806323b872dd1461058d5780632f745c591461060857806333bc1c5c146106775780633a283bd2146106a45780633ccfd60b146106d15761023b565b8063091dbfd211610203578063091dbfd214610469578063095ea7b31461049757806318160ddd146104f25780631cbaee2d1461051d57806323165b75146105485761023b565b806301ffc9a714610240578063031bd4c4146102b057806306fdde03146102db578063081812fc1461036b578063088f11f3146103d0575b600080fd5b34801561024c57600080fd5b506102986004803603602081101561026357600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610fda565b60405180821515815260200191505060405180910390f35b3480156102bc57600080fd5b506102c5611041565b6040518082815260200191505060405180910390f35b3480156102e757600080fd5b506102f0611047565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610330578082015181840152602081019050610315565b50505050905090810190601f16801561035d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037757600080fd5b506103a46004803603602081101561038e57600080fd5b81019080803590602001909291905050506110e9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103dc57600080fd5b50610409600480360360208110156103f357600080fd5b81019080803590602001909291905050506111fe565b6040518086151581526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390f35b6104956004803603602081101561047f57600080fd5b8101908080359060200190929190505050611282565b005b3480156104a357600080fd5b506104f0600480360360408110156104ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061177d565b005b3480156104fe57600080fd5b50610507611ae5565b6040518082815260200191505060405180910390f35b34801561052957600080fd5b50610532611aef565b6040518082815260200191505060405180910390f35b34801561055457600080fd5b5061058b6004803603604081101561056b57600080fd5b810190808035906020019092919080359060200190929190505050611af5565b005b34801561059957600080fd5b50610606600480360360608110156105b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612057565b005b34801561061457600080fd5b506106616004803603604081101561062b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612491565b6040518082815260200191505060405180910390f35b34801561068357600080fd5b5061068c61253e565b60405180821515815260200191505060405180910390f35b3480156106b057600080fd5b506106b9612551565b60405180821515815260200191505060405180910390f35b3480156106dd57600080fd5b506106e6612565565b005b3480156106f457600080fd5b506107616004803603606081101561070b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061268d565b005b34801561076f57600080fd5b506107786126ad565b6040518082815260200191505060405180910390f35b34801561079a57600080fd5b506107c7600480360360208110156107b157600080fd5b81019080803590602001909291905050506126cb565b6040518082815260200191505060405180910390f35b3480156107e957600080fd5b506107f26126f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610832578082015181840152602081019050610817565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087957600080fd5b506108a86004803603602081101561089057600080fd5b81019080803515159060200190929190505050612790565b005b3480156108b657600080fd5b506108e3600480360360208110156108cd57600080fd5b81019080803590602001909291905050506128f5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561091b57600080fd5b5061092461299e565b005b34801561093257600080fd5b5061095f6004803603602081101561094957600080fd5b8101908080359060200190929190505050612a7f565b6040518085151581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405180910390f35b3480156109ae57600080fd5b506109f1600480360360208110156109c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612add565b6040518082815260200191505060405180910390f35b610a3360048036036020811015610a1d57600080fd5b8101908080359060200190929190505050612b28565b005b348015610a4157600080fd5b50610a4a6132c3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a8a578082015181840152602081019050610a6f565b50505050905090810190601f168015610ab75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ad157600080fd5b50610afe60048036036020811015610ae857600080fd5b8101908080359060200190929190505050613365565b005b348015610b0c57600080fd5b50610b3960048036036020811015610b2357600080fd5b81019080803590602001909291905050506137cf565b60405180821515815260200191505060405180910390f35b610b7d60048036036020811015610b6757600080fd5b81019080803590602001909291905050506137f0565b005b348015610b8b57600080fd5b50610bda60048036036040811015610ba257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613bfa565b005b348015610be857600080fd5b50610bf1613cf9565b60405180821515815260200191505060405180910390f35b348015610c1557600080fd5b50610c1e613d0d565b005b348015610c2c57600080fd5b50610cee60048036036080811015610c4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610caa57600080fd5b820183602082011115610cbc57600080fd5b80359060200191846001830284011164010000000083111715610cde57600080fd5b9091929391929390505050613e3a565b005b348015610cfc57600080fd5b50610d5360048036036060811015610d1357600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e91565b005b348015610d6157600080fd5b50610d9860048036036040811015610d7857600080fd5b810190808035906020019092919080359060200190929190505050614213565b005b348015610da657600080fd5b50610dd360048036036020811015610dbd57600080fd5b8101908080359060200190929190505050614596565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e13578082015181840152602081019050610df8565b50505050905090810190601f168015610e405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e5a57600080fd5b50610e9d60048036036020811015610e7157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614712565b6040518082815260200191505060405180910390f35b348015610ebf57600080fd5b50610f2260048036036040811015610ed657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061472b565b60405180821515815260200191505060405180910390f35b348015610f4657600080fd5b50610f8960048036036020811015610f5d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506147bf565b6040518082815260200191505060405180910390f35b348015610fab57600080fd5b50610fd860048036036020811015610fc257600080fd5b81019080803590602001909291905050506147d8565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b61271081565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110df5780601f106110b4576101008083540402835291602001916110df565b820191906000526020600020905b8154815290600101906020018083116110c257829003601f168201915b5050505050905090565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b6002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6127256020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b61272460009054906101000a900460ff161561129d57600080fd5b600161272460006101000a81548160ff0219169083151502179055506000151561272160009054906101000a900460ff16151514611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b61271081106113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166113da826128f5565b73ffffffffffffffffffffffffffffffffffffffff161415611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f796f752063616e206e6f7420626964206f6e20796f75722070756e6b0000000081525060200191505060405180910390fd5b600034116114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f6269642063616e206e6f74206265207a65726f0000000000000000000000000081525060200191505060405180910390fd5b600061272660008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815250509050806060015134116115de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f596023913960400191505060405180910390fd5b6000816060015111156116425780606001516127276000836040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b60405180608001604052806001151581526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815260200134815250612726600084815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff16827f5b859394fabae0c1ba88baffe67e751ab5248d2e879028b8c8d6897b0519f56a346040518082815260200191505060405180910390a350600061272460006101000a81548160ff02191690831515021790555050565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806118765750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43616e6e6f74206f7065726174652e000000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611a3057600080fd5b856002600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050505050565b6000600954905090565b600f5481565b61272460009054906101000a900460ff1615611b1057600080fd5b600161272460006101000a81548160ff021916908315150217905550816127108110611ba4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16611bc4826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614611c4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6000151561272160009054906101000a900460ff16151514611cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6000339050600061272660008681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090506000816060015111611dfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7468657265206973206e6f7420616e792062696400000000000000000000000081525060200191505060405180910390fd5b8381606001511015611e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f626964206973206c6f776572207468616e206d696e207072696365000000000081525060200191505060405180910390fd5b611e8185614959565b611ea08282604001518760405180602001604052806000815250614aba565b6000816060015190506040518060800160405280600015158152602001878152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250612726600088815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050508061272760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816040015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16877f58e5d5a525e3b40bc15abaa38b5882678db1ee68befd2f60bafe3a7fd06db9e385606001516040518082815260200191505060405180910390a450505050600061272460006101000a81548160ff0219169083151502179055505050565b8060006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061212857503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806121b95750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61222b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f57726f6e672066726f6d20616464726573732e0000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561247e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f742073656e6420746f203078302e0000000000000000000000000081525060200191505060405180910390fd5b6124888686614e52565b50505050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905082106124e157600080fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061252b57fe5b9060005260206000200154905092915050565b600d60149054906101000a900460ff1681565b61272160009054906101000a900460ff1681565b61272460009054906101000a900460ff161561258057600080fd5b600161272460006101000a81548160ff021916908315150217905550600061272760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061272760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561266d573d6000803e3d6000fd5b5050600061272460006101000a81548160ff021916908315150217905550565b6126a883838360405180602001604052806000815250614f07565b505050565b60006126c6600a5461271061547590919063ffffffff16565b905090565b60008082101580156126de575061271082105b6126e757600080fd5b600182019050919050565b60088054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127885780601f1061275d57610100808354040283529160200191612788565b820191906000526020600020905b81548152906001019060200180831161276b57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f6e6c79206465706c6f7965722e00000000000000000000000000000000000081525060200191505060405180910390fd5b61272160019054906101000a900460ff16156128d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f436f6e7472616374207365616c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b8061272160006101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561296357600080fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f6e6c79206465706c6f7965722e00000000000000000000000000000000000081525060200191505060405180910390fd5b600161272160016101000a81548160ff021916908315150217905550565b6127266020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b1857600080fd5b612b218261548f565b9050919050565b61272460009054906101000a900460ff1615612b4357600080fd5b600161272460006101000a81548160ff0219169083151502179055506000151561272160009054906101000a900460ff16151514612be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6127108110612c60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b600061272560008381526020019081526020016000206040518060a00160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090508060000151612dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f70756e6b206e6f742061637475616c6c7920666f722073616c6500000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff161480612e4357503373ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff16145b612e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615f076029913960400191505060405180910390fd5b8060600151341015612f12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4469646e27742073656e6420656e6f75676820616d6f756e740000000000000081525060200191505060405180910390fd5b806040015173ffffffffffffffffffffffffffffffffffffffff16612f36836128f5565b73ffffffffffffffffffffffffffffffffffffffff1614612fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f53656c6c6572206e6f206c6f6e676572206f776e6572206f662070756e6b000081525060200191505060405180910390fd5b600081604001519050612fe381338560405180602001604052806000815250614aba565b612fec83614959565b3461272760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16847f58e5d5a525e3b40bc15abaa38b5882678db1ee68befd2f60bafe3a7fd06db9e3346040518082815260200191505060405180910390a4600061272660008581526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff1614156132a157806060015161272760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506040518060800160405280600015158152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250612726600086815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050505b505050600061272460006101000a81548160ff02191690831515021790555050565b606060078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561335b5780601f106133305761010080835404028352916020019161335b565b820191906000526020600020905b81548152906001019060200180831161333e57829003601f168201915b5050505050905090565b61272460009054906101000a900460ff161561338057600080fd5b600161272460006101000a81548160ff0219169083151502179055506127108110613413576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613433826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614156134bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720616374696f6e000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16612726600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4f6e6c79206269646465722063616e207769746864726177000000000000000081525060200191505060405180910390fd5b600061272660008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff16151515158152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090503373ffffffffffffffffffffffffffffffffffffffff16827f6f30e1ee4d81dcc7a8a478577f65d2ed2edb120565960ac45fe7c50551c8793283606001516040518082815260200191505060405180910390a36000816060015190506040518060800160405280600015158152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250612726600085815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156137ad573d6000803e3d6000fd5b505050600061272460006101000a81548160ff02191690831515021790555050565b6127236020528060005260406000206000915054906101000a900460ff1681565b61272460009054906101000a900460ff161561380b57600080fd5b600161272460006101000a81548160ff021916908315150217905550600d60149054906101000a900460ff166138a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f53616c65206e6f7420737461727465642e00000000000000000000000000000081525060200191505060405180910390fd5b61272160009054906101000a900460ff16156138c457600080fd5b6000811161393a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e756d6265724f664e6674732063616e6e6f742062652030000000000000000081525060200191505060405180910390fd5b6014811115613994576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615f306029913960400191505060405180910390fd5b6127106139b1826139a3611ae5565b6154db90919063ffffffff16565b1115613a25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4578636565647320544f4b454e5f4c494d49540000000000000000000000000081525060200191505060405180910390fd5b34613a3b82600e546154f590919063ffffffff16565b14613aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6574682076616c75652073656e74206973206e6f7420636f727265637400000081525060200191505060405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613afe60023461552990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613b29573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613b7a60023461552990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613ba5573d6000803e3d6000fd5b5060005b81811015613bda57600a60008154809291906001019190505550613bcc3361553d565b508080600101915050613ba9565b50600061272460006101000a81548160ff02191690831515021790555050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b61272160019054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613dd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f6e6c79206465706c6f7965722e00000000000000000000000000000000000081525060200191505060405180910390fd5b600d60149054906101000a900460ff1615613dea57600080fd5b42600f819055506001600d60146101000a81548160ff0219169083151502179055507f771cfe172460b7d64cc46cca57a1e1f40f52b47cf1d16fe30c78a2935b3dd58060405160405180910390a1565b613e8a85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614f07565b5050505050565b61272460009054906101000a900460ff1615613eac57600080fd5b600161272460006101000a81548160ff021916908315150217905550826127108110613f40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613f60826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614613fe9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6000151561272160009054906101000a900460ff16151514614073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060a001604052806001151581526020018581526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815250612725600086815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508173ffffffffffffffffffffffffffffffffffffffff16847f3c7b682d5da98001a9b8cbda6c647d2c63d698a4184fd1d55e2ce7b66f5d21eb856040518082815260200191505060405180910390a350600061272460006101000a81548160ff021916908315150217905550505050565b61272460009054906101000a900460ff161561422e57600080fd5b600161272460006101000a81548160ff0219169083151502179055508161271081106142c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166142e2826128f5565b73ffffffffffffffffffffffffffffffffffffffff161461436b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6000151561272160009054906101000a900460ff161515146143f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d61726b6574205061757365640000000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060a001604052806001151581526020018481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001838152602001600073ffffffffffffffffffffffffffffffffffffffff16815250612725600085815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600073ffffffffffffffffffffffffffffffffffffffff16837f3c7b682d5da98001a9b8cbda6c647d2c63d698a4184fd1d55e2ce7b66f5d21eb846040518082815260200191505060405180910390a350600061272460006101000a81548160ff0219169083151502179055505050565b606081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561466f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b61467883615725565b60405160200180807f68747470733a2f2f706f6c7970756e6b732e6170702f70756e6b732f00000000815250601c0182805190602001908083835b602083106146d657805182526020820191506020810190506020830392506146b3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052915050919050565b6127226020528060005260406000206000915090505481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6127276020528060005260406000206000915090505481565b61272460009054906101000a900460ff16156147f357600080fd5b600161272460006101000a81548160ff021916908315150217905550806127108110614887576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f70756e6b206e756d6265722069732077726f6e6700000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166148a7826128f5565b73ffffffffffffffffffffffffffffffffffffffff1614614930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b61493982614959565b50600061272460006101000a81548160ff02191690831515021790555050565b6040518060a001604052806000151581526020018281526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815250612725600083815260200190815260200160002060008201518160000160006101000a81548160ff0219169083151502179055506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050807fb0e0a660b4e50f26f0b7ce75c24655fc76cc66e3334a54ff410277229fa10bd460405160405180910390a250565b81600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614b91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614c6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415614ca457600080fd5b614cae8585614e52565b614cb78561586c565b15614e4a5760008573ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614d6b578082015181840152602081019050614d50565b50505050905090810190601f168015614d985780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015614dba57600080fd5b505af1158015614dce573d6000803e3d6000fd5b505050506040513d6020811015614de457600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614614e4857600080fd5b505b505050505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614e938261587f565b614e9d8183615920565b614ea78383615bd3565b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8160006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480614fd857503373ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806150695750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6150db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f43616e6e6f74207472616e736665722e0000000000000000000000000000000081525060200191505060405180910390fd5b83600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156151b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c696420746f6b656e2e00000000000000000000000000000000000081525060200191505060405180910390fd5b60006001600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461528b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156152c557600080fd5b6152cf8787614e52565b6152d88761586c565b1561546b5760008773ffffffffffffffffffffffffffffffffffffffff1663150b7a02338b8a8a6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561538c578082015181840152602081019050615371565b50505050905090810190601f1680156153b95780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156153db57600080fd5b505af11580156153ef573d6000803e3d6000fd5b505050506040513d602081101561540557600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461546957600080fd5b505b5050505050505050565b60008282111561548457600080fd5b818303905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008183019050828110156154ef57600080fd5b92915050565b6000808314156155085760009050615523565b81830290508183828161551757fe5b041461552257600080fd5b5b92915050565b600081838161553457fe5b04905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156155e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616e6e6f74206d696e7420746f203078302e0000000000000000000000000081525060200191505060405180910390fd5b6127106009541061565a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f546f6b656e206c696d697420726561636865642e00000000000000000000000081525060200191505060405180910390fd5b6000615664615dd1565b905060016009540160098190555061567c8382615bd3565b8273ffffffffffffffffffffffffffffffffffffffff16817ff3cea5493d790af0133817606f7350a91d7f154ea52eaa79d179d4d231e5010260405160405180910390a3808373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480915050919050565b6060600082141561576d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050615867565b600082905060005b60008214615797578080600101915050600a828161578f57fe5b049150615775565b60008167ffffffffffffffff811180156157b057600080fd5b506040519080825280601f01601f1916602001820160405280156157e35781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461585f57600a848161580457fe5b0660300160f81b8282806001900393508151811061581e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161585757fe5b0493506157f2565b819450505050505b919050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461591d576002600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50565b8173ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146159f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e636f7272656374206f776e65722e0000000000000000000000000000000081525060200191505060405180910390fd5b6001600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600560008381526020019081526020016000205490506000615a9a6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061547590919063ffffffff16565b9050818114615b6f576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110615aef57fe5b9060005260206000200154905080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110615b4757fe5b9060005260206000200181905550826005600083815260200190815260200160002081905550505b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480615bb757fe5b6001900381819060005260206000200160009055905550505050565b600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616e6e6f74206164642c20616c7265616479206f776e65642e00000000000081525060200191505060405180910390fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055615db66001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061547590919063ffffffff16565b60056000838152602001908152602001600020819055505050565b600080600954612710039050600081601054334442604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c81615e4457fe5b0690506000806011836127108110615e5857fe5b015414615e76576011826127108110615e6d57fe5b01549050615e7a565b8190505b60006011600185036127108110615e8d57fe5b01541415615eb157600183036011836127108110615ea757fe5b0181905550615ed8565b6011600184036127108110615ec257fe5b01546011836127108110615ed257fe5b01819055505b601060008154809291906001019190505550615efe6001826154db90919063ffffffff16565b93505050509056fe70756e6b206e6f7420737570706f73656420746f20626520736f6c6420746f20746869732075736572596f752063616e206e6f7420627579206d6f7265207468616e203230204e465473206174206f6e6365796f752063616e206e6f7420626964206c6f776572207468616e206c61737420626964a26469706673582212206365ce7d27e517e7fd10e2b943aabe7f40a8956ee15dc957bf850757c2a76a9464736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000050492711c39cda016774ed0ebb3125633e4125e2000000000000000000000000e199659366c5eb279434f1f6bee721a3ee1d202a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004061633339616634373933313139656534366262666633353164386362366235663233646136303232323132366164643432363865323631313939613239323162
-----Decoded View---------------
Arg [0] : _marketer (address): 0x50492711c39cDA016774ed0eBb3125633E4125e2
Arg [1] : _developer (address): 0xE199659366C5Eb279434f1f6beE721A3ee1d202a
Arg [2] : _imageHash (string): ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000050492711c39cda016774ed0ebb3125633e4125e2
Arg [1] : 000000000000000000000000e199659366c5eb279434f1f6bee721a3ee1d202a
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [4] : 6163333961663437393331313965653436626266663335316438636236623566
Arg [5] : 3233646136303232323132366164643432363865323631313939613239323162
Deployed Bytecode Sourcemap
2598:18882:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3348:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15054:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8684:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16245:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19385:769;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7770:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13780:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4241:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20162:725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7415:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14039:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4164:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4399:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19083:294;;;;;;;;;;;;;:::i;:::-;;7255:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10135:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13876:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3942:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6341:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8495:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6502:86;;;;;;;;;;;;;:::i;:::-;;16349:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8320:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17789:1286;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15274:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20895:578;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4516:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10296:732;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8098:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4430:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6153:180;;;;;;;;;;;;;:::i;:::-;;7070:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17397:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17031:358;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15550:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4463:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8843:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16395:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16665:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6917:145;6997:4;7021:19;:33;7041:12;7021:33;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:40;;6917:145;;;:::o;3348:40::-;3383:5;3348:40;:::o;15054:94::-;15093:19;15133:7;15125:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15054:94;:::o;8684:151::-;8778:7;8759:8;5610:1;5579:33;;:9;:19;5589:8;5579:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5571:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8805:12:::1;:22;8818:8;8805:22;;;;;;;;;;;;;;;;;;;;;8798:29;;8684:151:::0;;;;:::o;16245:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19385:769::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;19491:5:::1;19475:21;;:12;;;;;;;;;;;:21;;;19467:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19545:5;19533:9;:17;19525:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19617:10;19594:33;;:18;19602:9;19594:7;:18::i;:::-;:33;;;;19586:74;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19691:1;19679:9;:13;19671:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19727:19;19749:8;:19;19758:9;19749:19;;;;;;;;;;;19727:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;19799:8;:14;;;19787:9;:26;19779:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19885:1;19868:8;:14;;;:18;19864:143;;;19981:8;:14;;;19942:18;:35;19961:8;:15;;;19942:35;;;;;;;;;;;;;;;;:53;;;;;;;;;;;19864:143;20039:43;;;;;;;;20043:4;20039:43;;;;;;20049:9;20039:43;;;;20060:10;20039:43;;;;;;20072:9;20039:43;;::::0;20017:8:::1;:19;20026:9;20017:19;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20135:10;20098:48;;20113:9;20098:48;20124:9;20098:48;;;;;;;;;;;;;;;;;;4930:1;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;19385:769;:::o;7770:320::-;7853:8;5029:18;5050:9;:19;5060:8;5050:19;;;;;;;;;;;;;;;;;;;;;5029:40;;5102:10;5088:24;;:10;:24;;;:68;;;;5116:16;:28;5133:10;5116:28;;;;;;;;;;;;;;;:40;5145:10;5116:40;;;;;;;;;;;;;;;;;;;;;;;;;5088:68;5080:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7876:8:::1;5610:1;5579:33;;:9;:19;5589:8;5579:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5571:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7897:18:::2;7918:9;:19;7928:8;7918:19;;;;;;;;;;;;;;;;;;;;;7897:40;;7969:10;7956:23;;:9;:23;;;;7948:32;;;::::0;::::2;;8016:9;7991:12;:22;8004:8;7991:22;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8073:8;8062:9;8041:41;;8050:10;8041:41;;;;;;;;;;;;5642:1;5187::::1;7770:320:::0;;;;:::o;13780:88::-;13824:7;13851:9;;13844:16;;13780:88;:::o;4241:25::-;;;;:::o;20162:725::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;20258:9:::1;16532:5;16521:8;:16;16513:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16602:10;16581:31;;:17;16589:8;16581:7;:17::i;:::-;:31;;;16573:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;20303:5:::2;20287:21;;:12;;;;;;;;;;;:21;;;20279:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;20337:14;20354:10;20337:27;;20375:14;20392:8;:19;20401:9;20392:19;;;;;;;;;;;20375:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;20442:1;20430:3;:9;;;:13;20422:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;20500:8;20487:3;:9;;;:21;;20479:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;20561:31;20582:9;20561:20;:31::i;:::-;20603:48;20617:6;20625:3;:10;;;20637:9;20603:48;;;;;;;;;;;::::0;:13:::2;:48::i;:::-;20672:11;20686:3;:9;;;20672:23;;20728:36;;;;;;;;20732:5;20728:36;;;;;;20739:9;20728:36;;;;20758:1;20728:36;;;;;;20762:1;20728:36;;::::0;20706:8:::2;:19;20715:9;20706:19;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20805:6;20775:18;:26;20794:6;20775:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;20868:3;:10;;;20827:52;;20860:6;20827:52;;20838:9;20827:52;20849:3;:9;;;20827:52;;;;;;;;;;;;;;;;;;16644:1;;;4930::::1;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;20162:725;;:::o;7415:347::-;7513:8;5254:18;5275:9;:19;5285:8;5275:19;;;;;;;;;;;;;;;;;;;;;5254:40;;5341:10;5327:24;;:10;:24;;;:77;;;;5394:10;5368:36;;:12;:22;5381:8;5368:22;;;;;;;;;;;;;;;;;;;;;:36;;;5327:77;:134;;;;5421:16;:28;5438:10;5421:28;;;;;;;;;;;;;;;:40;5450:10;5421:40;;;;;;;;;;;;;;;;;;;;;;;;;5327:134;5305:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7536:8:::1;5610:1;5579:33;;:9;:19;5589:8;5579:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5571:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7557:18:::2;7578:9;:19;7588:8;7578:19;;;;;;;;;;;;;;;;;;;;;7557:40;;7630:5;7616:19;;:10;:19;;;7608:51;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;7693:1;7678:17;;:3;:17;;;;7670:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;7730:24;7740:3;7745:8;7730:9;:24::i;:::-;5642:1;5503::::1;7415:347:::0;;;;;:::o;14039:199::-;14123:7;14160:10;:18;14171:6;14160:18;;;;;;;;;;;;;;;:25;;;;14151:6;:34;14143:43;;;;;;14204:10;:18;14215:6;14204:18;;;;;;;;;;;;;;;14223:6;14204:26;;;;;;;;;;;;;;;;14197:33;;14039:199;;;;:::o;4164:30::-;;;;;;;;;;;;;:::o;4399:24::-;;;;;;;;;;;;;:::o;19083:294::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;19136:11:::1;19150:18;:30;19169:10;19150:30;;;;;;;;;;;;;;;;19136:44;;19330:1;19297:18;:30;19316:10;19297:30;;;;;;;;;;;;;;;:34;;;;19342:10;:19;;:27;19362:6;19342:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4930:1;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;19083:294::o;7255:152::-;7356:43;7374:5;7381:3;7386:8;7356:43;;;;;;;;;;;;:17;:43::i;:::-;7255:152;;;:::o;10135:106::-;10184:4;10208:25;10224:8;;3383:5;10208:15;;:25;;;;:::i;:::-;10201:32;;10135:106;:::o;13876:155::-;13934:7;13971:1;13962:5;:10;;:33;;;;;3383:5;13976;:19;13962:33;13954:42;;;;;;14022:1;14014:5;:9;14007:16;;13876:155;;;:::o;3942:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6341:153::-;4630:8;;;;;;;;;;;4616:22;;:10;:22;;;4608:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6418:14:::1;;;;;;;;;;;6417:15;6409:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;6479:7;6464:12;;:22;;;;;;;;;;;;;;;;;;6341:153:::0;:::o;8495:181::-;8560:14;8626:1;8595:33;;:9;:19;8605:8;8595:19;;;;;;;;;;;;;;;;;;;;;:33;;;;8587:42;;;;;;8649:9;:19;8659:8;8649:19;;;;;;;;;;;;;;;;;;;;;8640:28;;8495:181;;;:::o;6502:86::-;4630:8;;;;;;;;;;;4616:22;;:10;:22;;;4608:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6576:4:::1;6559:14;;:21;;;;;;;;;;;;;;;;;;6502:86::o:0;16349:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8320:167::-;8387:7;8433:1;8415:20;;:6;:20;;;;8407:29;;;;;;8454:25;8472:6;8454:17;:25::i;:::-;8447:32;;8320:167;;;:::o;17789:1286::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;17887:5:::1;17871:21;;:12;;;;;;;;;;;:21;;;17863:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17941:5;17929:9;:17;17921:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17982:18;18003:19;:30;18023:9;18003:30;;;;;;;;;;;17982:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;18052:5;:15;;;18044:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18145:1;18117:30;;:5;:16;;;:30;;;:64;;;;18171:10;18151:30;;:5;:16;;;:30;;;18117:64;18109:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18259:5;:14;;;18246:9;:27;;18238:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18344:5;:12;;;18322:34;;:18;18330:9;18322:7;:18::i;:::-;:34;;;18314:77;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18404:14;18421:5;:12;;;18404:29;;18454:48;18468:6;18476:10;18488:9;18454:48;;;;;;;;;;;::::0;:13:::1;:48::i;:::-;18513:31;18534:9;18513:20;:31::i;:::-;18585:9;18555:18;:26;18574:6;18555:26;;;;;;;;;;;;;;;;:39;;;;;;;;;;;18651:10;18610:52;;18643:6;18610:52;;18621:9;18610:52;18632:9;18610:52;;;;;;;;;;;;;;;;;;18806:14;18823:8;:19;18832:9;18823:19;;;;;;;;;;;18806:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;18871:10;18857:24;;:3;:10;;;:24;;;18853:215;;;18974:3;:9;;;18940:18;:30;18959:10;18940:30;;;;;;;;;;;;;;;;:43;;;;;;;;;;;19020:36;;;;;;;;19024:5;19020:36;;;;;;19031:9;19020:36;;;;19050:1;19020:36;;;;;;19054:1;19020:36;;::::0;18998:8:::1;:19;19007:9;18998:19;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18853:215;4930:1;;;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;17789:1286;:::o;15274:102::-;15315:21;15359:9;15349:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15274:102;:::o;20895:578::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;20992:5:::1;20980:9;:17;20972:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21063:10;21041:32;;:18;21049:9;21041:7;:18::i;:::-;:32;;;;21033:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21139:10;21109:40;;:8;:19;21118:9;21109:19;;;;;;;;;;;:26;;;;;;;;;;;;:40;;;21101:77;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21189:14;21206:8;:19;21215:9;21206:19;;;;;;;;;;;21189:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;21280:10;21241:50;;21258:9;21241:50;21269:3;:9;;;21241:50;;;;;;;;;;;;;;;;;;21302:11;21316:3;:9;;;21302:23;;21358:36;;;;;;;;21362:5;21358:36;;;;;;21369:9;21358:36;;;;21388:1;21358:36;;;;;;21392:1;21358:36;;::::0;21336:8:::1;:19;21345:9;21336:19;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21438:10;:19;;:27;21458:6;21438:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4930:1;;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;20895:578;:::o;4516:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;10296:732::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;10384:10:::1;;;;;;;;;;;10376:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10436:12;;;;;;;;;;;10435:13;10427:22;;;::::0;::::1;;10483:1;10468:12;:16;10460:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10548:2;10532:12;:18;;10524:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3383:5;10615:31;10633:12;10615:13;:11;:13::i;:::-;:17;;:31;;;;:::i;:::-;:46;;10607:78;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10735:9;10704:27;10718:12;10704:9;;:13;;:27;;;;:::i;:::-;:40;10696:82;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10799:8;;;;;;;;;;;:17;;:35;10817:16;10831:1;10817:9;:13;;:16;;;;:::i;:::-;10799:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10845:9;;;;;;;;;;;:18;;:36;10864:16;10878:1;10864:9;:13;;:16;;;;:::i;:::-;10845:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10907:6;10902:109;10923:12;10919:1;:16;10902:109;;;10957:8;;:10;;;;;;;;;;;;;10982:17;10988:10;10982:5;:17::i;:::-;;10937:3;;;;;;;10902:109;;;;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;10296:732;:::o;8098:214::-;8231:9;8189:16;:28;8206:10;8189:28;;;;;;;;;;;;;;;:39;8218:9;8189:39;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;8283:9;8256:48;;8271:10;8256:48;;;8294:9;8256:48;;;;;;;;;;;;;;;;;;;;8098:214;;:::o;4430:26::-;;;;;;;;;;;;;:::o;6153:180::-;4630:8;;;;;;;;;;;4616:22;;:10;:22;;;4608:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6216:10:::1;;;;;;;;;;;6215:11;6207:20;;;::::0;::::1;;6254:15;6238:13;:31;;;;6293:4;6280:10;;:17;;;;;;;;;;;;;;;;;;6313:12;;;;;;;;;;6153:180::o:0;7070:177::-;7193:46;7211:5;7218:3;7223:8;7233:5;;7193:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:46::i;:::-;7070:177;;;;;:::o;17397:384::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;17529:9:::1;16532:5;16521:8;:16;16513:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16602:10;16581:31;;:17;16589:8;16581:7;:17::i;:::-;:31;;;16573:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17574:5:::2;17558:21;;:12;;;;;;;;;;;:21;;;17550:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;17641:64;;;;;;;;17647:4;17641:64;;;;;;17653:9;17641:64;;;;17664:10;17641:64;;;;;;17676:17;17641:64;;;;17695:9;17641:64;;;;::::0;17608:19:::2;:30;17628:9;17608:30;;;;;;;;;;;:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17763:9;17721:52;;17733:9;17721:52;17744:17;17721:52;;;;;;;;;;;;;;;;;;4930:1:::1;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;17397:384;;;:::o;17031:358::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;17135:9:::1;16532:5;16521:8;:16;16513:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16602:10;16581:31;;:17;16589:8;16581:7;:17::i;:::-;:31;;;16573:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17180:5:::2;17164:21;;:12;;;;;;;;;;;:21;;;17156:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;17247:65;;;;;;;;17253:4;17247:65;;;;;;17259:9;17247:65;;;;17270:10;17247:65;;;;;;17282:17;17247:65;;;;17309:1;17247:65;;;;::::0;17214:19:::2;:30;17234:9;17214:30;;;;;;;;;;;:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17378:1;17328:53;;17340:9;17328:53;17351:17;17328:53;;;;;;;;;;;;;;;;;;4930:1:::1;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;17031:358;;:::o;15550:199::-;15632:13;15613:8;5610:1;5579:33;;:9;:19;5589:8;5579:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5571:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15721:18:::1;15730:8;15721;:18::i;:::-;15672:68;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15658:83;;15550:199:::0;;;;:::o;4463:46::-;;;;;;;;;;;;;;;;;:::o;8843:160::-;8936:4;8960:16;:24;8977:6;8960:24;;;;;;;;;;;;;;;:35;8985:9;8960:35;;;;;;;;;;;;;;;;;;;;;;;;;8953:42;;8843:160;;;;:::o;16395:51::-;;;;;;;;;;;;;;;;;:::o;16665:144::-;4837:14;;;;;;;;;;;4833:55;;;4868:8;;;4833:55;4915:4;4898:14;;:21;;;;;;;;;;;;;;;;;;16748:9:::1;16532:5;16521:8;:16;16513:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16602:10;16581:31;;:17;16589:8;16581:7;:17::i;:::-;:31;;;16573:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16770:31:::2;16791:9;16770:20;:31::i;:::-;4930:1:::1;4959:5:::0;4942:14;;:22;;;;;;;;;;;;;;;;;;16665:144;:::o;16821:202::-;16919:50;;;;;;;;16925:5;16919:50;;;;;;16932:9;16919:50;;;;16943:10;16919:50;;;;;;16955:1;16919:50;;;;16966:1;16919:50;;;;;16886:19;:30;16906:9;16886:30;;;;;;;;;;;:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17005:9;16985:30;;;;;;;;;;16821:202;:::o;13049:526::-;13162:8;5610:1;5579:33;;:9;:19;5589:8;5579:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5571:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13183:18:::1;13204:9;:19;13214:8;13204:19;;;;;;;;;;;;;;;;;;;;;13183:40;;13256:5;13242:19;;:10;:19;;;13234:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13316:1;13301:17;;:3;:17;;;;13293:26;;;::::0;::::1;;13332:24;13342:3;13347:8;13332:9;:24::i;:::-;13373:15;13384:3;13373:10;:15::i;:::-;13369:199;;;13405:13;13441:3;13421:41;;;13463:10;13475:5;13482:8;13492:5;13421:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;13405:93;;3329:10;13531:24;;13521:34;;;:6;:34;;;;13513:43;;;::::0;::::1;;13369:199;;5642:1;13049:526:::0;;;;;:::o;9011:274::-;9081:12;9096:9;:19;9106:8;9096:19;;;;;;;;;;;;;;;;;;;;;9081:34;;9126:24;9141:8;9126:14;:24::i;:::-;9163:30;9178:4;9184:8;9163:14;:30::i;:::-;9204:26;9216:3;9221:8;9204:11;:26::i;:::-;9268:8;9263:3;9248:29;;9257:4;9248:29;;;;;;;;;;;;9011:274;;;:::o;12485:552::-;12601:8;5254:18;5275:9;:19;5285:8;5275:19;;;;;;;;;;;;;;;;;;;;;5254:40;;5341:10;5327:24;;:10;:24;;;:77;;;;5394:10;5368:36;;:12;:22;5381:8;5368:22;;;;;;;;;;;;;;;;;;;;;:36;;;5327:77;:134;;;;5421:16;:28;5438:10;5421:28;;;;;;;;;;;;;;;:40;5450:10;5421:40;;;;;;;;;;;;;;;;;;;;;;;;;5327:134;5305:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12624:8:::1;5610:1;5579:33;;:9;:19;5589:8;5579:19;;;;;;;;;;;;;;;;;;;;;:33;;;;5571:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12645:18:::2;12666:9;:19;12676:8;12666:19;;;;;;;;;;;;;;;;;;;;;12645:40;;12718:5;12704:19;;:10;:19;;;12696:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;12778:1;12763:17;;:3;:17;;;;12755:26;;;::::0;::::2;;12794:24;12804:3;12809:8;12794:9;:24::i;:::-;12835:15;12846:3;12835:10;:15::i;:::-;12831:199;;;12867:13;12903:3;12883:41;;;12925:10;12937:5;12944:8;12954:5;12883:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;12867:93;;3329:10;12993:24;;12983:34;;;:6;:34;;;;12975:43;;;::::0;::::2;;12831:199;;5642:1;5503::::1;12485:552:::0;;;;;;:::o;2250:124::-;2308:7;2341:1;2336;:6;;2328:15;;;;;;2365:1;2361;:5;2354:12;;2250:124;;;;:::o;12351:126::-;12417:7;12444:10;:18;12455:6;12444:18;;;;;;;;;;;;;;;:25;;;;12437:32;;12351:126;;;:::o;2449:142::-;2507:9;2537:1;2533;:5;2529:9;;2562:1;2557;:6;;2549:15;;;;;;2449:142;;;;:::o;1532:203::-;1590:9;1621:1;1616;:6;1612:47;;;1646:1;1639:8;;;;1612:47;1677:1;1673;:5;1669:9;;1706:1;1701;1697;:5;;;;;;:10;1689:19;;;;;;1532:203;;;;;:::o;1830:295::-;1888:7;2116:1;2112;:5;;;;;;2105:12;;1830:295;;;;:::o;11036:386::-;11082:4;11122:1;11107:17;;:3;:17;;;;11099:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3383:5;11167:9;;:23;11159:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11226:7;11236:13;:11;:13::i;:::-;11226:23;;11286:1;11274:9;;:13;11262:9;:25;;;;11298:20;11310:3;11315:2;11298:11;:20::i;:::-;11345:3;11336:13;;11341:2;11336:13;;;;;;;;;;11391:2;11386:3;11365:29;;11382:1;11365:29;;;;;;;;;;;;11412:2;11405:9;;;11036:386;;;:::o;14359:555::-;14415:13;14454:1;14445:5;:10;14441:53;;;14472:10;;;;;;;;;;;;;;;;;;;;;14441:53;14504:12;14519:5;14504:20;;14535:14;14560:78;14575:1;14567:4;:9;14560:78;;14593:8;;;;;;;14624:2;14616:10;;;;;;;;;14560:78;;;14648:19;14680:6;14670:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14648:39;;14698:13;14723:1;14714:6;:10;14698:26;;14742:5;14735:12;;14758:117;14773:1;14765:4;:9;14758:117;;14834:2;14827:4;:9;;;;;;14822:2;:14;14809:29;;14791:6;14798:7;;;;;;;14791:15;;;;;;;;;;;:47;;;;;;;;;;;14861:2;14853:10;;;;;;;;;14758:117;;;14899:6;14885:21;;;;;;14359:555;;;;:::o;6694:215::-;6752:17;6782:12;6836:5;6824:18;6816:26;;6900:1;6893:4;:8;6878:23;;6694:215;;;;:::o;13583:166::-;13682:1;13648:36;;:12;:22;13661:8;13648:22;;;;;;;;;;;;;;;;;;;;;:36;;;13644:98;;13708:12;:22;13721:8;13708:22;;;;;;;;;;;;13701:29;;;;;;;;;;;13644:98;13583:166;:::o;11736:607::-;11844:5;11821:28;;:9;:19;11831:8;11821:19;;;;;;;;;;;;;;;;;;;;;:28;;;11813:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11888:9;:19;11898:8;11888:19;;;;;;;;;;;;11881:26;;;;;;;;;;;11920;11949:14;:24;11964:8;11949:24;;;;;;;;;;;;11920:53;;11984:22;12009:31;12038:1;12009:10;:17;12020:5;12009:17;;;;;;;;;;;;;;;:24;;;;:28;;:31;;;;:::i;:::-;11984:56;;12075:18;12057:14;:36;12053:247;;12110:17;12130:10;:17;12141:5;12130:17;;;;;;;;;;;;;;;12148:14;12130:33;;;;;;;;;;;;;;;;12110:53;;12218:9;12178:10;:17;12189:5;12178:17;;;;;;;;;;;;;;;12196:18;12178:37;;;;;;;;;;;;;;;:49;;;;12270:18;12242:14;:25;12257:9;12242:25;;;;;;;;;;;:46;;;;12053:247;;12312:10;:17;12323:5;12312:17;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;;;;;;;11736:607;;;;:::o;11430:298::-;11541:1;11510:33;;:9;:19;11520:8;11510:19;;;;;;;;;;;;;;;;;;;;;:33;;;11502:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11607:3;11585:9;:19;11595:8;11585:19;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11623:10;:15;11634:3;11623:15;;;;;;;;;;;;;;;11644:8;11623:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11691:29;11718:1;11691:10;:15;11702:3;11691:15;;;;;;;;;;;;;;;:22;;;;:26;;:29;;;;:::i;:::-;11664:14;:24;11679:8;11664:24;;;;;;;;;;;:56;;;;11430:298;;:::o;9293:834::-;9334:4;9351:14;9382:9;;3383:5;9368:23;9351:40;;9402:10;9505:9;9447:5;;9454:10;9466:16;9484:15;9430:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9420:81;;;;;;9415:87;;:99;;;;;;9402:112;;9525:10;9572:1;9554:7;9562:5;9554:14;;;;;;;;;:19;9550:120;;9598:7;9606:5;9598:14;;;;;;;;;9590:22;;9550:120;;;9653:5;9645:13;;9550:120;9761:1;9735:7;9755:1;9743:9;:13;9735:22;;;;;;;;;:27;9731:283;;;9872:1;9860:9;:13;9843:7;9851:5;9843:14;;;;;;;;:30;;;;9731:283;;;9980:7;10000:1;9988:9;:13;9980:22;;;;;;;;;9963:7;9971:5;9963:14;;;;;;;;:39;;;;9731:283;10024:5;;:7;;;;;;;;;;;;;10107:12;10117:1;10107:5;:9;;:12;;;;:::i;:::-;10100:19;;;;;9293:834;:::o
Swarm Source
ipfs://6365ce7d27e517e7fd10e2b943aabe7f40a8956ee15dc957bf850757c2a76a94
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.