0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6110bb8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c712e3981161005b578063c712e398146100fe578063d6287ffe14610111578063f2fde38b14610124578063f3fef3a31461013757600080fd5b8063715018a61461008d57806379c4bfd0146100975780638da5cb5b146100c0578063920f5c84146100db575b600080fd5b61009561014a565b005b6100aa6100a536600461084c565b61015e565b6040516100b79190610962565b60405180910390f35b6000546040516001600160a01b0390911681526020016100b7565b6100ee6100e9366004610af4565b6102d4565b60405190151581526020016100b7565b61009561010c366004610c10565b6103b2565b61009561011f366004610ce0565b61048e565b610095610132366004610d53565b6105a8565b610095610145366004610d70565b610621565b61015261069f565b61015c60006106f9565b565b60408051600180825281830190925260609160009190602080830190803683370190505090508a8160008151811061019857610198610d9c565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526000918160200160208202803683370190505090508a816000815181106101e9576101e9610d9c565b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050905060008160008151811061022d5761022d610d9c565b60200260200101818152505060008b8b8b8b8b8b8b6040516020016102589796959493929190610ddb565b60408051601f1981840301815290829052915063ab9c4b5d60e01b9061028f90309087908790879084908890600090602401610e6c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529450505050509998505050505050505050565b6001546000906001600160a01b0316331480156102f957506001600160a01b03831630145b6103435760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420666c6173686c6f616e2066726f6d60501b60448201526064015b60405180910390fd5b60008060008060008680602001905181019061035f9190610f6c565b94509450945094509450801561038a576103798585610749565b506103848383610749565b506103a1565b6103948383610749565b5061039f8585610749565b505b5060019a9950505050505050505050565b6103ba61069f565b60005b815181101561048a5760008282815181106103da576103da610d9c565b6020026020010151905080600001516001600160a01b031663095ea7b3826020015183604001516040518363ffffffff1660e01b81526004016104329291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015610451573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610475919061100c565b5050808061048290611029565b9150506103bd565b5050565b61049661069f565b600180546001600160a01b0319166001600160a01b038516179055604080516020601f84018190048102820181019092528281526104f191859190859085908190840183828082843760009201919091525061074992505050565b506040516370a0823160e01b815230600482015285906001600160a01b038616906370a0823190602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190611050565b10156105a15760405162461bcd60e51b81526020600482015260146024820152734172623a2062616c616e636520746f6f206c6f7760601b604482015260640161033a565b5050505050565b6105b061069f565b6001600160a01b0381166106155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161033a565b61061e816106f9565b50565b61062961069f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069a919061100c565b505050565b6000546001600160a01b0316331461015c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161033a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060600080846001600160a01b0316846040516107669190611069565b6000604051808303816000865af19150503d80600081146107a3576040519150601f19603f3d011682016040523d82523d6000602084013e6107a8565b606091505b5091509150816107c85780516000036107c057600080fd5b805181602001fd5b949350505050565b6001600160a01b038116811461061e57600080fd5b80356107f0816107d0565b919050565b60008083601f84011261080757600080fd5b50813567ffffffffffffffff81111561081f57600080fd5b60208301915083602082850101111561083757600080fd5b9250929050565b801515811461061e57600080fd5b600080600080600080600080600060e08a8c03121561086a57600080fd5b8935610875816107d0565b985060208a0135975060408a013561088c816107d0565b965060608a013567ffffffffffffffff808211156108a957600080fd5b6108b58d838e016107f5565b909850965060808c013591506108ca826107d0565b90945060a08b013590808211156108e057600080fd5b506108ed8c828d016107f5565b90945092505060c08a01356109018161083e565b809150509295985092959850929598565b60005b8381101561092d578181015183820152602001610915565b50506000910152565b6000815180845261094e816020860160208601610912565b601f01601f19169290920160200192915050565b6020815260006109756020830184610936565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156109b5576109b561097c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156109e4576109e461097c565b604052919050565b600067ffffffffffffffff821115610a0657610a0661097c565b5060051b60200190565b600082601f830112610a2157600080fd5b81356020610a36610a31836109ec565b6109bb565b82815260059290921b84018101918181019086841115610a5557600080fd5b8286015b84811015610a705780358352918301918301610a59565b509695505050505050565b600067ffffffffffffffff821115610a9557610a9561097c565b50601f01601f191660200190565b600082601f830112610ab457600080fd5b8135610ac2610a3182610a7b565b818152846020838601011115610ad757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610b0c57600080fd5b853567ffffffffffffffff80821115610b2457600080fd5b818801915088601f830112610b3857600080fd5b81356020610b48610a31836109ec565b82815260059290921b8401810191818101908c841115610b6757600080fd5b948201945b83861015610b8e578535610b7f816107d0565b82529482019490820190610b6c565b99505089013592505080821115610ba457600080fd5b610bb089838a01610a10565b95506040880135915080821115610bc657600080fd5b610bd289838a01610a10565b9450610be0606089016107e5565b93506080880135915080821115610bf657600080fd5b50610c0388828901610aa3565b9150509295509295909350565b60006020808385031215610c2357600080fd5b823567ffffffffffffffff811115610c3a57600080fd5b8301601f81018513610c4b57600080fd5b8035610c59610a31826109ec565b81815260609182028301840191848201919088841115610c7857600080fd5b938501935b83851015610cd45780858a031215610c955760008081fd5b610c9d610992565b8535610ca8816107d0565b815285870135610cb7816107d0565b818801526040868101359082015283529384019391850191610c7d565b50979650505050505050565b600080600080600060808688031215610cf857600080fd5b853594506020860135610d0a816107d0565b93506040860135610d1a816107d0565b9250606086013567ffffffffffffffff811115610d3657600080fd5b610d42888289016107f5565b969995985093965092949392505050565b600060208284031215610d6557600080fd5b8135610975816107d0565b60008060408385031215610d8357600080fd5b8235610d8e816107d0565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808a16835260a06020840152610dfe60a08401898b610db2565b81881660408501528381036060850152610e19818789610db2565b92505050821515608083015298975050505050505050565b600081518084526020808501945080840160005b83811015610e6157815187529582019590820190600101610e45565b509495945050505050565b6001600160a01b03888116825260e0602080840182905289519184018290526000928a820192909190610100860190855b81811015610ebb578551851683529483019491830191600101610e9d565b50508581036040870152610ecf818c610e31565b93505050508281036060840152610ee68188610e31565b6001600160a01b0387166080850152905082810360a0840152610f098186610936565b915050610f1b60c083018460ff169052565b98975050505050505050565b600082601f830112610f3857600080fd5b8151610f46610a3182610a7b565b818152846020838601011115610f5b57600080fd5b6107c8826020830160208701610912565b600080600080600060a08688031215610f8457600080fd5b8551610f8f816107d0565b602087015190955067ffffffffffffffff80821115610fad57600080fd5b610fb989838a01610f27565b955060408801519150610fcb826107d0565b606088015191945080821115610fe057600080fd5b50610fed88828901610f27565b9250506080860151610ffe8161083e565b809150509295509295909350565b60006020828403121561101e57600080fd5b81516109758161083e565b60006001820161104957634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106257600080fd5b5051919050565b6000825161107b818460208701610912565b919091019291505056fea264697066735822122021f392c388088db2f77c689fbfb59433984b0ad75ffcdebb618e47dc2ed7b65764736f6c63430008110033