[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "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": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "operator", "type": "bytes32" }, { "indexed": false, "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "OperatorAllowed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "operator", "type": "bytes32" }, { "indexed": false, "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "OperatorBlocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "RolesUpdated", "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": "ADMIN_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MANAGER_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "uint64[]", "name": "quantities", "type": "uint64[]" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "batchAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "grantRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAllRoles", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAnyRole", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "treasury_", "type": "address" }, { "internalType": "address", "name": "royalty_", "type": "address" }, { "internalType": "uint96", "name": "royaltyFee_", "type": "uint96" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "operator", "type": "bytes32" } ], "name": "isAllowedOperator", "outputs": [ { "internalType": "bool", "name": "", "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": "isOperator", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "operator", "type": "bytes32" } ], "name": "isBlockedOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operatorRegistry", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "ordinalsFromRoles", "outputs": [ { "internalType": "uint8[]", "name": "ordinals", "type": "uint8[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "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": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ownershipHandoverValidFor", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "presaleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "renounceRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "revokeRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8[]", "name": "ordinals", "type": "uint8[]" } ], "name": "rolesFromOrdinals", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "rolesOf", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": "saleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "operator", "type": "bytes32" }, { "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "setAllowedOperator", "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": "string", "name": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "operator", "type": "bytes32" }, { "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "setBlockedOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "newRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "registry", "type": "address" } ], "name": "setOperatorRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTreasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerMint", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerWallet", "type": "uint256" }, { "internalType": "uint256", "name": "newPrice", "type": "uint256" }, { "internalType": "bool", "name": "presale", "type": "bool" } ], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopSale", "outputs": [], "stateMutability": "nonpayable", "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": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRevenue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unsetOperatorRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405260a3805461ffff191690553480156200001c57600080fd5b50620000276200002d565b620000ef565b600054610100900460ff16156200009a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000ed576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6149b080620000ff6000396000f3fe6080604052600436106103ef5760003560e01c806370a0823111610208578063b88d4fde11610118578063e36b0b37116100ab578063f0f442601161007a578063f0f4426014610be3578063f2fde38b14610c03578063fb9d09c814610c23578063fd51fae814610c36578063fee81cf414610c4957600080fd5b8063e36b0b3714610b79578063e985e9c514610b8e578063ec87621c14610bae578063f04e283e14610bc357600080fd5b8063c23dc68f116100e7578063c23dc68f14610aee578063c87b56dd14610b1b578063d53ab50114610b3b578063d7533f0214610b5b57600080fd5b8063b88d4fde14610a69578063b9358c8114610a89578063bf2d9e0b14610ab9578063bfa9aadc14610ace57600080fd5b80638da5cb5b1161019b5780639b93bdd11161016a5780639b93bdd1146109d45780639d28fb86146109f4578063a035b1fe14610a14578063a22cb46514610a29578063afe7354714610a4957600080fd5b80638da5cb5b1461097357806393d756aa1461098c57806395d89b411461099f57806399a2557a146109b457600080fd5b806375b238fc116101d757806375b238fc146108f1578063789e3a55146109065780637cb64759146109265780638462151c1461094657600080fd5b806370a082311461085f578063715018a61461087f57806371dbf0a7146108945780637359e41f146108c457600080fd5b806342842e0e1161030357806354d1f13d116102965780635bbb2177116102655780635bbb2177146107c25780635f48f393146107ef57806361d027b3146108045780636352211e1461082257806368428a1b1461084257600080fd5b806354d1f13d1461074f57806355f804b31461076457806358c2225b146107845780635944c753146107a257600080fd5b8063507e094f116102d2578063507e094f146106d6578063514e62fc146106eb578063521242c21461072257806353135ca01461073757600080fd5b806342842e0e1461066157806342966c6814610681578063453c2310146106a15780634a4ee7b1146106b657600080fd5b80631c10893f11610386578063282c51f311610355578063282c51f3146105b45780632a55205a146105c95780632de9480714610608578063386bacdc146106395780633ccfd60b1461064c57600080fd5b80631c10893f146105285780631cd64df41461054857806323b872dd1461057f578063256929621461059f57600080fd5b8063095ea7b3116103c2578063095ea7b3146104a557806313a661ed146104c557806318160ddd146104f3578063183a4f6e1461050857600080fd5b806301ffc9a7146103f457806304634d8d1461042957806306fdde031461044b578063081812fc1461046d575b600080fd5b34801561040057600080fd5b5061041461040f366004613bbc565b610c7a565b60405190151581526020015b60405180910390f35b34801561043557600080fd5b50610449610444366004613c0c565b610ca9565b005b34801561045757600080fd5b50610460610cee565b6040516104209190613c97565b34801561047957600080fd5b5061048d610488366004613caa565b610d89565b6040516001600160a01b039091168152602001610420565b3480156104b157600080fd5b506104496104c0366004613cc3565b610dd6565b3480156104d157600080fd5b506104e56104e0366004613d33565b610e9f565b604051908152602001610420565b3480156104ff57600080fd5b506104e5610ed2565b34801561051457600080fd5b50610449610523366004613caa565b610ef2565b34801561053457600080fd5b50610449610543366004613cc3565b610eff565b34801561055457600080fd5b50610414610563366004613cc3565b60609190911b638b78c6d8176000908152602090205481161490565b34801561058b57600080fd5b5061044961059a366004613deb565b610f28565b3480156105ab57600080fd5b5061044961110d565b3480156105c057600080fd5b506104e5600481565b3480156105d557600080fd5b506105e96105e4366004613e27565b61115d565b604080516001600160a01b039093168352602083019190915201610420565b34801561061457600080fd5b506104e5610623366004613e49565b60601b638b78c6d8176000908152602090205490565b610449610647366004613ebf565b61120b565b34801561065857600080fd5b50610449611464565b34801561066d57600080fd5b5061044961067c366004613deb565b6115d5565b34801561068d57600080fd5b5061044961069c366004613caa565b6115f0565b3480156106ad57600080fd5b5060a1546104e5565b3480156106c257600080fd5b506104496106d1366004613cc3565b61165e565b3480156106e257600080fd5b5060a0546104e5565b3480156106f757600080fd5b50610414610706366004613cc3565b60609190911b638b78c6d8176000908152602090205416151590565b34801561072e57600080fd5b50610449611683565b34801561074357600080fd5b5060a35460ff16610414565b34801561075b57600080fd5b506104496116cc565b34801561077057600080fd5b5061044961077f366004613f8f565b611709565b34801561079057600080fd5b506098546001600160a01b031661048d565b3480156107ae57600080fd5b506104496107bd366004613fc3565b61174b565b3480156107ce57600080fd5b506107e26107dd366004613fff565b61178c565b604051610420919061407c565b3480156107fb57600080fd5b50609f546104e5565b34801561081057600080fd5b506099546001600160a01b031661048d565b34801561082e57600080fd5b5061048d61083d366004613caa565b611857565b34801561084e57600080fd5b5060a354610100900460ff16610414565b34801561086b57600080fd5b506104e561087a366004613e49565b611862565b34801561088b57600080fd5b506104496118ca565b3480156108a057600080fd5b506104146108af366004613caa565b6000908152609b602052604090205460ff1690565b3480156108d057600080fd5b506108e46108df366004613caa565b611906565b60405161042091906140be565b3480156108fd57600080fd5b506104e5600181565b34801561091257600080fd5b50610449610921366004614109565b61194e565b34801561093257600080fd5b50610449610941366004613caa565b6119b1565b34801561095257600080fd5b50610966610961366004613e49565b6119ed565b6040516104209190614152565b34801561097f57600080fd5b50638b78c6d8195461048d565b61044961099a36600461418a565b611af5565b3480156109ab57600080fd5b50610460611c67565b3480156109c057600080fd5b506109666109cf3660046141b4565b611c7f565b3480156109e057600080fd5b506104496109ef3660046141e7565b611e05565b348015610a0057600080fd5b50610449610a0f366004613e49565b611e94565b348015610a2057600080fd5b5060a2546104e5565b348015610a3557600080fd5b50610449610a4436600461420a565b611f3e565b348015610a5557600080fd5b50610449610a643660046141e7565b611ffe565b348015610a7557600080fd5b50610449610a84366004614234565b612084565b348015610a9557600080fd5b50610414610aa4366004613caa565b6000908152609c602052604090205460ff1690565b348015610ac557600080fd5b50609a546104e5565b348015610ada57600080fd5b50610449610ae93660046142af565b6120c8565b348015610afa57600080fd5b50610b0e610b09366004613caa565b6122fc565b6040516104209190614353565b348015610b2757600080fd5b50610460610b36366004613caa565b612389565b348015610b4757600080fd5b50610449610b56366004614361565b61240c565b348015610b6757600080fd5b506040516202a3008152602001610420565b348015610b8557600080fd5b506104496124f8565b348015610b9a57600080fd5b50610414610ba93660046143c0565b61253c565b348015610bba57600080fd5b506104e5600281565b348015610bcf57600080fd5b50610449610bde366004613e49565b612610565b348015610bef57600080fd5b50610449610bfe366004613e49565b612680565b348015610c0f57600080fd5b50610449610c1e366004613e49565b6126d9565b610449610c313660046143ea565b61272e565b610449610c44366004614405565b6128a0565b348015610c5557600080fd5b506104e5610c64366004613e49565b60601b63389a75e1176000908152602090205490565b6000610c8582612add565b80610c945750610c9482612b2b565b80610ca35750610ca382612add565b92915050565b6001638b78c6d83360601b176000528060206000205416610cdf57638b78c6d819543314610cdf576382b429006000526004601cfd5b610ce98383612b50565b505050565b6060610cf8612c0a565b6002018054610d0690614473565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3290614473565b8015610d7f5780601f10610d5457610100808354040283529160200191610d7f565b820191906000526020600020905b815481529060010190602001808311610d6257829003601f168201915b5050505050905090565b6000610d9482612c2e565b610db1576040516333d1c03960e21b815260040160405180910390fd5b610db9612c0a565b60009283526006016020525060409020546001600160a01b031690565b60985482906001600160a01b031615610e9557609854604051632aeb048b60e01b81526001600160a01b0383811660048301526000921690632aeb048b90602401602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5891906144ad565b6000818152609c602052604090205490915060ff1615610e935760405162461bcd60e51b8152600401610e8a906144c6565b60405180910390fd5b505b610ce98383612c77565b600060208201825160051b81015b808214610ecb57600160ff8351161b83179250602082019150610ead565b5050919050565b60006001610ede612c0a565b60010154610eea612c0a565b540303919050565b610efc3382612d25565b50565b638b78c6d819543314610f1a576382b429006000526004601cfd5b610f248282612d76565b5050565b6000610f3382612dc2565b9050836001600160a01b0316816001600160a01b031614610f665760405162a1148160e81b815260040160405180910390fd5b600080610f7284612e56565b91509150610f978187610f823390565b6001600160a01b039081169116811491141790565b610fc257610fa5863361253c565b610fc257604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610fe957604051633a954ecd60e21b815260040160405180910390fd5b8015610ff457600082555b610ffc612c0a565b6001600160a01b0387166000908152600591909101602052604090208054600019019055611028612c0a565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b1761105f612c0a565b60008681526004919091016020526040812091909155600160e11b841690036110d5576001840161108e612c0a565b6000828152600491909101602052604081205490036110d3576110af612c0a565b5481146110d357836110bf612c0a565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b031660008051602061493b83398151915260405160405180910390a45b505050505050565b60006202a3006001600160401b03164201905063389a75e13360601b1760005280602060002055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60008281526066602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916111d25750604080518082019091526065546001600160a01b0381168252600160a01b90046001600160601b031660208201525b6020810151600090612710906111f1906001600160601b031687614528565b6111fb9190614547565b91519350909150505b9250929050565b836000816001600160401b0316116112355760405162461bcd60e51b8152600401610e8a90614569565b6000609f5411611246576001611267565b609f54611264826001600160401b031661125e610ed2565b90612e7e565b11155b6112835760405162461bcd60e51b8152600401610e8a90614590565b60a054816001600160401b031611156112ae5760405162461bcd60e51b8152600401610e8a906145bd565b6000856112ba33612e8a565b6112c491906145ec565b60a3546001600160401b0391909116915060ff166113195760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b6044820152606401610e8a565b609d5460000361135d5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b6044820152606401610e8a565b60a15481111561137f5760405162461bcd60e51b8152600401610e8a90614617565b8481111561139f5760405162461bcd60e51b8152600401610e8a90614617565b61141c84848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050609d546040516bffffffffffffffffffffffff193360601b166020820152603481018b905290925060540190505b60405160208183030381529060405280519060200120612ebd565b61145a5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b6044820152606401610e8a565b6111058633612ed3565b6001638b78c6d83360601b17600052806020600020541661149a57638b78c6d81954331461149a576382b429006000526004601cfd5b600047116114d65760405162461bcd60e51b8152602060048201526009602482015268302062616c616e636560b81b6044820152606401610e8a565b609754604051639af608c960e01b81523060048201526001600160a01b039091169047906000908390639af608c990602401602060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154991906144ad565b60405163b9bff4bb60e01b8152600481018290529091506001600160a01b0384169063b9bff4bb90602401600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b505050506115b08382612fc8565b6099546115cf906001600160a01b03166115ca84846130e1565b612fc8565b50505050565b610ce983838360405180602001604052806000815250612084565b6004638b78c6d83360601b176000528060206000205416611619576382b429006000526004601cfd5b333b6116555760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b6044820152606401610e8a565b610f24826130ed565b638b78c6d819543314611679576382b429006000526004601cfd5b610f248282612d25565b6001638b78c6d83360601b1760005280602060002054166116b957638b78c6d8195433146116b9576382b429006000526004601cfd5b50609880546001600160a01b0319169055565b63389a75e13360601b176000526000602060002055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6002638b78c6d83360601b17600052806020600020541661173f57638b78c6d81954331461173f576382b429006000526004601cfd5b609e610ce98382614694565b6001638b78c6d83360601b17600052806020600020541661178157638b78c6d819543314611781576382b429006000526004601cfd5b6115cf8484846130f8565b6060816000816001600160401b038111156117a9576117a9613ced565b6040519080825280602002602001820160405280156117fb57816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816117c75790505b50905060005b82811461184e5761182986868381811061181d5761181d614753565b905060200201356122fc565b82828151811061183b5761183b614753565b6020908102919091010152600101611801565b50949350505050565b6000610ca382612dc2565b60006001600160a01b03821661188b576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b0361189b612c0a565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b638b78c6d8195433146118e5576382b429006000526004601cfd5b60003360008051602061491b833981519152600080a36000638b78c6d81955565b606060206040510160005b8082526001841660051b820191508360011c9350831561193357600101611911565b5060405191508060405260208201810360051c825250919050565b6002638b78c6d83360601b17600052806020600020541661198457638b78c6d819543314611984576382b429006000526004601cfd5b5060a3805491151561ffff1990921691909117610100179055609f9390935560a09190915560a15560a255565b6002638b78c6d83360601b1760005280602060002054166119e757638b78c6d8195433146119e7576382b429006000526004601cfd5b50609d55565b606060008060006119fd85611862565b90506000816001600160401b03811115611a1957611a19613ced565b604051908082528060200260200182016040528015611a42578160200160208202803683370190505b509050611a6f60408051608081018252600080825260208201819052918101829052606081019190915290565b60015b838614611ae957611a82816131c3565b91508160400151611ae15781516001600160a01b031615611aa257815194505b876001600160a01b0316856001600160a01b031603611ae15780838780600101985081518110611ad457611ad4614753565b6020026020010181815250505b600101611a72565b50909695505050505050565b806000816001600160401b031611611b1f5760405162461bcd60e51b8152600401610e8a90614569565b6000609f5411611b30576001611b4b565b609f54611b48826001600160401b031661125e610ed2565b11155b611b675760405162461bcd60e51b8152600401610e8a90614590565b60a054816001600160401b03161115611b925760405162461bcd60e51b8152600401610e8a906145bd565b60a35460ff1615611bd65760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b6044820152606401610e8a565b60a354610100900460ff16611c1f5760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b6044820152606401610e8a565b60a15482611c2c85612e8a565b611c3691906145ec565b6001600160401b03161115611c5d5760405162461bcd60e51b8152600401610e8a90614617565b610ce98284612ed3565b6060611c71612c0a565b6003018054610d0690614473565b6060818310611ca157604051631960ccad60e11b815260040160405180910390fd5b600080611cac61320a565b90506001851015611cbc57600194505b80841115611cc8578093505b6000611cd387611862565b905084861015611cf25785850381811015611cec578091505b50611cf6565b5060005b6000816001600160401b03811115611d1057611d10613ced565b604051908082528060200260200182016040528015611d39578160200160208202803683370190505b50905081600003611d4f579350611dfe92505050565b6000611d5a886122fc565b905060008160400151611d6b575080515b885b888114158015611d7d5750848714155b15611df257611d8b816131c3565b92508260400151611dea5782516001600160a01b031615611dab57825191505b8a6001600160a01b0316826001600160a01b031603611dea5780848880600101995081518110611ddd57611ddd614753565b6020026020010181815250505b600101611d6d565b50505092835250909150505b9392505050565b6002638b78c6d83360601b176000528060206000205416611e3b57638b78c6d819543314611e3b576382b429006000526004601cfd5b6000838152609c6020908152604091829020805460ff1916851515908117909155915191825284917ffd502da418dbb99d2724cacf064b43af780fe7b6607b623466711e8a99dedc3991015b60405180910390a2505050565b6001638b78c6d83360601b176000528060206000205416611eca57638b78c6d819543314611eca576382b429006000526004601cfd5b611edb82632aeb048b60e01b61321a565b611f1b5760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420496e7465726661636560781b6044820152606401610e8a565b50609880546001600160a01b0319166001600160a01b0392909216919091179055565b60985482906001600160a01b031615611ff457609854604051632aeb048b60e01b81526001600160a01b0383811660048301526000921690632aeb048b90602401602060405180830381865afa158015611f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc091906144ad565b6000818152609c602052604090205490915060ff1615611ff25760405162461bcd60e51b8152600401610e8a906144c6565b505b610ce98383613236565b6002638b78c6d83360601b17600052806020600020541661203457638b78c6d819543314612034576382b429006000526004601cfd5b6000838152609b6020908152604091829020805460ff1916851515908117909155915191825284917f50e00cc379ab7d213a199e50fb1aff65f74b67b5131bc6ebb6516f47b2542e659101611e87565b61208f848484610f28565b6001600160a01b0383163b156115cf576120ab848484846132dc565b6115cf576040516368d2bf6b60e11b815260040160405180910390fd5b60008051602061495b83398151915254610100900460ff166120fd5760008051602061495b8339815191525460ff1615612101565b303b155b6121735760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a65640000000000000000006064820152608401610e8a565b60008051602061495b83398151915254610100900460ff161580156121af5760008051602061495b833981519152805461ffff19166101011790555b600054610100900460ff16158080156121cf5750600054600160ff909116105b806121e95750303b1580156121e9575060005460ff166001145b61224c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e8a565b6000805460ff19166001179055801561226f576000805461ff0019166101001790555b61227987876133c8565b612281613406565b61228d88868686613444565b80156122d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5080156122f35760008051602061495b833981519152805461ff00191690555b50505050505050565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600183108061235a575061235661320a565b8310155b156123655792915050565b61236e836131c3565b90508060400151156123805792915050565b611dfe836134af565b606061239482612c2e565b6123b157604051630a14c4b560e41b815260040160405180910390fd5b60006123bb6134e4565b905080516000036123db5760405180602001604052806000815250611dfe565b806123e5846134f3565b6040516020016123f6929190614769565b6040516020818303038152906040529392505050565b6002638b78c6d83360601b17600052806020600020541661244257638b78c6d819543314612442576382b429006000526004601cfd5b818481146124865760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420417267756d656e747360781b6044820152606401610e8a565b60005b818110156122f3576124f08585838181106124a6576124a6614753565b90506020020160208101906124bb9190613e49565b8888848181106124cd576124cd614753565b90506020020160208101906124e291906143ea565b6001600160401b031661352b565b600101612489565b6002638b78c6d83360601b17600052806020600020541661252e57638b78c6d81954331461252e576382b429006000526004601cfd5b5060a3805461ffff19169055565b6098546000906001600160a01b03161561260657609854604051632aeb048b60e01b81526001600160a01b0384811660048301526000921690632aeb048b90602401602060405180830381865afa15801561259b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bf91906144ad565b6000818152609b602052604090205490915060ff16156125e3576001915050610ca3565b6000818152609c602052604090205460ff1615612604576000915050610ca3565b505b611dfe8383613545565b638b78c6d81954331461262b576382b429006000526004601cfd5b8060601b60601c905063389a75e18160601b176000526020600020805442111561265d57636f5e88186000526004601cfd5b6000815550803360008051602061491b833981519152600080a3638b78c6d81955565b6001638b78c6d83360601b1760005280602060002054166126b657638b78c6d8195433146126b6576382b429006000526004601cfd5b50609980546001600160a01b0319166001600160a01b0392909216919091179055565b638b78c6d8195433146126f4576382b429006000526004601cfd5b6001600160a01b03168061271057637448fbae6000526004601cfd5b803360008051602061491b833981519152600080a3638b78c6d81955565b806000816001600160401b0316116127585760405162461bcd60e51b8152600401610e8a90614569565b6000609f5411612769576001612784565b609f54612781826001600160401b031661125e610ed2565b11155b6127a05760405162461bcd60e51b8152600401610e8a90614590565b60a054816001600160401b031611156127cb5760405162461bcd60e51b8152600401610e8a906145bd565b60a35460ff161561280f5760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b6044820152606401610e8a565b60a354610100900460ff166128585760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b6044820152606401610e8a565b60a1548261286533612e8a565b61286f91906145ec565b6001600160401b031611156128965760405162461bcd60e51b8152600401610e8a90614617565b610f248233612ed3565b836000816001600160401b0316116128ca5760405162461bcd60e51b8152600401610e8a90614569565b6000609f54116128db5760016128f6565b609f546128f3826001600160401b031661125e610ed2565b11155b6129125760405162461bcd60e51b8152600401610e8a90614590565b60a054816001600160401b0316111561293d5760405162461bcd60e51b8152600401610e8a906145bd565b60008561294988612e8a565b61295391906145ec565b60a3546001600160401b0391909116915060ff166129a85760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b6044820152606401610e8a565b609d546000036129ec5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b6044820152606401610e8a565b60a154811115612a0e5760405162461bcd60e51b8152600401610e8a90614617565b84811115612a2e5760405162461bcd60e51b8152600401610e8a90614617565b612a9584848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050609d546040516bffffffffffffffffffffffff1960608e901b166020820152603481018b90529092506054019050611401565b612ad35760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b6044820152606401610e8a565b6122f38688612ed3565b60006301ffc9a760e01b6001600160e01b031983161480612b0e57506380ac58cd60e01b6001600160e01b03198316145b80610ca35750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b03198216632fea6ab760e21b1480610ca35750610ca382613582565b6127106001600160601b0382161115612b7b5760405162461bcd60e51b8152600401610e8a9061478f565b6001600160a01b038216612bd15760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610e8a565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217606555565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b600081600111158015612c485750612c44612c0a565b5482105b8015610ca35750600160e01b612c5c612c0a565b60008481526004919091016020526040902054161592915050565b6000612c8282611857565b9050336001600160a01b03821614612cbb57612c9e813361253c565b612cbb576040516367d9dca160e11b815260040160405180910390fd5b82612cc4612c0a565b6000848152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551849286811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a4505050565b638b78c6d88260601b176000526020600020805482811681189050808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b638b78c6d88260601b17600052602060002081815417808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b60008180600111612e3d57612dd5612c0a565b54811015612e3d576000612de7612c0a565b600083815260049190910160205260408120549150600160e01b82169003612e3b575b80600003611dfe57612e1a612c0a565b60001990920160008181526004939093016020526040909220549050612e0a565b505b604051636f96cda160e11b815260040160405180910390fd5b6000806000612e63612c0a565b60009485526006016020525050604090912080549092909150565b6000611dfe82846147d9565b600060c0612e96612c0a565b6001600160a01b03909316600090815260059390930160205260409092205490911c919050565b600082612eca85846135b7565b14949350505050565b60a2543490612eeb906001600160401b038516613604565b1115612f2b5760405162461bcd60e51b815260206004820152600f60248201526e15985b1d59481a5b98dbdc9c9958dd608a1b6044820152606401610e8a565b609a54612f389034612e7e565b609a55612f588183612f4982612e8a565b612f5391906145ec565b613610565b60975460405163107e9cf160e01b81523460048201526001600160a01b039091169063107e9cf190602401600060405180830381600087803b158015612f9d57600080fd5b505af1158015612fb1573d6000803e3d6000fd5b50505050610f2481836001600160401b0316613679565b804710156130185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e8a565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613065576040519150601f19603f3d011682016040523d82523d6000602084013e61306a565b606091505b5050905080610ce95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610e8a565b6000611dfe82846147f1565b610efc816000613790565b6127106001600160601b03821611156131235760405162461bcd60e51b8152600401610e8a9061478f565b6001600160a01b0382166131795760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610e8a565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752606690529190942093519051909116600160a01b029116179055565b604080516080810182526000808252602082018190529181018290526060810191909152610ca36131f2612c0a565b600084815260049190910160205260409020546138ff565b6000613214612c0a565b54919050565b600061322583613946565b8015611dfe5750611dfe8383613979565b336001600160a01b0383160361325f5760405163b06307db60e01b815260040160405180910390fd5b80613268612c0a565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290613311903390899088908890600401614808565b6020604051808303816000875af192505050801561334c575060408051601f3d908101601f1916820190925261334991810190614845565b60015b6133aa573d80801561337a576040519150601f19603f3d011682016040523d82523d6000602084013e61337f565b606091505b5080516000036133a2576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60008051602061495b83398151915254610100900460ff166133fc5760405162461bcd60e51b8152600401610e8a90614862565b610f248282613a02565b60008051602061495b83398151915254610100900460ff1661343a5760405162461bcd60e51b8152600401610e8a90614862565b613442613a75565b565b600054610100900460ff1661346b5760405162461bcd60e51b8152600401610e8a906148b6565b61347484613aa9565b61347c613ad3565b60978054336001600160a01b031991821617909155609980549091166001600160a01b0385161790556115cf8282612b50565b604080516080810182526000808252602082018190529181018290526060810191909152610ca36134df83612dc2565b6138ff565b6060609e8054610d0690614473565b604080516080019081905280825b600183039250600a81066030018353600a9004806135015750819003601f19909101908152919050565b610f24828260405180602001604052806000815250613afa565b600061354f612c0a565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b60006001600160e01b0319821663152a902d60e11b1480610ca357506301ffc9a760e01b6001600160e01b0319831614610ca3565b600081815b84518110156135fc576135e8828683815181106135db576135db614753565b6020026020010151613b77565b9150806135f481614901565b9150506135bc565b509392505050565b6000611dfe8284614528565b600061361a612c0a565b6001600160a01b038416600090815260059190910160205260409020546001600160c01b031660c083901b1790508181613652612c0a565b6001600160a01b039095166000908152600595909501602052604090942093909355505050565b6000613683612c0a565b54905060008290036136a85760405163b562e8dd60e01b815260040160405180910390fd5b6801000000000000000182026136bc612c0a565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b17176136f7612c0a565b600083815260049190910160205260408120919091556001600160a01b03841690838301908390839060008051602061493b8339815191528180a4600183015b81811461375d578083600060008051602061493b833981519152600080a4600101613737565b508160000361377e57604051622e076360e81b815260040160405180910390fd5b80613787612c0a565b5550610ce99050565b600061379b83612dc2565b9050806000806137aa86612e56565b9150915084156137ea576137bf818433610f82565b6137ea576137cd833361253c565b6137ea57604051632ce44b5f60e11b815260040160405180910390fd5b80156137f557600082555b6fffffffffffffffffffffffffffffffff61380e612c0a565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b17600360e01b17613847612c0a565b60008881526004919091016020526040812091909155600160e11b851690036138bd5760018601613876612c0a565b6000828152600491909101602052604081205490036138bb57613897612c0a565b5481146138bb57846138a7612c0a565b600083815260049190910160205260409020555b505b60405186906000906001600160a01b0386169060008051602061493b833981519152908390a46138eb612c0a565b600190810180549091019055505050505050565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b6000613959826301ffc9a760e01b613979565b8015610ca35750613972826001600160e01b0319613979565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156139eb575060208210155b80156139f75750600081115b979650505050505050565b60008051602061495b83398151915254610100900460ff16613a365760405162461bcd60e51b8152600401610e8a90614862565b81613a3f612c0a565b60020190613a4d9082614694565b5080613a57612c0a565b60030190613a659082614694565b506001613a70612c0a565b555050565b60008051602061495b83398151915254610100900460ff166134425760405162461bcd60e51b8152600401610e8a90614862565b6001600160a01b0316638b78c6d81981905580600060008051602061491b8339815191528180a350565b600054610100900460ff166134425760405162461bcd60e51b8152600401610e8a906148b6565b613b048383613679565b6001600160a01b0383163b15610ce9576000613b1e612c0a565b5490508281035b613b3860008683806001019450866132dc565b613b55576040516368d2bf6b60e11b815260040160405180910390fd5b818110613b255781613b65612c0a565b5414613b7057600080fd5b5050505050565b6000818310613b93576000828152602084905260409020611dfe565b6000838152602083905260409020611dfe565b6001600160e01b031981168114610efc57600080fd5b600060208284031215613bce57600080fd5b8135611dfe81613ba6565b80356001600160a01b0381168114613bf057600080fd5b919050565b80356001600160601b0381168114613bf057600080fd5b60008060408385031215613c1f57600080fd5b613c2883613bd9565b9150613c3660208401613bf5565b90509250929050565b60005b83811015613c5a578181015183820152602001613c42565b838111156115cf5750506000910152565b60008151808452613c83816020860160208601613c3f565b601f01601f19169290920160200192915050565b602081526000611dfe6020830184613c6b565b600060208284031215613cbc57600080fd5b5035919050565b60008060408385031215613cd657600080fd5b613cdf83613bd9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613d2b57613d2b613ced565b604052919050565b60006020808385031215613d4657600080fd5b82356001600160401b0380821115613d5d57600080fd5b818501915085601f830112613d7157600080fd5b813581811115613d8357613d83613ced565b8060051b9150613d94848301613d03565b8181529183018401918481019088841115613dae57600080fd5b938501935b83851015613ddf578435925060ff83168314613dcf5760008081fd5b8282529385019390850190613db3565b98975050505050505050565b600080600060608486031215613e0057600080fd5b613e0984613bd9565b9250613e1760208501613bd9565b9150604084013590509250925092565b60008060408385031215613e3a57600080fd5b50508035926020909101359150565b600060208284031215613e5b57600080fd5b611dfe82613bd9565b80356001600160401b0381168114613bf057600080fd5b60008083601f840112613e8d57600080fd5b5081356001600160401b03811115613ea457600080fd5b6020830191508360208260051b850101111561120457600080fd5b60008060008060608587031215613ed557600080fd5b613ede85613e64565b93506020850135925060408501356001600160401b03811115613f0057600080fd5b613f0c87828801613e7b565b95989497509550505050565b60006001600160401b03831115613f3157613f31613ced565b613f44601f8401601f1916602001613d03565b9050828152838383011115613f5857600080fd5b828260208301376000602084830101529392505050565b600082601f830112613f8057600080fd5b611dfe83833560208501613f18565b600060208284031215613fa157600080fd5b81356001600160401b03811115613fb757600080fd5b6133c084828501613f6f565b600080600060608486031215613fd857600080fd5b83359250613fe860208501613bd9565b9150613ff660408501613bf5565b90509250925092565b6000806020838503121561401257600080fd5b82356001600160401b0381111561402857600080fd5b61403485828601613e7b565b90969095509350505050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015611ae9576140ab838551614040565b9284019260809290920191600101614098565b6020808252825182820181905260009190848201906040850190845b81811015611ae957835160ff16835292840192918401916001016140da565b80358015158114613bf057600080fd5b600080600080600060a0868803121561412157600080fd5b85359450602086013593506040860135925060608601359150614146608087016140f9565b90509295509295909350565b6020808252825182820181905260009190848201906040850190845b81811015611ae95783518352928401929184019160010161416e565b6000806040838503121561419d57600080fd5b6141a683613bd9565b9150613c3660208401613e64565b6000806000606084860312156141c957600080fd5b6141d284613bd9565b95602085013595506040909401359392505050565b600080604083850312156141fa57600080fd5b82359150613c36602084016140f9565b6000806040838503121561421d57600080fd5b61422683613bd9565b9150613c36602084016140f9565b6000806000806080858703121561424a57600080fd5b61425385613bd9565b935061426160208601613bd9565b92506040850135915060608501356001600160401b0381111561428357600080fd5b8501601f8101871361429457600080fd5b6142a387823560208401613f18565b91505092959194509250565b60008060008060008060c087890312156142c857600080fd5b6142d187613bd9565b955060208701356001600160401b03808211156142ed57600080fd5b6142f98a838b01613f6f565b9650604089013591508082111561430f57600080fd5b5061431c89828a01613f6f565b94505061432b60608801613bd9565b925061433960808801613bd9565b915061434760a08801613bf5565b90509295509295509295565b60808101610ca38284614040565b6000806000806040858703121561437757600080fd5b84356001600160401b038082111561438e57600080fd5b61439a88838901613e7b565b909650945060208701359150808211156143b357600080fd5b50613f0c87828801613e7b565b600080604083850312156143d357600080fd5b6143dc83613bd9565b9150613c3660208401613bd9565b6000602082840312156143fc57600080fd5b611dfe82613e64565b60008060008060006080868803121561441d57600080fd5b61442686613bd9565b945061443460208701613e64565b93506040860135925060608601356001600160401b0381111561445657600080fd5b61446288828901613e7b565b969995985093965092949392505050565b600181811c9082168061448757607f821691505b6020821081036144a757634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156144bf57600080fd5b5051919050565b6020808252602c908201527f4f70657261746f7220686173206265656e20626c6f636b656420627920636f6e60408201526b3a3930b1ba1037bbb732b91760a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561454257614542614512565b500290565b60008261456457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600d908201526c05175616e74697479206973203609c1b604082015260600190565b6020808252601390820152724578636565646564206d617820737570706c7960681b604082015260600190565b602080825260159082015274115e18d959591959081b585e081c195c881b5a5b9d605a1b604082015260600190565b60006001600160401b0380831681851680830382111561460e5761460e614512565b01949350505050565b60208082526017908201527f4578636565646564206d6178207065722077616c6c6574000000000000000000604082015260600190565b601f821115610ce957600081815260208120601f850160051c810160208610156146755750805b601f850160051c820191505b8181101561110557828155600101614681565b81516001600160401b038111156146ad576146ad613ced565b6146c1816146bb8454614473565b8461464e565b602080601f8311600181146146f657600084156146de5750858301515b600019600386901b1c1916600185901b178555611105565b600085815260208120601f198616915b8281101561472557888601518255948401946001909101908401614706565b50858210156147435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b6000835161477b818460208801613c3f565b83519083019061460e818360208801613c3f565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b600082198211156147ec576147ec614512565b500190565b60008282101561480357614803614512565b500390565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061483b90830184613c6b565b9695505050505050565b60006020828403121561485757600080fd5b8151611dfe81613ba6565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001820161491357614913614512565b506001019056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa26469706673582212207a26142cd1fc9f5bd2cea4ff12e9a9cd0f4d753a56169f912e3c3c164c503a0064736f6c634300080f0033