290 txs
297 calls
constructor
constructor(address initialOwner, address usdcAddress, address delegationRegistry, address delegationRegistryV2)
functions
checkMintIndex
viewfunction checkMintIndex(address creatorContractAddress, uint256 instanceId, uint32 mintIndex) view returns (bool)
checkMintIndices
viewfunction checkMintIndices(address creatorContractAddress, uint256 instanceId, uint32[] mintIndices) view returns (bool[] minted)
DELEGATION_REGISTRY_V2
viewfunction DELEGATION_REGISTRY_V2() view returns (address)
DELEGATION_REGISTRY
viewfunction DELEGATION_REGISTRY() view returns (address)
getAdmins
viewfunction getAdmins() view returns (address[] admins)
getClaim
viewfunction getClaim(address creatorContractAddress, uint256 instanceId) view returns (tuple)
getClaimForToken
viewfunction getClaimForToken(address creatorContractAddress, uint256 tokenId) view returns (uint256 instanceId, tuple claim)
getTotalMints
viewfunction getTotalMints(address minter, address creatorContractAddress, uint256 instanceId) view returns (uint32)
isAdmin
viewfunction isAdmin(address admin) view returns (bool)
MEMBERSHIP_ADDRESS
viewfunction MEMBERSHIP_ADDRESS() view returns (address)
MINT_FEE_MERKLE
viewfunction MINT_FEE_MERKLE() view returns (uint256)
MINT_FEE
viewfunction MINT_FEE() view returns (uint256)
owner
viewfunction owner() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenURI
viewfunction tokenURI(address creatorContractAddress, uint256 tokenId) view returns (string uri)
USDC_ADDRESS
viewfunction USDC_ADDRESS() view returns (address)
airdrop
nonpayablefunction airdrop(address creatorContractAddress, uint256 instanceId, address[] recipients, uint16[] amounts)
approveAdmin
nonpayablefunction approveAdmin(address admin)
extendTokenURI
nonpayablefunction extendTokenURI(address creatorContractAddress, uint256 instanceId, string locationChunk)
initializeClaim
nonpayablefunction initializeClaim(address creatorContractAddress, uint256 instanceId, tuple claimParameters)
mint
nonpayablefunction mint(address creatorContractAddress, uint256 instanceId, uint32 mintIndex, bytes32[] merkleProof, address mintFor)
mintBatch
nonpayablefunction mintBatch(address creatorContractAddress, uint256 instanceId, uint16 mintCount, uint32[] mintIndices, bytes32[][] merkleProofs, address mintFor)
mintProxy
nonpayablefunction mintProxy(address creatorContractAddress, uint256 instanceId, uint16 mintCount, uint32[] mintIndices, bytes32[][] merkleProofs, address mintFor)
mintSignature
nonpayablefunction mintSignature(address creatorContractAddress, uint256 instanceId, uint16 mintCount, bytes signature, bytes32 message, bytes32 nonce, address mintFor, uint256 expiration)
renounceOwnership
nonpayablefunction renounceOwnership()
revokeAdmin
nonpayablefunction revokeAdmin(address admin)
setMembershipAddress
nonpayablefunction setMembershipAddress(address membershipAddress)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateClaim
nonpayablefunction updateClaim(address creatorContractAddress, uint256 instanceId, tuple claimParameters)
updateTokenURIParams
nonpayablefunction updateTokenURIParams(address creatorContractAddress, uint256 instanceId, uint8 storageProtocol, bool identical, string location)
withdraw
nonpayablefunction withdraw(address receiver, uint256 amount)
events
AdminApproved
event AdminApproved(address indexed account, address indexed sender)
AdminRevoked
event AdminRevoked(address indexed account, address indexed sender)
ClaimInitialized
event ClaimInitialized(address indexed creatorContract, uint256 indexed instanceId, address initializer)
ClaimMint
event ClaimMint(address indexed creatorContract, uint256 indexed instanceId)
ClaimMintBatch
event ClaimMintBatch(address indexed creatorContract, uint256 indexed instanceId, uint16 mintCount)
ClaimMintProxy
event ClaimMintProxy(address indexed creatorContract, uint256 indexed instanceId, uint16 mintCount, address proxy, address mintFor)
ClaimMintSignature
event ClaimMintSignature(address indexed creatorContract, uint256 indexed instanceId, uint16 mintCount, address proxy, address mintFor, bytes32 nonce)
ClaimUpdated
event ClaimUpdated(address indexed creatorContract, uint256 indexed instanceId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
CannotChangePaymentToken
error CannotChangePaymentToken()
ClaimInactive
error ClaimInactive()
ClaimNotInitialized
error ClaimNotInitialized()
ExpiredSignature
error ExpiredSignature()
FailedToTransfer
error FailedToTransfer()
InvalidAirdrop
error InvalidAirdrop()
InvalidInput
error InvalidInput()
InvalidInstance
error InvalidInstance()
InvalidSignature
error InvalidSignature()
InvalidStartDate
error InvalidStartDate()
InvalidStorageProtocol
error InvalidStorageProtocol()
InvalidUSDCAddress
error InvalidUSDCAddress()
MustUseSignatureMinting
error MustUseSignatureMinting()
TokenDNE
error TokenDNE()
TooManyRequested
error TooManyRequested()
creation bytecode
0x60e06040523480156200001157600080fd5b506040516200605538038062006055833981016040819052620000349162000106565b83838383838282620000463362000099565b620000518362000099565b6001600160a01b03918216608052811660a05293841660c052505050841690506200008f576040516303ec08db60e41b815260040160405180910390fd5b5050505062000163565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200010157600080fd5b919050565b600080600080608085870312156200011d57600080fd5b6200012885620000e9565b93506200013860208601620000e9565b92506200014860408601620000e9565b91506200015860608601620000e9565b905092959194509250565b60805160a05160c051615e98620001bd6000396000818161040d015281816112b90152818161287101528181612fb30152612ffa0152600081816102ad015261443c015260008181610327015261441a0152615e986000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f578063cb799716116100a2578063f2fde38b11610071578063f2fde38b14610484578063f3fef3a314610497578063f8a6137b146104aa578063fa2b068f146104ca57600080fd5b8063cb7997161461042f578063cda0853614610447578063d7bf81a31461045a578063e9dc63751461046457600080fd5b80638da5cb5b116100de5780638da5cb5b146103d157806399c14347146103e2578063b93aa86c146103f5578063bb09d9b71461040857600080fd5b8063715018a61461038257806374b844671461038a5780637ab393921461039d578063895696f2146103b057600080fd5b806331ae450b116101875780634daadff7116101565780634daadff7146103225780635816b99c146103495780635f2f51291461035c5780636d73e6691461036f57600080fd5b806331ae450b1461029357806334816351146102a857806342f3bef4146102e75780634baa62bf1461030f57600080fd5b806324d7806c116101c357806324d7806c1461024757806326c858a41461025a5780632d3456701461026d5780632ff381061461028057600080fd5b806301ffc9a7146101ea57806307591acc146102125780630f79ab3914610227575b600080fd5b6101fd6101f8366004614ca8565b6104dd565b60405190151581526020015b60405180910390f35b610225610220366004614d4e565b610508565b005b61023a610235366004614dfe565b610703565b6040516102099190614fdf565b6101fd610255366004614ff2565b6108a4565b610225610268366004614d4e565b6108dd565b61022561027b366004614ff2565b610ab8565b61022561028e366004615150565b610b16565b61029b611150565b6040516102099190615293565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610209565b6102fa6102f53660046152e0565b6111ff565b60405163ffffffff9091168152602001610209565b6003546102cf906001600160a01b031681565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b610225610357366004615321565b611227565b61022561036a366004615382565b611324565b61022561037d366004614ff2565b611845565b61022561189d565b610225610398366004615450565b6118b1565b6102256103ab366004614ff2565b611aa4565b6103c36103be366004614dfe565b611b4c565b6040516102099291906154f1565b6000546001600160a01b03166102cf565b6102256103f0366004615512565b611dd7565b610225610403366004615583565b611f6e565b6102cf7f000000000000000000000000000000000000000000000000000000000000000081565b61043962144b5081565b604051908152602001610209565b6101fd6104553660046155df565b6120ce565b610439620f424081565b610477610472366004614dfe565b6120ee565b604051610209919061561d565b610225610492366004614ff2565b61274f565b6102256104a5366004614dfe565b6127c5565b6104bd6104b8366004615630565b61292a565b6040516102099190615680565b6102256104d83660046156ba565b6129f7565b600063015e040160e71b6001600160e01b031983161480610502575061050282612ce6565b92915050565b60006105148989612d6d565b60068101549091506001600160a01b031615610543576040516317e1a99160e11b815260040160405180910390fd5b805461ffff881690829060009061056190849063ffffffff16615753565b82546101009290920a63ffffffff8181021990931691831602179091558254600160201b90041615801591506105a65750805463ffffffff600160201b820481169116115b806105bc5750805462ffffff63ffffffff909116115b156105da57604051638d83cdd760e01b815260040160405180910390fd5b8054600182015461061f918b918b9165ffffffffffff600160601b8204811692600160901b83049091169163ffffffff600160401b90910416908d8d8d8d8d8d612dcc565b80546000906106399061ffff8a169063ffffffff16615770565b610644906001615753565b600583015460038401546004850154600186015463ffffffff949094169450610682936001600160a01b0393841693909116908c9015156000612fb1565b6106a18a8a8a86858760000160199054906101000a900460ff16613269565b6040805161ffff8a1681523360208201526001600160a01b03858116928201929092528a918c16907f61039ad47d0b05ec206a4450fd164cc2055af66ac594c12b8dd747e8803a90de906060015b60405180910390a350505050505050505050565b61070b614c39565b6107158383612d6d565b604080516101c081018252825463ffffffff8082168352600160201b820481166020840152600160401b8204169282019290925265ffffffffffff600160601b830481166060830152600160901b8304166080820152919060a083019060ff600160c01b90910416600481111561078e5761078e614e2a565b600481111561079f5761079f614e2a565b8152815460ff600160c81b820481166020840152600160d01b9091041615156040820152600182015460608201526002820180546080909201916107e29061578d565b80601f016020809104026020016040519081016040528092919081815260200182805461080e9061578d565b801561085b5780601f106108305761010080835404028352916020019161085b565b820191906000526020600020905b81548152906001019060200180831161083e57829003601f168201915b50505091835250506003820154602082015260048201546001600160a01b0390811660408301526005830154811660608301526006909201549091166080909101529392505050565b6000816001600160a01b03166108c26000546001600160a01b031690565b6001600160a01b0316148061050257506105026001836134e2565b60006108e98989612d6d565b60068101549091506001600160a01b031615610918576040516317e1a99160e11b815260040160405180910390fd5b805461ffff881690829060009061093690849063ffffffff16615753565b82546101009290920a63ffffffff8181021990931691831602179091558254600160201b900416158015915061097b5750805463ffffffff600160201b820481169116115b806109915750805462ffffff63ffffffff909116115b156109af57604051638d83cdd760e01b815260040160405180910390fd5b805460018201546109f4918b918b9165ffffffffffff600160601b8204811692600160901b83049091169163ffffffff600160401b90910416908d8d8d8d8d8d613507565b8054600090610a0e9061ffff8a169063ffffffff16615770565b610a19906001615753565b60058301546003840154600485015460018087015463ffffffff959095169550610a58946001600160a01b0394851694909216918d9190151590612fb1565b610a778a8a8a33858760000160199054906101000a900460ff16613269565b60405161ffff8916815289906001600160a01b038c16907f74f5d3254dfa39a7b1217a27d5d9b3e061eafe11720eca1cf499da2dc1eb1259906020016106ef565b610ac06135e7565b610acb6001826134e2565b15610b135760405133906001600160a01b038316907f7c0c3c84c67c85fcac635147348bfe374c24a1a93d0366d1cfe9d8853cbf89d590600090a3610b11600182613641565b505b50565b604051630935e01b60e21b8152336004820152839081906001600160a01b038216906324d7806c90602401602060405180830381865afa158015610b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8291906157c7565b610ba75760405162461bcd60e51b8152600401610b9e906157e4565b60405180910390fd5b6000610bb38686612d6d565b604080516101c081018252825463ffffffff8082168352600160201b820481166020840152600160401b8204169282019290925265ffffffffffff600160601b830481166060830152600160901b8304166080820152919060a083019060ff600160c01b909104166004811115610c2c57610c2c614e2a565b6004811115610c3d57610c3d614e2a565b8152815460ff600160c81b820481166020840152600160d01b909104161515604082015260018201546060820152600282018054608090920191610c809061578d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cac9061578d565b8015610cf95780601f10610cce57610100808354040283529160200191610cf9565b820191906000526020600020905b815481529060010190602001808311610cdc57829003601f168201915b50505091835250506003820154602082015260048201546001600160a01b0390811660408301526005830154811660608301526006909201549091166080909101529050600084608001516004811115610d5557610d55614e2a565b03610d735760405163cc14845760e01b815260040160405180910390fd5b600484608001516004811115610d8b57610d8b614e2a565b148015610d9e57508360e0015151601414155b15610dbc5760405163cc14845760e01b815260040160405180910390fd5b606084015165ffffffffffff1615801590610def5750836060015165ffffffffffff16846040015165ffffffffffff1610155b15610e0d57604051630bf784c760e01b815260040160405180910390fd5b8061018001516001600160a01b03168461014001516001600160a01b031614610e485760405162a76c6960e11b815260040160405180910390fd5b835163ffffffff1615801590610e6957508351815163ffffffff9182169116115b15610e7957805163ffffffff1684525b604051806101c00160405280826000015163ffffffff168152602001856000015163ffffffff168152602001856020015163ffffffff168152602001856040015165ffffffffffff168152602001856060015165ffffffffffff16815260200185608001516004811115610eef57610eef614e2a565b815260c08084015160ff1660208084019190915260a08881015115156040808601919091528984015160608087019190915260e0808c0151608080890191909152610100808e0151868a01526101208e01516001600160a01b03908116988a01989098526101808b01518816928901929092526101608d015187169190970152938c166000908152600784528181208c82528452819020865181549488015192880151958801519688015165ffffffffffff908116600160901b0265ffffffffffff60901b1991909816600160601b0265ffffffffffff60601b1963ffffffff988916600160401b021671ffffffffffffffffffff000000000000000019958916600160201b0267ffffffffffffffff19909816989093169790971795909517929092169190911793909317918216841783558401519192839160ff60c01b1990911666ffffffffffffff60901b1990911617600160c01b83600481111561105957611059614e2a565b021790555060c0820151815460e08401511515600160d01b0260ff60d01b1960ff909316600160c81b029290921661ffff60c81b1990911617178155610100820151600182015561012082015160028201906110b5908261587a565b5061014082015160038201556101608201516004820180546001600160a01b03199081166001600160a01b039384161790915561018084015160058401805483169184169190911790556101a090930151600690920180549093169181169190911790915560405186918816907f657336af9bb6c51d60c05491508d7d3026a24ee549d7a0af42e44c75bfaec47c90600090a3505050505050565b606061115c6001613656565b67ffffffffffffffff8111156111745761117461500f565b60405190808252806020026020018201604052801561119d578160200160208202803683370190505b50905060005b6111ad6001613656565b8110156111fb576111bf600182613660565b8282815181106111d1576111d161593a565b6001600160a01b0390921660209283029190910190910152806111f381615950565b9150506111a3565b5090565b60008061120c8484610703565b905061121e816040015186868661366c565b95945050505050565b604051630935e01b60e21b8152336004820152839081906001600160a01b038216906324d7806c90602401602060405180830381865afa15801561126f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129391906157c7565b6112af5760405162461bcd60e51b8152600401610b9e906157e4565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166112eb61016085016101408601614ff2565b6001600160a01b031614611312576040516303ec08db60e41b815260040160405180910390fd5b61131d858585613721565b5050505050565b604051630935e01b60e21b8152336004820152869081906001600160a01b038216906324d7806c90602401602060405180830381865afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139091906157c7565b6113ac5760405162461bcd60e51b8152600401610b9e906157e4565b8483146113cc5760405163e6dcad7760e01b815260040160405180910390fd5b60006113d88989612d6d565b80549091506000906113f19063ffffffff166001615753565b825463ffffffff9190911691506003600160c81b90910460ff16106115b15760005b878110156115ab57600087878381811061142f5761142f61593a565b90506020020160208101906114449190615969565b905060008161ffff1667ffffffffffffffff8111156114655761146561500f565b60405190808252806020026020018201604052801561148e578160200160208202803683370190505b50905060005b8261ffff168110156114fc576114aa8186615984565b62ffffff1660188e66ffffffffffffff16901b1766ffffffffffffff168282815181106114d9576114d961593a565b69ffffffffffffffffffff90921660209283029190910190910152600101611494565b508c6001600160a01b0316634278330e8c8c8681811061151e5761151e61593a565b90506020020160208101906115339190614ff2565b836040518363ffffffff1660e01b8152600401611551929190615997565b6000604051808303816000875af1158015611570573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261159891908101906159fa565b505061ffff169190910190600101611413565b50611755565b60005b878110156117535760008b6001600160a01b031663e00aab4b8b8b858181106115df576115df61593a565b90506020020160208101906115f49190614ff2565b8a8a868181106116065761160661593a565b905060200201602081019061161b9190615969565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015261ffff1660248201526044016000604051808303816000875af115801561166a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261169291908101906159fa565b905060005b81518110156117445760405180604001604052808d6001600160e01b0316815260200182866116c69190615984565b63ffffffff1690526001600160a01b038e16600090815260086020526040812084519091908590859081106116fd576116fd61593a565b6020908102919091018101518252818101929092526040016000208251929091015163ffffffff16600160e01b026001600160e01b03909216919091179055600101611697565b505191909101906001016115b4565b505b815462ffffff9060019061176f9063ffffffff1684615aa0565b6117799190615aa0565b111561179857604051638d83cdd760e01b815260040160405180910390fd5b81546001906117ad9063ffffffff1683615aa0565b6117b79190615aa0565b825483906000906117cf90849063ffffffff16615753565b82546101009290920a63ffffffff8181021990931691831602179091558354600160201b90041615801591506118145750815463ffffffff600160201b820481169116115b15611839578154600160201b63ffffffff82160267ffffffff00000000199091161782555b50505050505050505050565b61184d6135e7565b6118586001826134e2565b610b135760405133906001600160a01b038316907f7e1a1a08d52e4ba0e21554733d66165fd5151f99460116223d9e3a608eec5cb190600090a3610b11600182613e2a565b6118a56135e7565b6118af6000613e3f565b565b888760006118bf838c612d6d565b805490915061ffff83169082906000906118e090849063ffffffff16615753565b82546101009290920a63ffffffff8181021990931691831602179091558254600160201b90041615801591506119255750805463ffffffff600160201b820481169116115b8061193b5750805462ffffff63ffffffff909116115b1561195957604051638d83cdd760e01b815260040160405180910390fd5b805460068201546119919165ffffffffffff600160601b8204811692600160901b90920416908c908c906001600160a01b0316613e8f565b6119ba838c8b8b8b8b8760060160009054906101000a90046001600160a01b03168c8c8b613f22565b80546000906119d49061ffff85169063ffffffff16615770565b6119df906001615753565b600583015460038401546004850154600186015463ffffffff949094169450611a1d936001600160a01b039384169390911690879015156000612fb1565b611a3c848d8589858760000160199054906101000a900460ff16613269565b6040805161ffff851681523360208201526001600160a01b0388811682840152606082018a905291518e928716917f2a66fa8cf3fd5c304dd791b29fc3f15d7c3ced12546e8133dd1a054250ce4627919081900360800190a350505050505050505050505050565b33611ab76000546001600160a01b031690565b6001600160a01b03161480611ad25750611ad26001336134e2565b611b2a5760405162461bcd60e51b8152602060048201526024808201527f41646d696e436f6e74726f6c3a204d757374206265206f776e6572206f7220616044820152633236b4b760e11b6064820152608401610b9e565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000611b56614c39565b6001600160a01b038416600090815260086020908152604080832086845282528083208151808301909252546001600160e01b038116808352600160e01b90910463ffffffff16928201929092529103611c2b5760405163b4b5b48f60e01b8152600481018590526000906001600160a01b0387169063b4b5b48f90602401602060405180830381865afa158015611bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c169190615ab3565b60181c66ffffffffffffff169350611c399050565b80516001600160e01b031692505b611c438584612d6d565b604080516101c081018252825463ffffffff8082168352600160201b820481166020840152600160401b8204169282019290925265ffffffffffff600160601b830481166060830152600160901b8304166080820152919060a083019060ff600160c01b909104166004811115611cbc57611cbc614e2a565b6004811115611ccd57611ccd614e2a565b8152815460ff600160c81b820481166020840152600160d01b909104161515604082015260018201546060820152600282018054608090920191611d109061578d565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3c9061578d565b8015611d895780601f10611d5e57610100808354040283529160200191611d89565b820191906000526020600020905b815481529060010190602001808311611d6c57829003601f168201915b50505091835250506003820154602082015260048201546001600160a01b03908116604083015260058301548116606083015260069092015490911660809091015292959294509192505050565b604051630935e01b60e21b8152336004820152869081906001600160a01b038216906324d7806c90602401602060405180830381865afa158015611e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4391906157c7565b611e5f5760405162461bcd60e51b8152600401610b9e906157e4565b6000611e6b8989612d6d565b90506000876004811115611e8157611e81614e2a565b03611e9f5760405163cc14845760e01b815260040160405180910390fd5b6004876004811115611eb357611eb3614e2a565b148015611ec1575060148414155b15611edf5760405163cc14845760e01b815260040160405180910390fd5b80548790829060ff60c01b1916600160c01b836004811115611f0357611f03614e2a565b021790555060028101611f17858783615adf565b50805460ff60d01b1916600160d01b8715150217815560405188906001600160a01b038b16907f657336af9bb6c51d60c05491508d7d3026a24ee549d7a0af42e44c75bfaec47c90600090a3505050505050505050565b604051630935e01b60e21b8152336004820152849081906001600160a01b038216906324d7806c90602401602060405180830381865afa158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fda91906157c7565b611ff65760405162461bcd60e51b8152600401610b9e906157e4565b60006120028787612d6d565b905060018154600160c01b900460ff16600481111561202357612023614e2a565b14158061203957508054600160d01b900460ff16155b156120575760405163cc14845760e01b815260040160405180910390fd5b80600201858560405160200161206f93929190615b9f565b60405160208183030381529060405281600201908161208e919061587a565b5060405186906001600160a01b038916907f657336af9bb6c51d60c05491508d7d3026a24ee549d7a0af42e44c75bfaec47c90600090a350505050505050565b6000806120db8585610703565b905061121e85858361010001518661410d565b6001600160a01b03821660009081526008602090815260408083208484528252918290208251808401909352546001600160e01b0381168352600160e01b900463ffffffff1690820152606090612143614c39565b815160009081906001600160e01b03161561232c575082516001600160a01b038716600090815260076020908152604080832087516001600160e01b0390811685529083529281902081516101c081018352815463ffffffff8082168352600160201b8204811695830195909552600160401b81049094169281019290925265ffffffffffff600160601b840481166060840152600160901b84041660808301529290931692919060a083019060ff600160c01b90910416600481111561220c5761220c614e2a565b600481111561221d5761221d614e2a565b8152815460ff600160c81b820481166020840152600160d01b9091041615156040820152600182015460608201526002820180546080909201916122609061578d565b80601f016020809104026020016040519081016040528092919081815260200182805461228c9061578d565b80156122d95780601f106122ae576101008083540402835291602001916122d9565b820191906000526020600020905b8154815290600101906020018083116122bc57829003601f168201915b5050509183525050600382015460208083019190915260048301546001600160a01b0390811660408401526005840154811660608401526006909301549092166080909101528501519093509150612583565b60405163b4b5b48f60e01b8152600481018790526000906001600160a01b0389169063b4b5b48f90602401602060405180830381865afa158015612374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123989190615ab3565b66ffffffffffffff601882901c169250905060008290036123cc57604051632c17b50960e01b815260040160405180910390fd5b6001600160a01b038816600090815260076020908152604080832085845282529182902082516101c081018452815463ffffffff8082168352600160201b8204811694830194909452600160401b81049093169381019390935265ffffffffffff600160601b830481166060850152600160901b83041660808401529060a083019060ff600160c01b90910416600481111561246a5761246a614e2a565b600481111561247b5761247b614e2a565b8152815460ff600160c81b820481166020840152600160d01b9091041615156040820152600182015460608201526002820180546080909201916124be9061578d565b80601f01602080910402602001604051908101604052809291908181526020018280546124ea9061578d565b80156125375780601f1061250c57610100808354040283529160200191612537565b820191906000526020600020905b81548152906001019060200180831161251a57829003601f168201915b50505091835250506003820154602082015260048201546001600160a01b039081166040830152600583015481166060830152600690920154909116608090910152935062ffffff1691505b60048360a00151600481111561259b5761259b614e2a565b0361263e5761012083015160140151604051633886963560e11b81526001600160a01b038981166004830152602482018990526044820184905262ffffff85166064830152919091169063710d2c6a90608401600060405180830381865afa15801561260b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126339190810190615c21565b945050505050610502565b60408051602081019091526000815260028460a00151600481111561266557612665614e2a565b036126a4575060408051808201909152601481527f68747470733a2f2f617277656176652e6e65742f00000000000000000000000060208201526126e1565b60038460a0015160048111156126bc576126bc614e2a565b036126e15750604080518082019091526007815266697066733a2f2f60c81b60208201525b6101208401516040516126f8918391602001615c8f565b60405160208183030381529060405295508360e0015161274457856127218462ffffff166141a7565b604051602001612732929190615cbe565b60405160208183030381529060405295505b505050505092915050565b6127576135e7565b6001600160a01b0381166127bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b9e565b610b1381613e3f565b336127d86000546001600160a01b031690565b6001600160a01b031614806127f357506127f36001336134e2565b61284b5760405162461bcd60e51b8152602060048201526024808201527f41646d696e436f6e74726f6c3a204d757374206265206f776e6572206f7220616044820152633236b4b760e11b6064820152608401610b9e565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156128ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128de91906157c7565b610b115760405162461bcd60e51b815260206004820152601760248201527f4661696c656420746f207472616e7366657220555344430000000000000000006044820152606401610b9e565b606060006129388686610703565b9050828067ffffffffffffffff8111156129545761295461500f565b60405190808252806020026020018201604052801561297d578160200160208202803683370190505b50925060005b818110156129ec576129c288888561010001518989868181106129a8576129a861593a565b90506020020160208101906129bd9190615cfa565b61410d565b8482815181106129d4576129d461593a565b91151560209283029190910190910152600101612983565b505050949350505050565b6000612a038787612d6d565b60068101549091506001600160a01b031615612a32576040516317e1a99160e11b815260040160405180910390fd5b805463ffffffff600160201b82048116918391600091612a529116615d15565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff16118015612a8f57508054600160201b900463ffffffff1615155b80612aa55750805462ffffff63ffffffff909116115b15612ac357604051638d83cdd760e01b815260040160405180910390fd5b80546001820154612b06918991899165ffffffffffff600160601b8204811692600160901b83049091169163ffffffff600160401b90910416908b8b8b8b614247565b600581015460038201546004830154600180850154612b37946001600160a01b039081169493169190151581612fb1565b80546003600160c81b90910460ff1610612bdc57805460405163d397371960e01b815233600482015262ffffff909116601888901b66ffffffff000000161760248201819052906001600160a01b0389169063d3973719906044016020604051808303816000875af1158015612bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd59190615d38565b5050612ca7565b604051630525194b60e31b81523360048201526000906001600160a01b03891690632928ca58906024016020604051808303816000875af1158015612c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c499190615d38565b6040805180820182526001600160e01b03808b168252855463ffffffff90811660208085019182526001600160a01b038f166000908152600882528681209781529690529390942091519251909316600160e01b0291909216179055505b60405186906001600160a01b038916907f5d404f369772cfab2b65717fca9bc2077efeab89a0dbec036bf0c13783154eb190600090a350505050505050565b60006001600160e01b03198216638e1ebf5360e01b1480612d1757506001600160e01b03198216631fd7091160e31b145b80612d3257506001600160e01b0319821663e9dc637560e01b145b80612d4d57506001600160e01b03198216632a9f3abf60e11b145b8061050257506001600160e01b031982166301ffc9a760e01b1492915050565b6001600160a01b03821660009081526007602090815260408083208484529091528120908154600160c01b900460ff166004811115612dae57612dae614e2a565b0361050257604051637f07ad4960e01b815260040160405180910390fd5b428a65ffffffffffff161180612dfc575060008965ffffffffffff16118015612dfc5750428965ffffffffffff16105b15612e1a5760405163c84651bb60e01b815260040160405180910390fd5b8615612efb5761ffff861684148015612e36575061ffff861682145b612e535760405163b4fa3fb360e01b815260040160405180910390fd5b60005b8661ffff16811015612ef557612eed828e8e8b8a8a87818110612e7b57612e7b61593a565b9050602002016020810190612e909190615cfa565b898988818110612ea257612ea261593a565b9050602002810190612eb49190615d51565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508b925061437b915050565b600101612e56565b50612fa3565b63ffffffff881615612fa3576001600160a01b03808d1660009081526004602090815260408083208f845282528083209385168352929052908120805461ffff89169290612f4a908490615984565b90915550506001600160a01b03808d1660009081526004602090815260408083208f845282528083209385168352929052205463ffffffff89161015612fa357604051638d83cdd760e01b815260040160405180910390fd5b505050505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612ff85760405163603b655960e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161461304a5760405163603b655960e01b815260040160405180910390fd5b60035485906001600160a01b03161580613062575081155b806130d657506003546040516345ecd02f60e01b81523360048201526001600160a01b03909116906345ecd02f90602401602060405180830381865afa1580156130b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d491906157c7565b155b156130fb57826130e957620f42406130ee565b62144b505b6130f89082615984565b90505b60018461ffff1611156131295761311661ffff851682615d9b565b905061312661ffff851687615d9b565b95505b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038816906323b872dd906064016020604051808303816000875af115801561317c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a091906157c7565b6131ec5760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742066756e647300000000000000000000000000006044820152606401610b9e565b60405163a9059cbb60e01b81526001600160a01b0386811660048301526024820188905288169063a9059cbb906044016020604051808303816000875af115801561323b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325f91906157c7565b5050505050505050565b60038160ff16106133a75760008461ffff1667ffffffffffffffff8111156132935761329361500f565b6040519080825280602002602001820160405280156132bc578160200160208202803683370190505b50905060005b8561ffff1681101561332a576132d88185615984565b62ffffff1660188866ffffffffffffff16901b1766ffffffffffffff168282815181106133075761330761593a565b69ffffffffffffffffffff909216602092830291909101909101526001016132c2565b5060405163213c198760e11b81526001600160a01b03881690634278330e906133599087908590600401615997565b6000604051808303816000875af1158015613378573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133a091908101906159fa565b50506134da565b60405163e00aab4b60e01b81526001600160a01b03848116600483015261ffff861660248301526000919088169063e00aab4b906044016000604051808303816000875af11580156133fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261342591908101906159fa565b905060005b8561ffff1681101561325f576040518060400160405280886001600160e01b03168152602001828661345c9190615984565b63ffffffff1690526001600160a01b038916600090815260086020526040812084519091908590859081106134935761349361593a565b6020908102919091018101518252818101929092526040016000208251929091015163ffffffff16600160e01b026001600160e01b0390921691909117905560010161342a565b505050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b428a65ffffffffffff161180613537575060008965ffffffffffff161180156135375750428965ffffffffffff16105b156135555760405163c84651bb60e01b815260040160405180910390fd5b86156135be5761ffff861684148015613571575061ffff861682145b61358e5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b8661ffff16811015612ef5576135b6338e8e8b8a8a87818110612e7b57612e7b61593a565b600101613591565b6001600160a01b0381163314612efb5760405163b4fa3fb360e01b815260040160405180910390fd5b6000546001600160a01b031633146118af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b9e565b6000613500836001600160a01b0384166146e3565b6000610502825490565b600061350083836147dd565b60008463ffffffff166000036136ea5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c7920726574726965766520666f72206e6f6e2d6d65726b6c6560448201527f20636c61696d7320776974682077616c6c65744d6178000000000000000000006064820152608401610b9e565b506001600160a01b038083166000908152600460209081526040808320858452825280832093871683529290522054949350505050565b604051630935e01b60e21b8152336004820152839081906001600160a01b038216906324d7806c90602401602060405180830381865afa158015613769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061378d91906157c7565b6137a95760405162461bcd60e51b8152600401610b9e906157e4565b8315806137bc575066ffffffffffffff84115b156137da5760405163603b655960e01b815260040160405180910390fd5b60006001600160a01b0386166000908152600760209081526040808320888452909152902054600160c01b900460ff16600481111561381b5761381b614e2a565b146138685760405162461bcd60e51b815260206004820152601960248201527f436c61696d20616c726561647920696e697469616c697a6564000000000000006044820152606401610b9e565b600061387a60a0850160808601615db2565b600481111561388b5761388b614e2a565b036138a95760405163cc14845760e01b815260040160405180910390fd5b60046138bb60a0850160808601615db2565b60048111156138cc576138cc614e2a565b1480156138e857506138e160e0840184615dcd565b9050601414155b156139065760405163cc14845760e01b815260040160405180910390fd5b6139166080840160608501615e14565b65ffffffffffff161580159061395a57506139376080840160608501615e14565b65ffffffffffff1661394f6060850160408601615e14565b65ffffffffffff1610155b1561397857604051630bf784c760e01b815260040160405180910390fd5b60c0830135158061399c57506139946040840160208501615cfa565b63ffffffff16155b6139fd5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742070726f7669646520626f74682077616c6c65744d617820616e60448201526b19081b595c9adb19549bdbdd60a21b6064820152608401610b9e565b6000856001600160a01b031663ffa1ad746040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613a59575060408051601f3d908101601f19168201909252613a5691810190615d38565b60015b15613ab25760ff811115613aaf5760405162461bcd60e51b815260206004820152601c60248201527f556e737570706f7274656420636f6e74726163742076657273696f6e000000006044820152606401610b9e565b90505b604080516101c0810190915260008152602080820190613ad490870187615cfa565b63ffffffff168152602001856020016020810190613af29190615cfa565b63ffffffff168152602001613b0d6060870160408801615e14565b65ffffffffffff168152602001613b2a6080870160608801615e14565b65ffffffffffff168152602001613b4760a0870160808801615db2565b6004811115613b5857613b58614e2a565b815260ff83166020820152604001613b7660c0870160a08801615e2f565b1515815260c08601356020820152604001613b9460e0870187615dcd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506101008601356020820152604001613beb61014087016101208801614ff2565b6001600160a01b03168152602001613c0b61016087016101408801614ff2565b6001600160a01b03168152602001613c2b61018087016101608801614ff2565b6001600160a01b03908116909152871660009081526007602090815260408083208984528252918290208351815492850151938501516060860151608087015165ffffffffffff908116600160901b0265ffffffffffff60901b1991909216600160601b0265ffffffffffff60601b1963ffffffff948516600160401b021671ffffffffffffffffffff000000000000000019988516600160201b0267ffffffffffffffff199098169490951693909317959095179590951691909117179182168317815560a084015190929091839160ff60c01b191666ffffffffffffff60901b1990911617600160c01b836004811115613d2957613d29614e2a565b021790555060c0820151815460e08401511515600160d01b0260ff60d01b1960ff909316600160c81b029290921661ffff60c81b199091161717815561010082015160018201556101208201516002820190613d85908261587a565b5061014082015160038201556101608201516004820180546001600160a01b03199081166001600160a01b039384161790915561018084015160058401805483169184169190911790556101a090930151600690920180549093169181169190911790915560405133815286918816907fd02727da4c6c6c111e00310108209a4de39f6817414df43ca1a10730d47c6a349060200160405180910390a3505050505050565b6000613500836001600160a01b038416614807565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116613eb6576040516317e1a99160e11b815260040160405180910390fd5b81613ed45760405163b4fa3fb360e01b815260040160405180910390fd5b428565ffffffffffff161180613f04575060008465ffffffffffff16118015613f045750428465ffffffffffff16105b1561131d5760405163c84651bb60e01b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608c811b82166020840152603483018c90526054830188905285901b166074820152608881018390527fffff00000000000000000000000000000000000000000000000000000000000060f083901b1660a882015260009060aa0160408051601f1981840301815291815281516020928301206001600160a01b038e166000908152600684528281208e825284528281208a825290935291205490915060ff16156140215760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207265706c6179207472616e73616374696f6e000000000000006044820152606401610b9e565b60006140658a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c939250506148569050565b905081881415806140885750856001600160a01b0316816001600160a01b031614155b156140a657604051638baa579f60e01b815260040160405180910390fd5b834211156140c75760405163df4cc36d60e01b815260040160405180910390fd5b5050506001600160a01b03909816600090815260066020908152604080832099835298815288822094825293909352505093909320805460ff1916600117905550505050565b600062ffffff600883901c168382036141685760405162461bcd60e51b815260206004820152601c60248201527f43616e206f6e6c7920636865636b206d65726b6c6520636c61696d73000000006044820152606401610b9e565b6001600160a01b038616600090815260056020908152604080832088845282528083209383529290522054600160ff84161b1615159050949350505050565b606060006141b48361487a565b600101905060008167ffffffffffffffff8111156141d4576141d461500f565b6040519080825280601f01601f1916602001820160405280156141fe576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461420857509392505050565b428865ffffffffffff161180614277575060008765ffffffffffff161180156142775750428765ffffffffffff16105b156142955760405163c84651bb60e01b815260040160405180910390fd5b84156142e3576142de338b8b88888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061437b915050565b611839565b6001600160a01b038116331461430c5760405163b4fa3fb360e01b815260040160405180910390fd5b63ffffffff861615611839576001600160a01b038a1660009081526004602090815260408083208c845282528083203384529091528120805463ffffffff8916929061435790615950565b9182905550111561183957604051638d83cdd760e01b815260040160405180910390fd5b6000876001600160a01b0316826001600160a01b0316036143e6576040516bffffffffffffffffffffffff1960608a901b1660208201526001600160e01b031960e086901b1660348201526038016040516020818303038152906040528051906020012090506145c1565b604051638988eea960e01b81526001600160a01b0389811660048301528381166024830152306044830152600060648301527f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091821690638988eea990608401602060405180830381865afa158015614485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a991906157c7565b80614527575060405163090c9a2d60e41b81526001600160a01b038b8116600483015285811660248301523060448301528316906390c9a2d090606401602060405180830381865afa158015614503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452791906157c7565b6145735760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642064656c6567617465000000000000000000000000000000006044820152606401610b9e565b6040516bffffffffffffffffffffffff19606086901b1660208201526001600160e01b031960e088901b16603482015260380160405160208183030381529060405280519060200120925050505b6145cc83868361495c565b6146185760405162461bcd60e51b815260206004820152601d60248201527f436f756c64206e6f7420766572696679206d65726b6c652070726f6f660000006044820152606401610b9e565b6001600160a01b0387166000908152600560209081526040808320898452825280832062ffffff600889901c16808552925290912054600160ff87161b808216156146a55760405162461bcd60e51b815260206004820152600e60248201527f416c7265616479206d696e7465640000000000000000000000000000000000006044820152606401610b9e565b6001600160a01b0390991660009081526005602090815260408083209a83529981528982209382529290925296902095909617909455505050505050565b600081815260018301602052604081205480156147cc576000614707600183615aa0565b855490915060009061471b90600190615aa0565b905081811461478057600086600001828154811061473b5761473b61593a565b906000526020600020015490508087600001848154811061475e5761475e61593a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061479157614791615e4c565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610502565b6000915050610502565b5092915050565b60008260000182815481106147f4576147f461593a565b9060005260206000200154905092915050565b600081815260018301602052604081205461484e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610502565b506000610502565b60008060006148658585614972565b91509150614872816149b7565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106148c3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106148ef576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061490d57662386f26fc10000830492506010015b6305f5e1008310614925576305f5e100830492506008015b612710831061493957612710830492506004015b6064831061494b576064830492506002015b600a83106105025760010192915050565b6000826149698584614b01565b14949350505050565b60008082516041036149a85760208301516040840151606085015160001a61499c87828585614b46565b945094505050506149b0565b506000905060025b9250929050565b60008160048111156149cb576149cb614e2a565b036149d35750565b60018160048111156149e7576149e7614e2a565b03614a345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b9e565b6002816004811115614a4857614a48614e2a565b03614a955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b9e565b6003816004811115614aa957614aa9614e2a565b03610b135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b9e565b600081815b845181101561487257614b3282868381518110614b2557614b2561593a565b6020026020010151614c0a565b915080614b3e81615950565b915050614b06565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7d5750600090506003614c01565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bd1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614bfa57600060019250925050614c01565b9150600090505b94509492505050565b6000818310614c26576000828152602084905260409020613500565b6000838152602083905260409020613500565b604080516101c08101825260008082526020820181905291810182905260608101829052608081018290529060a08201908152600060208201819052604082018190526060808301829052608083015260a0820181905260c0820181905260e082018190526101009091015290565b600060208284031215614cba57600080fd5b81356001600160e01b03198116811461350057600080fd5b6001600160a01b0381168114610b1357600080fd5b8035614cf281614cd2565b919050565b803561ffff81168114614cf257600080fd5b60008083601f840112614d1b57600080fd5b50813567ffffffffffffffff811115614d3357600080fd5b6020830191508360208260051b85010111156149b057600080fd5b60008060008060008060008060c0898b031215614d6a57600080fd5b8835614d7581614cd2565b975060208901359650614d8a60408a01614cf7565b9550606089013567ffffffffffffffff80821115614da757600080fd5b614db38c838d01614d09565b909750955060808b0135915080821115614dcc57600080fd5b50614dd98b828c01614d09565b90945092505060a0890135614ded81614cd2565b809150509295985092959890939650565b60008060408385031215614e1157600080fd5b8235614e1c81614cd2565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b60058110614e5e57634e487b7160e01b600052602160045260246000fd5b9052565b60005b83811015614e7d578181015183820152602001614e65565b50506000910152565b60008151808452614e9e816020860160208601614e62565b601f01601f19169290920160200192915050565b805163ffffffff16825260006101c06020830151614ed8602086018263ffffffff169052565b506040830151614ef0604086018263ffffffff169052565b506060830151614f0a606086018265ffffffffffff169052565b506080830151614f24608086018265ffffffffffff169052565b5060a0830151614f3760a0860182614e40565b5060c0830151614f4c60c086018260ff169052565b5060e0830151614f6060e086018215159052565b50610100808401518186015250610120808401518282870152614f8583870182614e86565b9250505061014080840151818601525061016080840151614fb0828701826001600160a01b03169052565b5050610180838101516001600160a01b03908116918601919091526101a0938401511692909301919091525090565b6020815260006135006020830184614eb2565b60006020828403121561500457600080fd5b813561350081614cd2565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff811182821017156150495761504961500f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156150785761507861500f565b604052919050565b803563ffffffff81168114614cf257600080fd5b803565ffffffffffff81168114614cf257600080fd5b803560058110614cf257600080fd5b8015158114610b1357600080fd5b8035614cf2816150b9565b600067ffffffffffffffff8211156150ec576150ec61500f565b50601f01601f191660200190565b600082601f83011261510b57600080fd5b813561511e615119826150d2565b61504f565b81815284602083860101111561513357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561516557600080fd5b833561517081614cd2565b925060208401359150604084013567ffffffffffffffff8082111561519457600080fd5b9085019061018082880312156151a957600080fd5b6151b1615025565b6151ba83615080565b81526151c860208401615080565b60208201526151d960408401615094565b60408201526151ea60608401615094565b60608201526151fb608084016150aa565b608082015261520c60a084016150c7565b60a082015260c083013560c082015260e08301358281111561522d57600080fd5b615239898286016150fa565b60e0830152506101008381013590820152610120915061525a828401614ce7565b82820152610140915061526e828401614ce7565b828201526101609150615282828401614ce7565b828201528093505050509250925092565b6020808252825182820181905260009190848201906040850190845b818110156152d45783516001600160a01b0316835292840192918401916001016152af565b50909695505050505050565b6000806000606084860312156152f557600080fd5b833561530081614cd2565b9250602084013561531081614cd2565b929592945050506040919091013590565b60008060006060848603121561533657600080fd5b833561534181614cd2565b925060208401359150604084013567ffffffffffffffff81111561536457600080fd5b8401610180818703121561537757600080fd5b809150509250925092565b6000806000806000806080878903121561539b57600080fd5b86356153a681614cd2565b955060208701359450604087013567ffffffffffffffff808211156153ca57600080fd5b6153d68a838b01614d09565b909650945060608901359150808211156153ef57600080fd5b506153fc89828a01614d09565b979a9699509497509295939492505050565b60008083601f84011261542057600080fd5b50813567ffffffffffffffff81111561543857600080fd5b6020830191508360208285010111156149b057600080fd5b60008060008060008060008060006101008a8c03121561546f57600080fd5b893561547a81614cd2565b985060208a0135975061548f60408b01614cf7565b965060608a013567ffffffffffffffff8111156154ab57600080fd5b6154b78c828d0161540e565b90975095505060808a0135935060a08a0135925060c08a01356154d981614cd2565b8092505060e08a013590509295985092959850929598565b82815260406020820152600061550a6040830184614eb2565b949350505050565b60008060008060008060a0878903121561552b57600080fd5b863561553681614cd2565b95506020870135945061554b604088016150aa565b9350606087013561555b816150b9565b9250608087013567ffffffffffffffff81111561557757600080fd5b6153fc89828a0161540e565b6000806000806060858703121561559957600080fd5b84356155a481614cd2565b935060208501359250604085013567ffffffffffffffff8111156155c757600080fd5b6155d38782880161540e565b95989497509550505050565b6000806000606084860312156155f457600080fd5b83356155ff81614cd2565b92506020840135915061561460408501615080565b90509250925092565b6020815260006135006020830184614e86565b6000806000806060858703121561564657600080fd5b843561565181614cd2565b935060208501359250604085013567ffffffffffffffff81111561567457600080fd5b6155d387828801614d09565b6020808252825182820181905260009190848201906040850190845b818110156152d457835115158352928401929184019160010161569c565b60008060008060008060a087890312156156d357600080fd5b86356156de81614cd2565b9550602087013594506156f360408801615080565b9350606087013567ffffffffffffffff81111561570f57600080fd5b61571b89828a01614d09565b909450925050608087013561572f81614cd2565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156147d6576147d661573d565b63ffffffff8281168282160390808211156147d6576147d661573d565b600181811c908216806157a157607f821691505b6020821081036157c157634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156157d957600080fd5b8151613500816150b9565b6020808252602b908201527f57616c6c6574206973206e6f7420616e2061646d696e6973747261746f72206660408201526a1bdc8818dbdb9d1c9858dd60aa1b606082015260800190565b601f82111561587557600081815260208120601f850160051c810160208610156158565750805b601f850160051c820191505b818110156134da57828155600101615862565b505050565b815167ffffffffffffffff8111156158945761589461500f565b6158a8816158a2845461578d565b8461582f565b602080601f8311600181146158dd57600084156158c55750858301515b600019600386901b1c1916600185901b1785556134da565b600085815260208120601f198616915b8281101561590c578886015182559484019460019091019084016158ed565b508582101561592a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b6000600182016159625761596261573d565b5060010190565b60006020828403121561597b57600080fd5b61350082614cf7565b808201808211156105025761050261573d565b6000604082016001600160a01b03851683526020604081850152818551808452606086019150828701935060005b818110156159ed57845169ffffffffffffffffffff16835293830193918301916001016159c5565b5090979650505050505050565b60006020808385031215615a0d57600080fd5b825167ffffffffffffffff80821115615a2557600080fd5b818501915085601f830112615a3957600080fd5b815181811115615a4b57615a4b61500f565b8060051b9150615a5c84830161504f565b8181529183018401918481019088841115615a7657600080fd5b938501935b83851015615a9457845182529385019390850190615a7b565b98975050505050505050565b818103818111156105025761050261573d565b600060208284031215615ac557600080fd5b815169ffffffffffffffffffff8116811461350057600080fd5b67ffffffffffffffff831115615af757615af761500f565b615b0b83615b05835461578d565b8361582f565b6000601f841160018114615b3f5760008515615b275750838201355b600019600387901b1c1916600186901b17835561131d565b600083815260209020601f19861690835b82811015615b705786850135825560209485019460019092019101615b50565b5086821015615b8d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808554615bad8161578d565b60018281168015615bc55760018114615bda57615c09565b60ff1984168752821515830287019450615c09565b8960005260208060002060005b85811015615c005781548a820152908401908201615be7565b50505082870194505b50505050838582376000930192835250909392505050565b600060208284031215615c3357600080fd5b815167ffffffffffffffff811115615c4a57600080fd5b8201601f81018413615c5b57600080fd5b8051615c69615119826150d2565b818152856020838501011115615c7e57600080fd5b61121e826020830160208601614e62565b60008351615ca1818460208801614e62565b835190830190615cb5818360208801614e62565b01949350505050565b60008351615cd0818460208801614e62565b602f60f81b9083019081528351615cee816001840160208801614e62565b01600101949350505050565b600060208284031215615d0c57600080fd5b61350082615080565b600063ffffffff808316818103615d2e57615d2e61573d565b6001019392505050565b600060208284031215615d4a57600080fd5b5051919050565b6000808335601e19843603018112615d6857600080fd5b83018035915067ffffffffffffffff821115615d8357600080fd5b6020019150600581901b36038213156149b057600080fd5b80820281158282048414176105025761050261573d565b600060208284031215615dc457600080fd5b613500826150aa565b6000808335601e19843603018112615de457600080fd5b83018035915067ffffffffffffffff821115615dff57600080fd5b6020019150368190038213156149b057600080fd5b600060208284031215615e2657600080fd5b61350082615094565b600060208284031215615e4157600080fd5b8135613500816150b9565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220916965e1f3724f4df856e28f36d031c7e25b84f153c8aee2831dad7bdd825d6e64736f6c63430008110033000000000000000000000000a8863bf1c8933f649e7b03eb72109e5e187505ea000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000076a84fef008cdabe6409d2fe638b00000000000000000000000000000000000000447e69651d841bd8d104bed493