0 txs
0 calls
constructor
constructor()
functions
_wl
viewfunction _wl(address) view returns (bool)
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
animationURL
viewfunction animationURL(uint256 tokenId) view returns (string)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
boardArray
viewfunction boardArray(uint256 tokenId) view returns (uint8[5][5])
boardString
viewfunction boardString(uint256 tokenId) view returns (string)
CLOCK_MODE
viewfunction CLOCK_MODE() view returns (string)
clock
viewfunction clock() view returns (uint48)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
delegates
viewfunction delegates(address account) view returns (address)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
fiveNumbers
viewfunction fiveNumbers(uint256 tokenId, uint256 orientation, uint256 index) view returns (uint256[5])
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getPastTotalSupply
viewfunction getPastTotalSupply(uint256 timepoint) view returns (uint256)
getPastVotes
viewfunction getPastVotes(address account, uint256 timepoint) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getVotes
viewfunction getVotes(address account) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
MINTER_ROLE
viewfunction MINTER_ROLE() view returns (bytes32)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paused
viewfunction paused() view returns (bool)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address, uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
svgParser
viewfunction svgParser() view returns (address)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
allow
nonpayablefunction allow(address _addr, bool _bool)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 tokenId)
delegate
nonpayablefunction delegate(address delegatee)
delegateBySig
nonpayablefunction delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
guard
nonpayablefunction guard(bool _bool)
mint
nonpayablefunction mint()
mintBatch
nonpayablefunction mintBatch(address to, uint256 quantity)
mintTo
nonpayablefunction mintTo(address to)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setAnimationURL
nonpayablefunction setAnimationURL(string _url)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setSVGParser
nonpayablefunction setSVGParser(address _addr)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId)
DelegateChanged
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate)
DelegateVotesChanged
event DelegateVotesChanged(address indexed delegate, uint256 previousVotes, uint256 newVotes)
EIP712DomainChanged
event EIP712DomainChanged()
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
CheckpointUnorderedInsertion
error CheckpointUnorderedInsertion()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ERC2981InvalidDefaultRoyalty
error ERC2981InvalidDefaultRoyalty(uint256 numerator, uint256 denominator)
ERC2981InvalidDefaultRoyaltyReceiver
error ERC2981InvalidDefaultRoyaltyReceiver(address receiver)
ERC2981InvalidTokenRoyalty
error ERC2981InvalidTokenRoyalty(uint256 tokenId, uint256 numerator, uint256 denominator)
ERC2981InvalidTokenRoyaltyReceiver
error ERC2981InvalidTokenRoyaltyReceiver(uint256 tokenId, address receiver)
ERC5805FutureLookup
error ERC5805FutureLookup(uint256 timepoint, uint48 clock)
ERC6372InconsistentClock
error ERC6372InconsistentClock()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ExpectedPause
error ExpectedPause()
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidShortString
error InvalidShortString()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
StringTooLong
error StringTooLong(string str)
VotesExpiredSignature
error VotesExpiredSignature(uint256 expiry)
creation bytecode
0x6101e060405260496101608181529062005fba61018039601390620000259082620004d8565b506016805460ff191690553480156200003d57600080fd5b50604080518082018252600d8082526c526567756c61722042696e676f60981b60208084018290528451808601865260018152603160f81b8183015285518087018752938452838201929092528451808601909552600585526442494e474f60d81b9085015291926002620000b38382620004d8565b506003620000c28282620004d8565b50506009805460ff1916905550620000dc82600b6200024c565b61012052620000ed81600c6200024c565b61014052815160208084019190912060e052815190820120610100524660a0526200017b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05262000192336102ee62000285565b6200019f60003362000330565b50620001cc7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217753362000330565b50620001f97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000330565b50604051620002089062000425565b604051809103906000f08015801562000225573d6000803e3d6000fd5b50601180546001600160a01b0319166001600160a01b039290921691909117905562000619565b60006020835110156200026c576200026483620003e2565b90506200027f565b81620002798482620004d8565b5060ff90505b92915050565b6127106001600160601b038216811015620002ca57604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044015b60405180910390fd5b6001600160a01b038316620002f657604051635b6cc80560e11b815260006004820152602401620002c1565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600055565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff16620003d9576000838152600a602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620003903390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200027f565b5060006200027f565b600080829050601f8151111562000410578260405163305a27a960e01b8152600401620002c19190620005a4565b80516200041d82620005f4565b179392505050565b6116e180620048d983390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200045e57607f821691505b6020821081036200047f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004d357600081815260208120601f850160051c81016020861015620004ae5750805b601f850160051c820191505b81811015620004cf57828155600101620004ba565b5050505b505050565b81516001600160401b03811115620004f457620004f462000433565b6200050c8162000505845462000449565b8462000485565b602080601f8311600181146200054457600084156200052b5750858301515b600019600386901b1c1916600185901b178555620004cf565b600085815260208120601f198616915b82811015620005755788860151825594840194600190910190840162000554565b5085821015620005945787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620005d357858101830151858201604001528201620005b5565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200047f5760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051614265620006746000396000611d6701526000611d3a01526000612ae701526000612abf01526000612a1a01526000612a4401526000612a6e01526142656000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c8063650ea5b9116101b257806398322e0d116100f9578063c3cda520116100a2578063d547741f1161007c578063d547741f14610756578063d7b0ef5114610769578063e62e78081461077c578063e985e9c51461079f57600080fd5b8063c3cda52014610709578063c87b56dd1461071c578063d53913931461072f57600080fd5b8063a22cb465116100d3578063a22cb465146106d0578063a7666d82146106e3578063b88d4fde146106f657600080fd5b806398322e0d146106a25780639ab24eb0146106b5578063a217fddf146106c857600080fd5b806384b0196e1161015b57806391d148541161013557806391d148541461064257806391ddadf41461067b57806395d89b411461069a57600080fd5b806384b0196e146105f457806387f6368d1461060f5780638e539e8c1461062f57600080fd5b806375b238fc1161018c57806375b238fc1461059c5780637ecebe00146105c35780638456cb59146105ec57600080fd5b8063650ea5b91461056357806370a0823114610576578063755edd171461058957600080fd5b80632f2ff15d116102765780634bf5d7e91161021f5780635c975abb116101f95780635c975abb146105325780636070675d1461053d5780636352211e1461055057600080fd5b80634bf5d7e9146104eb578063587cde1e146104f35780635c19a95c1461051f57600080fd5b80633f4ba83a116102505780633f4ba83a146104bd57806342842e0e146104c557806342966c68146104d857600080fd5b80632f2ff15d1461048457806336568abe146104975780633a46b1a8146104aa57600080fd5b80631249c58b116102d8578063248a9ca3116102b2578063248a9ca31461040e578063248b71fc1461043f5780632a55205a1461045257600080fd5b80631249c58b146103e0578063129d6395146103e857806323b872dd146103fb57600080fd5b8063081812fc11610309578063081812fc1461038d578063095ea7b3146103b8578063110496e5146103cd57600080fd5b806301ffc9a71461033057806305d63d171461035857806306fdde0314610378575b600080fd5b61034361033e36600461368b565b6107db565b60405190151581526020015b60405180910390f35b61036b6103663660046136a8565b6107ec565b60405161034f91906136d4565b610380610a11565b60405161034f9190613755565b6103a061039b366004613768565b610aa3565b6040516001600160a01b03909116815260200161034f565b6103cb6103c6366004613798565b610acc565b005b6103cb6103db3660046137d2565b610adb565b6103cb610b31565b6103cb6103f6366004613805565b610b6f565b6103cb610409366004613820565b610bad565b61043161041c366004613768565b6000908152600a602052604090206001015490565b60405190815260200161034f565b6103cb61044d366004613798565b610c51565b61046561046036600461385c565b610d37565b604080516001600160a01b03909316835260208301919091520161034f565b6103cb61049236600461387e565b610df2565b6103cb6104a536600461387e565b610e17565b6104316104b8366004613798565b610e68565b6103cb610ee9565b6103cb6104d3366004613820565b610f1b565b6103cb6104e6366004613768565b610f36565b610380610f42565b6103a06105013660046138a1565b6001600160a01b039081166000908152600e60205260409020541690565b6103cb61052d3660046138a1565b610fd3565b60095460ff16610343565b6011546103a0906001600160a01b031681565b6103a061055e366004613768565b610fde565b6103cb610571366004613969565b610fe9565b6104316105843660046138a1565b61101f565b6103cb6105973660046138a1565b611080565b6104317fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6104316105d13660046138a1565b6001600160a01b03166000908152600d602052604090205490565b6103cb6110eb565b6105fc61111d565b60405161034f97969594939291906139b2565b61062261061d366004613768565b61117f565b60405161034f9190613a64565b61043161063d366004613768565b6111f5565b61034361065036600461387e565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61068361125f565b60405165ffffffffffff909116815260200161034f565b61038061126e565b6103806106b0366004613768565b61127d565b6104316106c33660046138a1565b6112e9565b610431600081565b6103cb6106de3660046137d2565b611319565b6103cb6106f13660046138a1565b611324565b6103cb610704366004613ac8565b61137e565b6103cb610717366004613b44565b611395565b61038061072a366004613768565b61146b565b6104317f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6103cb61076436600461387e565b61155f565b610380610777366004613768565b611584565b61034361078a3660046138a1565b60126020526000908152604090205460ff1681565b6103436107ad366004613ba4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006107e6826115c2565b92915050565b6107f461362a565b60165460ff16158061081557503360009081526012602052604090205460ff165b6108595760405162461bcd60e51b815260206004820152601060248201526f27379036b0b3b4b19038343930b9b29760811b60448201526064015b60405180910390fd5b61086284611600565b5061086b61362a565b60008581526014602052604081205461088390611639565b905060005b60058110156109b657856000036108e5578185600581106108ab576108ab613bce565b602002015181600581106108c1576108c1613bce565b602002015160ff168382600581106108db576108db613bce565b60200201526109a4565b85600103610915578181600581106108ff576108ff613bce565b602002015185600581106108c1576108c1613bce565b8560020361094157600281146109a45781610931826004613bfa565b600581106108ab576108ab613bce565b8560030361096357600281146109a4578181600581106108ab576108ab613bce565b856004036109a45781515160ff9081168452825160809081015182166020860152600060408601528084018051518316606087015251810151909116908401525b806109ae81613c0d565b915050610888565b506004851115610a085760405162461bcd60e51b815260206004820152601360248201527f496e76616c6964206f7269656e746174696f6e000000000000000000000000006044820152606401610850565b50949350505050565b606060028054610a2090613c26565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613c26565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b5050505050905090565b6000610aae82611600565b506000828152600660205260409020546001600160a01b03166107e6565b610ad782823361173b565b5050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610b0581611748565b506001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b610b39611752565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610b6381611748565b610b6c33611080565b50565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610b9981611748565b506016805460ff1916911515919091179055565b6001600160a01b038216610bd757604051633250574960e11b815260006004820152602401610850565b6000610be4838333611791565b9050836001600160a01b0316816001600160a01b031614610c4b576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610850565b50505050565b610c59611752565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610c8381611748565b600082118015610c94575060148211155b610ce05760405162461bcd60e51b815260206004820152601060248201527f496e76616c6964207175616e74697479000000000000000000000000000000006044820152606401610850565b60005b82811015610c4b576015805460009182610cfc83613c0d565b919050559050610d0b816117a6565b600082815260146020526040902055610d2485826119db565b5080610d2f81613c0d565b915050610ce3565b60008281526001602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff16928201929092528291610db65750604080518082019091526000546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090610dda906bffffffffffffffffffffffff1687613c60565b610de49190613c8d565b915196919550909350505050565b6000828152600a6020526040902060010154610e0d81611748565b610c4b83836119f5565b6001600160a01b0381163314610e59576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e638282611aa3565b505050565b600080610e7361125f565b90508065ffffffffffff168310610eae57604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610850565b610ed8610eba84611b2a565b6001600160a01b0386166000908152600f6020526040902090611b61565b6001600160d01b0316949350505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f1381611748565b610b6c611c1a565b610e638383836040518060200160405280600081525061137e565b610ad760008233611791565b6060610f4c611c6c565b65ffffffffffff16610f5c61125f565b65ffffffffffff1614610f9b576040517f6ff0714000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b33610ad78183611c77565b60006107e682611600565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561101381611748565b6013610e638382613cef565b60006001600160a01b038216611064576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610850565b506001600160a01b031660009081526005602052604090205490565b611088611752565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66110b281611748565b60158054600091826110c383613c0d565b9190505590506110d2816117a6565b600082815260146020526040902055610e6383826119db565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561111581611748565b610b6c611cf6565b600060608060008060006060611131611d33565b611139611d60565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b611187613648565b60165460ff1615806111a857503360009081526012602052604090205460ff165b6111e75760405162461bcd60e51b815260206004820152601060248201526f27379036b0b3b4b19038343930b9b29760811b6044820152606401610850565b6107e682611d8d565b919050565b60008061120061125f565b90508065ffffffffffff16831061123b57604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610850565b61124f61124784611b2a565b601090611b61565b6001600160d01b03169392505050565b6000611269611c6c565b905090565b606060038054610a2090613c26565b60165460609060ff1615806112a157503360009081526012602052604090205460ff165b6112e05760405162461bcd60e51b815260206004820152601060248201526f27379036b0b3b4b19038343930b9b29760811b6044820152606401610850565b6107e682611db7565b6001600160a01b0381166000908152600f6020526040812061130a90611ddb565b6001600160d01b031692915050565b610ad7338383611e18565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561134e81611748565b506011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b611389848484610bad565b610c4b84848484611ed0565b834211156113d2576040517f4683af0e00000000000000000000000000000000000000000000000000000000815260048101859052602401610850565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b03881691810191909152606081018690526080810185905260009061144c906114449060a00160405160208183030381529060405280519060200120611ff9565b858585612041565b9050611458818761206f565b6114628188611c77565b50505050505050565b6011546060906000906001600160a01b031663474e0e8361148b85611d8d565b6040518263ffffffff1660e01b81526004016114a79190613a64565b600060405180830381865afa1580156114c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114ec9190810190613daf565b905060006115346114fc856120db565b61150586611584565b61150e85612210565b60405160200161152093929190613e26565b604051602081830303815290604052612210565b9050806040516020016115479190613f5c565b60408051601f19818403018152919052949350505050565b6000828152600a602052604090206001015461157a81611748565b610c4b8383611aa3565b606061158f82611600565b50601361159b83611db7565b6040516020016115ac929190613fa1565b6040516020818303038152906040529050919050565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e657506107e682612363565b6000818152600460205260408120546001600160a01b0316806107e657604051637e27328960e01b815260048101849052602401610850565b611641613648565b611649613648565b60005b60058160ff1610156117345760005b60058160ff161015611721576000611674826004614028565b61167f846014614028565b6116899190614044565b905060008160ff1687901c600f1690508360ff1660021480156116af57508260ff166002145b6116ce57806116bf85600f614028565b6116c99190614044565b6116d1565b60005b858460ff16600581106116e6576116e6613bce565b60200201518560ff16600581106116ff576116ff613bce565b60ff9092166020929092020152508190506117198161405d565b91505061165b565b508061172c8161405d565b91505061164c565b5092915050565b610e63838383600161236e565b610b6c81336124b9565b60095460ff161561178f576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600061179e848484612527565b949350505050565b60408051600f808252610200820190925260009182918291602082016101e08036833701905050905060005b60058160ff1610156119d25760005b600f8160ff161015611831576117f8816001614044565b838260ff168151811061180d5761180d613bce565b60ff90921660209283029190910190910152806118298161405d565b9150506117e1565b50600f60ff821660020361184d57806118498161407c565b9150505b60005b60058160ff1610156119bd5760008360ff16600214801561187457508160ff166002145b1561188157506000611977565b604080514260208201529081018990527fff0000000000000000000000000000000000000000000000000000000000000060f886811b8216606084015284901b16606182015260009060620160408051601f198184030181529190528051602090910120905060006118f660ff861683614099565b9050868160ff168151811061190d5761190d613bce565b602002602001015192508660018661192591906140ad565b60ff168151811061193857611938613bce565b6020026020010151878260ff168151811061195557611955613bce565b60ff90921660209283029190910190910152846119718161407c565b95505050505b600082611985866005614028565b61198f9190614044565b61199a906004614028565b60ff92831692169190911b959095179450806119b58161405d565b915050611850565b505080806119ca9061405d565b9150506117d2565b50909392505050565b610ad7828260405180602001604052806000815250612543565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff16611a9b576000838152600a602090815260408083206001600160a01b03861684529091529020805460ff19166001179055611a533390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016107e6565b5060006107e6565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff1615611a9b576000838152600a602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016107e6565b600065ffffffffffff821115611b5d576040516306dfcc6560e41b81526030600482015260248101839052604401610850565b5090565b815460009081816005811115611bc0576000611b7c8461255a565b611b869085613bfa565b60008881526020902090915081015465ffffffffffff9081169087161015611bb057809150611bbe565b611bbb8160016140c6565b92505b505b6000611bce87878585612642565b90508015611c0c57611bf387611be5600184613bfa565b600091825260209091200190565b54660100000000000090046001600160d01b0316611c0f565b60005b979650505050505050565b611c226126a4565b6009805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600061126943611b2a565b6001600160a01b038281166000818152600e6020526040808220805486861673ffffffffffffffffffffffffffffffffffffffff19821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610e638183611cf1866126e0565b6126eb565b611cfe611752565b6009805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611c4f3390565b60606112697f0000000000000000000000000000000000000000000000000000000000000000600b612857565b60606112697f0000000000000000000000000000000000000000000000000000000000000000600c612857565b611d95613648565b611d9e82611600565b506000828152601460205260409020546107e690611639565b6060611dc282611600565b506000828152601460205260409020546107e690612902565b80546000908015611e0e57611df583611be5600184613bfa565b54660100000000000090046001600160d01b0316611e11565b60005b9392505050565b6001600160a01b038216611e63576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610850565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610c4b57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611f129033908890879087906004016140d9565b6020604051808303816000875af1925050508015611f4d575060408051601f3d908101601f19168201909252611f4a91810190614115565b60015b611fb6573d808015611f7b576040519150601f19603f3d011682016040523d82523d6000602084013e611f80565b606091505b508051600003611fae57604051633250574960e11b81526001600160a01b0385166004820152602401610850565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611ff257604051633250574960e11b81526001600160a01b0385166004820152602401610850565b5050505050565b60006107e6612006612a0d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060008061205388888888612b38565b9250925092506120638282612c07565b50909695505050505050565b6001600160a01b0382166000908152600d60205260409020805460018101909155818114610e63576040517f752d88c00000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604401610850565b60608160000361211e57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612148578061213281613c0d565b91506121419050600a83613c8d565b9150612122565b60008167ffffffffffffffff811115612163576121636138bc565b6040519080825280601f01601f19166020018201604052801561218d576020820181803683370190505b5090505b841561179e576121a2600183613bfa565b91506121af600a86614099565b6121ba9060306140c6565b60f81b8183815181106121cf576121cf613bce565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612209600a86613c8d565b9450612191565b6060815160000361222f57505060408051602081019091526000815290565b60006040518060600160405280604081526020016141f0604091399050600060038451600261225e91906140c6565b6122689190613c8d565b612273906004613c60565b67ffffffffffffffff81111561228b5761228b6138bc565b6040519080825280601f01601f1916602001820160405280156122b5576020820181803683370190505b509050600182016020820185865187015b80821015612321576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506122c6565b505060038651066001811461233d576002811461235057612358565b603d6001830353603d6002830353612358565b603d60018303535b509195945050505050565b60006107e682612d0b565b808061238257506001600160a01b03821615155b1561247c57600061239284611600565b90506001600160a01b038316158015906123be5750826001600160a01b0316816001600160a01b031614155b80156123f057506001600160a01b0380821660009081526007602090815260408083209387168352929052205460ff16155b15612432576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610850565b811561247a5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff16610ad7576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610850565b600080612535858585612d49565b905061179e81866001612d5e565b61254d8383612dd4565b610e636000848484611ed0565b60008160000361256c57506000919050565b6000600161257984612e52565b901c6001901b9050600181848161259257612592613c77565b048201901c905060018184816125aa576125aa613c77565b048201901c905060018184816125c2576125c2613c77565b048201901c905060018184816125da576125da613c77565b048201901c905060018184816125f2576125f2613c77565b048201901c9050600181848161260a5761260a613c77565b048201901c9050600181848161262257612622613c77565b048201901c9050611e118182858161263c5761263c613c77565b04612ee6565b60005b8183101561269c5760006126598484612efc565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561268857809250612696565b6126938160016140c6565b93505b50612645565b509392505050565b60095460ff1661178f576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107e68261101f565b816001600160a01b0316836001600160a01b03161415801561270d5750600081115b15610e63576001600160a01b038316156127b5576001600160a01b0383166000908152600f60205260408120819061275090612f1761274b86612f23565b612f57565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516127aa929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610e63576001600160a01b0382166000908152600f6020526040812081906127ee90612f9061274b86612f23565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612848929190918252602082015260400190565b60405180910390a25050505050565b606060ff83146128715761286a83612f9c565b90506107e6565b81805461287d90613c26565b80601f01602080910402602001604051908101604052809291908181526020018280546128a990613c26565b80156128f65780601f106128cb576101008083540402835291602001916128f6565b820191906000526020600020905b8154815290600101906020018083116128d957829003601f168201915b505050505090506107e6565b60408051602081019091526000808252606091905b60058110156117345760005b60058110156129fa5760008261293a836005613c60565b61294491906140c6565b9050600081600c146129865761295b600583613c8d565b61296690600f613c60565b612971836004613c60565b88901c600f166129819190614044565b612989565b60005b9050846129988260ff16612fdb565b6040516020016129a9929190614132565b6040516020818303038152906040529450816018146129e557846040516020016129d39190614158565b60405160208183030381529060405294505b505080806129f290613c0d565b915050612923565b5080612a0581613c0d565b915050612917565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612a6657507f000000000000000000000000000000000000000000000000000000000000000046145b15612a9057507f000000000000000000000000000000000000000000000000000000000000000090565b611269604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612b735750600091506003905082612bfd565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612bc7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612bf357506000925060019150829050612bfd565b9250600091508190505b9450945094915050565b6000826003811115612c1b57612c1b614199565b03612c24575050565b6001826003811115612c3857612c38614199565b03612c6f576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115612c8357612c83614199565b03612cbd576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610850565b6003826003811115612cd157612cd1614199565b03610ad7576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610850565b60006001600160e01b031982167f490649060000000000000000000000000000000000000000000000000000000014806107e657506107e68261307b565b6000612d53611752565b61179e8484846130ed565b6001600160a01b038316612d8057612d7d6010612f9061274b84612f23565b50505b6001600160a01b038216612da257612d9f6010612f1761274b84612f23565b50505b6001600160a01b038381166000908152600e6020526040808220548584168352912054610e63929182169116836126eb565b6001600160a01b038216612dfe57604051633250574960e11b815260006004820152602401610850565b6000612e0c83836000611791565b90506001600160a01b03811615610e63576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610850565b600080608083901c15612e6757608092831c92015b604083901c15612e7957604092831c92015b602083901c15612e8b57602092831c92015b601083901c15612e9d57601092831c92015b600883901c15612eaf57600892831c92015b600483901c15612ec157600492831c92015b600283901c15612ed357600292831c92015b600183901c156107e65760010192915050565b6000818310612ef55781611e11565b5090919050565b6000612f0b6002848418613c8d565b611e11908484166140c6565b6000611e1182846141af565b60006001600160d01b03821115611b5d576040516306dfcc6560e41b815260d0600482015260248101839052604401610850565b600080612f83612f6561125f565b612f7b612f7188611ddb565b868863ffffffff16565b8791906131f3565b915091505b935093915050565b6000611e1182846141cf565b60606000612fa983613201565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b60606000612fe883613242565b600101905060008167ffffffffffffffff811115613008576130086138bc565b6040519080825280601f01601f191660200182016040528015613032576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461303c57509392505050565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806130de57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806107e657506107e682613324565b6000828152600460205260408120546001600160a01b039081169083161561311a5761311a81848661338b565b6001600160a01b038116156131585761313760008560008061236e565b6001600160a01b038116600090815260056020526040902080546000190190555b6001600160a01b03851615613187576001600160a01b0385166000908152600560205260409020805460010190555b600084815260046020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600080612f83858585613408565b600060ff8216601f8111156107e6576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061328b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106132b7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106132d557662386f26fc10000830492506010015b6305f5e10083106132ed576305f5e100830492506008015b612710831061330157612710830492506004015b60648310613313576064830492506002015b600a83106107e65760010192915050565b60006001600160e01b031982167f2a55205a0000000000000000000000000000000000000000000000000000000014806107e657507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146107e6565b6133968383836135a7565b610e63576001600160a01b0383166133c457604051637e27328960e01b815260048101829052602401610850565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610850565b82546000908190801561354957600061342687611be5600185613bfa565b60408051808201909152905465ffffffffffff80821680845266010000000000009092046001600160d01b031660208401529192509087161015613496576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805165ffffffffffff8088169116036134e557846134b988611be5600186613bfa565b80546001600160d01b039290921666010000000000000265ffffffffffff909216919091179055613539565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d815291909120945191519092166601000000000000029216919091179101555b602001519250839150612f889050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a8152918220955192519093166601000000000000029190931617920191909155905081612f88565b60006001600160a01b0383161580159061179e5750826001600160a01b0316846001600160a01b0316148061360157506001600160a01b0380851660009081526007602090815260408083209387168352929052205460ff165b8061179e5750506000908152600660205260409020546001600160a01b03908116911614919050565b6040518060a001604052806005906020820280368337509192915050565b6040518060a001604052806005905b61365f61362a565b8152602001906001900390816136575790505090565b6001600160e01b031981168114610b6c57600080fd5b60006020828403121561369d57600080fd5b8135611e1181613675565b6000806000606084860312156136bd57600080fd5b505081359360208301359350604090920135919050565b60a08101818360005b60058110156136fc5781518352602092830192909101906001016136dd565b50505092915050565b60005b83811015613720578181015183820152602001613708565b50506000910152565b60008151808452613741816020860160208601613705565b601f01601f19169290920160200192915050565b602081526000611e116020830184613729565b60006020828403121561377a57600080fd5b5035919050565b80356001600160a01b03811681146111f057600080fd5b600080604083850312156137ab57600080fd5b6137b483613781565b946020939093013593505050565b803580151581146111f057600080fd5b600080604083850312156137e557600080fd5b6137ee83613781565b91506137fc602084016137c2565b90509250929050565b60006020828403121561381757600080fd5b611e11826137c2565b60008060006060848603121561383557600080fd5b61383e84613781565b925061384c60208501613781565b9150604084013590509250925092565b6000806040838503121561386f57600080fd5b50508035926020909101359150565b6000806040838503121561389157600080fd5b823591506137fc60208401613781565b6000602082840312156138b357600080fd5b611e1182613781565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156138fb576138fb6138bc565b604052919050565b600067ffffffffffffffff82111561391d5761391d6138bc565b50601f01601f191660200190565b600061393e61393984613903565b6138d2565b905082815283838301111561395257600080fd5b828260208301376000602084830101529392505050565b60006020828403121561397b57600080fd5b813567ffffffffffffffff81111561399257600080fd5b8201601f810184136139a357600080fd5b61179e8482356020840161392b565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526139ee60e084018a613729565b8381036040850152613a00818a613729565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015613a5257835183529284019291840191600101613a36565b50909c9b505050505050505050505050565b610320810181836000805b6005808210613a7e5750613abe565b835185845b83811015613aa457825160ff16825260209283019290910190600101613a83565b50505060a094909401935060209290920191600101613a6f565b5050505092915050565b60008060008060808587031215613ade57600080fd5b613ae785613781565b9350613af560208601613781565b925060408501359150606085013567ffffffffffffffff811115613b1857600080fd5b8501601f81018713613b2957600080fd5b613b388782356020840161392b565b91505092959194509250565b60008060008060008060c08789031215613b5d57600080fd5b613b6687613781565b95506020870135945060408701359350606087013560ff81168114613b8a57600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215613bb757600080fd5b613bc083613781565b91506137fc60208401613781565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156107e6576107e6613be4565b600060018201613c1f57613c1f613be4565b5060010190565b600181811c90821680613c3a57607f821691505b602082108103613c5a57634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176107e6576107e6613be4565b634e487b7160e01b600052601260045260246000fd5b600082613c9c57613c9c613c77565b500490565b601f821115610e6357600081815260208120601f850160051c81016020861015613cc85750805b601f850160051c820191505b81811015613ce757828155600101613cd4565b505050505050565b815167ffffffffffffffff811115613d0957613d096138bc565b613d1d81613d178454613c26565b84613ca1565b602080601f831160018114613d525760008415613d3a5750858301515b600019600386901b1c1916600185901b178555613ce7565b600085815260208120601f198616915b82811015613d8157888601518255948401946001909101908401613d62565b5085821015613d9f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613dc157600080fd5b815167ffffffffffffffff811115613dd857600080fd5b8201601f81018413613de957600080fd5b8051613df761393982613903565b818152856020838501011115613e0c57600080fd5b613e1d826020830160208601613705565b95945050505050565b7f7b226e616d65223a2022426f6172642023000000000000000000000000000000815260008451613e5e816011850160208901613705565b7f222c20226465736372697074696f6e223a20224a75737420526567756c6172206011918401918201527f42696e676f2e222c22616e696d6174696f6e5f75726c22203a2022000000000060318201528451613ec181604c840160208901613705565b7f222c2022696d616765223a2022646174613a696d6167652f7376672b786d6c3b604c92909101918201527f6261736536342c00000000000000000000000000000000000000000000000000606c8201528351613f25816073840160208801613705565b7f227d0000000000000000000000000000000000000000000000000000000000006073929091019182015260750195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613f9481601d850160208701613705565b91909101601d0192915050565b6000808454613faf81613c26565b60018281168015613fc75760018114613fdc5761400b565b60ff198416875282151583028701945061400b565b8860005260208060002060005b858110156140025781548a820152908401908201613fe9565b50505082870194505b50505050835161401f818360208801613705565b01949350505050565b60ff818116838216029081169081811461173457611734613be4565b60ff81811683821601908111156107e6576107e6613be4565b600060ff821660ff810361407357614073613be4565b60010192915050565b600060ff82168061408f5761408f613be4565b6000190192915050565b6000826140a8576140a8613c77565b500690565b60ff82811682821603908111156107e6576107e6613be4565b808201808211156107e6576107e6613be4565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261410b6080830184613729565b9695505050505050565b60006020828403121561412757600080fd5b8151611e1181613675565b60008351614144818460208801613705565b83519083019061401f818360208801613705565b6000825161416a818460208701613705565b7f2c00000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b634e487b7160e01b600052602160045260246000fd5b6001600160d01b0382811682821603908082111561173457611734613be4565b6001600160d01b0381811683821601908082111561173457611734613be456fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212206533126bfc4d53ec0ee9b99c53bd48913788a76ac46bce3333f6d83440e7e3a564736f6c6343000814003360c060405260076080908152660233030363030360cc1b60a0526000906200002890826200037a565b5060408051808201909152600781526608d1518d118c8d60ca1b60208201526001906200005690826200037a565b503480156200006457600080fd5b506040805161010081018252600760c08201818152660233036303030360cc1b60e0840152825282518084018452818152660233630303030360cc1b6020828101919091528084019190915283518085018552828152660233030363030360cc1b818301528385015283518085018552828152660233030303036360cc1b81830152606084015283518085018552828152660234632424630360cc1b8183015260808401528351808501909452908352660466e6c708c70760cb1b9083015260a08101919091526200013b9060029060066200020b565b506040805161010081018252600760c082018181526608d1518d118c8d60ca1b60e084018190529083528351808501855282815260208181018390528085019190915284518086018652838152808201929092528385019190915283518085018552828152660234546424230360cc1b81830152606084015283518085018552828152660233036303030360cc1b8183015260808401528351808501909452908352662330303430324560c81b9083015260a0810191909152620002049060089060066200020b565b5062000446565b826006810192821562000249579160200282015b828111156200024957825182906200023890826200037a565b50916020019190600101906200021f565b50620002579291506200025b565b5090565b80821115620002575760006200027282826200027c565b506001016200025b565b5080546200028a90620002eb565b6000825580601f106200029b575050565b601f016020900490600052602060002090810190620002bb9190620002be565b50565b5b80821115620002575760008155600101620002bf565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200030057607f821691505b6020821081036200032157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037557600081815260208120601f850160051c81016020861015620003505750805b601f850160051c820191505b8181101562000371578281556001016200035c565b5050505b505050565b81516001600160401b03811115620003965762000396620002d5565b620003ae81620003a78454620002eb565b8462000327565b602080601f831160018114620003e65760008415620003cd5750858301515b600019600386901b1c1916600185901b17855562000371565b600085815260208120601f198616915b828110156200041757888601518255948401946001909101908401620003f6565b5085821015620004365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61128b80620004566000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063537579041161005057806353757904146100c6578063dfd3b31a146100ce578063ff61b553146100d657600080fd5b80630a4aa61714610077578063474e0e83146100a05780634d327b50146100b3575b600080fd5b61008a610085366004610678565b6100e9565b60405161009791906106b5565b60405180910390f35b61008a6100ae366004610735565b610189565b61008a6100c13660046107ef565b61042a565b61008a610502565b61008a61050f565b61008a6100e4366004610678565b61051c565b600881600681106100f957600080fd5b01805490915061010890610811565b80601f016020809104026020016040519081016040528092919081815260200182805461013490610811565b80156101815780601f1061015657610100808354040283529160200191610181565b820191906000526020600020905b81548152906001019060200180831161016457829003601f168201915b505050505081565b6060600060405180610140016040528061011181526020016110d061011191398351519091506000906101bf9060ff168261042a565b6101d68560005b60200201515160ff16600161042a565b6101e18660006101c6565b6040516020016101f39392919061087d565b60408051601f19818403018152602083810183526000808552835160a08082018652601e8252604682850152606e82870152609660608084019190915260be60808085019190915287519283018852600a8352603295830195909552605a9682019690965260829581019590955260aa928501929092529194509190805b60058160ff1610156103d85760005b60058160ff1610156103c5578160ff1660021415806102a357508060ff16600214155b156103b35760006102cc858360ff16600581106102c2576102c261084b565b602002015161052c565b6102e4878560ff16600581106102c2576102c261084b565b610311878560ff16600581106102fc576102fc61084b565b602002015161030c906014610dd4565b61052c565b610329898760ff16600581106102fc576102fc61084b565b61035a8f8860ff16600581106103415761034161084b565b60200201518760ff16600581106102c2576102c261084b565b60405160200161036e959493929190610ded565b60405160208183030381529060405290508681604051602001610392929190610fa3565b604051602081830303815290604052965083806103ae90610fd2565b945050505b806103bd81610fd2565b915050610280565b50806103d081610fd2565b915050610271565b5060006040518060a00160405280607581526020016111e16075913990508686868360405160200161040d9493929190610ff1565b604051602081830303815290604052975050505050505050919050565b6060600061043960068561105e565b9050821561045a57600881600681106104545761045461084b565b0161046f565b6002816006811061046d5761046d61084b565b015b805461047a90610811565b80601f01602080910402602001604051908101604052809291908181526020018280546104a690610811565b80156104f35780601f106104c8576101008083540402835291602001916104f3565b820191906000526020600020905b8154815290600101906020018083116104d657829003601f168201915b50505050509150505b92915050565b6000805461010890610811565b6001805461010890610811565b600281600681106100f957600080fd5b60608160ff1660000361057257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b6000825b60ff81161561059f578161058981610fd2565b92506105989050600a82611072565b9050610576565b60008260ff1667ffffffffffffffff8111156105bd576105bd6106e8565b6040519080825280601f01601f1916602001820160405280156105e7576020820181803683370190505b5090505b60ff851615610670576105ff600184611094565b925061060c600a866110ad565b610617906030610dd4565b60f81b818460ff168151811061062f5761062f61084b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610669600a86611072565b94506105eb565b949350505050565b60006020828403121561068a57600080fd5b5035919050565b60005b838110156106ac578181015183820152602001610694565b50506000910152565b60208152600082518060208401526106d4816040850160208701610691565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561072f57634e487b7160e01b600052604160045260246000fd5b60405290565b600061032080838503121561074957600080fd5b601f848185011261075957600080fd5b6107616106fe565b91840191808684111561077357600080fd5b855b848110156107e457878482011261078c5760008081fd5b6107946106fe565b8060a083018a8111156107a75760008081fd5b835b818110156107d157803560ff811681146107c35760008081fd5b8452602093840193016107a9565b505084525060209092019160a001610775565b509695505050505050565b6000806040838503121561080257600080fd5b50508035926020909101359150565b600181811c9082168061082557607f821691505b60208210810361084557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60008151610873818560208601610691565b9290920192915050565b7f2e7374307b66696c6c3a000000000000000000000000000000000000000000008152600084516108b581600a850160208901610691565b7f3b7d2e7374317b66696c6c3a234638463846383b7374726f6b653a2330303030600a918401918201527f30303b7374726f6b652d77696474683a323b7d2e7374327b666f6e742d66616d602a8201527f696c793a2027417269616c20426c61636b272c202748656c766574696361204e604a8201527f657565272c2073616e732d73657269663b20666f6e742d73697a653a20323070606a8201527f783b7d2e7374337b66696c6c3a00000000000000000000000000000000000000608a820152845161098a816097840160208901610691565b7f3b7d2e7374347b666f6e742d66616d696c793a2027417269616c20426c61636b609792909101918201527f272c202748656c766574696361204e657565272c2073616e732d73657269663b60b78201527f20666f6e742d7765696768743a203930303b20666f6e742d73697a653a20323460d78201527f70783b66696c6c3a00000000000000000000000000000000000000000000000060f7820152610db4610a3760ff830186610861565b7f3b7d3c2f7374796c653e3c7265637420636c6173733d2273743022207769647481527f683d2232323022206865696768743d22323430222072783d2235222f3e3c746560208201527f787420783d2233302220793d2231352220746578742d616e63686f723d226d6960408201527f64646c652220646f6d696e616e742d626173656c696e653d2263656e7472616c60608201527f2220636c6173733d22737434223e423c2f746578743e3c7265637420783d223460808201527f302220793d22302220636c6173733d22737430222077696474683d223430222060a08201527f6865696768743d223430222f3e3c7465787420783d2237302220793d2231352260c08201527f20746578742d616e63686f723d226d6964646c652220646f6d696e616e742d6260e08201527f6173656c696e653d2263656e7472616c2220636c6173733d22737434223e493c6101008201527f2f746578743e3c7265637420783d2238302220793d22302220636c6173733d226101208201527f737430222077696474683d22343022206865696768743d223430222f3e3c74656101408201527f787420783d223131302220793d2231352220746578742d616e63686f723d226d6101608201527f6964646c652220646f6d696e616e742d626173656c696e653d2263656e7472616101808201527f6c2220636c6173733d22737434223e4e3c2f746578743e3c7265637420783d226101a08201527f3132302220793d22302220636c6173733d22737430222077696474683d2234306101c08201527f22206865696768743d223430222f3e3c7465787420783d223135302220793d226101e08201527f31352220746578742d616e63686f723d226d6964646c652220646f6d696e616e6102008201527f742d626173656c696e653d2263656e7472616c2220636c6173733d22737434226102208201527f3e473c2f746578743e3c7265637420783d223136302220793d22302220636c616102408201527f73733d22737430222077696474683d22343022206865696768743d223430222f6102608201527f3e3c7465787420783d223139302220793d2231352220746578742d616e63686f6102808201527f723d226d6964646c652220646f6d696e616e742d626173656c696e653d2263656102a08201527f6e7472616c2220636c6173733d22737434223e4f3c2f746578743e00000000006102c08201526102db0190565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156104fc576104fc610dbe565b7f0a3c7265637420783d2200000000000000000000000000000000000000000000815260008651610e2581600a850160208b01610691565b80830190507f2220793d2200000000000000000000000000000000000000000000000000000080600a8301528751610e6481600f850160208c01610691565b7f2220636c6173733d22737431222077696474683d22343022206865696768743d600f93909101928301527f223430222f3e0000000000000000000000000000000000000000000000000000602f8301527f3c7465787420783d22000000000000000000000000000000000000000000000060358301528651610eee81603e850160208b01610691565b603e9201918201528451610f09816043840160208901610691565b610f96610f6d610f676043848601017f2220746578742d616e63686f723d226d6964646c652220646f6d696e616e742d81527f626173656c696e653d2263656e7472616c2220636c6173733d22737432223e006020820152603f0190565b87610861565b7f3c2f746578743e00000000000000000000000000000000000000000000000000815260070190565b9998505050505050505050565b60008351610fb5818460208801610691565b835190830190610fc9818360208801610691565b01949350505050565b600060ff821660ff8103610fe857610fe8610dbe565b60010192915050565b60008551611003818460208a01610691565b855190830190611017818360208a01610691565b855191019061102a818360208901610691565b845191019061103d818360208801610691565b019695505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261106d5761106d611048565b500690565b600060ff83168061108557611085611048565b8060ff84160491505092915050565b60ff82811682821603908111156104fc576104fc610dbe565b600060ff8316806110c0576110c0611048565b8060ff8416069150509291505056fe3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d38223f3e3c7376672076657273696f6e3d22312e31222069643d224c617965725f312220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f7376672220786d6c6e733a786c696e6b3d22687474703a2f2f7777772e77332e6f72672f313939392f786c696e6b2220783d223070782220793d22307078222076696577426f783d22302030203232302032343022207374796c653d22656e61626c652d6261636b67726f756e643a6e65772030203020323230203234303b2220786d6c3a73706163653d227072657365727665223e3c7374796c6520747970653d22746578742f637373223e3c706f6c79676f6e20636c6173733d227374332220706f696e74733d223131302c313136203131332c313236203132342c313236203131362c313333203131382c313433203131302c313337203130312c313433203130332c3133332039352c313236203130362c31323620222f3e3c2f7376673ea26469706673582212205e08a01f4d7f153db31fff91e8f1ee86fbceaee1febf1220ccbe98cf4922f38064736f6c63430008140033697066733a2f2f516d6532445056374e766a6250737962726237314a377957366e584a4c6e3943477241454e506f4b6a6b614559702f696e6465782e68746d6c3f6e756d626572733d