[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "AdminRole_Caller_Does_Not_Have_Admin_Role", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "LazyMintedCollection_Mint_Count_Must_Be_Greater_Than_Zero", "type": "error" }, { "inputs": [], "name": "MinterRole_Caller_Does_Not_Have_Minter_Or_Admin_Role", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "maxTokenId", "type": "uint256" } ], "name": "NFTLimitedEditionCollection_Exceeds_Max_Token_Id", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "name": "SelfDestructibleCollection_Minted_NFTs_Must_Be_Burned_First", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "StringsLibrary_Required_String_Is_Empty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "supplyLockExpiration", "type": "uint256" } ], "name": "SupplyLock_Action_Disallowed_While_Supply_Is_Locked", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "supplyLockHolder", "type": "address" }, { "internalType": "uint256", "name": "supplyLockExpiration", "type": "uint256" } ], "name": "SupplyLock_Caller_Is_Not_Supply_Lock_Holder", "type": "error" }, { "inputs": [], "name": "SupplyLock_Existing_Lock_Has_Already_Expired", "type": "error" }, { "inputs": [], "name": "SupplyLock_Expiration_Time_In_The_Past", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "maxExpiration", "type": "uint256" } ], "name": "SupplyLock_Expiration_Time_Too_Far_In_The_Future", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentMaxTokenId", "type": "uint256" } ], "name": "TokenLimitedCollection_Max_Token_Id_May_Not_Be_Cleared", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentMaxTokenId", "type": "uint256" } ], "name": "TokenLimitedCollection_Max_Token_Id_May_Not_Increase", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "currentMintedCount", "type": "uint256" } ], "name": "TokenLimitedCollection_Max_Token_Id_Must_Be_Greater_Than_Current_Minted_Count", "type": "error" }, { "inputs": [], "name": "TokenLimitedCollection_Max_Token_Id_Must_Not_Be_Zero", "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": false, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "maxTokenId", "type": "uint256" } ], "name": "MaxTokenIdUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "supplyLock", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "supplyLockExpiration", "type": "uint256" } ], "name": "MinterAcquireSupplyLock", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" } ], "name": "SelfDestruct", "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_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "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": "", "type": "uint256" } ], "name": "getFeeBps", "outputs": [ { "internalType": "uint256[]", "name": "royaltiesInBasisPoints", "type": "uint256[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getFeeRecipients", "outputs": [ { "internalType": "address payable[]", "name": "recipients", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNFTCollectionType", "outputs": [ { "internalType": "string", "name": "collectionType", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getRoyalties", "outputs": [ { "internalType": "address payable[]", "name": "recipients", "type": "address[]" }, { "internalType": "uint256[]", "name": "royaltiesInBasisPoints", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSupplyLock", "outputs": [ { "internalType": "address", "name": "supplyLockHolder", "type": "address" }, { "internalType": "uint256", "name": "supplyLockExpiration", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenCreatorPaymentAddress", "outputs": [ { "internalType": "address payable", "name": "creatorPaymentAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "accountHasRole", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_creator", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "tokenURI_", "type": "string" }, { "internalType": "uint32", "name": "_maxTokenId", "type": "uint32" }, { "internalType": "address", "name": "_approvedMinter", "type": "address" }, { "internalType": "address payable", "name": "_paymentAddress", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "approved", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "approved", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "latestTokenId", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTokenId", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "count", "type": "uint16" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "mintCountTo", "outputs": [ { "internalType": "uint256", "name": "firstTokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "expiration", "type": "uint256" } ], "name": "minterAcquireSupplyLock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfTokensAvailableToMint", "outputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "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": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "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": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "selfDestruct", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "isSupported", "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": "tokenCreator", "outputs": [ { "internalType": "address payable", "name": "creator", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_maxTokenId", "type": "uint32" } ], "name": "updateMaxTokenId", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a060405234801561001057600080fd5b5060408051808201909152601e81527f4e4654204c696d697465642045646974696f6e20436f6c6c656374696f6e0000602082015261004e81610180565b608052507ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b03919068010000000000000000900460ff16806100a6575080546001600160401b03808416911610155b156100c45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617680100000000000000001781556040805160608101909152602d8082526101329190613efc602083013960408051808201909152601181527027232a2634b6b4ba32b222b234ba34b7b760791b60208201526101c7565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050610430565b600080829050601f815111156101b4578260405163305a27a960e01b81526004016101ab9190610260565b60405180910390fd5b80516101bf826102af565b179392505050565b6101cf610210565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806101fb8482610371565b506001810161020a8382610371565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661025e57604051631afcd79f60e31b815260040160405180910390fd5b565b60006020808352835180602085015260005b8181101561028e57858101830151858201604001528201610272565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156102d0576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061030057607f821691505b6020821081036102d057634e487b7160e01b600052602260045260246000fd5b601f82111561036c576000816000526020600020601f850160051c810160208610156103495750805b601f850160051c820191505b8181101561036857828155600101610355565b5050505b505050565b81516001600160401b0381111561038a5761038a6102d6565b61039e8161039884546102ec565b84610320565b602080601f8311600181146103d357600084156103bb5750858301515b600019600386901b1c1916600185901b178555610368565b600085815260208120601f198616915b82811015610402578886015182559484019460019091019084016103e3565b50858210156104205787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613ab161044b60003960006115e60152613ab16000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80638ae3e5f1116101b2578063b9c4d9fb116100f9578063d547741f116100a2578063e985e9c51161007c578063e985e9c51461072b578063ec5f752e14610793578063f2fde38b146107a6578063ff35819b146107b957600080fd5b8063d547741f14610708578063dfea951d1461071b578063e30c39781461072357600080fd5b8063cfbd4885116100d3578063cfbd4885146106bb578063d1151249146106ce578063d5391393146106e157600080fd5b8063b9c4d9fb14610667578063bb3bafd614610687578063c87b56dd146106a857600080fd5b80639b2ef5d71161015b578063a22cb46511610135578063a22cb4651461062e578063aa271e1a14610641578063b88d4fde1461065457600080fd5b80639b2ef5d71461060b5780639cb8a26a1461061e578063a217fddf1461062657600080fd5b806391ba317a1161018c57806391ba317a146105d357806391d14854146105f057806395d89b411461060357600080fd5b80638ae3e5f1146105805780638c0e8349146105a55780638da5cb5b146105cb57600080fd5b80632a55205a1161027657806342842e0e1161021f57806370a08231116101f957806370a082311461055d578063715018a61461057057806379ba50971461057857600080fd5b806342842e0e1461052457806342966c68146105375780636352211e1461054a57600080fd5b806335bb3e161161025057806335bb3e16146104eb57806336568abe146104fe57806340c1a0641461051157600080fd5b80632a55205a146104b25780632d345670146104c55780632f2ff15d146104d857600080fd5b80631ae85954116102d857806324d7806c116102b257806324d7806c1461047957806324ef95e71461048c578063261707fa1461049f57600080fd5b80631ae85954146103f057806323b872dd14610424578063248a9ca31461043757600080fd5b8063095ea7b311610309578063095ea7b3146103a55780630ebd4c7f146103ba57806318160ddd146103da57600080fd5b806301ffc9a71461033057806306fdde0314610358578063081812fc1461036d575b600080fd5b61034361033e366004613133565b6107cc565b60405190151581526020015b60405180910390f35b6103606107dd565b60405161034f91906131b4565b61038061037b3660046131c7565b610893565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161034f565b6103b86103b336600461320d565b6108e8565b005b6103cd6103c83660046131c7565b6108f7565b60405161034f9190613275565b6103e261094e565b60405190815260200161034f565b6103f861095d565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161034f565b6103b8610432366004613288565b6109b1565b6103e26104453660046131c7565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6103436104873660046132c9565b610aa7565b6103b861049a3660046131c7565b610ab3565b6103b86104ad3660046132c9565b610d3e565b6103f86104c03660046132e6565b610d68565b6103b86104d33660046132c9565b610d80565b6103b86104e6366004613308565b610d8b565b6103b86104f93660046132c9565b610dcf565b6103b861050c366004613308565b610dda565b61038061051f3660046131c7565b610e38565b6103b8610532366004613288565b610e42565b6103b86105453660046131c7565b610e5d565b6103806105583660046131c7565b610e69565b6103e261056b3660046132c9565b610e74565b6103b8610f15565b6103b8610f29565b6103e85463ffffffff80821668010000000000000000909204811691909103166103e2565b6103e8546105b69063ffffffff1681565b60405163ffffffff909116815260200161034f565b610380610fa1565b6103e8546105b69068010000000000000000900463ffffffff1681565b6103436105fe366004613308565b610fe3565b61036061108c565b6103b8610619366004613395565b6110dd565b6103b8611348565b6103e2600081565b6103b861063c366004613475565b611358565b61034361064f3660046132c9565b611363565b6103b86106623660046134d7565b61138f565b61067a6106753660046131c7565b6113a6565b60405161034f919061361c565b61069a6106953660046131c7565b611423565b60405161034f92919061362f565b6103606106b63660046131c7565b6114dc565b6103b86106c93660046132c9565b6114e6565b6103e26106dc36600461365d565b611510565b6103e27f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6103b8610716366004613308565b61159b565b6103606115df565b61038061160a565b610343610739366004613692565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b6103806107a13660046131c7565b611633565b6103b86107b43660046132c9565b61163e565b6103b86107c73660046136b0565b6116f5565b60006107d782611786565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061080f906136cb565b80601f016020809104026020016040519081016040528092919081815260200182805461083b906136cb565b80156108885780601f1061085d57610100808354040283529160200191610888565b820191906000526020600020905b81548152906001019060200180831161086b57829003601f168201915b505050505091505090565b600061089e826117dc565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff166107d7565b6108f382823361185a565b5050565b604080516001808252818301909252606091602080830190803683370190505090506103e86bffffffffffffffffffffffff168160008151811061093d5761093d61371e565b602002602001018181525050919050565b6000610958611867565b905090565b6103ea5460009074010000000000000000000000000000000000000000900464ffffffffff164281106109aa576103eb5473ffffffffffffffffffffffffffffffffffffffff1691509091565b5060009091565b73ffffffffffffffffffffffffffffffffffffffff8216610a06576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6000610a1383833361188a565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aa1576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015260248201849052821660448201526064016109fd565b50505050565b60006107d78183610fe3565b610abb61189f565b80600003610bab576103ea5474010000000000000000000000000000000000000000900464ffffffffff16421115610b1f576040517f18e4522200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103eb80547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556103ea80547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff1690556040516000808252907f9267a4d3cfb4335b5ff6a42f4e7ffb5e14f490820b4b16ce4ac50a5aa0ea286c906020015b60405180910390a250565b610bb481421190565b15610beb576040517f4bda5b0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6303c267004201811115610c33576040517f864d8247000000000000000000000000000000000000000000000000000000008152426303c267000160048201526024016109fd565b6103ea5474010000000000000000000000000000000000000000900464ffffffffff164211158015610c8657506103ea5474010000000000000000000000000000000000000000900464ffffffffff1681115b15610c9357610c936118a7565b6103eb8054337fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556103ea80547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000064ffffffffff8516021790556040518281527f9267a4d3cfb4335b5ff6a42f4e7ffb5e14f490820b4b16ce4ac50a5aa0ea286c90602001610ba0565b50565b610d3b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682610d8b565b600080610d7484611633565b94600a90930493505050565b610d3b60008261159b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610dc5816118fb565b610aa18383611905565b610d3b600082610d8b565b73ffffffffffffffffffffffffffffffffffffffff81163314610e29576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e338282611a08565b505050565b60006107d7610fa1565b610e338383836040518060200160405280600081525061138f565b6108f36000823361188a565b60006107d7826117dc565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316610ee7576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016109fd565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b610f1d611ac1565b610f276000611b19565b565b3380610f3361160a565b73ffffffffffffffffffffffffffffffffffffffff1614610f98576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016109fd565b610d3b81611b19565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b6000821580156110255750610ff6610fa1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611032575060016107d7565b60008381527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff165b9392505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161080f906136cb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156111285750825b905060008267ffffffffffffffff1660011480156111455750303b155b905081158015611153575080155b1561118a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156111eb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61126f8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b6992505050565b6112788f611bac565b61128188611c04565b61128b8a8a611c88565b6112958f88611cd5565b6103ea80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881617905583156113375784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050505050565b611350611d03565b610f27611d44565b6108f3338383611dd4565b60006107d77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a683610fe3565b61139a8484846109b1565b610aa184848484611ef5565b604080516001808252818301909252606091602080830190803683370190505090506113d182611633565b816000815181106113e4576113e461371e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050919050565b6040805160018082528183019092526060918291906020808301908036833701905050915061145183611633565b826000815181106114645761146461371e565b73ffffffffffffffffffffffffffffffffffffffff929092166020928302919091018201526040805160018082528183019092529182810190803683370190505090506103e86bffffffffffffffffffffffff16816000815181106114cb576114cb61371e565b602002602001018181525050915091565b60606107d76120ec565b610d3b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261159b565b6103e85460009063ffffffff68010000000000000000820481169161153b9161ffff8716911661374d565b63ffffffff161115611591576103e8546040517f718fae190000000000000000000000000000000000000000000000000000000081526801000000000000000090910463ffffffff1660048201526024016109fd565b61108583836120f6565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546115d5816118fb565b610aa18383611a08565b60606109587f00000000000000000000000000000000000000000000000000000000000000006121ba565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610fc6565b60006107d7826121f9565b611646611ac1565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556116af610fa1565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6116fd611d03565b6103ea5474010000000000000000000000000000000000000000900464ffffffffff16421161177d576103ea546040517f2f2343040000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910464ffffffffff1660048201526024016109fd565b610d3b81612225565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5bf6f7b80000000000000000000000000000000000000000000000000000000014806107d757506107d7826123ca565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff16806107d7576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016109fd565b610e338383836001612504565b60006109586103e85463ffffffff64010000000082048116918116919091031690565b6000611897848484612710565b949350505050565b610f27612740565b336118b181611363565b1580156118c457506118c281610aa7565b155b15610d3b576040517f15301d4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d3b8133612808565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006119328484610fe3565b6119f75760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556119933390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506107d7565b60009150506107d7565b5092915050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800611a358484610fe3565b156119f75760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506107d7565b33611aca610fa1565b73ffffffffffffffffffffffffffffffffffffffff1614610f27576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016109fd565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556108f382612867565b611b716128fd565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930080611b9d84826137e1565b5060018101610aa183826137e1565b611bb46128fd565b73ffffffffffffffffffffffffffffffffffffffff8116610f98576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016109fd565b8063ffffffff16600003611c44576040517ff685885500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff909216919091179055565b611cc782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061296492505050565b6103e9610e338284836138fb565b611cde8261299f565b73ffffffffffffffffffffffffffffffffffffffff8116156108f3576108f3816129aa565b611d0e600033610fe3565b610f27576040517ff6899cee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d4c61094e565b15611d8e57611d5961094e565b6040517f707fdc250000000000000000000000000000000000000000000000000000000081526004016109fd91815260200190565b604051339081907fd3747e9bfbfe48316cef75f276e53ab68e800a3fa1a0d4540245a64b85c2598890600090a28073ffffffffffffffffffffffffffffffffffffffff16ff5b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316611e5a576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016109fd565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83163b15610aa1576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290611f6a903390889087908790600401613a15565b6020604051808303816000875af1925050508015611fc3575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611fc091810190613a5e565b60015b612052573d808015611ff1576040519150601f19603f3d011682016040523d82523d6000602084013e611ff6565b606091505b50805160000361204a576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016109fd565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a0200000000000000000000000000000000000000000000000000000000146120e5576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016109fd565b5050505050565b60606109586129d4565b600061210061189f565b8261ffff1660000361213e576040517fce15a28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506103e85463ffffffff90811660018101909116906121629061ffff85169061374d565b6103e880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169182179055815b8181116121b2576121aa8482612a67565b600101612199565b505092915050565b606060006121c783612a81565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6103ea5473ffffffffffffffffffffffffffffffffffffffff1680612220576107d7610fa1565b919050565b8063ffffffff1660000361227d576103e8546040517f89a313660000000000000000000000000000000000000000000000000000000081526801000000000000000090910463ffffffff1660048201526024016109fd565b6103e85468010000000000000000900463ffffffff16158015906122ba57506103e85463ffffffff68010000000000000000909104811690821610155b15612309576103e8546040517f07f4133a0000000000000000000000000000000000000000000000000000000081526801000000000000000090910463ffffffff1660048201526024016109fd565b6103e85463ffffffff8083169116111561235c576103e8546040517fbcf4db2700000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024016109fd565b6103e880547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff166801000000000000000063ffffffff8416908102919091179091556040517f5633fd1915094f39ec7d395ea541662e957f3fffdcaf492b661373bf00da98fd90600090a250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061245d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f40c1a06400000000000000000000000000000000000000000000000000000000145b806124a957507fffffffff0000000000000000000000000000000000000000000000000000000082167fbb3bafd600000000000000000000000000000000000000000000000000000000145b806124f557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb779958400000000000000000000000000000000000000000000000000000000145b806107d757506107d782612ac2565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180612546575073ffffffffffffffffffffffffffffffffffffffff831615155b156126ba576000612556856117dc565b905073ffffffffffffffffffffffffffffffffffffffff8416158015906125a957508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612607575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15612656576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016109fd565b82156126b857848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600073ffffffffffffffffffffffffffffffffffffffff841661273557612735611d03565b611897848484612b18565b6103ea5474010000000000000000000000000000000000000000900464ffffffffff164211612800576103eb5473ffffffffffffffffffffffffffffffffffffffff163314610f27576103eb546103ea546040517f5e02273e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015274010000000000000000000000000000000000000000900464ffffffffff1660248201526044016109fd565b610f276118a7565b6128128282610fe3565b6108f3576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016109fd565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610f27576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600003610d3b576040517ff73c5b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108f3600082611905565b6108f37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682611905565b60606103e980546129e4906136cb565b80601f0160208091040260200160405190810160405280929190818152602001828054612a10906136cb565b8015612a5d5780601f10612a3257610100808354040283529160200191612a5d565b820191906000526020600020905b815481529060010190602001808311612a4057829003601f168201915b5050505050905090565b6108f3828260405180602001604052806000815250612b8d565b600060ff8216601f8111156107d7576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f490649060000000000000000000000000000000000000000000000000000000014806107d757506107d782612ba4565b600073ffffffffffffffffffffffffffffffffffffffff8416612b8257612b3d611ac1565b6103e88054600163ffffffff64010000000080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9091161790555b611897848484612c46565b612b978383612e0b565b610e336000848484611ef5565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480612c3757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806107d757506107d782612ebc565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff90811690841615612cc157612cc1818587612f53565b73ffffffffffffffffffffffffffffffffffffffff811615612d3957612ceb600086600080612504565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff861615612d845773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e5b576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016109fd565b6000612e698383600061188a565b905073ffffffffffffffffffffffffffffffffffffffff811615610e33576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016109fd565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107d757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107d7565b612f5e838383613003565b610e335773ffffffffffffffffffffffffffffffffffffffff8316612fb2576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016109fd565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044016109fd565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061189757508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806130b0575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b8061189757505060009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610d3b57600080fd5b60006020828403121561314557600080fd5b813561108581613105565b6000815180845260005b818110156131765760208185018101518683018201520161315a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006110856020830184613150565b6000602082840312156131d957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610d3b57600080fd5b8035612220816131e0565b6000806040838503121561322057600080fd5b823561322b816131e0565b946020939093013593505050565b60008151808452602080850194506020840160005b8381101561326a5781518752958201959082019060010161324e565b509495945050505050565b6020815260006110856020830184613239565b60008060006060848603121561329d57600080fd5b83356132a8816131e0565b925060208401356132b8816131e0565b929592945050506040919091013590565b6000602082840312156132db57600080fd5b8135611085816131e0565b600080604083850312156132f957600080fd5b50508035926020909101359150565b6000806040838503121561331b57600080fd5b82359150602083013561332d816131e0565b809150509250929050565b60008083601f84011261334a57600080fd5b50813567ffffffffffffffff81111561336257600080fd5b60208301915083602082850101111561337a57600080fd5b9250929050565b803563ffffffff8116811461222057600080fd5b60008060008060008060008060008060e08b8d0312156133b457600080fd5b8a356133bf816131e0565b995060208b013567ffffffffffffffff808211156133dc57600080fd5b6133e88e838f01613338565b909b50995060408d013591508082111561340157600080fd5b61340d8e838f01613338565b909950975060608d013591508082111561342657600080fd5b506134338d828e01613338565b9096509450613446905060808c01613381565b925060a08b0135613456816131e0565b915061346460c08c01613202565b90509295989b9194979a5092959850565b6000806040838503121561348857600080fd5b8235613493816131e0565b91506020830135801515811461332d57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156134ed57600080fd5b84356134f8816131e0565b93506020850135613508816131e0565b925060408501359150606085013567ffffffffffffffff8082111561352c57600080fd5b818701915087601f83011261354057600080fd5b813581811115613552576135526134a8565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613598576135986134a8565b816040528281528a60208487010111156135b157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008151808452602080850194506020840160005b8381101561326a57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016135ea565b60208152600061108560208301846135d5565b60408152600061364260408301856135d5565b82810360208401526136548185613239565b95945050505050565b6000806040838503121561367057600080fd5b823561ffff8116811461368257600080fd5b9150602083013561332d816131e0565b600080604083850312156136a557600080fd5b8235613682816131e0565b6000602082840312156136c257600080fd5b61108582613381565b600181811c908216806136df57607f821691505b602082108103613718577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b63ffffffff818116838216019080821115611a01577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b601f821115610e33576000816000526020600020601f850160051c810160208610156137ba5750805b601f850160051c820191505b818110156137d9578281556001016137c6565b505050505050565b815167ffffffffffffffff8111156137fb576137fb6134a8565b61380f8161380984546136cb565b84613791565b602080601f831160018114613862576000841561382c5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556137d9565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156138af57888601518255948401946001909101908401613890565b50858210156138eb57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff831115613913576139136134a8565b6139278361392183546136cb565b83613791565b6000601f84116001811461397957600085156139435750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556120e5565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156139c857868501358255602094850194600190920191016139a8565b5086821015613a03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152613a546080830184613150565b9695505050505050565b600060208284031215613a7057600080fd5b81516110858161310556fea264697066735822122011884e6a875511a25090aa8c42617e795d4fab53eea4b2964ae49390cff9956664736f6c634300081900334e4654204c696d697465642045646974696f6e20436f6c6c656374696f6e20496d706c656d656e746174696f6e