[ { "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": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "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": [ { "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": "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": "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": "bool", "name": "value", "type": "bool" } ], "name": "setOperatorFilteringEnabled", "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": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405260a1805461ffff191690553480156200001c57600080fd5b50620000276200002d565b620000ef565b600054610100900460ff16156200009a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000ed576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61450880620000ff6000396000f3fe6080604052600436106103ad5760003560e01c806368428a1b116101e7578063b88d4fde1161010d578063e985e9c5116100a0578063f2fde38b1161006f578063f2fde38b14610aee578063fb9d09c814610b0e578063fd51fae814610b21578063fee81cf414610b3457600080fd5b8063e985e9c514610a79578063ec87621c14610a99578063f04e283e14610aae578063f0f4426014610ace57600080fd5b8063c87b56dd116100dc578063c87b56dd14610a06578063d53ab50114610a26578063d7533f0214610a46578063e36b0b3714610a6457600080fd5b8063b88d4fde14610984578063bf2d9e0b146109a4578063bfa9aadc146109b9578063c23dc68f146109d957600080fd5b80638462151c1161018557806399a2557a1161015457806399a2557a1461090f578063a035b1fe1461092f578063a22cb46514610944578063b7c0b8e81461096457600080fd5b80638462151c146108a15780638da5cb5b146108ce57806393d756aa146108e757806395d89b41146108fa57600080fd5b80637359e41f116101c15780637359e41f1461081f57806375b238fc1461084c578063789e3a55146108615780637cb647591461088157600080fd5b806368428a1b146107cd57806370a08231146107ea578063715018a61461080a57600080fd5b8063386bacdc116102d757806353135ca01161026a5780635bbb2177116102395780635bbb21771461074d5780635f48f3931461077a57806361d027b31461078f5780636352211e146107ad57600080fd5b806353135ca0146106e057806354d1f13d146106f857806355f804b31461070d5780635944c7531461072d57600080fd5b8063453c2310116102a6578063453c23101461065f5780634a4ee7b114610674578063507e094f14610694578063514e62fc146106a957600080fd5b8063386bacdc146105f75780633ccfd60b1461060a57806342842e0e1461061f57806342966c681461063f57600080fd5b8063183a4f6e1161034f578063256929621161031e578063256929621461055d578063282c51f3146105725780632a55205a146105875780632de94807146105c657600080fd5b8063183a4f6e146104c65780631c10893f146104e65780631cd64df41461050657806323b872dd1461053d57600080fd5b8063081812fc1161038b578063081812fc1461042b578063095ea7b31461046357806313a661ed1461048357806318160ddd146104b157600080fd5b806301ffc9a7146103b257806304634d8d146103e757806306fdde0314610409575b600080fd5b3480156103be57600080fd5b506103d26103cd366004613768565b610b65565b60405190151581526020015b60405180910390f35b3480156103f357600080fd5b506104076104023660046137b8565b610b94565b005b34801561041557600080fd5b5061041e610bd9565b6040516103de9190613843565b34801561043757600080fd5b5061044b610446366004613856565b610c74565b6040516001600160a01b0390911681526020016103de565b34801561046f57600080fd5b5061040761047e36600461386f565b610cc1565b34801561048f57600080fd5b506104a361049e3660046138df565b610ce0565b6040519081526020016103de565b3480156104bd57600080fd5b506104a3610d13565b3480156104d257600080fd5b506104076104e1366004613856565b610d33565b3480156104f257600080fd5b5061040761050136600461386f565b610d40565b34801561051257600080fd5b506103d261052136600461386f565b60609190911b638b78c6d8176000908152602090205481161490565b34801561054957600080fd5b50610407610558366004613997565b610d69565b34801561056957600080fd5b50610407610d9f565b34801561057e57600080fd5b506104a3600481565b34801561059357600080fd5b506105a76105a23660046139d3565b610def565b604080516001600160a01b0390931683526020830191909152016103de565b3480156105d257600080fd5b506104a36105e13660046139f5565b60601b638b78c6d8176000908152602090205490565b610407610605366004613a6b565b610e9d565b34801561061657600080fd5b50610407611107565b34801561062b57600080fd5b5061040761063a366004613997565b611272565b34801561064b57600080fd5b5061040761065a366004613856565b6112a2565b34801561066b57600080fd5b50609f546104a3565b34801561068057600080fd5b5061040761068f36600461386f565b611310565b3480156106a057600080fd5b50609e546104a3565b3480156106b557600080fd5b506103d26106c436600461386f565b60609190911b638b78c6d8176000908152602090205416151590565b3480156106ec57600080fd5b5060a15460ff166103d2565b34801561070457600080fd5b50610407611335565b34801561071957600080fd5b50610407610728366004613b3b565b611372565b34801561073957600080fd5b50610407610748366004613b6f565b6113b4565b34801561075957600080fd5b5061076d610768366004613bab565b6113f5565b6040516103de9190613c28565b34801561078657600080fd5b50609d546104a3565b34801561079b57600080fd5b506098546001600160a01b031661044b565b3480156107b957600080fd5b5061044b6107c8366004613856565b6114c0565b3480156107d957600080fd5b5060a154610100900460ff166103d2565b3480156107f657600080fd5b506104a36108053660046139f5565b6114cb565b34801561081657600080fd5b50610407611533565b34801561082b57600080fd5b5061083f61083a366004613856565b61156f565b6040516103de9190613c6a565b34801561085857600080fd5b506104a3600181565b34801561086d57600080fd5b5061040761087c366004613cb5565b6115b7565b34801561088d57600080fd5b5061040761089c366004613856565b61161a565b3480156108ad57600080fd5b506108c16108bc3660046139f5565b611656565b6040516103de9190613cfe565b3480156108da57600080fd5b50638b78c6d8195461044b565b6104076108f5366004613d36565b61175e565b34801561090657600080fd5b5061041e6118d0565b34801561091b57600080fd5b506108c161092a366004613d60565b6118e8565b34801561093b57600080fd5b5060a0546104a3565b34801561095057600080fd5b5061040761095f366004613d93565b611a6e565b34801561097057600080fd5b5061040761097f366004613dbd565b611a8d565b34801561099057600080fd5b5061040761099f366004613dd8565b611ad7565b3480156109b057600080fd5b506099546104a3565b3480156109c557600080fd5b506104076109d4366004613e53565b611b0f565b3480156109e557600080fd5b506109f96109f4366004613856565b611d43565b6040516103de9190613ef7565b348015610a1257600080fd5b5061041e610a21366004613856565b611dd0565b348015610a3257600080fd5b50610407610a41366004613f05565b611e53565b348015610a5257600080fd5b506040516202a30081526020016103de565b348015610a7057600080fd5b50610407611f3f565b348015610a8557600080fd5b506103d2610a94366004613f64565b611f83565b348015610aa557600080fd5b506104a3600281565b348015610aba57600080fd5b50610407610ac93660046139f5565b611fc0565b348015610ada57600080fd5b50610407610ae93660046139f5565b612030565b348015610afa57600080fd5b50610407610b093660046139f5565b612089565b610407610b1c366004613f8e565b6120de565b610407610b2f366004613fa9565b612250565b348015610b4057600080fd5b506104a3610b4f3660046139f5565b60601b63389a75e1176000908152602090205490565b6000610b708261248d565b80610b7f5750610b7f826124db565b80610b8e5750610b8e8261248d565b92915050565b6001638b78c6d83360601b176000528060206000205416610bca57638b78c6d819543314610bca576382b429006000526004601cfd5b610bd48383612500565b505050565b6060610be36125ba565b6002018054610bf190614017565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1d90614017565b8015610c6a5780601f10610c3f57610100808354040283529160200191610c6a565b820191906000526020600020905b815481529060010190602001808311610c4d57829003601f168201915b5050505050905090565b6000610c7f826125de565b610c9c576040516333d1c03960e21b815260040160405180910390fd5b610ca46125ba565b60009283526006016020525060409020546001600160a01b031690565b81609a5460ff1615610cd657610cd681612627565b610bd4838361266b565b600060208201825160051b81015b808214610d0c57600160ff8351161b83179250602082019150610cee565b5050919050565b60006001610d1f6125ba565b60010154610d2b6125ba565b540303919050565b610d3d3382612719565b50565b638b78c6d819543314610d5b576382b429006000526004601cfd5b610d65828261276a565b5050565b826001600160a01b0381163314610d8e57609a5460ff1615610d8e57610d8e33612627565b610d998484846127b6565b50505050565b60006202a3006001600160401b03164201905063389a75e13360601b1760005280602060002055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60008281526066602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610e645750604080518082019091526065546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610e83906001600160601b031687614067565b610e8d9190614086565b91519350909150505b9250929050565b836000816001600160401b031611610ed05760405162461bcd60e51b8152600401610ec7906140a8565b60405180910390fd5b6000609d5411610ee1576001610f02565b609d54610eff826001600160401b0316610ef9610d13565b90612997565b11155b610f1e5760405162461bcd60e51b8152600401610ec7906140cf565b609e54816001600160401b03161115610f495760405162461bcd60e51b8152600401610ec7906140fc565b600085610f55336129a3565b610f5f919061412b565b60a1546001600160401b0391909116915060ff16610fb45760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b6044820152606401610ec7565b609b54600003610ff85760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b6044820152606401610ec7565b609f5481111561101a5760405162461bcd60e51b8152600401610ec790614156565b8481111561103a5760405162461bcd60e51b8152600401610ec790614156565b6110b784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050609b546040516bffffffffffffffffffffffff193360601b166020820152603481018b905290925060540190505b604051602081830303815290604052805190602001206129d6565b6110f55760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b6044820152606401610ec7565b6110ff86336129ec565b505050505050565b6001638b78c6d83360601b17600052806020600020541661113d57638b78c6d81954331461113d576382b429006000526004601cfd5b600047116111795760405162461bcd60e51b8152602060048201526009602482015268302062616c616e636560b81b6044820152606401610ec7565b609754604051639af608c960e01b81523060048201526001600160a01b039091169047906000908390639af608c990602401602060405180830381865afa1580156111c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ec919061418d565b60405163b9bff4bb60e01b8152600481018290529091506001600160a01b0384169063b9bff4bb90602401600060405180830381600087803b15801561123157600080fd5b505af1158015611245573d6000803e3d6000fd5b505050506112538382612ae1565b609854610d99906001600160a01b031661126d8484612bfa565b612ae1565b826001600160a01b038116331461129757609a5460ff16156112975761129733612627565b610d99848484612c06565b6004638b78c6d83360601b1760005280602060002054166112cb576382b429006000526004601cfd5b333b6113075760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b6044820152606401610ec7565b610d6582612c21565b638b78c6d81954331461132b576382b429006000526004601cfd5b610d658282612719565b63389a75e13360601b176000526000602060002055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6002638b78c6d83360601b1760005280602060002054166113a857638b78c6d8195433146113a8576382b429006000526004601cfd5b609c610bd483826141ec565b6001638b78c6d83360601b1760005280602060002054166113ea57638b78c6d8195433146113ea576382b429006000526004601cfd5b610d99848484612c2c565b6060816000816001600160401b0381111561141257611412613899565b60405190808252806020026020018201604052801561146457816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816114305790505b50905060005b8281146114b757611492868683818110611486576114866142ab565b90506020020135611d43565b8282815181106114a4576114a46142ab565b602090810291909101015260010161146a565b50949350505050565b6000610b8e82612cf7565b60006001600160a01b0382166114f4576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b036115046125ba565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b638b78c6d81954331461154e576382b429006000526004601cfd5b600033600080516020614473833981519152600080a36000638b78c6d81955565b606060206040510160005b8082526001841660051b820191508360011c9350831561159c5760010161157a565b5060405191508060405260208201810360051c825250919050565b6002638b78c6d83360601b1760005280602060002054166115ed57638b78c6d8195433146115ed576382b429006000526004601cfd5b5060a1805491151561ffff1990921691909117610100179055609d93909355609e91909155609f5560a055565b6002638b78c6d83360601b17600052806020600020541661165057638b78c6d819543314611650576382b429006000526004601cfd5b50609b55565b60606000806000611666856114cb565b90506000816001600160401b0381111561168257611682613899565b6040519080825280602002602001820160405280156116ab578160200160208202803683370190505b5090506116d860408051608081018252600080825260208201819052918101829052606081019190915290565b60015b838614611752576116eb81612d8b565b9150816040015161174a5781516001600160a01b03161561170b57815194505b876001600160a01b0316856001600160a01b03160361174a578083878060010198508151811061173d5761173d6142ab565b6020026020010181815250505b6001016116db565b50909695505050505050565b806000816001600160401b0316116117885760405162461bcd60e51b8152600401610ec7906140a8565b6000609d54116117995760016117b4565b609d546117b1826001600160401b0316610ef9610d13565b11155b6117d05760405162461bcd60e51b8152600401610ec7906140cf565b609e54816001600160401b031611156117fb5760405162461bcd60e51b8152600401610ec7906140fc565b60a15460ff161561183f5760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b6044820152606401610ec7565b60a154610100900460ff166118885760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b6044820152606401610ec7565b609f5482611895856129a3565b61189f919061412b565b6001600160401b031611156118c65760405162461bcd60e51b8152600401610ec790614156565b610bd482846129ec565b60606118da6125ba565b6003018054610bf190614017565b606081831061190a57604051631960ccad60e11b815260040160405180910390fd5b600080611915612dd2565b9050600185101561192557600194505b80841115611931578093505b600061193c876114cb565b90508486101561195b5785850381811015611955578091505b5061195f565b5060005b6000816001600160401b0381111561197957611979613899565b6040519080825280602002602001820160405280156119a2578160200160208202803683370190505b509050816000036119b8579350611a6792505050565b60006119c388611d43565b9050600081604001516119d4575080515b885b8881141580156119e65750848714155b15611a5b576119f481612d8b565b92508260400151611a535782516001600160a01b031615611a1457825191505b8a6001600160a01b0316826001600160a01b031603611a535780848880600101995081518110611a4657611a466142ab565b6020026020010181815250505b6001016119d6565b50505092835250909150505b9392505050565b81609a5460ff1615611a8357611a8381612627565b610bd48383612de2565b6001638b78c6d83360601b176000528060206000205416611ac357638b78c6d819543314611ac3576382b429006000526004601cfd5b50609a805460ff1916911515919091179055565b836001600160a01b0381163314611afc57609a5460ff1615611afc57611afc33612627565b611b0885858585612e88565b5050505050565b6000805160206144b383398151915254610100900460ff16611b44576000805160206144b38339815191525460ff1615611b48565b303b155b611bba5760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a65640000000000000000006064820152608401610ec7565b6000805160206144b383398151915254610100900460ff16158015611bf6576000805160206144b3833981519152805461ffff19166101011790555b600054610100900460ff1615808015611c165750600054600160ff909116105b80611c305750303b158015611c30575060005460ff166001145b611c935760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec7565b6000805460ff191660011790558015611cb6576000805461ff0019166101001790555b611cc08787612ecc565b611cc8612f0a565b611cd488868686612f48565b8015611d1a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b508015611d3a576000805160206144b3833981519152805461ff00191690555b50505050505050565b6040805160808101825260008082526020820181905291810182905260608101919091526040805160808101825260008082526020820181905291810182905260608101919091526001831080611da15750611d9d612dd2565b8310155b15611dac5792915050565b611db583612d8b565b9050806040015115611dc75792915050565b611a6783612fc8565b6060611ddb826125de565b611df857604051630a14c4b560e41b815260040160405180910390fd5b6000611e02612ffd565b90508051600003611e225760405180602001604052806000815250611a67565b80611e2c8461300c565b604051602001611e3d9291906142c1565b6040516020818303038152906040529392505050565b6002638b78c6d83360601b176000528060206000205416611e8957638b78c6d819543314611e89576382b429006000526004601cfd5b81848114611ecd5760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420417267756d656e747360781b6044820152606401610ec7565b60005b81811015611d3a57611f37858583818110611eed57611eed6142ab565b9050602002016020810190611f0291906139f5565b888884818110611f1457611f146142ab565b9050602002016020810190611f299190613f8e565b6001600160401b0316613044565b600101611ed0565b6002638b78c6d83360601b176000528060206000205416611f7557638b78c6d819543314611f75576382b429006000526004601cfd5b5060a1805461ffff19169055565b6000611f8d6125ba565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b638b78c6d819543314611fdb576382b429006000526004601cfd5b8060601b60601c905063389a75e18160601b176000526020600020805442111561200d57636f5e88186000526004601cfd5b60008155508033600080516020614473833981519152600080a3638b78c6d81955565b6001638b78c6d83360601b17600052806020600020541661206657638b78c6d819543314612066576382b429006000526004601cfd5b50609880546001600160a01b0319166001600160a01b0392909216919091179055565b638b78c6d8195433146120a4576382b429006000526004601cfd5b6001600160a01b0316806120c057637448fbae6000526004601cfd5b8033600080516020614473833981519152600080a3638b78c6d81955565b806000816001600160401b0316116121085760405162461bcd60e51b8152600401610ec7906140a8565b6000609d5411612119576001612134565b609d54612131826001600160401b0316610ef9610d13565b11155b6121505760405162461bcd60e51b8152600401610ec7906140cf565b609e54816001600160401b0316111561217b5760405162461bcd60e51b8152600401610ec7906140fc565b60a15460ff16156121bf5760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b6044820152606401610ec7565b60a154610100900460ff166122085760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b6044820152606401610ec7565b609f5482612215336129a3565b61221f919061412b565b6001600160401b031611156122465760405162461bcd60e51b8152600401610ec790614156565b610d6582336129ec565b836000816001600160401b03161161227a5760405162461bcd60e51b8152600401610ec7906140a8565b6000609d541161228b5760016122a6565b609d546122a3826001600160401b0316610ef9610d13565b11155b6122c25760405162461bcd60e51b8152600401610ec7906140cf565b609e54816001600160401b031611156122ed5760405162461bcd60e51b8152600401610ec7906140fc565b6000856122f9886129a3565b612303919061412b565b60a1546001600160401b0391909116915060ff166123585760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b6044820152606401610ec7565b609b5460000361239c5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b6044820152606401610ec7565b609f548111156123be5760405162461bcd60e51b8152600401610ec790614156565b848111156123de5760405162461bcd60e51b8152600401610ec790614156565b61244584848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050609b546040516bffffffffffffffffffffffff1960608e901b166020820152603481018b9052909250605401905061109c565b6124835760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b6044820152606401610ec7565b611d3a86886129ec565b60006301ffc9a760e01b6001600160e01b0319831614806124be57506380ac58cd60e01b6001600160e01b03198316145b80610b8e5750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b03198216632fea6ab760e21b1480610b8e5750610b8e8261305e565b6127106001600160601b038216111561252b5760405162461bcd60e51b8152600401610ec7906142e7565b6001600160a01b0382166125815760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610ec7565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217606555565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000816001111580156125f857506125f46125ba565b5482105b8015610b8e5750600160e01b61260c6125ba565b60008481526004919091016020526040902054161592915050565b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa612663573d6000803e3d6000fd5b6000603a5250565b6000612676826114c0565b9050336001600160a01b038216146126af576126928133611f83565b6126af576040516367d9dca160e11b815260040160405180910390fd5b826126b86125ba565b6000848152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551849286811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a4505050565b638b78c6d88260601b176000526020600020805482811681189050808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b638b78c6d88260601b17600052602060002081815417808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b60006127c182612cf7565b9050836001600160a01b0316816001600160a01b0316146127f45760405162a1148160e81b815260040160405180910390fd5b60008061280084613093565b9150915061282581876128103390565b6001600160a01b039081169116811491141790565b612850576128338633611f83565b61285057604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661287757604051633a954ecd60e21b815260040160405180910390fd5b801561288257600082555b61288a6125ba565b6001600160a01b03871660009081526005919091016020526040902080546000190190556128b66125ba565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b176128ed6125ba565b60008681526004919091016020526040812091909155600160e11b84169003612963576001840161291c6125ba565b6000828152600491909101602052604081205490036129615761293d6125ba565b548114612961578361294d6125ba565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b031660008051602061449383398151915260405160405180910390a46110ff565b6000611a678284614331565b600060c06129af6125ba565b6001600160a01b03909316600090815260059390930160205260409092205490911c919050565b6000826129e385846130bb565b14949350505050565b60a0543490612a04906001600160401b038516613108565b1115612a445760405162461bcd60e51b815260206004820152600f60248201526e15985b1d59481a5b98dbdc9c9958dd608a1b6044820152606401610ec7565b609954612a519034612997565b609955612a718183612a62826129a3565b612a6c919061412b565b613114565b60975460405163107e9cf160e01b81523460048201526001600160a01b039091169063107e9cf190602401600060405180830381600087803b158015612ab657600080fd5b505af1158015612aca573d6000803e3d6000fd5b50505050610d6581836001600160401b031661317d565b80471015612b315760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ec7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612b7e576040519150601f19603f3d011682016040523d82523d6000602084013e612b83565b606091505b5050905080610bd45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ec7565b6000611a678284614349565b610bd483838360405180602001604052806000815250611ad7565b610d3d816000613294565b6127106001600160601b0382161115612c575760405162461bcd60e51b8152600401610ec7906142e7565b6001600160a01b038216612cad5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610ec7565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752606690529190942093519051909116600160a01b029116179055565b60008180600111612d7257612d0a6125ba565b54811015612d72576000612d1c6125ba565b600083815260049190910160205260408120549150600160e01b82169003612d70575b80600003611a6757612d4f6125ba565b60001990920160008181526004939093016020526040909220549050612d3f565b505b604051636f96cda160e11b815260040160405180910390fd5b604080516080810182526000808252602082018190529181018290526060810191909152610b8e612dba6125ba565b60008481526004919091016020526040902054613403565b6000612ddc6125ba565b54919050565b336001600160a01b03831603612e0b5760405163b06307db60e01b815260040160405180910390fd5b80612e146125ba565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b612e93848484610d69565b6001600160a01b0383163b15610d9957612eaf8484848461344a565b610d99576040516368d2bf6b60e11b815260040160405180910390fd5b6000805160206144b383398151915254610100900460ff16612f005760405162461bcd60e51b8152600401610ec790614360565b610d658282613536565b6000805160206144b383398151915254610100900460ff16612f3e5760405162461bcd60e51b8152600401610ec790614360565b612f466135a9565b565b600054610100900460ff16612f6f5760405162461bcd60e51b8152600401610ec7906143b4565b612f78846135dd565b612f80613607565b612f8861362e565b60978054336001600160a01b031991821617909155609880549091166001600160a01b038516179055609a805460ff19166001179055610d998282612500565b604080516080810182526000808252602082018190529181018290526060810191909152610b8e612ff883612cf7565b613403565b6060609c8054610bf190614017565b604080516080019081905280825b600183039250600a81066030018353600a90048061301a5750819003601f19909101908152919050565b610d6582826040518060200160405280600081525061364d565b60006001600160e01b0319821663152a902d60e11b1480610b8e57506301ffc9a760e01b6001600160e01b0319831614610b8e565b60008060006130a06125ba565b60009485526006016020525050604090912080549092909150565b600081815b8451811015613100576130ec828683815181106130df576130df6142ab565b60200260200101516136c3565b9150806130f8816143ff565b9150506130c0565b509392505050565b6000611a678284614067565b600061311e6125ba565b6001600160a01b038416600090815260059190910160205260409020546001600160c01b031660c083901b17905081816131566125ba565b6001600160a01b039095166000908152600595909501602052604090942093909355505050565b60006131876125ba565b54905060008290036131ac5760405163b562e8dd60e01b815260040160405180910390fd5b6801000000000000000182026131c06125ba565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b17176131fb6125ba565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083906000805160206144938339815191528180a4600183015b8181146132615780836000600080516020614493833981519152600080a460010161323b565b508160000361328257604051622e076360e81b815260040160405180910390fd5b8061328b6125ba565b5550610bd49050565b600061329f83612cf7565b9050806000806132ae86613093565b9150915084156132ee576132c3818433612810565b6132ee576132d18333611f83565b6132ee57604051632ce44b5f60e11b815260040160405180910390fd5b80156132f957600082555b6fffffffffffffffffffffffffffffffff6133126125ba565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b17600360e01b1761334b6125ba565b60008881526004919091016020526040812091909155600160e11b851690036133c1576001860161337a6125ba565b6000828152600491909101602052604081205490036133bf5761339b6125ba565b5481146133bf57846133ab6125ba565b600083815260049190910160205260409020555b505b60405186906000906001600160a01b03861690600080516020614493833981519152908390a46133ef6125ba565b600190810180549091019055505050505050565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061347f903390899088908890600401614418565b6020604051808303816000875af19250505080156134ba575060408051601f3d908101601f191682019092526134b791810190614455565b60015b613518573d8080156134e8576040519150601f19603f3d011682016040523d82523d6000602084013e6134ed565b606091505b508051600003613510576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6000805160206144b383398151915254610100900460ff1661356a5760405162461bcd60e51b8152600401610ec790614360565b816135736125ba565b6002019061358190826141ec565b508061358b6125ba565b6003019061359990826141ec565b5060016135a46125ba565b555050565b6000805160206144b383398151915254610100900460ff16612f465760405162461bcd60e51b8152600401610ec790614360565b6001600160a01b0316638b78c6d8198190558060006000805160206144738339815191528180a350565b600054610100900460ff16612f465760405162461bcd60e51b8152600401610ec7906143b4565b612f46733cc6cdda760b79bafa08df41ecfa224f810dceb660016136f2565b613657838361317d565b6001600160a01b0383163b15610bd45760006136716125ba565b5490508281035b61368b600086838060010194508661344a565b6136a8576040516368d2bf6b60e11b815260040160405180910390fd5b81811061367857816136b86125ba565b5414611b0857600080fd5b60008183106136df576000828152602084905260409020611a67565b6000838152602083905260409020611a67565b6001600160a01b0390911690637d3e3dbe8161371f57826137185750634420e48661371f565b5063a0af29035b8060e01b60005250306004528160245260008060446000806daaeb6d7670e522a718067333cd4e5af15060006024525050565b6001600160e01b031981168114610d3d57600080fd5b60006020828403121561377a57600080fd5b8135611a6781613752565b80356001600160a01b038116811461379c57600080fd5b919050565b80356001600160601b038116811461379c57600080fd5b600080604083850312156137cb57600080fd5b6137d483613785565b91506137e2602084016137a1565b90509250929050565b60005b838110156138065781810151838201526020016137ee565b83811115610d995750506000910152565b6000815180845261382f8160208601602086016137eb565b601f01601f19169290920160200192915050565b602081526000611a676020830184613817565b60006020828403121561386857600080fd5b5035919050565b6000806040838503121561388257600080fd5b61388b83613785565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138d7576138d7613899565b604052919050565b600060208083850312156138f257600080fd5b82356001600160401b038082111561390957600080fd5b818501915085601f83011261391d57600080fd5b81358181111561392f5761392f613899565b8060051b91506139408483016138af565b818152918301840191848101908884111561395a57600080fd5b938501935b8385101561398b578435925060ff8316831461397b5760008081fd5b828252938501939085019061395f565b98975050505050505050565b6000806000606084860312156139ac57600080fd5b6139b584613785565b92506139c360208501613785565b9150604084013590509250925092565b600080604083850312156139e657600080fd5b50508035926020909101359150565b600060208284031215613a0757600080fd5b611a6782613785565b80356001600160401b038116811461379c57600080fd5b60008083601f840112613a3957600080fd5b5081356001600160401b03811115613a5057600080fd5b6020830191508360208260051b8501011115610e9657600080fd5b60008060008060608587031215613a8157600080fd5b613a8a85613a10565b93506020850135925060408501356001600160401b03811115613aac57600080fd5b613ab887828801613a27565b95989497509550505050565b60006001600160401b03831115613add57613add613899565b613af0601f8401601f19166020016138af565b9050828152838383011115613b0457600080fd5b828260208301376000602084830101529392505050565b600082601f830112613b2c57600080fd5b611a6783833560208501613ac4565b600060208284031215613b4d57600080fd5b81356001600160401b03811115613b6357600080fd5b61352e84828501613b1b565b600080600060608486031215613b8457600080fd5b83359250613b9460208501613785565b9150613ba2604085016137a1565b90509250925092565b60008060208385031215613bbe57600080fd5b82356001600160401b03811115613bd457600080fd5b613be085828601613a27565b90969095509350505050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b8181101561175257613c57838551613bec565b9284019260809290920191600101613c44565b6020808252825182820181905260009190848201906040850190845b8181101561175257835160ff1683529284019291840191600101613c86565b8035801515811461379c57600080fd5b600080600080600060a08688031215613ccd57600080fd5b85359450602086013593506040860135925060608601359150613cf260808701613ca5565b90509295509295909350565b6020808252825182820181905260009190848201906040850190845b8181101561175257835183529284019291840191600101613d1a565b60008060408385031215613d4957600080fd5b613d5283613785565b91506137e260208401613a10565b600080600060608486031215613d7557600080fd5b613d7e84613785565b95602085013595506040909401359392505050565b60008060408385031215613da657600080fd5b613daf83613785565b91506137e260208401613ca5565b600060208284031215613dcf57600080fd5b611a6782613ca5565b60008060008060808587031215613dee57600080fd5b613df785613785565b9350613e0560208601613785565b92506040850135915060608501356001600160401b03811115613e2757600080fd5b8501601f81018713613e3857600080fd5b613e4787823560208401613ac4565b91505092959194509250565b60008060008060008060c08789031215613e6c57600080fd5b613e7587613785565b955060208701356001600160401b0380821115613e9157600080fd5b613e9d8a838b01613b1b565b96506040890135915080821115613eb357600080fd5b50613ec089828a01613b1b565b945050613ecf60608801613785565b9250613edd60808801613785565b9150613eeb60a088016137a1565b90509295509295509295565b60808101610b8e8284613bec565b60008060008060408587031215613f1b57600080fd5b84356001600160401b0380821115613f3257600080fd5b613f3e88838901613a27565b90965094506020870135915080821115613f5757600080fd5b50613ab887828801613a27565b60008060408385031215613f7757600080fd5b613f8083613785565b91506137e260208401613785565b600060208284031215613fa057600080fd5b611a6782613a10565b600080600080600060808688031215613fc157600080fd5b613fca86613785565b9450613fd860208701613a10565b93506040860135925060608601356001600160401b03811115613ffa57600080fd5b61400688828901613a27565b969995985093965092949392505050565b600181811c9082168061402b57607f821691505b60208210810361404b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561408157614081614051565b500290565b6000826140a357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600d908201526c05175616e74697479206973203609c1b604082015260600190565b6020808252601390820152724578636565646564206d617820737570706c7960681b604082015260600190565b602080825260159082015274115e18d959591959081b585e081c195c881b5a5b9d605a1b604082015260600190565b60006001600160401b0380831681851680830382111561414d5761414d614051565b01949350505050565b60208082526017908201527f4578636565646564206d6178207065722077616c6c6574000000000000000000604082015260600190565b60006020828403121561419f57600080fd5b5051919050565b601f821115610bd457600081815260208120601f850160051c810160208610156141cd5750805b601f850160051c820191505b818110156110ff578281556001016141d9565b81516001600160401b0381111561420557614205613899565b614219816142138454614017565b846141a6565b602080601f83116001811461424e57600084156142365750858301515b600019600386901b1c1916600185901b1785556110ff565b600085815260208120601f198616915b8281101561427d5788860151825594840194600190910190840161425e565b508582101561429b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600083516142d38184602088016137eb565b83519083019061414d8183602088016137eb565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b6000821982111561434457614344614051565b500190565b60008282101561435b5761435b614051565b500390565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001820161441157614411614051565b5060010190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061444b90830184613817565b9695505050505050565b60006020828403121561446757600080fd5b8151611a678161375256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa264697066735822122024bd0d136547d60b72f5863ffc71f1acb24dc3a2345b98ae18ef97949ef0fdb064736f6c634300080f0033