0x60a06040523360805234801561001457600080fd5b50608051610f476100596000396000818160a8015281816102030152818161028501528181610330015281816103e3015281816104b801526105100152610f476000f3fe60806040526004361061008a5760003560e01c806387cb0f511161005957806387cb0f5114610148578063894760691461016857806399fec7a014610188578063cf7ea196146101b0578063dd3fd925146101d057600080fd5b8063117803e3146100965780633bed33ce146100e65780633f579f421461010857806365dff1e11461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b3480156100f257600080fd5b50610106610101366004610a07565b6101f8565b005b34801561011457600080fd5b50610106610123366004610a7c565b61027a565b34801561013457600080fd5b50610106610143366004610bb6565b610325565b34801561015457600080fd5b50610106610163366004610c63565b6103d8565b34801561017457600080fd5b50610106610183366004610cdd565b6104ad565b34801561019457600080fd5b506100ca73bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb81565b3480156101bc57600080fd5b506101066101cb366004610cfa565b61058d565b3480156101dc57600080fd5b506100ca73111111125421ca6dc452d289314280a0f8842a6581565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102495760405162461bcd60e51b815260040161024090610d46565b60405180910390fd5b604051339082156108fc029083906000818181858888f19350505050158015610276573d6000803e3d6000fd5b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102c25760405162461bcd60e51b815260040161024090610d46565b826001600160a01b031682826040516102db9190610d7d565b60006040518083038185875af1925050503d8060008114610318576040519150601f19603f3d011682016040523d82523d6000602084013e61031d565b606091505b505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461036d5760405162461bcd60e51b815260040161024090610d46565b60005b82518110156103d3576103cb82828151811061038e5761038e610dac565b60200260200101516000198584815181106103ab576103ab610dac565b60200260200101516001600160a01b031661064c9092919063ffffffff16565b600101610370565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104205760405162461bcd60e51b815260040161024090610d46565b604051631b1d579760e31b815273bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb9063d8eabcb8906104629088908890889060009089908990600401610deb565b60408051808303816000875af1158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190610e91565b50505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104f55760405162461bcd60e51b815260040161024090610d46565b6040516370a0823160e01b815230600482015261058a9082907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105859190610eb5565b6106d6565b50565b3373bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb146105f05760405162461bcd60e51b815260206004820152601960248201527f53656e646572206973206e6f74204d6f7270686f20426c7565000000000000006044820152606401610240565b61064682828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525073111111125421ca6dc452d289314280a0f8842a65939250506107359050565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c09190610eb5565b905061064684846106d18585610ece565b61074c565b6040516001600160a01b038381166024830152604482018390526103d391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506107d8565b60606107438383600061083b565b90505b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261079d84826108da565b610646576040516001600160a01b038481166024830152600060448301526107d291869182169063095ea7b390606401610703565b61064684825b60006107ed6001600160a01b03841683610735565b905080516000141580156108125750808060200190518101906108109190610eef565b155b156103d357604051635274afe760e01b81526001600160a01b0384166004820152602401610240565b6060814710156108605760405163cd78605960e01b8152306004820152602401610240565b600080856001600160a01b0316848660405161087c9190610d7d565b60006040518083038185875af1925050503d80600081146108b9576040519150601f19603f3d011682016040523d82523d6000602084013e6108be565b606091505b50915091506108ce868383610982565b925050505b9392505050565b6000806000846001600160a01b0316846040516108f79190610d7d565b6000604051808303816000865af19150503d8060008114610934576040519150601f19603f3d011682016040523d82523d6000602084013e610939565b606091505b50915091508180156109635750805115806109635750808060200190518101906109639190610eef565b801561097957506000856001600160a01b03163b115b95945050505050565b60608261099757610992826109de565b6108d3565b81511580156109ae57506001600160a01b0384163b155b156109d757604051639996b31560e01b81526001600160a01b0385166004820152602401610240565b50806108d3565b8051156109ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215610a1957600080fd5b5035919050565b6001600160a01b038116811461058a57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a7457610a74610a35565b604052919050565b600080600060608486031215610a9157600080fd5b8335610a9c81610a20565b92506020848101359250604085013567ffffffffffffffff80821115610ac157600080fd5b818701915087601f830112610ad557600080fd5b813581811115610ae757610ae7610a35565b610af9601f8201601f19168501610a4b565b91508082528884828501011115610b0f57600080fd5b80848401858401376000848284010152508093505050509250925092565b600082601f830112610b3e57600080fd5b8135602067ffffffffffffffff821115610b5a57610b5a610a35565b8160051b610b69828201610a4b565b9283528481018201928281019087851115610b8357600080fd5b83870192505b84831015610bab578235610b9c81610a20565b82529183019190830190610b89565b979650505050505050565b60008060408385031215610bc957600080fd5b823567ffffffffffffffff80821115610be157600080fd5b610bed86838701610b2d565b93506020850135915080821115610c0357600080fd5b50610c1085828601610b2d565b9150509250929050565b60008083601f840112610c2c57600080fd5b50813567ffffffffffffffff811115610c4457600080fd5b602083019150836020828501011115610c5c57600080fd5b9250929050565b6000806000806000858703610100811215610c7d57600080fd5b60a0811215610c8b57600080fd5b5085945060a0860135610c9d81610a20565b935060c0860135925060e086013567ffffffffffffffff811115610cc057600080fd5b610ccc88828901610c1a565b969995985093965092949392505050565b600060208284031215610cef57600080fd5b81356108d381610a20565b600080600060408486031215610d0f57600080fd5b83359250602084013567ffffffffffffffff811115610d2d57600080fd5b610d3986828701610c1a565b9497909650939450505050565b60208082526017908201527f53656e646572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6000825160005b81811015610d9e5760208186018101518583015201610d84565b506000920191825250919050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006101208835610dfb81610a20565b6001600160a01b03908116845260208a013590610e1782610a20565b908116602085015260408a013590610e2e82610a20565b908116604085015260608a013590610e4582610a20565b166060840152608089810135908401526001600160a01b03881660a08401528660c08401528560e084015280610100840152610e848184018587610dc2565b9998505050505050505050565b60008060408385031215610ea457600080fd5b505080516020909101519092909150565b600060208284031215610ec757600080fd5b5051919050565b8082018082111561074657634e487b7160e01b600052601160045260246000fd5b600060208284031215610f0157600080fd5b815180151581146108d357600080fdfea2646970667358221220337f8f63d95be05151f89ca92c486db65848be9a50975ce1fd6644561d8209c664736f6c63430008170033