[ { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "EditionDoesNotExist", "type": "error" }, { "inputs": [], "name": "InvalidEditionId", "type": "error" }, { "inputs": [], "name": "InvalidEditionIdsLength", "type": "error" }, { "inputs": [], "name": "InvalidManager", "type": "error" }, { "inputs": [], "name": "ManagerDoesNotExist", "type": "error" }, { "inputs": [], "name": "ManagerRemoveBlocked", "type": "error" }, { "inputs": [], "name": "ManagerSwapBlocked", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintFrozen", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "MinterRegistrationInvalid", "type": "error" }, { "inputs": [], "name": "NotAContract", "type": "error" }, { "inputs": [], "name": "NotMinter", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorNotAllowed", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "RoyaltyBPSInvalid", "type": "error" }, { "inputs": [], "name": "RoyaltySetBlocked", "type": "error" }, { "inputs": [], "name": "SoldOut", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipientAddress", "type": "address" }, { "indexed": true, "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newDefaultTokenManager", "type": "address" } ], "name": "DefaultTokenManagerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "size", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "editionTokenManager", "type": "address" } ], "name": "EditionCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "registered", "type": "bool" } ], "name": "MinterRegistrationChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MintsFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyManager", "type": "address" } ], "name": "RoyaltyManagerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_SUBSCRIPTION", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MARKETPLACE_FILTERER_REGISTRY", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" } ], "name": "editionURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "editionUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freezeMints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" } ], "name": "getEditionDetails", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "size", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "initialTokenId", "type": "uint256" } ], "internalType": "struct IEditionCollection.EditionDetails", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getEditionId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "editionIds", "type": "uint256[]" } ], "name": "getEditionsDetailsAndUri", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "uint256", "name": "size", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "initialTokenId", "type": "uint256" } ], "internalType": "struct IEditionCollection.EditionDetails[]", "name": "", "type": "tuple[]" }, { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "address", "name": "_observability", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintAmountToRecipient", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintAmountToRecipients", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "mintOneToRecipient", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "mintOneToRecipients", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minters", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "observability", "outputs": [ { "internalType": "contract IObservability", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operatorFiltererRegistry", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "registerMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeDefaultTokenManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeMarketplaceFiltererRegistryAndUnregister", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "removeRoyaltyManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newName", "type": "string" }, { "internalType": "string", "name": "newSymbol", "type": "string" }, { "internalType": "string", "name": "newContractUri", "type": "string" } ], "name": "setContractMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newRegistry", "type": "address" } ], "name": "setCustomMarketplaceFiltererRegistryAndRegisterDefaultSubscription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint16", "name": "royaltyPercentageBPS", "type": "uint16" } ], "internalType": "struct IRoyaltyManager.Royalty", "name": "_royalty", "type": "tuple" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_defaultTokenManager", "type": "address" } ], "name": "setDefaultTokenManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "editionId", "type": "uint256" }, { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setEditionURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setMarketplaceFiltererRegistryAndRegisterDefaultSubscription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyManager", "type": "address" } ], "name": "setRoyaltyManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "size", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenManager", "outputs": [ { "internalType": "address", "name": "manager", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenManagerByTokenId", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "unregisterMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b506146e4806100206000396000f3fe6080604052600436106102655760003560e01c806301ffc9a71461026a57806304dafa4b1461029f578063063a7502146102b65780630690a78d146102cb57806306fdde03146102eb578063081812fc1461030d578063095ea7b31461033a5780630fd9446c1461034d57806317360d341461036257806318160ddd1461039057806318bae6c8146103b35780631b30808d146103d35780631d990426146103f357806323b872dd146104085780632a55205a1461041b5780632a5ac76414610449578063336211bf14610469578063377e5e271461048957806342842e0e146104a957806342966c68146104bc57806346134b50146104dc57806347230dcb146104fc57806350cf5a311461051c578063572b6c051461053c5780636352211e1461055c5780636502abea1461057c578063662fff381461059c5780636d87e481146105bc57806370a08231146105de578063715018a6146105fe578063834a20df146106135780638da5cb5b146106335780639217270414610648578063949d225d1461066857806395d89b411461067e578063a22cb46514610693578063a305f5b2146106b3578063b0e5afe3146106d3578063b5c5801e146106f3578063b859c93514610708578063b88d4fde14610728578063c2f507011461073b578063c87b56dd14610750578063cce2df0314610770578063ddf990f914610790578063e382c907146107bd578063e8a3d485146107dd578063e985e9c5146107f2578063eb87215014610812578063ee295d6214610832578063ef60ceaf14610852578063f2fde38b14610872578063f97b57ec14610892578063f9c0611c146108b4575b600080fd5b34801561027657600080fd5b5061028a6102853660046137c5565b6108dc565b60405190151581526020015b60405180910390f35b3480156102ab57600080fd5b506102b46108ed565b005b3480156102c257600080fd5b506102b461090e565b3480156102d757600080fd5b506102b46102e6366004613823565b6109cc565b3480156102f757600080fd5b50610300610c0f565b60405161029691906138c6565b34801561031957600080fd5b5061032d6103283660046138d9565b610caa565b60405161029691906138f2565b6102b461034836600461391b565b610cee565b34801561035957600080fd5b506102b4610cfe565b34801561036e57600080fd5b5061038261037d366004613947565b610d8d565b604051610296929190613a4f565b34801561039c57600080fd5b506103a5610e84565b604051908152602001610296565b3480156103bf57600080fd5b5060cb5461032d906001600160a01b031681565b3480156103df57600080fd5b506103a56103ee366004613ac5565b610ea4565b3480156103ff57600080fd5b50610300610f2d565b6102b4610416366004613afd565b610fbb565b34801561042757600080fd5b5061043b610436366004613b2d565b611149565b604051610296929190613b4f565b34801561045557600080fd5b506102b4610464366004613b68565b611162565b34801561047557600080fd5b506103a56104843660046138d9565b6111f7565b34801561049557600080fd5b506103006104a43660046138d9565b61121e565b6102b46104b7366004613afd565b6112c8565b3480156104c857600080fd5b506102b46104d73660046138d9565b6112e8565b3480156104e857600080fd5b5061032d6104f73660046138d9565b6114a7565b34801561050857600080fd5b506102b4610517366004613c01565b6114b2565b34801561052857600080fd5b506102b4610537366004613c01565b611575565b34801561054857600080fd5b5061028a610557366004613c01565b6116d4565b34801561056857600080fd5b5061032d6105773660046138d9565b6116e8565b34801561058857600080fd5b5061032d6105973660046138d9565b6116f3565b3480156105a857600080fd5b506103a56105b7366004613ce1565b611703565b3480156105c857600080fd5b5061032d6daaeb6d7670e522a718067333cd4e81565b3480156105ea57600080fd5b506103a56105f9366004613c01565b611771565b34801561060a57600080fd5b506102b46117d0565b34801561061f57600080fd5b506102b461062e366004613c01565b6117e2565b34801561063f57600080fd5b5061032d611868565b34801561065457600080fd5b506103a5610663366004613d30565b611877565b34801561067457600080fd5b506103a560d15481565b34801561068a57600080fd5b506103006118f2565b34801561069f57600080fd5b506102b46106ae366004613d85565b61190a565b3480156106bf57600080fd5b506102b46106ce366004613c01565b611987565b3480156106df57600080fd5b5060cf5461032d906001600160a01b031681565b3480156106ff57600080fd5b506102b4611af2565b34801561071457600080fd5b506103a5610723366004613dbe565b611c46565b6102b4610736366004613e48565b611cb5565b34801561074757600080fd5b506102b4611e2b565b34801561075c57600080fd5b5061030061076b3660046138d9565b611f3c565b34801561077c57600080fd5b506102b461078b366004613ec7565b611f5b565b34801561079c57600080fd5b506107b06107ab3660046138d9565b612145565b6040516102969190613f1d565b3480156107c957600080fd5b506102b46107d8366004613c01565b61216b565b3480156107e957600080fd5b5061030061219b565b3480156107fe57600080fd5b5061028a61080d366004613f30565b6121a8565b34801561081e57600080fd5b5060ce5461032d906001600160a01b031681565b34801561083e57600080fd5b5060cd5461032d906001600160a01b031681565b34801561085e57600080fd5b506102b461086d366004613f5e565b6121e5565b34801561087e57600080fd5b506102b461088d366004613c01565b6123f3565b34801561089e57600080fd5b506108a7612469565b6040516102969190613f76565b3480156108c057600080fd5b5061032d733cc6cdda760b79bafa08df41ecfa224f810dceb681565b60006108e78261247a565b92915050565b6108f56124c8565b61090c6daaeb6d7670e522a718067333cd4e612537565b565b6109166124c8565b61091e6125d2565b60cd805460ff60a01b1916600160a01b1790556040517f9d4b38394dff663b46f53f52ced584161b5021180321b381f6104325eecebf4990600090a160ce60009054906101000a90046001600160a01b03166001600160a01b031663fd120bd26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b5050505061090c6001609755565b82156109e2576109e2631a3973a960e01b612633565b60cb546001600160a01b031660006109f861263c565b90506001600160a01b038216610a42576000610a12611868565b9050806001600160a01b0316826001600160a01b031614610a3c57610a3c6282b42960e81b612633565b50610ad0565b604051634e9173c760e11b81526001600160a01b03831690639d22e78e90610a7a90309085906000908a908a90600690600401613fec565b6020604051808303816000875af1158015610a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abd9190614051565b610ad057610ad06282b42960e81b612633565b610adc60d2858561367a565b5060408051600180825281830190925260009160208083019080368337019050509050600081600081518110610b1457610b1461406e565b6020908102919091010152604080516001808252818301909252600091816020015b6060815260200190600190039081610b3657905050905085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250855186945090925015159050610b9757610b9761406e565b602090810291909101015260ce546040516374c1ace160e01b81526001600160a01b03909116906374c1ace190610bd49085908590600401614084565b600060405180830381600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b5050505050505050505050565b6060610c19612646565b6002018054610c27906140db565b80601f0160208091040260200160405190810160405280929190818152602001828054610c53906140db565b8015610ca05780601f10610c7557610100808354040283529160200191610ca0565b820191906000526020600020905b815481529060010190602001808311610c8357829003601f168201915b5050505050905090565b6000610cb58261266a565b610cc957610cc96333d1c03960e21b612633565b610cd1612646565b60009283526006016020525060409020546001600160a01b031690565b610cfa828260016126c8565b5050565b610d066124c8565b60cf546001600160a01b03163b15610d7b5760cf54604051631761612360e11b81526001600160a01b0390911690632ec2c24690610d489030906004016138f2565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b505050505b60cf80546001600160a01b0319169055565b60608060018314610da857610da86331387a3360e21b612633565b604080516001808252818301909252600091816020015b610dc76136fe565b815260200190600190039081610dbf57505060408051600180825281830190925291925060009190602082015b6060815260200190600190039081610df4579050509050600086866000818110610e2057610e2061406e565b905060200201359050610e328161121e565b82600081518110610e4557610e4561406e565b6020026020010181905250610e58612779565b83600081518110610e6b57610e6b61406e565b60209081029190910101525090925090505b9250929050565b60006001610e90612646565b60010154610e9c612646565b540303919050565b6000610eb9610eb161263c565b60c990612822565b610ecd57610ecd633e34a41b60e21b612633565b610ed56125d2565b60cd54600160a01b900460ff1660011415610efa57610efa6345a9661760e01b612633565b8315610f1057610f1063eb49290360e01b612633565b610f1a8383612837565b9050610f266001609755565b9392505050565b60d28054610f3a906140db565b80601f0160208091040260200160405190810160405280929190818152602001828054610f66906140db565b8015610fb35780601f10610f8857610100808354040283529160200191610fb3565b820191906000526020600020905b815481529060010190602001808311610f9657829003601f168201915b505050505081565b610fc6838383612899565b60cb546001600160a01b0316801580159061105057506040516301ffc9a760e01b81526001600160a01b038216906301ffc9a79061100f90637af46b4f60e11b90600401614110565b602060405180830381865afa15801561102c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110509190614051565b156110dd57806001600160a01b0316637f1eaf8561106c61263c565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201528188166024820152908616604482015260648101859052608401600060405180830381600087803b1580156110c457600080fd5b505af11580156110d8573d6000803e3d6000fd5b505050505b60ce546040516323de665160e01b81526001600160a01b03909116906323de66519061111190879087908790600401614125565b600060405180830381600087803b15801561112b57600080fd5b505af115801561113f573d6000803e3d6000fd5b5050505050505050565b600080611157600084612a32565b915091509250929050565b61116a6124c8565b61117686868686612a86565b61118260d0838361367a565b5060ce54604051635bf57bc360e01b81526001600160a01b0390911690635bf57bc3906111bd90899089908990899089908990600401614149565b600060405180830381600087803b1580156111d757600080fd5b505af11580156111eb573d6000803e3d6000fd5b50505050505050505050565b60006112028261266a565b6112165761121663677510db60e11b612633565b506000919050565b606081156112365761123663eb49290360e01b612633565b60d28054611243906140db565b80601f016020809104026020016040519081016040528092919081815260200182805461126f906140db565b80156112bc5780601f10611291576101008083540402835291602001916112bc565b820191906000526020600020905b81548152906001019060200180831161129f57829003601f168201915b50505050509050919050565b6112e383838360405180602001604052806000815250611cb5565b505050565b6112f06125d2565b60cb546001600160a01b0316600061130661263c565b90506001600160a01b0382161580159061138f57506040516301ffc9a760e01b81526001600160a01b038316906301ffc9a79061134e9063129dae8b60e01b90600401614110565b602060405180830381865afa15801561136b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138f9190614051565b1561140b57600061139f846116e8565b60405163129dae8b60e01b81529091506001600160a01b0384169063129dae8b906113d39085908590600090600401614125565b600060405180830381600087803b1580156113ed57600080fd5b505af1158015611401573d6000803e3d6000fd5b5050505050611428565b6114158184612abb565b611428576114286282b42960e81b612633565b61143183612aec565b60ce546040516323de665160e01b81526001600160a01b03909116906323de6651906114669084906000908890600401614125565b600060405180830381600087803b15801561148057600080fd5b505af1158015611494573d6000803e3d6000fd5b5050505050506114a46001609755565b50565b60006108e7826116f3565b6114ba6124c8565b6114c26125d2565b6114cd60c982612af7565b6114e1576114e163ea6eb5c360e01b612633565b6040516001906001600160a01b0383169060008051602061467883398151915290600090a360ce5460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f90611539908490600190600401614192565b600060405180830381600087803b15801561155357600080fd5b505af1158015611567573d6000803e3d6000fd5b505050506114a46001609755565b61157d6125d2565b61158681612b0c565b61159a5761159a631a7387bd60e11b612633565b60006115a461263c565b60cd549091506001600160a01b0316806115ec576115c0611868565b6001600160a01b0316826001600160a01b0316146115e7576115e76282b42960e81b612633565b61166f565b60405163bcdbc94760e01b81526001600160a01b0382169063bcdbc9479061161a90869086906004016141ad565b602060405180830381865afa158015611637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165b9190614051565b61166f5761166f63e10a050560e01b612633565b60cd80546001600160a01b0319166001600160a01b0385169081179091556040516000805160206146b883398151915290600090a260ce5460405163755d5a1160e11b81526001600160a01b039091169063eabab422906114669086906004016138f2565b6065546001600160a01b0391821691161490565b60006108e782612b28565b5060cb546001600160a01b031690565b6000611710610eb161263c565b61172457611724633e34a41b60e21b612633565b61172c6125d2565b60cd54600160a01b900460ff1660011415611751576117516345a9661760e01b612633565b83156117675761176763eb49290360e01b612633565b610f1a8383612be6565b60006001600160a01b038216611791576117916323d3ad8160e21b612633565b6001600160401b036117a1612646565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b6117d86124c8565b61090c6000612c8d565b6117ea6124c8565b6117f26125d2565b6117fd60c982612cdf565b6118115761181163ea6eb5c360e01b612633565b6040516000906001600160a01b03831690600080516020614678833981519152908390a360ce5460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f90611539908490600090600401614192565b6033546001600160a01b031690565b6000611884610eb161263c565b61189857611898633e34a41b60e21b612633565b6118a06125d2565b60cd54600160a01b900460ff16600114156118c5576118c56345a9661760e01b612633565b82156118db576118db63eb49290360e01b612633565b6118e6826001612be6565b90506108e76001609755565b60606118fc612646565b6003018054610c27906140db565b80611913612646565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61198f6125d2565b61199881612cf4565b6119ac576119ac631a7387bd60e11b612633565b60006119b661263c565b60cb549091506001600160a01b0316806119fe576119d2611868565b6001600160a01b0316826001600160a01b0316146119f9576119f96282b42960e81b612633565b611a8d565b6040516342f19adb60e11b81526001600160a01b0383811660048301526000602483015284811660448301528216906385e335b6906064016020604051808303816000875af1158015611a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a799190614051565b611a8d57611a8d63e10a050560e01b612633565b60cb80546001600160a01b0319166001600160a01b03851690811790915560405160008051602061465883398151915290600090a260ce546040516316365cdd60e01b81526001600160a01b03909116906316365cdd906114669086906004016138f2565b611afa6125d2565b6000611b0461263c565b60cb549091506001600160a01b031680611b2857611b28635f98be1560e11b612633565b60405163ce2003a560e01b81526001600160a01b0382169063ce2003a590611b57908590600090600401613b4f565b6020604051808303816000875af1158015611b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9a9190614051565b611bae57611bae63251c48e160e11b612633565b60cb80546001600160a01b0319169055604051600090600080516020614658833981519152908290a260ce546040516316365cdd60e01b81526001600160a01b03909116906316365cdd90611c08906000906004016138f2565b600060405180830381600087803b158015611c2257600080fd5b505af1158015611c36573d6000803e3d6000fd5b50505050505061090c6001609755565b6000611c53610eb161263c565b611c6757611c67633e34a41b60e21b612633565b611c6f6125d2565b60cd54600160a01b900460ff1660011415611c9457611c946345a9661760e01b612633565b8215611caa57611caa63eb49290360e01b612633565b6118e6826001612837565b611cc184848484612d10565b60cb546001600160a01b03168015801590611d4b57506040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790611d0a90637af46b4f60e11b90600401614110565b602060405180830381865afa158015611d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4b9190614051565b15611dbe57806001600160a01b0316638af6791b611d6761263c565b878787876040518663ffffffff1660e01b8152600401611d8b9594939291906141c7565b600060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b505050505b60ce546040516323de665160e01b81526001600160a01b03909116906323de665190611df290889088908890600401614125565b600060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050505050505050565b611e336125d2565b6000611e3d61263c565b60cd549091506001600160a01b031680611e6157611e61635f98be1560e11b612633565b60405163680c607d60e11b81526001600160a01b0382169063d018c0fa90611e8d9085906004016138f2565b602060405180830381865afa158015611eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ece9190614051565b611ee257611ee263251c48e160e11b612633565b60cd80546001600160a01b03191690556040516000906000805160206146b8833981519152908290a260ce5460405163755d5a1160e11b81526001600160a01b039091169063eabab42290611c08906000906004016138f2565b6060611f478261266a565b6112365761123663677510db60e11b612633565b600054610100900460ff1615808015611f7b5750600054600160ff909116105b80611f955750303b158015611f95575060005460ff166001145b611ffd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015612020576000805461ff0019166101001790555b60008060008060008060008060008060008e8e810190612040919061429f565b9a509a509a509a509a509a509a509a509a509a509a506120698b8b8b8b8b8b878c8c8c8c612d4b565b60405163f872381d60e01b81526001600160a01b038e169063f872381d906120959030906004016138f2565b600060405180830381600087803b1580156120af57600080fd5b505af11580156120c3573d6000803e3d6000fd5b505050508c60ce60006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050505050505050801561213f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b61214d6136fe565b81156121635761216363eb49290360e01b612633565b6108e7612779565b6121736124c8565b6001600160a01b0381163b612192576121926309ee12d560e01b612633565b6114a481612537565b60d08054610f3a906140db565b60006121b2612646565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b6121ed6125d2565b6121fd60408201602083016143c4565b6127108161ffff16111561221b5761221b633daf741f60e21b612633565b600061222561263c565b60cd549091506001600160a01b03168061226d57612241611868565b6001600160a01b0316826001600160a01b031614612268576122686282b42960e81b612633565b6122f0565b60405163049a5c0f60e41b81526001600160a01b038216906349a5c0f09061229b90879086906004016143e1565b602060405180830381865afa1580156122b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dc9190614051565b6122f0576122f063270e710760e21b612633565b8360cc6122fd8282614427565b50612310905060408501602086016143c4565b61ffff166123216020860186613c01565b6001600160a01b03167f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4160405160405180910390a360ce546001600160a01b031663d10072c06123746020870187613c01565b61238460408801602089016143c4565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015261ffff166024820152604401600060405180830381600087803b1580156123ce57600080fd5b505af11580156123e2573d6000803e3d6000fd5b505050505050506114a46001609755565b6123fb6124c8565b6001600160a01b0381166124605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611ff4565b6114a481612c8d565b606061247560c9612de5565b905090565b60006301ffc9a760e01b6001600160e01b0319831614806124ab57506380ac58cd60e01b6001600160e01b03198316145b806108e75750506001600160e01b031916635b5e139f60e01b1490565b6124d061263c565b6001600160a01b03166124e1611868565b6001600160a01b03161461090c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611ff4565b60cf80546001600160a01b0319166001600160a01b0383169081179091553b156114a457604051633e9f1edf60e11b81526001600160a01b03821690637d3e3dbe9061259d903090733cc6cdda760b79bafa08df41ecfa224f810dceb6906004016141ad565b600060405180830381600087803b1580156125b757600080fd5b505af11580156125cb573d6000803e3d6000fd5b5050505050565b600260975414156126255760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611ff4565b6002609755565b6001609755565b6114a481612df2565b6000612475612dfc565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000816001116126c35761267c612646565b548210156126c35760005b61268f612646565b600084815260049190910160205260409020549050806126b9576126b283614497565b9250612687565b600160e01b161590505b919050565b60006126d3836116e8565b90508180156126eb5750336001600160a01b03821614155b1561270e576126fa81336121a8565b61270e5761270e6367d9dca160e11b612633565b83612717612646565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b6127816136fe565b6040518060800160405280306001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156127ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127f291908101906144ae565b815260200160d15481526020016001612809612e1e565b612813919061451b565b81526020016001815250905090565b6000610f26836001600160a01b038416612e2e565b600080612842612e1e565b9050600060016128528584614532565b61285c919061451b565b905060d154600014158015612872575060d15481115b15612887576128876352df9fe560e01b612633565b6128918585612e46565b949350505050565b60006128a482612b28565b6001600160a01b0394851694909150811684146128ca576128ca62a1148160e81b612633565b6000806128d684612f17565b915091506128eb81876128e63390565b612f3f565b61290d576128f986336121a8565b61290d5761290d632ce44b5f60e11b612633565b801561291857600082555b612920612646565b6001600160a01b038716600090815260059190910160205260409020805460001901905561294c612646565b6001600160a01b0386166000908152600591909101602052604090208054600101905561297d85600160e11b612f54565b612985612646565b60008681526004919091016020526040902055600160e11b83166129f457600184016129af612646565b600082815260049190910160205260409020546129f2576129ce612646565b5481146129f257836129de612646565b600083815260049190910160205260409020555b505b6001600160a01b038516848188600080516020614698833981519152600080a480612a2957612a29633a954ecd60e21b612633565b50505050505050565b6040805180820190915260cc546001600160a01b038116808352600160a01b90910461ffff1660208301819052909160009161271090612a72908661454a565b612a7c9190614569565b9150509250929050565b8383612a90612646565b6002019190612aa092919061367a565b508181612aab612646565b60030191906125cb92919061367a565b600080612ac7836116e8565b9050612ad381856121a8565b806128915750612891612ae584610caa565b8286612f3f565b6114a4816000612f69565b6000610f26836001600160a01b0384166130c0565b60006108e76001600160a01b03831663440444c560e11b61310a565b600081600111612bd657612b3a612646565b60008381526004919091016020526040902054905080612bc657612b5c612646565b548210612b7357612b73636f96cda160e11b612633565b612b7b612646565b6000199092016000818152600493909301602052604090922054905080612ba157612b73565b600160e01b8116612bb157919050565b612bc1636f96cda160e11b612633565b612b73565b600160e01b8116612bd657919050565b6126c3636f96cda160e11b612633565b815160009081612bf4612e1e565b905060006001612c04868561454a565b612c0e9084614532565b612c18919061451b565b905060d154600014158015612c2e575060d15481115b15612c4357612c436352df9fe560e01b612633565b60005b83811015612c8357612c71878281518110612c6357612c6361406e565b602002602001015187612e46565b80612c7b8161458b565b915050612c46565b5095945050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610f26836001600160a01b038416613126565b60006108e76001600160a01b038316633b209e2f60e11b61310a565b612d1b848484610fbb565b6001600160a01b0383163b1561213f57612d3784848484613219565b61213f5761213f6368d2bf6b60e11b612633565b612d568b8b8b6132f8565b612d6087876133ac565b612d69836133dd565b60d18490558451612d819060d2906020880190613726565b50612d8d60c983612af7565b508751612da19060d09060208b0190613726565b506040516001600160a01b038a169085907ff20a10ce76a8f4f0e4a804c5623806cf04350dc8186b7e02f95c562e94be333190600090a35050505050505050505050565b60606000610f2683613426565b8060005260046000fd5b6000612e07336116d4565b15612e19575060131936013560601c90565b503390565b6000612e28612646565b54919050565b60009081526001919091016020526040902054151590565b6000612e50612646565b54905081612e6857612e6863b562e8dd60e01b612633565b612e78836001841460e11b612f54565b612e80612646565b600083815260049190910160205260409020556001600160401b018202612ea5612646565b6001600160a01b03851660008181526005929092016020526040909120805490920190915580612ede57612ede622e076360e81b612633565b818301825b80836000600080516020614698833981519152600080a460010180821415612ee35781612f0e612646565b55505050505050565b6000806000612f24612646565b60009485526006016020525050604090912080549092909150565b6001600160a01b039081169116811491141790565b4260a01b176001600160a01b03919091161790565b6000612f7483612b28565b905080600080612f8386612f17565b915091508415612fba57612f98818433612f3f565b612fba57612fa683336121a8565b612fba57612fba632ce44b5f60e11b612633565b8015612fc557600082555b6001600160801b03612fd5612646565b6001600160a01b038516600090815260059190910160205260409020805491909101905561300783600360e01b612f54565b61300f612646565b60008881526004919091016020526040902055600160e11b841661307e5760018601613039612646565b6000828152600491909101602052604090205461307c57613058612646565b54811461307c5784613068612646565b600083815260049190910160205260409020555b505b60405186906000906001600160a01b03861690600080516020614698833981519152908390a46130ac612646565b600190810180549091019055505050505050565b60006130cc8383612e2e565b613102575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108e7565b5060006108e7565b600061311583613481565b8015610f265750610f2683836134b4565b6000818152600183016020526040812054801561320f57600061314a60018361451b565b855490915060009061315e9060019061451b565b90508181146131c357600086600001828154811061317e5761317e61406e565b90600052602060002001549050808760000184815481106131a1576131a161406e565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806131d4576131d46145a6565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108e7565b60009150506108e7565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061324e9033908990889088906004016145bc565b6020604051808303816000875af1925050508015613289575060408051601f3d908101601f19168201909252613286918101906145ef565b60015b6132db573d8080156132b7576040519150601f19603f3d011682016040523d82523d6000602084013e6132bc565b606091505b5080516132d3576132d36368d2bf6b60e11b612633565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b600054610100900460ff1661331f5760405162461bcd60e51b8152600401611ff49061460c565b81602001516127108161ffff16111561334257613342633daf741f60e21b612633565b61334a613548565b613352613577565b61335b84612c8d565b50815160cc805460209094015161ffff16600160a01b026001600160b01b03199094166001600160a01b03928316179390931790925560cb8054919092166001600160a01b03199190911617905550565b600054610100900460ff166133d35760405162461bcd60e51b8152600401611ff49061460c565b610cfa82826135a6565b600054610100900460ff166134045760405162461bcd60e51b8152600401611ff49061460c565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b6060816000018054806020026020016040519081016040528092919081815260200182805480156112bc57602002820191906000526020600020905b8154815260200190600101908083116134625750505050509050919050565b6000613494826301ffc9a760e01b6134b4565b80156108e757506134ad826001600160e01b03196134b4565b1592915050565b6000806301ffc9a760e01b836040516024016134d09190614110565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015613531575060208210155b801561353d5750600081115b979650505050505050565b600054610100900460ff1661356f5760405162461bcd60e51b8152600401611ff49061460c565b61090c61361c565b600054610100900460ff1661359e5760405162461bcd60e51b8152600401611ff49061460c565b61090c613653565b600054610100900460ff166135cd5760405162461bcd60e51b8152600401611ff49061460c565b816135d6612646565b60020190805190602001906135ec929190613726565b50806135f6612646565b600301908051906020019061360c929190613726565b506001613617612646565b555050565b600054610100900460ff166136435760405162461bcd60e51b8152600401611ff49061460c565b61090c61364e61263c565b612c8d565b600054610100900460ff1661262c5760405162461bcd60e51b8152600401611ff49061460c565b828054613686906140db565b90600052602060002090601f0160209004810192826136a857600085556136ee565b82601f106136c15782800160ff198235161785556136ee565b828001600101855582156136ee579182015b828111156136ee5782358255916020019190600101906136d3565b506136fa92915061379a565b5090565b6040518060800160405280606081526020016000815260200160008152602001600081525090565b828054613732906140db565b90600052602060002090601f01602090048101928261375457600085556136ee565b82601f1061376d57805160ff19168380011785556136ee565b828001600101855582156136ee579182015b828111156136ee57825182559160200191906001019061377f565b5b808211156136fa576000815560010161379b565b6001600160e01b0319811681146114a457600080fd5b6000602082840312156137d757600080fd5b8135610f26816137af565b60008083601f8401126137f457600080fd5b5081356001600160401b0381111561380b57600080fd5b602083019150836020828501011115610e7d57600080fd5b60008060006040848603121561383857600080fd5b8335925060208401356001600160401b0381111561385557600080fd5b613861868287016137e2565b9497909650939450505050565b60005b83811015613889578181015183820152602001613871565b8381111561213f5750506000910152565b600081518084526138b281602086016020860161386e565b601f01601f19169290920160200192915050565b602081526000610f26602083018461389a565b6000602082840312156138eb57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146114a457600080fd5b6000806040838503121561392e57600080fd5b823561393981613906565b946020939093013593505050565b6000806020838503121561395a57600080fd5b82356001600160401b038082111561397157600080fd5b818501915085601f83011261398557600080fd5b81358181111561399457600080fd5b8660208260051b85010111156139a957600080fd5b60209290920196919550909350505050565b60008151608084526139d0608085018261389a565b90506020830151602085015260408301516040850152606083015160608501528091505092915050565b600081518084526020808501808196508360051b8101915082860160005b85811015613a42578284038952613a3084835161389a565b98850198935090840190600101613a18565b5091979650505050505050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b83811015613aa657605f19888703018552613a948683516139bb565b95509382019390820190600101613a78565b505085840381870152505050613abc81856139fa565b95945050505050565b600080600060608486031215613ada57600080fd5b833592506020840135613aec81613906565b929592945050506040919091013590565b600080600060608486031215613b1257600080fd5b8335613b1d81613906565b92506020840135613aec81613906565b60008060408385031215613b4057600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008060008060008060608789031215613b8157600080fd5b86356001600160401b0380821115613b9857600080fd5b613ba48a838b016137e2565b90985096506020890135915080821115613bbd57600080fd5b613bc98a838b016137e2565b90965094506040890135915080821115613be257600080fd5b50613bef89828a016137e2565b979a9699509497509295939492505050565b600060208284031215613c1357600080fd5b8135610f2681613906565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613c5c57613c5c613c1e565b604052919050565b600082601f830112613c7557600080fd5b813560206001600160401b03821115613c9057613c90613c1e565b8160051b613c9f828201613c34565b9283528481018201928281019087851115613cb957600080fd5b83870192505b8483101561353d578235613cd281613906565b82529183019190830190613cbf565b600080600060608486031215613cf657600080fd5b8335925060208401356001600160401b03811115613d1357600080fd5b613d1f86828701613c64565b925050604084013590509250925092565b60008060408385031215613d4357600080fd5b8235915060208301356001600160401b03811115613d6057600080fd5b612a7c85828601613c64565b80151581146114a457600080fd5b80356126c381613d6c565b60008060408385031215613d9857600080fd5b8235613da381613906565b91506020830135613db381613d6c565b809150509250929050565b60008060408385031215613dd157600080fd5b823591506020830135613db381613906565b60006001600160401b03821115613dfc57613dfc613c1e565b50601f01601f191660200190565b6000613e1d613e1884613de3565b613c34565b9050828152838383011115613e3157600080fd5b828260208301376000602084830101529392505050565b60008060008060808587031215613e5e57600080fd5b8435613e6981613906565b93506020850135613e7981613906565b92506040850135915060608501356001600160401b03811115613e9b57600080fd5b8501601f81018713613eac57600080fd5b613ebb87823560208401613e0a565b91505092959194509250565b600080600060408486031215613edc57600080fd5b83356001600160401b03811115613ef257600080fd5b613efe868287016137e2565b9094509250506020840135613f1281613906565b809150509250925092565b602081526000610f2660208301846139bb565b60008060408385031215613f4357600080fd5b8235613f4e81613906565b91506020830135613db381613906565b600060408284031215613f7057600080fd5b50919050565b6020808252825182820181905260009190848201906040850190845b81811015613fb75783516001600160a01b031683529284019291840191600101613f92565b50909695505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038781168252861660208201526040810185905260a0606082018190526000906140209083018587613fc3565b90506007831061404057634e487b7160e01b600052602160045260246000fd5b826080830152979650505050505050565b60006020828403121561406357600080fd5b8151610f2681613d6c565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156140bd578151845292840192908401906001016140a1565b505050838103828501526140d181866139fa565b9695505050505050565b600181811c908216806140ef57607f821691505b60208210811415613f7057634e487b7160e01b600052602260045260246000fd5b6001600160e01b031991909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60608152600061415d60608301888a613fc3565b8281036020840152614170818789613fc3565b90508281036040840152614185818587613fc3565b9998505050505050505050565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0386811682528581166020830152841660408201526060810183905260a06080820181905260009061353d9083018461389a565b80356126c381613906565b61ffff811681146114a457600080fd5b60006040828403121561422f57600080fd5b604080519081016001600160401b038111828210171561425157614251613c1e565b604052905080823561426281613906565b815260208301356142728161420d565b6020919091015292915050565b600082601f83011261429057600080fd5b610f2683833560208501613e0a565b60008060008060008060008060008060006101808c8e0312156142c157600080fd5b6142ca8c614202565b9a506142d98d60208e0161421d565b99506142e760608d01614202565b98506001600160401b0360808d013581101561430257600080fd5b6143128e60808f01358f0161427f565b98508060a08e0135111561432557600080fd5b6143358e60a08f01358f0161427f565b97508060c08e0135111561434857600080fd5b6143588e60c08f01358f0161427f565b965060e08d0135955061436e6101008e01614202565b945061437d6101208e01614202565b935061438c6101408e01613d7a565b9250806101608e013511156143a057600080fd5b506143b28d6101608e01358e0161427f565b90509295989b509295989b9093969950565b6000602082840312156143d657600080fd5b8135610f268161420d565b6060810183356143f081613906565b6001600160a01b03908116835260208501359061440c8261420d565b61ffff82166020850152808516604085015250509392505050565b813561443281613906565b81546001600160a01b031981166001600160a01b03929092169182178355602084013561445e8161420d565b6001600160b01b03199190911690911760a09190911b61ffff60a01b1617905550565b634e487b7160e01b600052601160045260246000fd5b6000816144a6576144a6614481565b506000190190565b6000602082840312156144c057600080fd5b81516001600160401b038111156144d657600080fd5b8201601f810184136144e757600080fd5b80516144f5613e1882613de3565b81815285602083850101111561450a57600080fd5b613abc82602083016020860161386e565b60008282101561452d5761452d614481565b500390565b6000821982111561454557614545614481565b500190565b600081600019048311821515161561456457614564614481565b500290565b60008261458657634e487b7160e01b600052601260045260246000fd5b500490565b600060001982141561459f5761459f614481565b5060010190565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906140d19083018461389a565b60006020828403121561460157600080fd5b8151610f26816137af565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fec407dfe559ca4a63d7cf8439b9fce2965d7a4c8c92eb5d5047f53bb9eec295fd73e05f4c0a27cbf60841afa4a2f8577f5e99db3e3e9c293800d6e6b1f7b8a7abddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efe236d251e7da4ac8a3c275f80aebc9b74cbf356425fa04864da5043511a81219a164736f6c634300080a000a