[ { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EQUIPPER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_LAMBOS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RENTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "address", "name": "", "type": "address" } ], "name": "blacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "cancelRent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isUnderRent", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "numberOf", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155BatchReceived", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "rentInfo", "outputs": [ { "internalType": "address", "name": "originalOwner", "type": "address" }, { "internalType": "uint256", "name": "endsAt", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "period", "type": "uint256" } ], "name": "rentTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "returnRented", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "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": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newUri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setBlacklistStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setRoyalty", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "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": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620063af380380620063af8339818101604052810190620000379190620003d1565b828282818181600390816200004d9190620006d5565b5080600490816200005f9190620006d5565b505050620000776000801b33620000c460201b60201c565b6200008883620001b660201b60201c565b5050506000600f60006101000a81548160ff021916908315150217905550620000bb6000801b33620000c460201b60201c565b505050620007bc565b620000d68282620001cb60201b60201c565b620001b25760016002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001576200023660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b80600d9081620001c79190620006d5565b5050565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002a7826200025c565b810181811067ffffffffffffffff82111715620002c957620002c86200026d565b5b80604052505050565b6000620002de6200023e565b9050620002ec82826200029c565b919050565b600067ffffffffffffffff8211156200030f576200030e6200026d565b5b6200031a826200025c565b9050602081019050919050565b60005b83811015620003475780820151818401526020810190506200032a565b60008484015250505050565b60006200036a6200036484620002f1565b620002d2565b90508281526020810184848401111562000389576200038862000257565b5b6200039684828562000327565b509392505050565b600082601f830112620003b657620003b562000252565b5b8151620003c884826020860162000353565b91505092915050565b600080600060608486031215620003ed57620003ec62000248565b5b600084015167ffffffffffffffff8111156200040e576200040d6200024d565b5b6200041c868287016200039e565b935050602084015167ffffffffffffffff81111562000440576200043f6200024d565b5b6200044e868287016200039e565b925050604084015167ffffffffffffffff8111156200047257620004716200024d565b5b62000480868287016200039e565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004dd57607f821691505b602082108103620004f357620004f262000495565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200055d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200051e565b6200056986836200051e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005b6620005b0620005aa8462000581565b6200058b565b62000581565b9050919050565b6000819050919050565b620005d28362000595565b620005ea620005e182620005bd565b8484546200052b565b825550505050565b600090565b62000601620005f2565b6200060e818484620005c7565b505050565b5b8181101562000636576200062a600082620005f7565b60018101905062000614565b5050565b601f82111562000685576200064f81620004f9565b6200065a846200050e565b810160208510156200066a578190505b6200068262000679856200050e565b83018262000613565b50505b505050565b600082821c905092915050565b6000620006aa600019846008026200068a565b1980831691505092915050565b6000620006c5838362000697565b9150826002028217905092915050565b620006e0826200048a565b67ffffffffffffffff811115620006fc57620006fb6200026d565b5b620007088254620004c4565b620007158282856200063a565b600060209050601f8311600181146200074d576000841562000738578287015190505b620007448582620006b7565b865550620007b4565b601f1984166200075d86620004f9565b60005b82811015620007875784890151825560018201915060208501945060208101905062000760565b86831015620007a75784890151620007a3601f89168262000697565b8355505b6001600288020188555050505b505050505050565b615be380620007cc6000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c806370a0823111610151578063b3916fcf116100c3578063c5430a9d11610087578063c5430a9d14610792578063c87b56dd146107c3578063d547741f146107f3578063dbac26e91461080f578063e985e9c51461083f578063f23a6e611461086f57610274565b8063b3916fcf146106dc578063b80f55c91461070c578063b88d4fde14610728578063b97c9f7714610744578063bc197c811461076257610274565b806391d148541161011557806391d148541461061a57806395d89b411461064a578063a217fddf14610668578063a22cb46514610686578063a53bb990146106a2578063a55bb43b146106be57610274565b806370a08231146105785780638456cb59146105a85780638462151c146105b2578063857529f1146105e25780638f2fc60b146105fe57610274565b806336568abe116101ea57806342966c68116101ae57806342966c68146104a6578063475970d3146104c25780634f6ccce7146104de57806355f804b31461050e5780635c975abb1461052a5780636352211e1461054857610274565b806336568abe146104165780633bd70868146104325780633f4ba83a1461045057806340c10f191461045a57806342842e0e1461048a57610274565b806318160ddd1161023c57806318160ddd1461032f57806323b872dd1461034d578063248a9ca3146103695780632a55205a146103995780632f2ff15d146103ca5780632f745c59146103e657610274565b806301ffc9a71461027957806303d29d28146102a957806306fdde03146102c5578063081812fc146102e3578063095ea7b314610313575b600080fd5b610293600480360381019061028e9190613b61565b61089f565b6040516102a09190613ba9565b60405180910390f35b6102c360048036038101906102be9190613c4e565b6108b1565b005b6102cd61091a565b6040516102da9190613d1e565b60405180910390f35b6102fd60048036038101906102f89190613d76565b6109ac565b60405161030a9190613db2565b60405180910390f35b61032d60048036038101906103289190613dcd565b6109f2565b005b610337610b09565b6040516103449190613e1c565b60405180910390f35b61036760048036038101906103629190613e37565b610b16565b005b610383600480360381019061037e9190613ec0565b610b76565b6040516103909190613efc565b60405180910390f35b6103b360048036038101906103ae9190613f17565b610b96565b6040516103c1929190613f57565b60405180910390f35b6103e460048036038101906103df9190613f80565b610d80565b005b61040060048036038101906103fb9190613dcd565b610da1565b60405161040d9190613e1c565b60405180910390f35b610430600480360381019061042b9190613f80565b610e46565b005b61043a610ec9565b6040516104479190613efc565b60405180910390f35b610458610eed565b005b610474600480360381019061046f9190613dcd565b610f05565b604051610481919061407e565b60405180910390f35b6104a4600480360381019061049f9190613e37565b610fde565b005b6104c060048036038101906104bb9190613d76565b610ffe565b005b6104dc60048036038101906104d79190613d76565b611018565b005b6104f860048036038101906104f39190613d76565b61114a565b6040516105059190613e1c565b60405180910390f35b610528600480360381019061052391906141d5565b6111bb565b005b6105326111d5565b60405161053f9190613ba9565b60405180910390f35b610562600480360381019061055d9190613d76565b6111ec565b60405161056f9190613db2565b60405180910390f35b610592600480360381019061058d919061421e565b611272565b60405161059f9190613e1c565b60405180910390f35b6105b0611329565b005b6105cc60048036038101906105c7919061421e565b611341565b6040516105d9919061407e565b60405180910390f35b6105fc60048036038101906105f79190613d76565b61144a565b005b6106186004803603810190610613919061428f565b6114ea565b005b610634600480360381019061062f9190613f80565b611506565b6040516106419190613ba9565b60405180910390f35b610652611571565b60405161065f9190613d1e565b60405180910390f35b610670611603565b60405161067d9190613efc565b60405180910390f35b6106a0600480360381019061069b9190613c4e565b61160a565b005b6106bc60048036038101906106b791906142cf565b611620565b005b6106c6611747565b6040516106d39190613e1c565b60405180910390f35b6106f660048036038101906106f19190613d76565b61174d565b6040516107039190613ba9565b60405180910390f35b61072660048036038101906107219190614382565b61177a565b005b610742600480360381019061073d9190614470565b6117d0565b005b61074c611832565b6040516107599190613efc565b60405180910390f35b61077c600480360381019061077791906145b6565b611856565b6040516107899190614694565b60405180910390f35b6107ac60048036038101906107a79190613d76565b61186b565b6040516107ba929190613f57565b60405180910390f35b6107dd60048036038101906107d89190613d76565b61190a565b6040516107ea9190613d1e565b60405180910390f35b61080d60048036038101906108089190613f80565b611972565b005b6108296004803603810190610824919061421e565b611993565b6040516108369190613ba9565b60405180910390f35b610859600480360381019061085491906146af565b6119b3565b6040516108669190613ba9565b60405180910390f35b610889600480360381019061088491906146ef565b611a47565b6040516108969190614694565b60405180910390f35b60006108aa82611a5c565b9050919050565b6000801b6108be81611ad6565b81601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b606060038054610929906147b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610955906147b5565b80156109a25780601f10610977576101008083540402835291602001916109a2565b820191906000526020600020905b81548152906001019060200180831161098557829003601f168201915b5050505050905090565b60006109b782611aea565b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109fd826111ec565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490614858565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a8c611b35565b73ffffffffffffffffffffffffffffffffffffffff161480610abb5750610aba81610ab5611b35565b6119b3565b5b610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af1906148ea565b60405180910390fd5b610b048383611b3d565b505050565b6000600b80549050905090565b610b27610b21611b35565b82611bf6565b610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d9061497c565b60405180910390fd5b610b71838383611c8b565b505050565b600060026000838152602001908152602001600020600101549050919050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610d2b5760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610d35611ca3565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610d6191906149cb565b610d6b9190614a3c565b90508160000151819350935050509250929050565b610d8982610b76565b610d9281611ad6565b610d9c8383611cad565b505050565b6000610dac83611272565b8210610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490614adf565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610e4e611b35565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290614b71565b60405180910390fd5b610ec58282611d8e565b5050565b7fb379d9535b5ae7800ada8f473bd7d55f753e8023b1ed709eab5f121d2b9807be81565b6000801b610efa81611ad6565b610f02611e70565b50565b60606000801b610f1481611ad6565b8267ffffffffffffffff811115610f2e57610f2d6140aa565b5b604051908082528060200260200182016040528015610f5c5781602001602082028036833780820191505090505b5091506000600e54905083600e6000828254610f789190614b91565b9250508190555060005b84811015610fd557610f948683611ed3565b81848281518110610fa857610fa7614bc5565b5b6020026020010181815250508180610fbf90614bf4565b9250508080610fcd90614bf4565b915050610f82565b50505092915050565b610ff9838383604051806020016040528060008152506117d0565b505050565b6000801b61100b81611ad6565b61101482611f2d565b5050565b7f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d61104281611ad6565b60006013600084815260200190815260200160002090508060000160009054906101000a900460ff166110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190614c88565b60405180910390fd5b80600101544210156110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e890614cf4565b60405180910390fd5b60008160000160006101000a81548160ff02191690831515021790555061114561111a846111ec565b8260000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611c8b565b505050565b6000611154610b09565b8210611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90614d86565b60405180910390fd5b600b82815481106111a9576111a8614bc5565b5b90600052602060002001549050919050565b6000801b6111c881611ad6565b6111d182611f39565b5050565b6000600f60009054906101000a900460ff16905090565b6000806111f883611f4c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126090614df2565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d990614e84565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b61133681611ad6565b61133e611f89565b50565b6060600061134e83611272565b9050600081036113aa57600067ffffffffffffffff811115611373576113726140aa565b5b6040519080825280602002602001820160405280156113a15781602001602082028036833780820191505090505b50915050611445565b60008167ffffffffffffffff8111156113c6576113c56140aa565b5b6040519080825280602002602001820160405280156113f45781602001602082028036833780820191505090505b50905060005b8281101561143e5761140c8582610da1565b82828151811061141f5761141e614bc5565b5b602002602001018181525050808061143690614bf4565b9150506113fa565b8193505050505b919050565b7f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d61147481611ad6565b60006013600084815260200190815260200160002090508060000160009054906101000a900460ff166114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390614ef0565b60405180910390fd5b428160010181905550505050565b6000801b6114f781611ad6565b6115018383611fec565b505050565b60006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060048054611580906147b5565b80601f01602080910402602001604051908101604052809291908181526020018280546115ac906147b5565b80156115f95780601f106115ce576101008083540402835291602001916115f9565b820191906000526020600020905b8154815290600101906020018083116115dc57829003601f168201915b5050505050905090565b6000801b81565b61161c611615611b35565b8383612180565b5050565b7f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d61164a81611ad6565b60006013600086815260200190815260200160002090508060000160009054906101000a900460ff16156116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa90614f5c565b60405180910390fd5b60006116be866111ec565b9050808260000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550834261170f9190614b91565b8260010181905550611722818688611c8b565b60018260000160006101000a81548160ff021916908315150217905550505050505050565b610d0581565b60006013600083815260200190815260200160002060000160009054906101000a900460ff169050919050565b6000801b61178781611ad6565b60005b838390508110156117ca576117b78484838181106117ab576117aa614bc5565b5b90506020020135611f2d565b80806117c290614bf4565b91505061178a565b50505050565b6117e16117db611b35565b83611bf6565b611820576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118179061497c565b60405180910390fd5b61182c848484846122ec565b50505050565b7f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d81565b600063bc197c8160e01b905095945050505050565b60008060006013600085815260200190815260200160002090508060000160009054906101000a900460ff166118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd90614fc8565b60405180910390fd5b8060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600101549250925050915091565b606061191582611aea565b600061191f612348565b9050600081511161193f576040518060200160405280600081525061196a565b8061194984612357565b60405160200161195a929190615024565b6040516020818303038152906040525b915050919050565b61197b82610b76565b61198481611ad6565b61198e8383611d8e565b505050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600063f23a6e6160e01b905095945050505050565b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611acf5750611ace82612425565b5b9050919050565b611ae781611ae2611b35565b612437565b50565b611af3816124bc565b611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2990614df2565b60405180910390fd5b50565b600033905090565b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611bb0836111ec565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611c02836111ec565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c445750611c4381856119b3565b5b80611c8257508373ffffffffffffffffffffffffffffffffffffffff16611c6a846109ac565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b611c936124fd565b611c9e838383612547565b505050565b6000612710905090565b611cb78282611506565b611d8a5760016002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d2f611b35565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611d988282611506565b15611e6c5760006002600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e11611b35565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b611e78612840565b6000600f60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611ebc611b35565b604051611ec99190613db2565b60405180910390a1565b611edd8282612889565b610d05611ee8610b09565b1115611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2090615094565b60405180910390fd5b5050565b611f3681612aa6565b50565b80600d9081611f489190615260565b5050565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611f916124fd565b6001600f60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611fd5611b35565b604051611fe29190613db2565b60405180910390a1565b611ff4611ca3565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115612052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612049906153a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890615410565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e59061547c565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122df9190613ba9565b60405180910390a3505050565b6122f7848484611c8b565b61230384848484612abb565b612342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123399061550e565b60405180910390fd5b50505050565b6060612352612c42565b905090565b60606000600161236684612cd4565b01905060008167ffffffffffffffff811115612385576123846140aa565b5b6040519080825280601f01601f1916602001820160405280156123b75781602001600182028036833780820191505090505b509050600082602001820190505b60011561241a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161240e5761240d614a0d565b5b049450600085036123c5575b819350505050919050565b600061243082612e27565b9050919050565b6124418282611506565b6124b85761244e81612ea1565b61245c8360001c6020612ece565b60405160200161246d9291906155c6565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af9190613d1e565b60405180910390fd5b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166124de83611f4c565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6125056111d5565b15612545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253c9061564c565b60405180910390fd5b565b8273ffffffffffffffffffffffffffffffffffffffff16612567826111ec565b73ffffffffffffffffffffffffffffffffffffffff16146125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b4906156de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390615770565b60405180910390fd5b612639838383600161310a565b8273ffffffffffffffffffffffffffffffffffffffff16612659826111ec565b73ffffffffffffffffffffffffffffffffffffffff16146126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a6906156de565b60405180910390fd5b6007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461283b8383836001613263565b505050565b6128486111d5565b612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e906157dc565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ef90615848565b60405180910390fd5b612901816124bc565b15612941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612938906158b4565b60405180910390fd5b61294f60008383600161310a565b612958816124bc565b15612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f906158b4565b60405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612aa2600083836001613263565b5050565b612aaf81613269565b612ab8816133b7565b50565b6000612adc8473ffffffffffffffffffffffffffffffffffffffff16613416565b15612c35578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b05611b35565b8786866040518563ffffffff1660e01b8152600401612b279493929190615929565b6020604051808303816000875af1925050508015612b6357506040513d601f19601f82011682018060405250810190612b60919061598a565b60015b612be5573d8060008114612b93576040519150601f19603f3d011682016040523d82523d6000602084013e612b98565b606091505b506000815103612bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd49061550e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c3a565b600190505b949350505050565b6060600d8054612c51906147b5565b80601f0160208091040260200160405190810160405280929190818152602001828054612c7d906147b5565b8015612cca5780601f10612c9f57610100808354040283529160200191612cca565b820191906000526020600020905b815481529060010190602001808311612cad57829003601f168201915b5050505050905090565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612d32577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612d2857612d27614a0d565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612d6f576d04ee2d6d415b85acef81000000008381612d6557612d64614a0d565b5b0492506020810190505b662386f26fc100008310612d9e57662386f26fc100008381612d9457612d93614a0d565b5b0492506010810190505b6305f5e1008310612dc7576305f5e1008381612dbd57612dbc614a0d565b5b0492506008810190505b6127108310612dec576127108381612de257612de1614a0d565b5b0492506004810190505b60648310612e0f5760648381612e0557612e04614a0d565b5b0492506002810190505b600a8310612e1e576001810190505b80915050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612e9a5750612e9982613439565b5b9050919050565b6060612ec78273ffffffffffffffffffffffffffffffffffffffff16601460ff16612ece565b9050919050565b606060006002836002612ee191906149cb565b612eeb9190614b91565b67ffffffffffffffff811115612f0457612f036140aa565b5b6040519080825280601f01601f191660200182016040528015612f365781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612f6e57612f6d614bc5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612fd257612fd1614bc5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261301291906149cb565b61301c9190614b91565b90505b60018111156130bc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061305e5761305d614bc5565b5b1a60f81b82828151811061307557613074614bc5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806130b5906159b7565b905061301f565b5060008414613100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f790615a2c565b60405180910390fd5b8091505092915050565b6013600083815260200190815260200160002060000160009054906101000a900460ff161561316e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316590614f5c565b60405180910390fd5b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132125750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324890615a98565b60405180910390fd5b61325d8484848461344b565b50505050565b50505050565b6000613274826111ec565b905061328481600084600161310a565b61328d826111ec565b90506007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46133b3816000846001613263565b5050565b60016000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000613444826135a9565b9050919050565b6134578484848461368b565b600181111561349b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349290615b2a565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036134e2576134dd81613691565b613521565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146135205761351f85826136da565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135635761355e81613847565b6135a2565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135a1576135a08482613918565b5b5b5050505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061367457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613684575061368382613997565b5b9050919050565b50505050565b600b80549050600c600083815260200190815260200160002081905550600b81908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016136e784611272565b6136f19190615b4a565b90506000600a60008481526020019081526020016000205490508181146137d6576000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000208190555081600a600083815260200190815260200160002081905550505b600a600084815260200190815260200160002060009055600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600b8054905061385b9190615b4a565b90506000600c60008481526020019081526020016000205490506000600b838154811061388b5761388a614bc5565b5b9060005260206000200154905080600b83815481106138ad576138ac614bc5565b5b906000526020600020018190555081600c600083815260200190815260200160002081905550600c600085815260200190815260200160002060009055600b8054806138fc576138fb615b7e565b5b6001900381819060005260206000200160009055905550505050565b600061392383611272565b905081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080600a600084815260200190815260200160002081905550505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613a0a5750613a0982613a11565b5b9050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613a845750613a8382613a8b565b5b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613b3e81613b09565b8114613b4957600080fd5b50565b600081359050613b5b81613b35565b92915050565b600060208284031215613b7757613b76613aff565b5b6000613b8584828501613b4c565b91505092915050565b60008115159050919050565b613ba381613b8e565b82525050565b6000602082019050613bbe6000830184613b9a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bef82613bc4565b9050919050565b613bff81613be4565b8114613c0a57600080fd5b50565b600081359050613c1c81613bf6565b92915050565b613c2b81613b8e565b8114613c3657600080fd5b50565b600081359050613c4881613c22565b92915050565b60008060408385031215613c6557613c64613aff565b5b6000613c7385828601613c0d565b9250506020613c8485828601613c39565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cc8578082015181840152602081019050613cad565b60008484015250505050565b6000601f19601f8301169050919050565b6000613cf082613c8e565b613cfa8185613c99565b9350613d0a818560208601613caa565b613d1381613cd4565b840191505092915050565b60006020820190508181036000830152613d388184613ce5565b905092915050565b6000819050919050565b613d5381613d40565b8114613d5e57600080fd5b50565b600081359050613d7081613d4a565b92915050565b600060208284031215613d8c57613d8b613aff565b5b6000613d9a84828501613d61565b91505092915050565b613dac81613be4565b82525050565b6000602082019050613dc76000830184613da3565b92915050565b60008060408385031215613de457613de3613aff565b5b6000613df285828601613c0d565b9250506020613e0385828601613d61565b9150509250929050565b613e1681613d40565b82525050565b6000602082019050613e316000830184613e0d565b92915050565b600080600060608486031215613e5057613e4f613aff565b5b6000613e5e86828701613c0d565b9350506020613e6f86828701613c0d565b9250506040613e8086828701613d61565b9150509250925092565b6000819050919050565b613e9d81613e8a565b8114613ea857600080fd5b50565b600081359050613eba81613e94565b92915050565b600060208284031215613ed657613ed5613aff565b5b6000613ee484828501613eab565b91505092915050565b613ef681613e8a565b82525050565b6000602082019050613f116000830184613eed565b92915050565b60008060408385031215613f2e57613f2d613aff565b5b6000613f3c85828601613d61565b9250506020613f4d85828601613d61565b9150509250929050565b6000604082019050613f6c6000830185613da3565b613f796020830184613e0d565b9392505050565b60008060408385031215613f9757613f96613aff565b5b6000613fa585828601613eab565b9250506020613fb685828601613c0d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ff581613d40565b82525050565b60006140078383613fec565b60208301905092915050565b6000602082019050919050565b600061402b82613fc0565b6140358185613fcb565b935061404083613fdc565b8060005b838110156140715781516140588882613ffb565b975061406383614013565b925050600181019050614044565b5085935050505092915050565b600060208201905081810360008301526140988184614020565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6140e282613cd4565b810181811067ffffffffffffffff82111715614101576141006140aa565b5b80604052505050565b6000614114613af5565b905061412082826140d9565b919050565b600067ffffffffffffffff8211156141405761413f6140aa565b5b61414982613cd4565b9050602081019050919050565b82818337600083830152505050565b600061417861417384614125565b61410a565b905082815260208101848484011115614194576141936140a5565b5b61419f848285614156565b509392505050565b600082601f8301126141bc576141bb6140a0565b5b81356141cc848260208601614165565b91505092915050565b6000602082840312156141eb576141ea613aff565b5b600082013567ffffffffffffffff81111561420957614208613b04565b5b614215848285016141a7565b91505092915050565b60006020828403121561423457614233613aff565b5b600061424284828501613c0d565b91505092915050565b60006bffffffffffffffffffffffff82169050919050565b61426c8161424b565b811461427757600080fd5b50565b60008135905061428981614263565b92915050565b600080604083850312156142a6576142a5613aff565b5b60006142b485828601613c0d565b92505060206142c58582860161427a565b9150509250929050565b6000806000606084860312156142e8576142e7613aff565b5b60006142f686828701613d61565b935050602061430786828701613c0d565b925050604061431886828701613d61565b9150509250925092565b600080fd5b600080fd5b60008083601f840112614342576143416140a0565b5b8235905067ffffffffffffffff81111561435f5761435e614322565b5b60208301915083602082028301111561437b5761437a614327565b5b9250929050565b6000806020838503121561439957614398613aff565b5b600083013567ffffffffffffffff8111156143b7576143b6613b04565b5b6143c38582860161432c565b92509250509250929050565b600067ffffffffffffffff8211156143ea576143e96140aa565b5b6143f382613cd4565b9050602081019050919050565b600061441361440e846143cf565b61410a565b90508281526020810184848401111561442f5761442e6140a5565b5b61443a848285614156565b509392505050565b600082601f830112614457576144566140a0565b5b8135614467848260208601614400565b91505092915050565b6000806000806080858703121561448a57614489613aff565b5b600061449887828801613c0d565b94505060206144a987828801613c0d565b93505060406144ba87828801613d61565b925050606085013567ffffffffffffffff8111156144db576144da613b04565b5b6144e787828801614442565b91505092959194509250565b600067ffffffffffffffff82111561450e5761450d6140aa565b5b602082029050602081019050919050565b600061453261452d846144f3565b61410a565b9050808382526020820190506020840283018581111561455557614554614327565b5b835b8181101561457e578061456a8882613d61565b845260208401935050602081019050614557565b5050509392505050565b600082601f83011261459d5761459c6140a0565b5b81356145ad84826020860161451f565b91505092915050565b600080600080600060a086880312156145d2576145d1613aff565b5b60006145e088828901613c0d565b95505060206145f188828901613c0d565b945050604086013567ffffffffffffffff81111561461257614611613b04565b5b61461e88828901614588565b935050606086013567ffffffffffffffff81111561463f5761463e613b04565b5b61464b88828901614588565b925050608086013567ffffffffffffffff81111561466c5761466b613b04565b5b61467888828901614442565b9150509295509295909350565b61468e81613b09565b82525050565b60006020820190506146a96000830184614685565b92915050565b600080604083850312156146c6576146c5613aff565b5b60006146d485828601613c0d565b92505060206146e585828601613c0d565b9150509250929050565b600080600080600060a0868803121561470b5761470a613aff565b5b600061471988828901613c0d565b955050602061472a88828901613c0d565b945050604061473b88828901613d61565b935050606061474c88828901613d61565b925050608086013567ffffffffffffffff81111561476d5761476c613b04565b5b61477988828901614442565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147cd57607f821691505b6020821081036147e0576147df614786565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614842602183613c99565b915061484d826147e6565b604082019050919050565b6000602082019050818103600083015261487181614835565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006148d4603d83613c99565b91506148df82614878565b604082019050919050565b60006020820190508181036000830152614903816148c7565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000614966602d83613c99565b91506149718261490a565b604082019050919050565b6000602082019050818103600083015261499581614959565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149d682613d40565b91506149e183613d40565b92508282026149ef81613d40565b91508282048414831517614a0657614a0561499c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a4782613d40565b9150614a5283613d40565b925082614a6257614a61614a0d565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614ac9602b83613c99565b9150614ad482614a6d565b604082019050919050565b60006020820190508181036000830152614af881614abc565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614b5b602f83613c99565b9150614b6682614aff565b604082019050919050565b60006020820190508181036000830152614b8a81614b4e565b9050919050565b6000614b9c82613d40565b9150614ba783613d40565b9250828201905080821115614bbf57614bbe61499c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614bff82613d40565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c3157614c3061499c565b5b600182019050919050565b7f52656e74206e6f7420696e2070726f67726573732e0000000000000000000000600082015250565b6000614c72601583613c99565b9150614c7d82614c3c565b602082019050919050565b60006020820190508181036000830152614ca181614c65565b9050919050565b7f52656e7420706572696f64206e6f74206f7665722e0000000000000000000000600082015250565b6000614cde601583613c99565b9150614ce982614ca8565b602082019050919050565b60006020820190508181036000830152614d0d81614cd1565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614d70602c83613c99565b9150614d7b82614d14565b604082019050919050565b60006020820190508181036000830152614d9f81614d63565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614ddc601883613c99565b9150614de782614da6565b602082019050919050565b60006020820190508181036000830152614e0b81614dcf565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614e6e602983613c99565b9150614e7982614e12565b604082019050919050565b60006020820190508181036000830152614e9d81614e61565b9050919050565b7f4e6f7420756e6465722072656e742e0000000000000000000000000000000000600082015250565b6000614eda600f83613c99565b9150614ee582614ea4565b602082019050919050565b60006020820190508181036000830152614f0981614ecd565b9050919050565b7f43757272656e746c792072656e7465642e000000000000000000000000000000600082015250565b6000614f46601183613c99565b9150614f5182614f10565b602082019050919050565b60006020820190508181036000830152614f7581614f39565b9050919050565b7f4e6f742072656e7465642063757272656e746c792e0000000000000000000000600082015250565b6000614fb2601583613c99565b9150614fbd82614f7c565b602082019050919050565b60006020820190508181036000830152614fe181614fa5565b9050919050565b600081905092915050565b6000614ffe82613c8e565b6150088185614fe8565b9350615018818560208601613caa565b80840191505092915050565b60006150308285614ff3565b915061503c8284614ff3565b91508190509392505050565b7f4d617820737570706c7920726561636865642e00000000000000000000000000600082015250565b600061507e601383613c99565b915061508982615048565b602082019050919050565b600060208201905081810360008301526150ad81615071565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826150d9565b61512086836150d9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061515d61515861515384613d40565b615138565b613d40565b9050919050565b6000819050919050565b61517783615142565b61518b61518382615164565b8484546150e6565b825550505050565b600090565b6151a0615193565b6151ab81848461516e565b505050565b5b818110156151cf576151c4600082615198565b6001810190506151b1565b5050565b601f821115615214576151e5816150b4565b6151ee846150c9565b810160208510156151fd578190505b615211615209856150c9565b8301826151b0565b50505b505050565b600082821c905092915050565b600061523760001984600802615219565b1980831691505092915050565b60006152508383615226565b9150826002028217905092915050565b61526982613c8e565b67ffffffffffffffff811115615282576152816140aa565b5b61528c82546147b5565b6152978282856151d3565b600060209050601f8311600181146152ca57600084156152b8578287015190505b6152c28582615244565b86555061532a565b601f1984166152d8866150b4565b60005b82811015615300578489015182556001820191506020850194506020810190506152db565b8683101561531d5784890151615319601f891682615226565b8355505b6001600288020188555050505b505050505050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600061538e602a83613c99565b915061539982615332565b604082019050919050565b600060208201905081810360008301526153bd81615381565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006153fa601983613c99565b9150615405826153c4565b602082019050919050565b60006020820190508181036000830152615429816153ed565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615466601983613c99565b915061547182615430565b602082019050919050565b6000602082019050818103600083015261549581615459565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006154f8603283613c99565b91506155038261549c565b604082019050919050565b60006020820190508181036000830152615527816154eb565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000615564601783614fe8565b915061556f8261552e565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006155b0601183614fe8565b91506155bb8261557a565b601182019050919050565b60006155d182615557565b91506155dd8285614ff3565b91506155e8826155a3565b91506155f48284614ff3565b91508190509392505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000615636601083613c99565b915061564182615600565b602082019050919050565b6000602082019050818103600083015261566581615629565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006156c8602583613c99565b91506156d38261566c565b604082019050919050565b600060208201905081810360008301526156f7816156bb565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061575a602483613c99565b9150615765826156fe565b604082019050919050565b600060208201905081810360008301526157898161574d565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006157c6601483613c99565b91506157d182615790565b602082019050919050565b600060208201905081810360008301526157f5816157b9565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615832602083613c99565b915061583d826157fc565b602082019050919050565b6000602082019050818103600083015261586181615825565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061589e601c83613c99565b91506158a982615868565b602082019050919050565b600060208201905081810360008301526158cd81615891565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006158fb826158d4565b61590581856158df565b9350615915818560208601613caa565b61591e81613cd4565b840191505092915050565b600060808201905061593e6000830187613da3565b61594b6020830186613da3565b6159586040830185613e0d565b818103606083015261596a81846158f0565b905095945050505050565b60008151905061598481613b35565b92915050565b6000602082840312156159a05761599f613aff565b5b60006159ae84828501615975565b91505092915050565b60006159c282613d40565b9150600082036159d5576159d461499c565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615a16602083613c99565b9150615a21826159e0565b602082019050919050565b60006020820190508181036000830152615a4581615a09565b9050919050565b7f426c61636b6c69737465642e0000000000000000000000000000000000000000600082015250565b6000615a82600c83613c99565b9150615a8d82615a4c565b602082019050919050565b60006020820190508181036000830152615ab181615a75565b9050919050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615b14603583613c99565b9150615b1f82615ab8565b604082019050919050565b60006020820190508181036000830152615b4381615b07565b9050919050565b6000615b5582613d40565b9150615b6083613d40565b9250828203905081811115615b7857615b7761499c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220fbeec9fe1e3fb04b58a5011d5e8cdf4a1f5b32295ffb5ddbd00eb84007cb0b4364736f6c63430008130033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000003568747470733a2f2f6d6376657273656170692e6d6376657273652e6f6e652f6d6574613f636f6c3d7472757826746f6b656e49643d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4d4356455253452054525558000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045452555800000000000000000000000000000000000000000000000000000000