Loading
[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" }, { "internalType": "string", "name": "_initBaseURI", "type": "string" }, { "internalType": "contract IERC20", "name": "_want", "type": "address" }, { "internalType": "uint256", "name": "_cost", "type": "uint256" }, { "internalType": "uint256", "name": "_mintLimit", "type": "uint256" }, { "internalType": "contract IERC721", "name": "_fastpass", "type": "address" }, { "internalType": "contract IERC20", "name": "_oracleToken", "type": "address" }, { "internalType": "address", "name": "_oracleUser", "type": "address" } ], "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": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "addressMintedAmount", "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": [], "name": "baseExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "devmint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fastpass", "outputs": [ { "internalType": "contract IERC721", "name": "", "type": "address" } ], "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": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_number", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "onlyWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "_newBaseExtension", "type": "string" } ], "name": "setBaseExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newCost", "type": "uint256" } ], "name": "setCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC721", "name": "_fastpass", "type": "address" } ], "name": "setFastpass", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newMintLimit", "type": "uint256" } ], "name": "setMintLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setOnlyWhitelisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_oracleUser", "type": "address" }, { "internalType": "contract IERC20", "name": "_oracleToken", "type": "address" } ], "name": "setOracle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "_want", "type": "address" } ], "name": "setWant", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyRemaining", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "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": [], "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": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "walletOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "want", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60a06040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600e90816200004a919062000985565b506000601160006101000a81548160ff0219169083151502179055506001601160016101000a81548160ff0219169083151502179055503480156200008e57600080fd5b5060405162006c1a38038062006c1a8339818101604052810190620000b4919062000cfa565b89898160009081620000c7919062000985565b508060019081620000d9919062000985565b505050620000fc620000f06200018260201b60201c565b6200018a60201b60201c565b8760808181525050876016819055506200011c876200025060201b60201c565b6200012d86620002f460201b60201c565b6200013e85620003c760201b60201c565b6200014f846200046060201b60201c565b6200016083620004f960201b60201c565b620001728183620005cc60201b60201c565b5050505050505050505062000ed0565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002606200018260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000286620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d69062000eae565b60405180910390fd5b80600d9081620002f0919062000985565b5050565b620003046200018260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200032a620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037a9062000eae565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b620003d76200018260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003fd620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000456576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200044d9062000eae565b60405180910390fd5b80600f8190555050565b620004706200018260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000496620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004e69062000eae565b60405180910390fd5b8060108190555050565b620005096200018260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200052f620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000588576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200057f9062000eae565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b620005dc6200018260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000602620006e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200065b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006529062000eae565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200078d57607f821691505b602082108103620007a357620007a262000745565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200080d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007ce565b620008198683620007ce565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000866620008606200085a8462000831565b6200083b565b62000831565b9050919050565b6000819050919050565b620008828362000845565b6200089a62000891826200086d565b848454620007db565b825550505050565b600090565b620008b1620008a2565b620008be81848462000877565b505050565b5b81811015620008e657620008da600082620008a7565b600181019050620008c4565b5050565b601f8211156200093557620008ff81620007a9565b6200090a84620007be565b810160208510156200091a578190505b620009326200092985620007be565b830182620008c3565b50505b505050565b600082821c905092915050565b60006200095a600019846008026200093a565b1980831691505092915050565b600062000975838362000947565b9150826002028217905092915050565b62000990826200070b565b67ffffffffffffffff811115620009ac57620009ab62000716565b5b620009b8825462000774565b620009c5828285620008ea565b600060209050601f831160018114620009fd5760008415620009e8578287015190505b620009f4858262000967565b86555062000a64565b601f19841662000a0d86620007a9565b60005b8281101562000a375784890151825560018201915060208501945060208101905062000a10565b8683101562000a57578489015162000a53601f89168262000947565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b62000aa68262000a8a565b810181811067ffffffffffffffff8211171562000ac85762000ac762000716565b5b80604052505050565b600062000add62000a6c565b905062000aeb828262000a9b565b919050565b600067ffffffffffffffff82111562000b0e5762000b0d62000716565b5b62000b198262000a8a565b9050602081019050919050565b60005b8381101562000b4657808201518184015260208101905062000b29565b8381111562000b56576000848401525b50505050565b600062000b7362000b6d8462000af0565b62000ad1565b90508281526020810184848401111562000b925762000b9162000a85565b5b62000b9f84828562000b26565b509392505050565b600082601f83011262000bbf5762000bbe62000a80565b5b815162000bd184826020860162000b5c565b91505092915050565b62000be58162000831565b811462000bf157600080fd5b50565b60008151905062000c058162000bda565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c388262000c0b565b9050919050565b600062000c4c8262000c2b565b9050919050565b62000c5e8162000c3f565b811462000c6a57600080fd5b50565b60008151905062000c7e8162000c53565b92915050565b600062000c918262000c2b565b9050919050565b62000ca38162000c84565b811462000caf57600080fd5b50565b60008151905062000cc38162000c98565b92915050565b62000cd48162000c2b565b811462000ce057600080fd5b50565b60008151905062000cf48162000cc9565b92915050565b6000806000806000806000806000806101408b8d03121562000d215762000d2062000a76565b5b60008b015167ffffffffffffffff81111562000d425762000d4162000a7b565b5b62000d508d828e0162000ba7565b9a505060208b015167ffffffffffffffff81111562000d745762000d7362000a7b565b5b62000d828d828e0162000ba7565b995050604062000d958d828e0162000bf4565b98505060608b015167ffffffffffffffff81111562000db95762000db862000a7b565b5b62000dc78d828e0162000ba7565b975050608062000dda8d828e0162000c6d565b96505060a062000ded8d828e0162000bf4565b95505060c062000e008d828e0162000bf4565b94505060e062000e138d828e0162000cb2565b93505061010062000e278d828e0162000c6d565b92505061012062000e3b8d828e0162000ce3565b9150509295989b9194979a5092959850565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e9660208362000e4d565b915062000ea38262000e5e565b602082019050919050565b6000602082019050818103600083015262000ec98162000e87565b9050919050565b608051615d2e62000eec60003960006126ee0152615d2e6000f3fe60806040526004361061026b5760003560e01c80635db79050116101445780639e6a1d7d116100b6578063c87b56dd1161007a578063c87b56dd14610980578063ca5f5c62146109bd578063d5abeb01146109e8578063da3ef23f14610a13578063e985e9c514610a3c578063f2fde38b14610a79576102ab565b80639e6a1d7d146108b1578063a0712d68146108da578063a22cb46514610903578063b88d4fde1461092c578063c668286214610955576102ab565b8063715018a611610108578063715018a6146107c55780637a776b06146107dc5780638da5cb5b1461080557806395d89b4114610830578063996517cf1461085b5780639c70b51214610886576102ab565b80635db79050146106ce5780635edca25b146106f75780636352211e146107205780636c0360eb1461075d57806370a0823114610788576102ab565b80633c952764116101dd57806344a0d68a116101a157806344a0d68a146105c25780634f6ccce7146105eb57806351cff8d91461062857806355f804b3146106515780635c38eb3a1461067a5780635c975abb146106a3576102ab565b80633c952764146104cb5780633cd7b152146104f45780633e38fe801461053157806342842e0e1461055c578063438b630014610585576102ab565b806313faede61161022f57806313faede6146103a757806318160ddd146103d25780631f1fcd51146103fd57806323b872dd146104285780632f745c59146104515780633af32abf1461048e576102ab565b806301ffc9a7146102b057806302329a29146102ed57806306fdde0314610316578063081812fc14610341578063095ea7b31461037e576102ab565b366102ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a290613bb6565b60405180910390fd5b600080fd5b3480156102bc57600080fd5b506102d760048036038101906102d29190613c42565b610aa2565b6040516102e49190613c8a565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190613cd1565b610b1c565b005b34801561032257600080fd5b5061032b610bb5565b6040516103389190613d86565b60405180910390f35b34801561034d57600080fd5b5061036860048036038101906103639190613dde565b610c47565b6040516103759190613e4c565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190613e93565b610ccc565b005b3480156103b357600080fd5b506103bc610de3565b6040516103c99190613ee2565b60405180910390f35b3480156103de57600080fd5b506103e7610de9565b6040516103f49190613ee2565b60405180910390f35b34801561040957600080fd5b50610412610df6565b60405161041f9190613f5c565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a9190613f77565b610e1c565b005b34801561045d57600080fd5b5061047860048036038101906104739190613e93565b610e7c565b6040516104859190613ee2565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b09190613fca565b610f21565b6040516104c29190613c8a565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190613cd1565b610fe0565b005b34801561050057600080fd5b5061051b60048036038101906105169190613fca565b611079565b6040516105289190613ee2565b60405180910390f35b34801561053d57600080fd5b50610546611091565b6040516105539190613ee2565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613f77565b611097565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613fca565b6110b7565b6040516105b991906140b5565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e49190613dde565b611165565b005b3480156105f757600080fd5b50610612600480360381019061060d9190613dde565b6111eb565b60405161061f9190613ee2565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190613fca565b61125c565b005b34801561065d57600080fd5b506106786004803603810190610673919061420c565b6113d9565b005b34801561068657600080fd5b506106a1600480360381019061069c9190614293565b611468565b005b3480156106af57600080fd5b506106b861156a565b6040516106c59190613c8a565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f0919061439b565b61157d565b005b34801561070357600080fd5b5061071e600480360381019061071991906143e4565b61178b565b005b34801561072c57600080fd5b5061074760048036038101906107429190613dde565b61184b565b6040516107549190613e4c565b60405180910390f35b34801561076957600080fd5b506107726118fc565b60405161077f9190613d86565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190613fca565b61198a565b6040516107bc9190613ee2565b60405180910390f35b3480156107d157600080fd5b506107da611a41565b005b3480156107e857600080fd5b5061080360048036038101906107fe919061444f565b611ac9565b005b34801561081157600080fd5b5061081a611b89565b6040516108279190613e4c565b60405180910390f35b34801561083c57600080fd5b50610845611bb3565b6040516108529190613d86565b60405180910390f35b34801561086757600080fd5b50610870611c45565b60405161087d9190613ee2565b60405180910390f35b34801561089257600080fd5b5061089b611c4b565b6040516108a89190613c8a565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d39190613dde565b611c5e565b005b3480156108e657600080fd5b5061090160048036038101906108fc9190613dde565b611ce4565b005b34801561090f57600080fd5b5061092a6004803603810190610925919061447c565b6123ac565b005b34801561093857600080fd5b50610953600480360381019061094e919061455d565b61252c565b005b34801561096157600080fd5b5061096a61258e565b6040516109779190613d86565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190613dde565b61261c565b6040516109b49190613d86565b60405180910390f35b3480156109c957600080fd5b506109d26126c6565b6040516109df9190614601565b60405180910390f35b3480156109f457600080fd5b506109fd6126ec565b604051610a0a9190613ee2565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a35919061420c565b612710565b005b348015610a4857600080fd5b50610a636004803603810190610a5e919061461c565b61279f565b604051610a709190613c8a565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b9190613fca565b612833565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b155750610b148261292a565b5b9050919050565b610b24612a0c565b73ffffffffffffffffffffffffffffffffffffffff16610b42611b89565b73ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906146a8565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b606060008054610bc4906146f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf0906146f7565b8015610c3d5780601f10610c1257610100808354040283529160200191610c3d565b820191906000526020600020905b815481529060010190602001808311610c2057829003601f168201915b5050505050905090565b6000610c5282612a14565b610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c889061479a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cd78261184b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e9061482c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d66612a0c565b73ffffffffffffffffffffffffffffffffffffffff161480610d955750610d9481610d8f612a0c565b61279f565b5b610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb906148be565b60405180910390fd5b610dde8383612a80565b505050565b600f5481565b6000600880549050905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e2d610e27612a0c565b82612b39565b610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390614950565b60405180910390fd5b610e77838383612c17565b505050565b6000610e878361198a565b8210610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf906149e2565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610f7f9190613e4c565b602060405180830381865afa158015610f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc09190614a17565b90506000811115610fd5576001915050610fdb565b60009150505b919050565b610fe8612a0c565b73ffffffffffffffffffffffffffffffffffffffff16611006611b89565b73ffffffffffffffffffffffffffffffffffffffff161461105c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611053906146a8565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915090505481565b60165481565b6110b28383836040518060200160405280600081525061252c565b505050565b606060006110c48361198a565b905060008167ffffffffffffffff8111156110e2576110e16140e1565b5b6040519080825280602002602001820160405280156111105781602001602082028036833780820191505090505b50905060005b8281101561115a576111288582610e7c565b82828151811061113b5761113a614a44565b5b602002602001018181525050808061115290614aa2565b915050611116565b508092505050919050565b61116d612a0c565b73ffffffffffffffffffffffffffffffffffffffff1661118b611b89565b73ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d8906146a8565b60405180910390fd5b80600f8190555050565b60006111f5610de9565b8210611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90614b5c565b60405180910390fd5b6008828154811061124a57611249614a44565b5b90600052602060002001549050919050565b611264612a0c565b73ffffffffffffffffffffffffffffffffffffffff16611282611b89565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf906146a8565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113139190613e4c565b602060405180830381865afa158015611330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113549190614a17565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611391929190614b7c565b6020604051808303816000875af11580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d49190614bba565b505050565b6113e1612a0c565b73ffffffffffffffffffffffffffffffffffffffff166113ff611b89565b73ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c906146a8565b60405180910390fd5b80600d90816114649190614d89565b5050565b611470612a0c565b73ffffffffffffffffffffffffffffffffffffffff1661148e611b89565b73ffffffffffffffffffffffffffffffffffffffff16146114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db906146a8565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900460ff1681565b611585612a0c565b73ffffffffffffffffffffffffffffffffffffffff166115a3611b89565b73ffffffffffffffffffffffffffffffffffffffff16146115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0906146a8565b60405180910390fd5b600081519050806016541015611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90614ea7565b60405180910390fd5b60003a4342446001436116579190614ec7565b40600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016116d59190613e4c565b602060405180830381865afa1580156116f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117169190614a17565b3060405160200161172d9796959493929190614f14565b60405160208183030381529060405280519060200120905060005b828110156117855761177484828151811061176657611765614a44565b5b602002602001015183612e72565b8061177e90614aa2565b9050611748565b50505050565b611793612a0c565b73ffffffffffffffffffffffffffffffffffffffff166117b1611b89565b73ffffffffffffffffffffffffffffffffffffffff1614611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe906146a8565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90614ff5565b60405180910390fd5b80915050919050565b600d8054611909906146f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611935906146f7565b80156119825780601f1061195757610100808354040283529160200191611982565b820191906000526020600020905b81548152906001019060200180831161196557829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190615087565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a49612a0c565b73ffffffffffffffffffffffffffffffffffffffff16611a67611b89565b73ffffffffffffffffffffffffffffffffffffffff1614611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab4906146a8565b60405180910390fd5b611ac76000612ea7565b565b611ad1612a0c565b73ffffffffffffffffffffffffffffffffffffffff16611aef611b89565b73ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c906146a8565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611bc2906146f7565b80601f0160208091040260200160405190810160405280929190818152602001828054611bee906146f7565b8015611c3b5780601f10611c1057610100808354040283529160200191611c3b565b820191906000526020600020905b815481529060010190602001808311611c1e57829003601f168201915b5050505050905090565b60105481565b601160019054906101000a900460ff1681565b611c66612a0c565b73ffffffffffffffffffffffffffffffffffffffff16611c84611b89565b73ffffffffffffffffffffffffffffffffffffffff1614611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd1906146a8565b60405180910390fd5b8060108190555050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4990615119565b60405180910390fd5b60008111611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c90615185565b60405180910390fd5b806016541015611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd190614ea7565b60405180910390fd5b601160009054906101000a900460ff1615611e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e21906151f1565b60405180910390fd5b611e32611b89565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f585760105481601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb29190615211565b1115611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea906152d9565b60405180910390fd5b60011515601160019054906101000a900460ff16151503611f5757611f1733610f21565b611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90615345565b60405180910390fd5b5b5b6000600f54111561222a57600f5481611f719190615365565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611fcc9190613e4c565b602060405180830381865afa158015611fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200d9190614a17565b101561204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061540b565b60405180910390fd5b600f548161205c9190615365565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016120b992919061542b565b602060405180830381865afa1580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa9190614a17565b101561213b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612132906154a0565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330600f54856121899190615365565b6040518463ffffffff1660e01b81526004016121a7939291906154c0565b6020604051808303816000875af11580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea9190614bba565b612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090615543565b60405180910390fd5b5b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122799190615211565b9250508190555060003a4342446001436122939190614ec7565b40600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123119190613e4c565b602060405180830381865afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190614a17565b306040516020016123699796959493929190614f14565b60405160208183030381529060405280519060200120905060005b828110156123a7576123963383612e72565b806123a090614aa2565b9050612384565b505050565b6123b4612a0c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612418906155af565b60405180910390fd5b806005600061242e612a0c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166124db612a0c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125209190613c8a565b60405180910390a35050565b61253d612537612a0c565b83612b39565b61257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257390614950565b60405180910390fd5b61258884848484612f6d565b50505050565b600e805461259b906146f7565b80601f01602080910402602001604051908101604052809291908181526020018280546125c7906146f7565b80156126145780601f106125e957610100808354040283529160200191612614565b820191906000526020600020905b8154815290600101906020018083116125f757829003601f168201915b505050505081565b606061262782612a14565b612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90615641565b60405180910390fd5b6000612670612fc9565b9050600081511161269057604051806020016040528060008152506126be565b8061269a8461305b565b600e6040516020016126ae93929190615720565b6040516020818303038152906040525b915050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b612718612a0c565b73ffffffffffffffffffffffffffffffffffffffff16612736611b89565b73ffffffffffffffffffffffffffffffffffffffff161461278c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612783906146a8565b60405180910390fd5b80600e908161279b9190614d89565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61283b612a0c565b73ffffffffffffffffffffffffffffffffffffffff16612859611b89565b73ffffffffffffffffffffffffffffffffffffffff16146128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a6906146a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361291e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612915906157c3565b60405180910390fd5b61292781612ea7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806129f557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612a055750612a04826131bb565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612af38361184b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612b4482612a14565b612b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7a90615855565b60405180910390fd5b6000612b8e8361184b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612bfd57508373ffffffffffffffffffffffffffffffffffffffff16612be584610c47565b73ffffffffffffffffffffffffffffffffffffffff16145b80612c0e5750612c0d818561279f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612c378261184b565b73ffffffffffffffffffffffffffffffffffffffff1614612c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c84906158e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf390615979565b60405180910390fd5b612d07838383613225565b612d12600082612a80565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d629190614ec7565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612db99190615211565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b601660008154612e8190615999565b919050819055506000612e9660165483613337565b9050612ea283826133b2565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612f78848484612c17565b612f84848484846133d0565b612fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fba90615a34565b60405180910390fd5b50505050565b6060600d8054612fd8906146f7565b80601f0160208091040260200160405190810160405280929190818152602001828054613004906146f7565b80156130515780601f1061302657610100808354040283529160200191613051565b820191906000526020600020905b81548152906001019060200180831161303457829003601f168201915b5050505050905090565b6060600082036130a2576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506131b6565b600082905060005b600082146130d45780806130bd90614aa2565b915050600a826130cd9190615a83565b91506130aa565b60008167ffffffffffffffff8111156130f0576130ef6140e1565b5b6040519080825280601f01601f1916602001820160405280156131225781602001600182028036833780820191505090505b5090505b600085146131af5760018261313b9190614ec7565b9150600a8561314a9190615ab4565b60306131569190615211565b60f81b81838151811061316c5761316b614a44565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856131a89190615a83565b9450613126565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613230838383613557565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132725761326d8161355c565b6132b1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146132b0576132af83826135a5565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132f3576132ee81613712565b613332565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146133315761333082826137e3565b5b5b505050565b600080828460405160200161334d929190615ae5565b6040516020818303038152906040528051906020012060001c90506000841115613394576000848261337f9190615ab4565b905061338b8186613862565b925050506133ac565b60156000808152602001908152602001600020549150505b92915050565b6133cc82826040518060200160405280600081525061391e565b5050565b60006133f18473ffffffffffffffffffffffffffffffffffffffff16613979565b1561354a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261341a612a0c565b8786866040518563ffffffff1660e01b815260040161343c9493929190615b63565b6020604051808303816000875af192505050801561347857506040513d601f19601f820116820180604052508101906134759190615bc4565b60015b6134fa573d80600081146134a8576040519150601f19603f3d011682016040523d82523d6000602084013e6134ad565b606091505b5060008151036134f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e990615a34565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061354f565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016135b28461198a565b6135bc9190614ec7565b90506000600760008481526020019081526020016000205490508181146136a1576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506137269190614ec7565b905060006009600084815260200190815260200160002054905060006008838154811061375657613755614a44565b5b90600052602060002001549050806008838154811061377857613777614a44565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806137c7576137c6615bf1565b5b6001900381819060005260206000200160009055905550505050565b60006137ee8361198a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60008060156000858152602001908152602001600020549050600080820361388c57849050613890565b8190505b8385146139135760006015600086815260200190815260200160002054036138cf57836015600087815260200190815260200160002081905550613912565b6015600085815260200190815260200160002054601560008781526020019081526020016000208190555060156000858152602001908152602001600020600090555b5b809250505092915050565b613928838361398c565b61393560008484846133d0565b613974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161396b90615a34565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f290615c6c565b60405180910390fd5b613a0481612a14565b15613a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3b90615cd8565b60405180910390fd5b613a5060008383613225565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613aa09190615211565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600082825260208201905092915050565b7f446f206e6f742073656e642047617320546f6b656e732e000000000000000000600082015250565b6000613ba0601783613b59565b9150613bab82613b6a565b602082019050919050565b60006020820190508181036000830152613bcf81613b93565b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613c1f81613bea565b8114613c2a57600080fd5b50565b600081359050613c3c81613c16565b92915050565b600060208284031215613c5857613c57613be0565b5b6000613c6684828501613c2d565b91505092915050565b60008115159050919050565b613c8481613c6f565b82525050565b6000602082019050613c9f6000830184613c7b565b92915050565b613cae81613c6f565b8114613cb957600080fd5b50565b600081359050613ccb81613ca5565b92915050565b600060208284031215613ce757613ce6613be0565b5b6000613cf584828501613cbc565b91505092915050565b600081519050919050565b60005b83811015613d27578082015181840152602081019050613d0c565b83811115613d36576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d5882613cfe565b613d628185613b59565b9350613d72818560208601613d09565b613d7b81613d3c565b840191505092915050565b60006020820190508181036000830152613da08184613d4d565b905092915050565b6000819050919050565b613dbb81613da8565b8114613dc657600080fd5b50565b600081359050613dd881613db2565b92915050565b600060208284031215613df457613df3613be0565b5b6000613e0284828501613dc9565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e3682613e0b565b9050919050565b613e4681613e2b565b82525050565b6000602082019050613e616000830184613e3d565b92915050565b613e7081613e2b565b8114613e7b57600080fd5b50565b600081359050613e8d81613e67565b92915050565b60008060408385031215613eaa57613ea9613be0565b5b6000613eb885828601613e7e565b9250506020613ec985828601613dc9565b9150509250929050565b613edc81613da8565b82525050565b6000602082019050613ef76000830184613ed3565b92915050565b6000819050919050565b6000613f22613f1d613f1884613e0b565b613efd565b613e0b565b9050919050565b6000613f3482613f07565b9050919050565b6000613f4682613f29565b9050919050565b613f5681613f3b565b82525050565b6000602082019050613f716000830184613f4d565b92915050565b600080600060608486031215613f9057613f8f613be0565b5b6000613f9e86828701613e7e565b9350506020613faf86828701613e7e565b9250506040613fc086828701613dc9565b9150509250925092565b600060208284031215613fe057613fdf613be0565b5b6000613fee84828501613e7e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61402c81613da8565b82525050565b600061403e8383614023565b60208301905092915050565b6000602082019050919050565b600061406282613ff7565b61406c8185614002565b935061407783614013565b8060005b838110156140a857815161408f8882614032565b975061409a8361404a565b92505060018101905061407b565b5085935050505092915050565b600060208201905081810360008301526140cf8184614057565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61411982613d3c565b810181811067ffffffffffffffff82111715614138576141376140e1565b5b80604052505050565b600061414b613bd6565b90506141578282614110565b919050565b600067ffffffffffffffff821115614177576141766140e1565b5b61418082613d3c565b9050602081019050919050565b82818337600083830152505050565b60006141af6141aa8461415c565b614141565b9050828152602081018484840111156141cb576141ca6140dc565b5b6141d684828561418d565b509392505050565b600082601f8301126141f3576141f26140d7565b5b813561420384826020860161419c565b91505092915050565b60006020828403121561422257614221613be0565b5b600082013567ffffffffffffffff8111156142405761423f613be5565b5b61424c848285016141de565b91505092915050565b600061426082613e2b565b9050919050565b61427081614255565b811461427b57600080fd5b50565b60008135905061428d81614267565b92915050565b600080604083850312156142aa576142a9613be0565b5b60006142b885828601613e7e565b92505060206142c98582860161427e565b9150509250929050565b600067ffffffffffffffff8211156142ee576142ed6140e1565b5b602082029050602081019050919050565b600080fd5b6000614317614312846142d3565b614141565b9050808382526020820190506020840283018581111561433a576143396142ff565b5b835b81811015614363578061434f8882613e7e565b84526020840193505060208101905061433c565b5050509392505050565b600082601f830112614382576143816140d7565b5b8135614392848260208601614304565b91505092915050565b6000602082840312156143b1576143b0613be0565b5b600082013567ffffffffffffffff8111156143cf576143ce613be5565b5b6143db8482850161436d565b91505092915050565b6000602082840312156143fa576143f9613be0565b5b60006144088482850161427e565b91505092915050565b600061441c82613e2b565b9050919050565b61442c81614411565b811461443757600080fd5b50565b60008135905061444981614423565b92915050565b60006020828403121561446557614464613be0565b5b60006144738482850161443a565b91505092915050565b6000806040838503121561449357614492613be0565b5b60006144a185828601613e7e565b92505060206144b285828601613cbc565b9150509250929050565b600067ffffffffffffffff8211156144d7576144d66140e1565b5b6144e082613d3c565b9050602081019050919050565b60006145006144fb846144bc565b614141565b90508281526020810184848401111561451c5761451b6140dc565b5b61452784828561418d565b509392505050565b600082601f830112614544576145436140d7565b5b81356145548482602086016144ed565b91505092915050565b6000806000806080858703121561457757614576613be0565b5b600061458587828801613e7e565b945050602061459687828801613e7e565b93505060406145a787828801613dc9565b925050606085013567ffffffffffffffff8111156145c8576145c7613be5565b5b6145d48782880161452f565b91505092959194509250565b60006145eb82613f29565b9050919050565b6145fb816145e0565b82525050565b600060208201905061461660008301846145f2565b92915050565b6000806040838503121561463357614632613be0565b5b600061464185828601613e7e565b925050602061465285828601613e7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614692602083613b59565b915061469d8261465c565b602082019050919050565b600060208201905081810360008301526146c181614685565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061470f57607f821691505b602082108103614722576147216146c8565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614784602c83613b59565b915061478f82614728565b604082019050919050565b600060208201905081810360008301526147b381614777565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614816602183613b59565b9150614821826147ba565b604082019050919050565b6000602082019050818103600083015261484581614809565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006148a8603883613b59565b91506148b38261484c565b604082019050919050565b600060208201905081810360008301526148d78161489b565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061493a603183613b59565b9150614945826148de565b604082019050919050565b600060208201905081810360008301526149698161492d565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006149cc602b83613b59565b91506149d782614970565b604082019050919050565b600060208201905081810360008301526149fb816149bf565b9050919050565b600081519050614a1181613db2565b92915050565b600060208284031215614a2d57614a2c613be0565b5b6000614a3b84828501614a02565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614aad82613da8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614adf57614ade614a73565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614b46602c83613b59565b9150614b5182614aea565b604082019050919050565b60006020820190508181036000830152614b7581614b39565b9050919050565b6000604082019050614b916000830185613e3d565b614b9e6020830184613ed3565b9392505050565b600081519050614bb481613ca5565b92915050565b600060208284031215614bd057614bcf613be0565b5b6000614bde84828501614ba5565b91505092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302614c497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614c0c565b614c538683614c0c565b95508019841693508086168417925050509392505050565b6000614c86614c81614c7c84613da8565b613efd565b613da8565b9050919050565b6000819050919050565b614ca083614c6b565b614cb4614cac82614c8d565b848454614c19565b825550505050565b600090565b614cc9614cbc565b614cd4818484614c97565b505050565b5b81811015614cf857614ced600082614cc1565b600181019050614cda565b5050565b601f821115614d3d57614d0e81614be7565b614d1784614bfc565b81016020851015614d26578190505b614d3a614d3285614bfc565b830182614cd9565b50505b505050565b600082821c905092915050565b6000614d6060001984600802614d42565b1980831691505092915050565b6000614d798383614d4f565b9150826002028217905092915050565b614d9282613cfe565b67ffffffffffffffff811115614dab57614daa6140e1565b5b614db582546146f7565b614dc0828285614cfc565b600060209050601f831160018114614df35760008415614de1578287015190505b614deb8582614d6d565b865550614e53565b601f198416614e0186614be7565b60005b82811015614e2957848901518255600182019150602085019450602081019050614e04565b86831015614e465784890151614e42601f891682614d4f565b8355505b6001600288020188555050505b505050505050565b7f6e6f7420656e6f75676820737570706c792072656d61696e696e670000000000600082015250565b6000614e91601b83613b59565b9150614e9c82614e5b565b602082019050919050565b60006020820190508181036000830152614ec081614e84565b9050919050565b6000614ed282613da8565b9150614edd83613da8565b925082821015614ef057614eef614a73565b5b828203905092915050565b6000819050919050565b614f0e81614efb565b82525050565b600060e082019050614f29600083018a613ed3565b614f366020830189613ed3565b614f436040830188613ed3565b614f506060830187613ed3565b614f5d6080830186614f05565b614f6a60a0830185613ed3565b614f7760c0830184613e3d565b98975050505050505050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614fdf602983613b59565b9150614fea82614f83565b604082019050919050565b6000602082019050818103600083015261500e81614fd2565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000615071602a83613b59565b915061507c82615015565b604082019050919050565b600060208201905081810360008301526150a081615064565b9050919050565b7f636f6e7472616374732063616e6e6f74206d696e7420746f207072657365727660008201527f652072616e646f6d6e6573730000000000000000000000000000000000000000602082015250565b6000615103602c83613b59565b915061510e826150a7565b604082019050919050565b60006020820190508181036000830152615132816150f6565b9050919050565b7f6e65656420746f206d696e74206174206c65617374206f6e6520746f6b656e00600082015250565b600061516f601f83613b59565b915061517a82615139565b602082019050919050565b6000602082019050818103600083015261519e81615162565b9050919050565b7f74686520636f6e74726163742069732070617573656400000000000000000000600082015250565b60006151db601683613b59565b91506151e6826151a5565b602082019050919050565b6000602082019050818103600083015261520a816151ce565b9050919050565b600061521c82613da8565b915061522783613da8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561525c5761525b614a73565b5b828201905092915050565b7f4164647265737320616c7265616479206d696e74656420746865206d6178696d60008201527f756d206e756d626572206f66204e465473000000000000000000000000000000602082015250565b60006152c3603183613b59565b91506152ce82615267565b604082019050919050565b600060208201905081810360008301526152f2816152b6565b9050919050565b7f75736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b600061532f601783613b59565b915061533a826152f9565b602082019050919050565b6000602082019050818103600083015261535e81615322565b9050919050565b600061537082613da8565b915061537b83613da8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153b4576153b3614a73565b5b828202905092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006153f5601483613b59565b9150615400826153bf565b602082019050919050565b60006020820190508181036000830152615424816153e8565b9050919050565b60006040820190506154406000830185613e3d565b61544d6020830184613e3d565b9392505050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b600061548a601683613b59565b915061549582615454565b602082019050919050565b600060208201905081810360008301526154b98161547d565b9050919050565b60006060820190506154d56000830186613e3d565b6154e26020830185613e3d565b6154ef6040830184613ed3565b949350505050565b7f5472616e73666572204661696c65640000000000000000000000000000000000600082015250565b600061552d600f83613b59565b9150615538826154f7565b602082019050919050565b6000602082019050818103600083015261555c81615520565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615599601983613b59565b91506155a482615563565b602082019050919050565b600060208201905081810360008301526155c88161558c565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061562b602f83613b59565b9150615636826155cf565b604082019050919050565b6000602082019050818103600083015261565a8161561e565b9050919050565b600081905092915050565b600061567782613cfe565b6156818185615661565b9350615691818560208601613d09565b80840191505092915050565b600081546156aa816146f7565b6156b48186615661565b945060018216600081146156cf57600181146156e457615717565b60ff1983168652811515820286019350615717565b6156ed85614be7565b60005b8381101561570f578154818901526001820191506020810190506156f0565b838801955050505b50505092915050565b600061572c828661566c565b9150615738828561566c565b9150615744828461569d565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006157ad602683613b59565b91506157b882615751565b604082019050919050565b600060208201905081810360008301526157dc816157a0565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061583f602c83613b59565b915061584a826157e3565b604082019050919050565b6000602082019050818103600083015261586e81615832565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b60006158d1602983613b59565b91506158dc82615875565b604082019050919050565b60006020820190508181036000830152615900816158c4565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615963602483613b59565b915061596e82615907565b604082019050919050565b6000602082019050818103600083015261599281615956565b9050919050565b60006159a482613da8565b9150600082036159b7576159b6614a73565b5b600182039050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615a1e603283613b59565b9150615a29826159c2565b604082019050919050565b60006020820190508181036000830152615a4d81615a11565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615a8e82613da8565b9150615a9983613da8565b925082615aa957615aa8615a54565b5b828204905092915050565b6000615abf82613da8565b9150615aca83613da8565b925082615ada57615ad9615a54565b5b828206905092915050565b6000604082019050615afa6000830185614f05565b615b076020830184613ed3565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000615b3582615b0e565b615b3f8185615b19565b9350615b4f818560208601613d09565b615b5881613d3c565b840191505092915050565b6000608082019050615b786000830187613e3d565b615b856020830186613e3d565b615b926040830185613ed3565b8181036060830152615ba48184615b2a565b905095945050505050565b600081519050615bbe81613c16565b92915050565b600060208284031215615bda57615bd9613be0565b5b6000615be884828501615baf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615c56602083613b59565b9150615c6182615c20565b602082019050919050565b60006020820190508181036000830152615c8581615c49565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615cc2601c83613b59565b9150615ccd82615c8c565b602082019050919050565b60006020820190508181036000830152615cf181615cb5565b905091905056fea26469706673582212207c059fb588ae5b850b606242d98306576bd3edcdc35f19016156b2aa39dbd69564736f6c634300080f003300000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000005600000000000000000000000000000000000000000000000000000000000001c00000000000000000000000005541d83efad1f281571b343977648b75d95cdac20000000000000000000000000000000000000000000000004563918244f4000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000005509067de8635a7e727e0950c9b57c5d2d71efef000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000a389f9430876455c36478deea9769b7ca4e3ddb1000000000000000000000000000000000000000000000000000000000000001243616e646c65737469636b20436861727473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074d4f4e49544f52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d544c786162516d75734e596d5a334754335a636243364844626d647a646a47516a53366e74664e4b323846762f00000000000000000000