0 txs
201.8k calls
constructor
constructor()
functions
artCreateFee
viewfunction artCreateFee() view returns (uint256)
artData
viewfunction artData(uint256 artId_) view returns (tuple)
checkProof
purefunction checkProof(bytes32[] proof, bytes32 leaf, bytes32 root) pure returns (bool)
contractURI
viewfunction contractURI(address nftAddress) view returns (string)
createdContracts
viewfunction createdContracts(address artContract) view returns (bool result)
credMerkleRoot
viewfunction credMerkleRoot(uint256 credChainId, uint256 credId) view returns (bytes32 root)
erc1155ArtAddress
viewfunction erc1155ArtAddress() view returns (address)
getArtAddress
viewfunction getArtAddress(uint256 artId_) view returns (address)
getArtMintFee
viewfunction getArtMintFee(uint256 artId_, uint256 quantity_) view returns (uint256)
getNumberMinted
viewfunction getNumberMinted(uint256 artId_) view returns (uint256)
getTokenURI
viewfunction getTokenURI(uint256 artId_) view returns (string)
getTotalMintFee
viewfunction getTotalMintFee(uint256[] artId_, uint256[] quantitys_) view returns (uint256)
isArtMinted
viewfunction isArtMinted(uint256 artId, address minter) view returns (bool)
isCredMinted
viewfunction isCredMinted(uint256 credChainId, uint256 credId, address minter) view returns (bool)
MAX_ART_CREATE_FEE
viewfunction MAX_ART_CREATE_FEE() view returns (uint256)
MAX_PROTOCOL_FEE
viewfunction MAX_PROTOCOL_FEE() view returns (uint256)
mintProtocolFee
viewfunction mintProtocolFee() view returns (uint256)
nonces
viewfunction nonces(address user) view returns (uint256 count)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
phiRewardsAddress
viewfunction phiRewardsAddress() view returns (address)
phiSignerAddress
viewfunction phiSignerAddress() view returns (address)
protocolFeeDestination
viewfunction protocolFeeDestination() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
version
purefunction version() pure returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
batchClaim
payablefunction batchClaim(bytes[] encodeDatas_, uint256[] ethValue_) payable
claim
payablefunction claim(bytes encodeData_) payable
createArt
payablefunction createArt(bytes signedData_, bytes signature_, tuple createConfig_) payable returns (address)
initialize
nonpayablefunction initialize(address phiSignerAddress_, address protocolFeeDestination_, address erc1155ArtAddress_, address phiRewardsAddress_, address ownerAddress_, uint256 protocolFee_, uint256 artCreateFee_)
initializeV2
nonpayablefunction initializeV2()
merkleClaim
payablefunction merkleClaim(bytes32[] proof_, bytes encodeData_, bytes32 leafPart_, bytes signature_, uint256 quantity_) payable
pause
nonpayablefunction pause()
pauseArtContract
nonpayablefunction pauseArtContract(uint256 artId_)
renounceOwnership
nonpayablefunction renounceOwnership()
setArtCreatFee
nonpayablefunction setArtCreatFee(uint256 artCreateFee_)
setErc1155ArtAddress
nonpayablefunction setErc1155ArtAddress(address erc1155ArtAddress_)
setPhiRewardsAddress
nonpayablefunction setPhiRewardsAddress(address phiRewardsAddress_)
setPhiSignerAddress
nonpayablefunction setPhiSignerAddress(address phiSignerAddress_)
setProtocolFee
nonpayablefunction setProtocolFee(uint256 protocolFee_)
setProtocolFeeDestination
nonpayablefunction setProtocolFeeDestination(address protocolFeeDestination_)
signatureClaim
payablefunction signatureClaim(bytes signature_, bytes encodeData_, uint256 quantity_) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unPause
nonpayablefunction unPause()
unPauseArtContract
nonpayablefunction unPauseArtContract(uint256 artId_)
updateArt
nonpayablefunction updateArt(bytes signedData_, bytes signature_, tuple updateConfig_)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ArtClaimedData
event ArtClaimedData(uint256 indexed artId, string verificationType, address indexed recipient, address ref, address verifier, address artAddress, uint256 quantity, string snapshotImage)
ArtContractCreated
event ArtContractCreated(address artist, address contractAddress, uint256 indexed credId, uint256 indexed credChainId)
ArtCreatFeeSet
event ArtCreatFeeSet(uint256 fee)
ArtUpdated
event ArtUpdated(uint256 indexed artId, string url, address receiver, uint256 maxSupply, uint256 mintFee, uint256 startTime, uint256 endTime)
ERC1155ArtAddressSet
event ERC1155ArtAddressSet(address erc1155ArtAddress)
Initialized
event Initialized(uint64 version)
NewArtCreated
event NewArtCreated(address indexed artist, uint256 indexed credId, uint256 indexed credChainId, uint256 artId, string url, address artAddress, uint256 tokenId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PhiRewardsAddressSet
event PhiRewardsAddressSet(address phiRewardsAddress)
PhiSignerAddressSet
event PhiSignerAddressSet(address phiSignerAddress)
ProtocolFeeDestinationSet
event ProtocolFeeDestinationSet(address protocolFeeDestination)
ProtocolFeeSet
event ProtocolFeeSet(uint256 fee)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressNotSigned
error AddressNotSigned()
ArrayLengthMismatch
error ArrayLengthMismatch()
ArtAlreadyCreated
error ArtAlreadyCreated()
ArtCreatFeeTooHigh
error ArtCreatFeeTooHigh()
ArtEnded
error ArtEnded()
ArtNotCreated
error ArtNotCreated()
ArtNotStarted
error ArtNotStarted()
ClaimFailed
error ClaimFailed()
CreateFailed
error CreateFailed()
EndTimeInPast
error EndTimeInPast()
EndTimeLessThanOrEqualToStartTime
error EndTimeLessThanOrEqualToStartTime()
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExceedMaxSupply
error ExceedMaxSupply()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidAddressZero
error InvalidAddressZero()
InvalidArtCreator
error InvalidArtCreator()
InvalidChainId
error InvalidChainId()
InvalidEthValue
error InvalidEthValue()
InvalidExecutor
error InvalidExecutor()
InvalidInitialization
error InvalidInitialization()
InvalidMaxSupply
error InvalidMaxSupply()
InvalidMerkleProof
error InvalidMerkleProof()
InvalidMintFee
error InvalidMintFee()
InvalidNonce
error InvalidNonce()
InvalidQuantity
error InvalidQuantity()
InvalidVerificationType
error InvalidVerificationType()
NotInitializing
error NotInitializing()
OverMaxAllowedToMint
error OverMaxAllowedToMint()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ProtocolFeeTooHigh
error ProtocolFeeTooHigh()
Reentrancy
error Reentrancy()
SignatureExpired
error SignatureExpired()
TxOriginMismatch
error TxOriginMismatch()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615cf96100fd60003960008181612bf901528181612c220152612da50152615cf96000f3fe60806040526004361061031c5760003560e01c80638456cb59116101a5578063bd282a61116100ec578063d63b130d11610095578063f2fde38b1161006f578063f2fde38b146108f9578063f7b188a514610919578063f7c4cdc21461092e578063fd5d6f2d1461094e57600080fd5b8063d63b130d14610897578063e30c3978146108b7578063e8038454146108cc57600080fd5b8063c28b5ac1116100c6578063c28b5ac114610844578063c63ff8dd14610864578063ceedf7ce1461087757600080fd5b8063bd282a61146107f1578063be2d472014610804578063becf791c1461082457600080fd5b8063a10786b01161014e578063b2230f9211610128578063b2230f92146107b1578063b33f9527146107d1578063b8ca3b83146106fa57600080fd5b8063a10786b014610728578063ad3cb1cc14610748578063b04992941461079157600080fd5b80639ce36ab11161017f5780639ce36ab1146106da5780639f17a78d146106fa578063a0035a221461071557600080fd5b80638456cb591461069057806385c43792146106a55780638da5cb5b146106c557600080fd5b806352d1902d1161026957806372a528511161021257806379ba5097116101ec57806379ba5097146106385780637ecebe001461064d578063818849e21461067a57600080fd5b806372a52851146105e557806374045bda14610605578063787dce3d1461061857600080fd5b80635cd8a76b116102435780635cd8a76b146105a85780636fed0aa6146105bd578063715018a6146105d057600080fd5b806352d1902d1461054857806354fd4d501461055d5780635c975abb1461057157600080fd5b80633b562a6d116102cb5780634432d325116102a55780634432d325146104dd5780634ce7957c146104fd5780634f1ef2861461053557600080fd5b80633b562a6d146104555780633bb3a24d1461048557806340540e47146104a557600080fd5b8063168bf13e116102fc578063168bf13e146103df57806325512cd61461040357806328716cb31461042557600080fd5b806206479c14610321578062844d13146103775780630139a4a0146103a4575b600080fd5b34801561032d57600080fd5b5061036261033c36600461425c565b600d60209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020015b60405180910390f35b34801561038357600080fd5b50610397610392366004614295565b610987565b60405161036e9190614302565b3480156103b057600080fd5b506103626103bf366004614315565b600a60209081526000928352604080842090915290825290205460ff1681565b3480156103eb57600080fd5b506103f560075481565b60405190815260200161036e565b34801561040f57600080fd5b5061042361041e366004614295565b610ce2565b005b34801561043157600080fd5b506103f5610440366004614345565b6000908152600960205260409020600c015490565b34801561046157600080fd5b50610362610470366004614295565b600e6020526000908152604090205460ff1681565b34801561049157600080fd5b506103976104a0366004614345565b610d68565b3480156104b157600080fd5b506103f56104c036600461435e565b600b60209081526000928352604080842090915290825290205481565b3480156104e957600080fd5b506104236104f8366004614345565b610e0d565b34801561050957600080fd5b5060015461051d906001600160a01b031681565b6040516001600160a01b03909116815260200161036e565b6104236105433660046144d8565b610e98565b34801561055457600080fd5b506103f5610eb7565b34801561056957600080fd5b5060026103f5565b34801561057d57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610362565b3480156105b457600080fd5b50610423610ee6565b6104236105cb366004614571565b610fb8565b3480156105dc57600080fd5b50610423611254565b3480156105f157600080fd5b5061036261060036600461462a565b611268565b61051d61061336600461467b565b61127f565b34801561062457600080fd5b50610423610633366004614345565b611491565b34801561064457600080fd5b50610423611516565b34801561065957600080fd5b506103f5610668366004614295565b60086020526000908152604090205481565b34801561068657600080fd5b506103f560065481565b34801561069c57600080fd5b50610423611563565b3480156106b157600080fd5b506104236106c0366004614295565b611573565b3480156106d157600080fd5b5061051d6115f1565b3480156106e657600080fd5b5060025461051d906001600160a01b031681565b34801561070657600080fd5b506103f5662386f26fc1000081565b610423610723366004614760565b611626565b34801561073457600080fd5b50610423610743366004614295565b611907565b34801561075457600080fd5b506103976040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561079d57600080fd5b5060005461051d906001600160a01b031681565b3480156107bd57600080fd5b506103f56107cc36600461480b565b611985565b3480156107dd57600080fd5b506104236107ec366004614877565b611a11565b6104236107ff36600461480b565b611c04565b34801561081057600080fd5b5061042361081f366004614345565b611d49565b34801561083057600080fd5b5061042361083f366004614295565b611dc7565b34801561085057600080fd5b5061042361085f366004614345565b611e45565b6104236108723660046148fa565b611eb5565b34801561088357600080fd5b5060035461051d906001600160a01b031681565b3480156108a357600080fd5b506103f56108b236600461435e565b6121bc565b3480156108c357600080fd5b5061051d612280565b3480156108d857600080fd5b506108ec6108e7366004614345565b6122a9565b60405161036e919061493c565b34801561090557600080fd5b50610423610914366004614295565b612671565b34801561092557600080fd5b506104236126f6565b34801561093a57600080fd5b50610423610949366004614a9b565b612706565b34801561095a57600080fd5b5061051d610969366004614345565b6000908152600960205260409020600501546001600160a01b031690565b6040517f1585cc64000000000000000000000000000000000000000000000000000000008152600160048201526060906000906001600160a01b03841690631585cc6490602401602060405180830381865afa1580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190614b8f565b600081815260096020908152604080832081516101c0810183528154815260018201546001600160a01b031693810193909352600281015491830191909152600381018054949550929391929091606084019190610a6c90614ba8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9890614ba8565b8015610ae55780601f10610aba57610100808354040283529160200191610ae5565b820191906000526020600020905b815481529060010190602001808311610ac857829003601f168201915b50505050508152602001600482018054610afe90614ba8565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2a90614ba8565b8015610b775780601f10610b4c57610100808354040283529160200191610b77565b820191906000526020600020905b815481529060010190602001808311610b5a57829003601f168201915b505050918352505060058201546001600160a01b03908116602080840191909152600684015482166040808501919091526007850154909216606084015260088401546080840152600984015460a0840152600a84015460c0840152600b84015460e0840152600c840154610100840152600d9093015460ff1615156101209092019190915280517f8da5cb5b00000000000000000000000000000000000000000000000000000000815290519293506000923092638da5cb5b92600480820193918290030181865afa158015610c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c769190614be2565b90506000610c8383612b3e565b610c95836001600160a01b0316612b98565b604051602001610ca6929190614c1b565b604051602081830303815290604052905080604051602001610cc89190614f4d565b604051602081830303815290604052945050505050919050565b806001600160a01b038116610d0a57604051630863a45360e11b815260040160405180910390fd5b610d12612bbc565b600380546001600160a01b0319166001600160a01b0384169081179091556040519081527fc707f63cab450384811a89fe8795cbfd3a1adc79a773167cab1f4fd7cfdfba44906020015b60405180910390a15050565b6000818152600960205260409020600401805460609190610d8890614ba8565b80601f0160208091040260200160405190810160405280929190818152602001828054610db490614ba8565b8015610e015780601f10610dd657610100808354040283529160200191610e01565b820191906000526020600020905b815481529060010190602001808311610de457829003601f168201915b50505050509050919050565b610e15612bbc565b6000818152600960205260408082206005015481517ff7b188a500000000000000000000000000000000000000000000000000000000815291516001600160a01b039091169263f7b188a5926004808201939182900301818387803b158015610e7d57600080fd5b505af1158015610e91573d6000803e3d6000fd5b5050505050565b610ea0612bee565b610ea982612ca5565b610eb38282612cad565b5050565b6000610ec1612d9a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546002919068010000000000000000900460ff1680610f355750805467ffffffffffffffff808416911610155b15610f535760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff8316908117680100000000000000001768ff0000000000000000191682556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610d5c565b6000546040516001600160a01b039091169061101f90610fdb9086908690614f92565b604051809103902087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612de392505050565b6001600160a01b031614611046576040516302e87eed60e11b815260040160405180910390fd5b600061105483850185614fa2565b9050428160000151101561107b57604051630819bdcd60e01b815260040160405180910390fd5b468160a001511461109f57604051633d23e4d160e11b815260040160405180910390fd5b60006009600083608001518152602001908152602001600020905061117a604051806040016040528060098152602001685349474e415455524560b81b8152508260030180546110ee90614ba8565b80601f016020809104026020016040519081016040528092919081815260200182805461111a90614ba8565b80156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b5050505050612e1d90919063ffffffff16565b6111975760405163a032d25960e01b815260040160405180910390fd5b6111aa8260800151836020015185612e33565b6111d28260800151836020015184604001518560600151878760c001518860e001513461308b565b6020808301516080840151604080860151606087015160008481526009909652948290206005015460e088015192516001600160a01b039586169694957f80961dc24d6ab77461feb65b2a338e77f8a065f4068c2bc7f6fbcaed421a4ad295611243959093909116918b919061506b565b60405180910390a350505050505050565b61125c612bbc565b6112666000613210565b565b600061127685858486613248565b95945050505050565b60006004546001146112a45760405163558a1e0360e11b815260040160405180910390fd5b60026004556112b1613282565b6000546040516001600160a01b0390911690611318906112d49089908990614f92565b604051809103902086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612de392505050565b6001600160a01b03161461133f576040516302e87eed60e11b815260040160405180910390fd5b600061134d868801886150d2565b9050428160000151101561137457604051630819bdcd60e01b815260040160405180910390fd5b4681602001511461139857604051633d23e4d160e11b815260040160405180910390fd5b60608101516001600160a01b031633146113de576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600860205260409081902054908201511461141257604051633ab3447f60e11b815260040160405180910390fd5b600061142f6005548584608001518560a001518660c001516132de565b905061143a816133d2565b60006114486005548361351f565b336000908152600860205260408120805492935090611466836151b9565b90915550506005805490600061147b836151b9565b9091555050600160045598975050505050505050565b611499612bbc565b662386f26fc100008111156114da576040517f499fddb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078190556040518181527fdb5aafdb29539329e37d4e3ee869bc4031941fd55a5dfc92824fbe34b204e30d906020015b60405180910390a150565b3380611520612280565b6001600160a01b0316146115575760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b61156081613210565b50565b61156b612bbc565b6112666135da565b806001600160a01b03811661159b57604051630863a45360e11b815260040160405180910390fd5b6115a3612bbc565b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527f433803e6e4ee06b5e23ab918c7f8a420d5961a7ba454448f3daa4b50c0a00bcf90602001610d5c565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6000546040516001600160a01b039091169061168d906116499089908990614f92565b604051809103902085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612de392505050565b6001600160a01b0316146116b4576040516302e87eed60e11b815260040160405180910390fd5b60006116c2868801886151d2565b905042816000015110156116e957604051630819bdcd60e01b815260040160405180910390fd5b4681608001511461170d57604051633d23e4d160e11b815260040160405180910390fd5b600060096000836060015181526020019081526020016000209050611759604051806040016040528060068152602001654d45524b4c4560d01b8152508260030180546110ee90614ba8565b1580611782575060028101546000908152600b6020908152604080832084548452909152902054155b156117a05760405163582f497d60e11b815260040160405180910390fd5b60028101546000908152600b602090815260408083208454845282529182902054848201519251611829938e938e93926117f192918d91016001600160a01b03929092168252602082015260400190565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120613248565b6118465760405163582f497d60e11b815260040160405180910390fd5b6118598260600151836020015185612e33565b6118908260600151836020015184604001518460010160009054906101000a90046001600160a01b0316878b8860a001513461308b565b602082015160608301516040808501516001850154600586015460a088015193516001600160a01b03968716967f80961dc24d6ab77461feb65b2a338e77f8a065f4068c2bc7f6fbcaed421a4ad2956118f39594821693909116918b9190615285565b60405180910390a350505050505050505050565b806001600160a01b03811661192f57604051630863a45360e11b815260040160405180910390fd5b611937612bbc565b600180546001600160a01b0319166001600160a01b0384169081179091556040519081527f262538484f9e0f43acdcef80a543c1aecfc0b210b993fd3d09bd77ee95b9d34490602001610d5c565b60008382146119a75760405163512509d360e11b815260040160405180910390fd5b6000805b85811015611a075760008787838181106119c7576119c76152dd565b9050602002013590506119f2818787858181106119e6576119e66152dd565b905060200201356121bc565b6119fc90846152f3565b9250506001016119ab565b5095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015611a5c5750825b905060008267ffffffffffffffff166001148015611a795750303b155b905081158015611a87575080155b15611aa55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ad957845468ff00000000000000001916680100000000000000001785555b611ae288613649565b611aea61365a565b611af261366a565b6001600481905550600160058190555085600681905550866007819055508b6000806101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555088600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508315611bf657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b828114611c245760405163512509d360e11b815260040160405180910390fd5b6000805b84811015611c5e57838382818110611c4257611c426152dd565b9050602002013582611c5491906152f3565b9150600101611c28565b50803414611c98576040517f715a6e9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b84811015611d41573063c63ff8dd858584818110611cbb57611cbb6152dd565b90506020020135888885818110611cd457611cd46152dd565b9050602002810190611ce69190615306565b6040518463ffffffff1660e01b8152600401611d0392919061534d565b6000604051808303818588803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b505060019093019250611c9b915050565b505050505050565b611d51612bbc565b662386f26fc10000811115611d92576040517f6a85313e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f2794ed2a75da1d7d2a00e7fb413be300e0deadbe721c856529f873483ba0dc139060200161150b565b806001600160a01b038116611def57604051630863a45360e11b815260040160405180910390fd5b611df7612bbc565b600080546001600160a01b0319166001600160a01b0384169081179091556040519081527fa70a4bec4dc4d2956ab3bed0bbfdfac5d515026411bbb80e62ec376e3c74c97890602001610d5c565b611e4d612bbc565b6000818152600960205260408082206005015481517f8456cb5900000000000000000000000000000000000000000000000000000000815291516001600160a01b0390911692638456cb59926004808201939182900301818387803b158015610e7d57600080fd5b6000611ef683838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061367292505050565b9050600081806020019051810190611f0e9190614b8f565b90506000600960008381526020019081526020016000209050611f58604051806040016040528060068152602001654d45524b4c4560d01b8152508260030180546110ee90614ba8565b1561207b576000806000806000806000808a806020019051810190611f7d9190615449565b985098509850985098509850985098505060006040518060c001604052808781526020018a6001600160a01b03168152602001886001600160a01b031681526020018c8152602001468152602001848152509050600081604051602001611fe4919061551a565b60408051601f19818403018152908290527fa0035a220000000000000000000000000000000000000000000000000000000082529150309063a0035a2290349061203a908d9086908b908a908e90600401615576565b6000604051808303818588803b15801561205357600080fd5b505af1158015612067573d6000803e3d6000fd5b505050505050505050505050505050610e91565b6120af604051806040016040528060098152602001685349474e415455524560b81b8152508260030180546110ee90614ba8565b156121a3576000806000806000806000808a8060200190518101906120d491906155f2565b985098509850985098509850985098505060006040518061010001604052808781526020018a6001600160a01b03168152602001896001600160a01b03168152602001886001600160a01b031681526020018c81526020014681526020018581526020018481525090506000816040516020016121519190615674565b60408051601f19818403018152908290527f6fed0aa600000000000000000000000000000000000000000000000000000000825291503090636fed0aa690349061203a90879086908c906004016156f9565b60405163a032d25960e01b815260040160405180910390fd5b6000600754826121cc919061572f565b600354600085815260096020819052604091829020015490517f470a2d830000000000000000000000000000000000000000000000000000000081526004810186905260248101919091526001600160a01b039091169063470a2d8390604401602060405180830381865afa158015612249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226d9190614b8f565b61227791906152f3565b90505b92915050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00611616565b61233b6040805161020081018252600080825260208083018290528284018290526060808401819052608084015260a0830182905260c0830182905260e083018290526101008301829052835180850190945281845283015290610120820190815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b600082815260096020526040902060058101546001600160a01b031661238d576040517fbc43eb8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058101546040516303ce5e1160e01b8152600481018590526001600160a01b039091169060009082906303ce5e1190602401602060405180830381865afa1580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190614b8f565b6040517fbb3bafd6000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b0384169063bb3bafd6906024016040805180830381865afa158015612464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124889190615746565b60408051610200810182528654815260018701546001600160a01b031660208201526002870154918101919091526003860180549293506000926060830191906124d190614ba8565b80601f01602080910402602001604051908101604052809291908181526020018280546124fd90614ba8565b801561254a5780601f1061251f5761010080835404028352916020019161254a565b820191906000526020600020905b81548152906001019060200180831161252d57829003601f168201915b5050505050815260200186600401805461256390614ba8565b80601f016020809104026020016040519081016040528092919081815260200182805461258f90614ba8565b80156125dc5780601f106125b1576101008083540402835291602001916125dc565b820191906000526020600020905b8154815290600101906020018083116125bf57829003601f168201915b505050918352505060058701546001600160a01b03908116602083015260408201959095526006870154851660608201526007870154909416608085015260a084019290925250600884015460c0830152600984015460e0830152600a840154610100830152600b840154610120830152600c840154610140830152600d9093015460ff161515610160909101525092915050565b612679612bbc565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556126bd6115f1565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6126fe612bbc565b611266613707565b6004546001146127295760405163558a1e0360e11b815260040160405180910390fd5b6002600455612736613282565b6000546040516001600160a01b0390911690612759906116499088908890614f92565b6001600160a01b031614612780576040516302e87eed60e11b815260040160405180910390fd5b600061278e858701876157a5565b905042816000015110156127b557604051630819bdcd60e01b815260040160405180910390fd5b468160200151146127d957604051633d23e4d160e11b815260040160405180910390fd5b336000908152600860205260409081902054908201511461280d57604051633ab3447f60e11b815260040160405180910390fd5b6060810151600090815260096020526040902060068101546001600160a01b0316331480159061285657506128406115f1565b6001600160a01b0316336001600160a01b031614155b1561288d576040517f66e8c0cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516001600160a01b03166128b557604051630863a45360e11b815260040160405180910390fd5b82604001518360200151116128dd576040516301a4e51360e61b815260040160405180910390fd5b826060015181600c0154111561291f576040517f1e186f7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516007820180546001600160a01b0319166001600160a01b039092169190911790556060830151600882015560808084015160098301556040840151600a8301556020840151600b830155820151600482019061297d9082615882565b50600581015460608301516040516303ce5e1160e01b815260048101919091526000916001600160a01b0316906303ce5e1190602401602060405180830381865afa1580156129d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f49190614b8f565b60408051808201825260a087015163ffffffff16815260c08701516001600160a01b039081166020830152600586015492517fce852f9f000000000000000000000000000000000000000000000000000000008152939450909291169063ce852f9f90612a679085908590600401615942565b600060405180830381600087803b158015612a8157600080fd5b505af1158015612a95573d6000803e3d6000fd5b5050505060086000612aa43390565b6001600160a01b0316815260208101919091526040016000908120805491612acb836151b9565b919050555083606001517f282c0751569c5895e4859e7771c0f0b78f6557815e5dfccdf7ef2130ef0b404085608001518760000151886060015189608001518a604001518b60200151604051612b269695949392919061596f565b60405180910390a25050600160045550505050505050565b6060612b4d826000015161375f565b612b5a836040015161375f565b612b7084602001516001600160a01b0316612b98565b604051602001612b82939291906159b4565b6040516020818303038152906040529050919050565b6060612ba3826137a3565b8051613078825260020160011990910190815292915050565b33612bc56115f1565b6001600160a01b0316146112665760405163118cdaa760e01b815233600482015260240161154e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c8757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c7b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156112665760405163703e46dd60e11b815260040160405180910390fd5b611560612bbc565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612d07575060408051601f3d908101601f19168201909252612d0491810190614b8f565b60015b612d2f57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161154e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612d8b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161154e565b612d958383613812565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112665760405163703e46dd60e11b815260040160405180910390fd5b6000612277612e17846020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b83613868565b8051602091820120825192909101919091201490565b600083815260096020526040902060058101546001600160a01b0316336001600160a01b031614158015612e675750333014155b15612e9e576040517ff324d3c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ea884836121bc565b341015612ec85760405163c288bf8f60e01b815260040160405180910390fd5b80600a0154421015612f06576040517f6f14ebc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b0154421115612f44576040517f3c25663700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003612f7e576040517f524f409b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600801548282600c0154612f9391906152f3565b1115612fcb576040517f571e5b1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101546000908152600d602090815260408083208454845282528083206001600160a01b038716845290915290205460ff1661303f5760028101546000908152600d602090815260408083208454845282528083206001600160a01b03871684529091529020805460ff191660011790555b6000848152600a602090815260408083206001600160a01b03871684529091528120805460ff19166001179055600c820180548492906130809084906152f3565b909155505050505050565b613093613282565b6000888152600960205260408120906130ac8a876121bc565b90508083146130ce5760405163c288bf8f60e01b815260040160405180910390fd5b6130f1866007546130df919061572f565b6001546001600160a01b031690613912565b60058201546007546000916001600160a01b03169061311190899061572f565b61311b9084615ba9565b8c8c8c8c8c8c8c6040516024016131389796959493929190615bbc565b60408051601f198184030181529181526020820180516001600160e01b03167fe4598fa600000000000000000000000000000000000000000000000000000000179052516131869190615c0f565b60006040518083038185875af1925050503d80600081146131c3576040519150601f19603f3d011682016040523d82523d6000602084013e6131c8565b606091505b5050905080613203576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155610eb38261392e565b6000831561327a578360051b8501855b803580851160051b948552602094851852604060002093018181106132585750505b501492915050565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611266576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61334f60405180610160016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001606081526020016000815260200160608152602001600081526020016000151581525090565b604051806101600160405280856001600160a01b0316815260200186600001516001600160a01b03168152602001468152602001866060015181526020018660200151815260200186604001518152602001838152602001878152602001848152602001866080015181526020018660a001511515815250905095945050505050565b60e08101516000908152600960205260409020600501546001600160a01b031615613429576040517fb4bbd27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516001600160a01b031661345157604051630863a45360e11b815260040160405180910390fd5b60208101516001600160a01b031661347c57604051630863a45360e11b815260040160405180910390fd5b428160800151116134b9576040517f72e54d4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060a001518160800151116134e1576040516301a4e51360e61b815260040160405180910390fd5b8060600151600003611560576040517f19bcc14c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600960205260408120613537818461399f565b60008060008560c001518060200190518101906135549190615c2b565b506000818152600c602090815260408083208784529091528120549497509195509350916001600160a01b031690506135bf57613595858989878688613ab6565b6001600160a01b0381166000908152600e60205260409020805460ff1916600117905590506135cf565b6135cc8589898786613d4d565b90505b979650505050505050565b6135e2613282565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200161150b565b613651613ec1565b61156081613f28565b613662613ec1565b611266613f73565b611266613ec1565b60608151156137025760405190506020810160048301805184518501811983525b808610156136eb576001860195508551601f1a806136dc576001870196508651601f1a6000198652607f81116136cb57600181013887395b607f16949094016001019350613693565b80855350600184019350613693565b509052601f19828203018252600081526020016040525b919050565b61370f613fa6565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33613631565b60606080604051019050602081016040526000815280600019835b928101926030600a8206018453600a90048061377a575050819003601f19909101908152919050565b60606040519050608081016040526f30313233343536373839616263646566600f526002810190506028815260208101600060288201528260601b925060005b808101820184821a600f81165160018301538060041c51825350506001810190601219016137e3575050919050565b61381b82614001565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561386057612d958282614078565b610eb36140e5565b60405160019083600052602083015160405260408351036138bd57604083015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526138e3565b60418351036138de57606083015160001a60205260408301516060526138e3565b600091505b6020600160806000855afa5191503d61390457638baa579f6000526004601cfd5b600060605260405292915050565b60003860003884865af1610eb35763b12d13eb6000526004601cfd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008060008060008560c001518060200190518101906139bf9190615c2b565b848c5560018c0180546001600160a01b0319166001600160a01b03861617905560028c0182905593985091965094509250905060038701613a008482615882565b506101008601516004880190613a169082615882565b5085516006880180546001600160a01b03199081166001600160a01b039384161790915560208089015160078b018054909316931692909217905560608701516008890155610120870151600989015560a0870151600a8901556080870151600b808a019190915561014090970151600d909801805460ff1916981515989098179097556000918252948652604080822094825293909552505090912055565b60408051466020820152908101869052606081018490526000908190613b039060800160408051601f1981840301815291905280516020909101206002546001600160a01b03169061411d565b6005890180546001600160a01b0319166001600160a01b0383169081179091556040517f9070940d00000000000000000000000000000000000000000000000000000000815291925090639070940d90613b6590879089908890600401615c98565b600060405180830381600087803b158015613b7f57600080fd5b505af1158015613b93573d6000803e3d6000fd5b5050506000858152600c60209081526040808320898452909152812080546001600160a01b0319166001600160a01b038516908117909155909150819034336040516001600160a01b039091166024820152604481018c905260640160408051601f198184030181529181526020820180516001600160e01b03166315e5763760e01b17905251613c249190615c0f565b60006040518083038185875af1925050503d8060008114613c61576040519150601f19603f3d011682016040523d82523d6000602084013e613c66565b606091505b509150915081613c8957604051637e16b8cd60e01b815260040160405180910390fd5b600081806020019051810190613c9f9190614b8f565b8951604080516001600160a01b039283168152918716602083015291925088918a917ff29ad13313687fdce183df4af14c835065221a5772aaf3a7bbcaf87e844131eb910160405180910390a386888a600001516001600160a01b03167f6abc0189357fbf98db09b3c17a1f7a194a38b53b65ef8f1970194f57a93790958d8d61010001518987604051613d369493929190615cb7565b60405180910390a450919998505050505050505050565b6000818152600c602090815260408083208584529091528120546005870180546001600160a01b0319166001600160a01b03909216918217905581808234613d923390565b6040516001600160a01b039091166024820152604481018b905260640160408051601f198184030181529181526020820180516001600160e01b03166315e5763760e01b17905251613de49190615c0f565b60006040518083038185875af1925050503d8060008114613e21576040519150601f19603f3d011682016040523d82523d6000602084013e613e26565b606091505b509150915081613e4957604051637e16b8cd60e01b815260040160405180910390fd5b600081806020019051810190613e5f9190614b8f565b9050858789600001516001600160a01b03167f6abc0189357fbf98db09b3c17a1f7a194a38b53b65ef8f1970194f57a93790958c8c61010001518987604051613eab9493929190615cb7565b60405180910390a4509198975050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611266576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613f30613ec1565b6001600160a01b038116611557576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161154e565b613f7b613ec1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611266576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b03163b60000361403757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161154e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516140959190615c0f565b600060405180830381855af49150503d80600081146140d0576040519150601f19603f3d011682016040523d82523d6000602084013e6140d5565b606091505b509150915061127685838361412b565b3415611266576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612277600084846141a3565b6060826141405761413b826141fa565b61419c565b815115801561415757506001600160a01b0384163b155b15614199576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161154e565b50805b9392505050565b60006c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d73600052816035600c86f59050806141ee5763301164256000526004601cfd5b60006021529392505050565b80511561420a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116811461156057600080fd5b80356137028161423c565b60008060006060848603121561427157600080fd5b8335925060208401359150604084013561428a8161423c565b809150509250925092565b6000602082840312156142a757600080fd5b813561419c8161423c565b60005b838110156142cd5781810151838201526020016142b5565b50506000910152565b600081518084526142ee8160208601602086016142b2565b601f01601f19169290920160200192915050565b60208152600061227760208301846142d6565b6000806040838503121561432857600080fd5b82359150602083013561433a8161423c565b809150509250929050565b60006020828403121561435757600080fd5b5035919050565b6000806040838503121561437157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156143b9576143b9614380565b60405290565b60405160e0810167ffffffffffffffff811182821017156143b9576143b9614380565b604051610100810167ffffffffffffffff811182821017156143b9576143b9614380565b60405160a0810167ffffffffffffffff811182821017156143b9576143b9614380565b604051601f8201601f1916810167ffffffffffffffff8111828210171561445257614452614380565b604052919050565b600067ffffffffffffffff82111561447457614474614380565b50601f01601f191660200190565b600082601f83011261449357600080fd5b81356144a66144a18261445a565b614429565b8181528460208386010111156144bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156144eb57600080fd5b82356144f68161423c565b9150602083013567ffffffffffffffff81111561451257600080fd5b61451e85828601614482565b9150509250929050565b60008083601f84011261453a57600080fd5b50813567ffffffffffffffff81111561455257600080fd5b60208301915083602082850101111561456a57600080fd5b9250929050565b60008060008060006060868803121561458957600080fd5b853567ffffffffffffffff808211156145a157600080fd5b6145ad89838a01614528565b909750955060208801359150808211156145c657600080fd5b506145d388828901614528565b96999598509660400135949350505050565b60008083601f8401126145f757600080fd5b50813567ffffffffffffffff81111561460f57600080fd5b6020830191508360208260051b850101111561456a57600080fd5b6000806000806060858703121561464057600080fd5b843567ffffffffffffffff81111561465757600080fd5b614663878288016145e5565b90989097506020870135966040013595509350505050565b600080600080600085870361010081121561469557600080fd5b863567ffffffffffffffff808211156146ad57600080fd5b6146b98a838b01614528565b909850965060208901359150808211156146d257600080fd5b506146df89828a01614528565b90955093505060c0603f19820112156146f757600080fd5b50614700614396565b604087013561470e8161423c565b80825250606087013560208201526080870135604082015260a0870135606082015260c0870135608082015260e0870135801515811461474d57600080fd5b60a0820152949793965091945092919050565b60008060008060008060008060a0898b03121561477c57600080fd5b883567ffffffffffffffff8082111561479457600080fd5b6147a08c838d016145e5565b909a50985060208b01359150808211156147b957600080fd5b6147c58c838d01614528565b909850965060408b0135955060608b01359150808211156147e557600080fd5b506147f28b828c01614528565b999c989b50969995989497949560800135949350505050565b6000806000806040858703121561482157600080fd5b843567ffffffffffffffff8082111561483957600080fd5b614845888389016145e5565b9096509450602087013591508082111561485e57600080fd5b5061486b878288016145e5565b95989497509550505050565b600080600080600080600060e0888a03121561489257600080fd5b873561489d8161423c565b965060208801356148ad8161423c565b955060408801356148bd8161423c565b945060608801356148cd8161423c565b935060808801356148dd8161423c565b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561490d57600080fd5b823567ffffffffffffffff81111561492457600080fd5b61493085828601614528565b90969095509350505050565b60208152815160208201526000602083015161496360408401826001600160a01b03169052565b5060408301516060830152606083015161022080608085015261498a6102408501836142d6565b91506080850151601f198584030160a08601526149a783826142d6565b92505060a08501516149c460c08601826001600160a01b03169052565b5060c085015160e085015260e08501516101006149eb818701836001600160a01b03169052565b8601519050610120614a07868201836001600160a01b03169052565b8601519050610140614a3486820183805163ffffffff1682526020908101516001600160a01b0316910152565b860151610180868101919091526101608701516101a080880191909152908701516101c080880191909152908701516101e0808801919091529087015161020087015290950151151593019290925250919050565b63ffffffff8116811461156057600080fd5b6000806000806000858703610120811215614ab557600080fd5b863567ffffffffffffffff80821115614acd57600080fd5b614ad98a838b01614528565b90985096506020890135915080821115614af257600080fd5b50614aff89828a01614528565b90955093505060e0603f1982011215614b1757600080fd5b50614b206143bf565b6040870135614b2e8161423c565b80825250606087013560208201526080870135604082015260a0870135606082015260c0870135608082015260e0870135614b6881614a89565b60a0820152610100870135614b7c8161423c565b60c0820152949793965091945092919050565b600060208284031215614ba157600080fd5b5051919050565b600181811c90821680614bbc57607f821691505b602082108103614bdc57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614bf457600080fd5b815161419c8161423c565b60008151614c118185602086016142b2565b9290920192915050565b7f7b0000000000000000000000000000000000000000000000000000000000000081527f226e616d65223a2200000000000000000000000000000000000000000000000060018201527f50686900000000000000000000000000000000000000000000000000000000006009820152600061088b60f21b80600c8401527f226465736372697074696f6e223a220000000000000000000000000000000000600e8401528451614cd181601d8601602089016142b2565b8301601d81018290527f22696d616765223a220000000000000000000000000000000000000000000000601f8201527f68747470733a2f2f617277656176652e6e65742f5f6f784b535a4d747641754760288201527f7252694e785652597a706b7a55535073475137524a696c51374d596e5a3730006048820152614f43614f1a614ef1614eeb614ec2614e73614d75614e24614dfb82614dac614d8360678d0183565b61088b60f21b815260020190565b7f2262616e6e65725f696d616765223a2200000000000000000000000000000000815260100190565b7f68747470733a2f2f617277656176652e6e65742f71486f6a447a66364676746a81527f49374f563865796a6d316f587a6d31376b6c7372534a70557a625635704e41006020820152603f0190565b7f2266656174757265645f696d616765223a220000000000000000000000000000815260120190565b7f68747470733a2f2f617277656176652e6e65742f4f3172506e474e3755334d4481527f6a5955486a7a74684549797030494e4c4e59755935525152435a70454c7463006020820152603f0190565b7f2265787465726e616c5f6c696e6b223a2268747470733a2f2f7068692e626f7881527f2f222c0000000000000000000000000000000000000000000000000000000000602082015260230190565b7f22636f6c6c61626f7261746f7273223a5b220000000000000000000000000000815260120190565b88614bff565b7f225d000000000000000000000000000000000000000000000000000000000000815260020190565b7f7d00000000000000000000000000000000000000000000000000000000000000815260010190565b9695505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c0000000000815260008251614f8581601b8501602087016142b2565b91909101601b0192915050565b8183823760009101908152919050565b600060208284031215614fb457600080fd5b813567ffffffffffffffff80821115614fcc57600080fd5b908301906101008286031215614fe157600080fd5b614fe96143e2565b82358152614ff960208401614251565b602082015261500a60408401614251565b604082015261501b60608401614251565b60608201526080830135608082015260a083013560a082015260c083013560c082015260e08301358281111561505057600080fd5b61505c87828601614482565b60e08301525095945050505050565b60c08152600960c0820152685349474e415455524560b81b60e082015260006101006001600160a01b03808916602085015280881660408501528087166060850152508460808401528060a08401526150c6818401856142d6565b98975050505050505050565b6000602082840312156150e457600080fd5b813567ffffffffffffffff808211156150fc57600080fd5b9083019060e0828603121561511057600080fd5b6151186143bf565b82358152602083013560208201526040830135604082015261513c60608401614251565b606082015261514d60808401614251565b608082015260a08301358281111561516457600080fd5b61517087828601614482565b60a08301525060c08301358281111561518857600080fd5b61519487828601614482565b60c08301525095945050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016151cb576151cb6151a3565b5060010190565b6000602082840312156151e457600080fd5b813567ffffffffffffffff808211156151fc57600080fd5b9083019060c0828603121561521057600080fd5b615218614396565b82358152602083013561522a8161423c565b6020820152604083013561523d8161423c565b80604083015250606083013560608201526080830135608082015260a08301358281111561526a57600080fd5b61527687828601614482565b60a08301525095945050505050565b60c08152600660c0820152654d45524b4c4560d01b60e082015260006101006001600160a01b03808916602085015280881660408501528087166060850152508460808401528060a08401526150c6818401856142d6565b634e487b7160e01b600052603260045260246000fd5b8082018082111561227a5761227a6151a3565b6000808335601e1984360301811261531d57600080fd5b83018035915067ffffffffffffffff82111561533857600080fd5b60200191503681900382131561456a57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b80516137028161423c565b600082601f83011261539857600080fd5b8151602067ffffffffffffffff8211156153b4576153b4614380565b8160051b6153c3828201614429565b92835284810182019282810190878511156153dd57600080fd5b83870192505b848310156135cf578251825291830191908301906153e3565b600082601f83011261540d57600080fd5b815161541b6144a18261445a565b81815284602083860101111561543057600080fd5b6154418260208301602087016142b2565b949350505050565b60008060008060008060008060006101208a8c03121561546857600080fd5b8951985061547860208b0161537c565b975060408a015167ffffffffffffffff8082111561549557600080fd5b6154a18d838e01615387565b98506154af60608d0161537c565b975060808c0151965060a08c0151955060c08c0151945060e08c01519150808211156154da57600080fd5b6154e68d838e016153fc565b93506101008c01519150808211156154fd57600080fd5b5061550a8c828d016153fc565b9150509295985092959850929598565b6020815281516020820152600060208301516001600160a01b038082166040850152806040860151166060850152505060608301516080830152608083015160a083015260a083015160c08084015261544160e08401826142d6565b60a0808252865190820181905260009060209060c0840190828a01845b828110156155af57815184529284019290840190600101615593565b50505083810360208501526155c481896142d6565b91505085604084015282810360608401526155df81866142d6565b9150508260808301529695505050505050565b60008060008060008060008060006101208a8c03121561561157600080fd5b8951985060208a01516156238161423c565b60408b01519098506156348161423c565b965061564260608b0161537c565b955060808a0151945060a08a0151935060c08a0151925060e08a015167ffffffffffffffff808211156154da57600080fd5b6020815281516020820152600060208301516001600160a01b038082166040850152806040860151166060850152505060608301516156be60808401826001600160a01b03169052565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008081850152506154416101208401826142d6565b60608152600061570c60608301866142d6565b828103602084015261571e81866142d6565b915050826040830152949350505050565b808202811582820484141761227a5761227a6151a3565b60006040828403121561575857600080fd5b6040516040810181811067ffffffffffffffff8211171561577b5761577b614380565b604052825161578981614a89565b815260208301516157998161423c565b60208201529392505050565b6000602082840312156157b757600080fd5b813567ffffffffffffffff808211156157cf57600080fd5b9083019060a082860312156157e357600080fd5b6157eb614406565b8235815260208301356020820152604083013560408201526060830135606082015260808301358281111561581f57600080fd5b61582b87828601614482565b60808301525095945050505050565b601f821115612d95576000816000526020600020601f850160051c810160208610156158635750805b601f850160051c820191505b81811015611d415782815560010161586f565b815167ffffffffffffffff81111561589c5761589c614380565b6158b0816158aa8454614ba8565b8461583a565b602080601f8311600181146158e557600084156158cd5750858301515b600019600386901b1c1916600185901b178555611d41565b600085815260208120601f198616915b82811015615914578886015182559484019460019091019084016158f5565b50858210156159325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8281526060810161419c6020830184805163ffffffff1682526020908101516001600160a01b0316910152565b60c08152600061598260c08301896142d6565b6001600160a01b039790971660208301525060408101949094526060840192909252608083015260a090910152919050565b7f5068692050726f746f636f6c20697320616e206f70656e2063726564656e746981527f616c206c6179657220666f72206f6e636861696e206964656e746974792e200060208201527f506869204e465420636f6c6c656374696f6e7320726570726573656e7420796f603f8201527f7572206f6e636861696e20616368696576656d656e742e200000000000000000605f8201527f44657461696c732061626f7574207468697320636f6c6c656374696f6e3a206360778201527f7265642d69643a20000000000000000000000000000000000000000000000000609782015260008451615aaa81609f8501602089016142b2565b7f2c20636861696e2d69643a200000000000000000000000000000000000000000609f918401918201528451615ae78160ab8401602089016142b2565b7f2c20637265617465642062793a2000000000000000000000000000000000000060ab92909101918201528351615b258160b98401602088016142b2565b6135cf615b5a60b9838501017f2e20000000000000000000000000000000000000000000000000000000000000815260020190565b7f4578706c6f72652068747470733a2f2f7068692e626f782f20746f206c65617281527f6e206d6f72652e00000000000000000000000000000000000000000000000000602082015260270190565b8181038181111561227a5761227a6151a3565b87815260006001600160a01b03808916602084015280881660408401528087166060840152508460808301528360a083015260e060c0830152615c0260e08301846142d6565b9998505050505050505050565b60008251615c218184602087016142b2565b9190910192915050565b600080600080600060a08688031215615c4357600080fd5b855194506020860151615c558161423c565b604087015190945067ffffffffffffffff811115615c7257600080fd5b615c7e888289016153fc565b606088015160809098015196999598509695949350505050565b83815282602082015260606040820152600061127660608301846142d6565b848152608060208201526000615cd060808301866142d6565b6001600160a01b0394909416604083015250606001529291505056fea164736f6c6343000819000a