0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063a9059cbb1161007c578063a9059cbb14610292578063c2b7bbb6146102a5578063dd62ed3e146102b8578063ea1644d5146102cb578063f2fde38b146102de578063ffb54a99146102f157600080fd5b80638da5cb5b146102405780638f70ccf71461025b5780638f9a55c01461026e57806395d89b4114610277578063a457c2d71461027f57600080fd5b8063395093511161010a57806339509351146101bc5780636c1713fe146101cf57806370a08231146101e4578063715018a61461020d578063751039fc146102155780638a9f57f71461021d57600080fd5b806306fdde0314610147578063095ea7b31461016557806318160ddd1461018857806323b872dd1461019a578063313ce567146101ad575b600080fd5b61014f6102fe565b60405161015c9190610da2565b60405180910390f35b610178610173366004610e0c565b610390565b604051901515815260200161015c565b6002545b60405190815260200161015c565b6101786101a8366004610e36565b6103aa565b6040516012815260200161015c565b6101786101ca366004610e0c565b6103ce565b6101e26101dd366004610e82565b6103f0565b005b61018c6101f2366004610eb5565b6001600160a01b031660009081526020819052604090205490565b6101e2610423565b6101e2610437565b61017861022b366004610eb5565b60076020526000908152604090205460ff1681565b6005546040516001600160a01b03909116815260200161015c565b6101e2610269366004610ed7565b610447565b61018c60095481565b61014f6104ca565b61017861028d366004610e0c565b6104d9565b6101786102a0366004610e0c565b610554565b6101e26102b3366004610eb5565b610562565b61018c6102c6366004610ef2565b6105f7565b6101e26102d9366004610f1c565b610622565b6101e26102ec366004610eb5565b61062f565b6008546101789060ff1681565b60606003805461030d90610f35565b80601f016020809104026020016040519081016040528092919081815260200182805461033990610f35565b80156103865780601f1061035b57610100808354040283529160200191610386565b820191906000526020600020905b81548152906001019060200180831161036957829003601f168201915b5050505050905090565b60003361039e8185856106a8565b60019150505b92915050565b6000336103b88582856107cc565b6103c3858585610846565b506001949350505050565b60003361039e8185856103e183836105f7565b6103eb9190610f6f565b6106a8565b6103f8610ba2565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b61042b610ba2565b6104356000610bfc565b565b61043f610ba2565b600a54600955565b61044f610ba2565b60085460ff16156104b75760405162461bcd60e51b815260206004820152602760248201527f45524332303a2054726164696e672063616e206265206f6e6c79206f70656e65604482015266321037b731b29760c91b60648201526084015b60405180910390fd5b6008805460ff1916911515919091179055565b60606004805461030d90610f35565b600033816104e782866105f7565b9050838110156105475760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104ae565b6103c382868684036106a8565b60003361039e818585610846565b61056a610ba2565b6001600160a01b03811660009081526006602052604090205460ff16156105d35760405162461bcd60e51b815260206004820152601d60248201527f54686973207061697220697320616c7265616479206578636c7564656400000060448201526064016104ae565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61062a610ba2565b600955565b610637610ba2565b6001600160a01b03811661069c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ae565b6106a581610bfc565b50565b6001600160a01b03831661070a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ae565b6001600160a01b03821661076b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ae565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107d884846105f7565b9050600019811461084057818110156108335760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104ae565b61084084848484036106a8565b50505050565b6001600160a01b03831661086c5760405162461bcd60e51b81526004016104ae90610f90565b6001600160a01b0382166108925760405162461bcd60e51b81526004016104ae90610fd5565b6005546001600160a01b038481169116148015906108be57506005546001600160a01b03838116911614155b80156108d85750600b546001600160a01b03838116911614155b80156108f25750600b546001600160a01b03848116911614155b15610b92576001600160a01b03831660009081526007602052604090205460ff161561091d57600080fd5b60085460ff166109aa576005546001600160a01b038481169116146109aa5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104ae565b6005546001600160a01b038481169116148015906109d657506005546001600160a01b03838116911614155b80156109fa57506001600160a01b03831660009081526006602052604090205460ff165b15610a8c5760095481610a22846001600160a01b031660009081526020819052604090205490565b610a2c9190610f6f565b1115610a8c5760405162461bcd60e51b815260206004820152602960248201527f544f4b454e3a20416d6f756e742065786365656473206d6178696d756d2077616044820152686c6c65742073697a6560b81b60648201526084016104ae565b6005546001600160a01b03848116911614801590610ab857506005546001600160a01b03838116911614155b8015610add57506001600160a01b03821660009081526006602052604090205460ff16155b8015610b0257506001600160a01b03831660009081526006602052604090205460ff16155b15610b925760095481610b2a846001600160a01b031660009081526020819052604090205490565b610b349190610f6f565b1115610b925760405162461bcd60e51b815260206004820152602760248201527f544f4b454e3a2042616c616e63652065786365656473206d61782077616c6c65604482015266742073697a652160c81b60648201526084016104ae565b610b9d838383610c4e565b505050565b6005546001600160a01b031633146104355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ae565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316610c745760405162461bcd60e51b81526004016104ae90610f90565b6001600160a01b038216610c9a5760405162461bcd60e51b81526004016104ae90610fd5565b6001600160a01b03831660009081526020819052604090205481811015610d125760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104ae565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d49908490610f6f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9591815260200190565b60405180910390a3610840565b600060208083528351808285015260005b81811015610dcf57858101830151858201604001528201610db3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e0757600080fd5b919050565b60008060408385031215610e1f57600080fd5b610e2883610df0565b946020939093013593505050565b600080600060608486031215610e4b57600080fd5b610e5484610df0565b9250610e6260208501610df0565b9150604084013590509250925092565b80358015158114610e0757600080fd5b60008060408385031215610e9557600080fd5b610e9e83610df0565b9150610eac60208401610e72565b90509250929050565b600060208284031215610ec757600080fd5b610ed082610df0565b9392505050565b600060208284031215610ee957600080fd5b610ed082610e72565b60008060408385031215610f0557600080fd5b610f0e83610df0565b9150610eac60208401610df0565b600060208284031215610f2e57600080fd5b5035919050565b600181811c90821680610f4957607f821691505b602082108103610f6957634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103a457634e487b7160e01b600052601160045260246000fd5b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b60608201526080019056fea264697066735822122095c6694af47533f3d8bfe2c17992356c931688b5dac9ed9e8f0e8f0ae8fdd96564736f6c63430008110033
0x60806040526008805460ff191690556200001c6012600a6200034e565b6200002f9066038d7ea4c6800062000366565b600955620000406012600a6200034e565b620000539066038d7ea4c6800062000366565b600a553480156200006357600080fd5b506040805180820182526004808252634d65746160e01b6020808401829052845180860190955291845290830152906003620000a0838262000424565b506004620000af828262000424565b505050620000cc620000c6620000f660201b60201c565b620000fa565b600b80546001600160a01b03191633908117909155600a54620000f091906200014c565b62000506565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001a75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620001bb9190620004f0565b90915550506001600160a01b03821660009081526020819052604081208054839290620001ea908490620004f0565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200029057816000190482111562000274576200027462000239565b808516156200028257918102915b93841c939080029062000254565b509250929050565b600082620002a95750600162000348565b81620002b85750600062000348565b8160018114620002d15760028114620002dc57620002fc565b600191505062000348565b60ff841115620002f057620002f062000239565b50506001821b62000348565b5060208310610133831016604e8410600b841016171562000321575081810a62000348565b6200032d83836200024f565b806000190482111562000344576200034462000239565b0290505b92915050565b60006200035f60ff84168362000298565b9392505050565b808202811582820484141762000348576200034862000239565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003ab57607f821691505b602082108103620003cc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023457600081815260208120601f850160051c81016020861015620003fb5750805b601f850160051c820191505b818110156200041c5782815560010162000407565b505050505050565b81516001600160401b0381111562000440576200044062000380565b620004588162000451845462000396565b84620003d2565b602080601f831160018114620004905760008415620004775750858301515b600019600386901b1c1916600185901b1785556200041c565b600085815260208120601f198616915b82811015620004c157888601518255948401946001909101908401620004a0565b5085821015620004e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111562000348576200034862000239565b61104e80620005166000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063a9059cbb1161007c578063a9059cbb14610292578063c2b7bbb6146102a5578063dd62ed3e146102b8578063ea1644d5146102cb578063f2fde38b146102de578063ffb54a99146102f157600080fd5b80638da5cb5b146102405780638f70ccf71461025b5780638f9a55c01461026e57806395d89b4114610277578063a457c2d71461027f57600080fd5b8063395093511161010a57806339509351146101bc5780636c1713fe146101cf57806370a08231146101e4578063715018a61461020d578063751039fc146102155780638a9f57f71461021d57600080fd5b806306fdde0314610147578063095ea7b31461016557806318160ddd1461018857806323b872dd1461019a578063313ce567146101ad575b600080fd5b61014f6102fe565b60405161015c9190610da2565b60405180910390f35b610178610173366004610e0c565b610390565b604051901515815260200161015c565b6002545b60405190815260200161015c565b6101786101a8366004610e36565b6103aa565b6040516012815260200161015c565b6101786101ca366004610e0c565b6103ce565b6101e26101dd366004610e82565b6103f0565b005b61018c6101f2366004610eb5565b6001600160a01b031660009081526020819052604090205490565b6101e2610423565b6101e2610437565b61017861022b366004610eb5565b60076020526000908152604090205460ff1681565b6005546040516001600160a01b03909116815260200161015c565b6101e2610269366004610ed7565b610447565b61018c60095481565b61014f6104ca565b61017861028d366004610e0c565b6104d9565b6101786102a0366004610e0c565b610554565b6101e26102b3366004610eb5565b610562565b61018c6102c6366004610ef2565b6105f7565b6101e26102d9366004610f1c565b610622565b6101e26102ec366004610eb5565b61062f565b6008546101789060ff1681565b60606003805461030d90610f35565b80601f016020809104026020016040519081016040528092919081815260200182805461033990610f35565b80156103865780601f1061035b57610100808354040283529160200191610386565b820191906000526020600020905b81548152906001019060200180831161036957829003601f168201915b5050505050905090565b60003361039e8185856106a8565b60019150505b92915050565b6000336103b88582856107cc565b6103c3858585610846565b506001949350505050565b60003361039e8185856103e183836105f7565b6103eb9190610f6f565b6106a8565b6103f8610ba2565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b61042b610ba2565b6104356000610bfc565b565b61043f610ba2565b600a54600955565b61044f610ba2565b60085460ff16156104b75760405162461bcd60e51b815260206004820152602760248201527f45524332303a2054726164696e672063616e206265206f6e6c79206f70656e65604482015266321037b731b29760c91b60648201526084015b60405180910390fd5b6008805460ff1916911515919091179055565b60606004805461030d90610f35565b600033816104e782866105f7565b9050838110156105475760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104ae565b6103c382868684036106a8565b60003361039e818585610846565b61056a610ba2565b6001600160a01b03811660009081526006602052604090205460ff16156105d35760405162461bcd60e51b815260206004820152601d60248201527f54686973207061697220697320616c7265616479206578636c7564656400000060448201526064016104ae565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61062a610ba2565b600955565b610637610ba2565b6001600160a01b03811661069c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104ae565b6106a581610bfc565b50565b6001600160a01b03831661070a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ae565b6001600160a01b03821661076b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ae565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107d884846105f7565b9050600019811461084057818110156108335760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104ae565b61084084848484036106a8565b50505050565b6001600160a01b03831661086c5760405162461bcd60e51b81526004016104ae90610f90565b6001600160a01b0382166108925760405162461bcd60e51b81526004016104ae90610fd5565b6005546001600160a01b038481169116148015906108be57506005546001600160a01b03838116911614155b80156108d85750600b546001600160a01b03838116911614155b80156108f25750600b546001600160a01b03848116911614155b15610b92576001600160a01b03831660009081526007602052604090205460ff161561091d57600080fd5b60085460ff166109aa576005546001600160a01b038481169116146109aa5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104ae565b6005546001600160a01b038481169116148015906109d657506005546001600160a01b03838116911614155b80156109fa57506001600160a01b03831660009081526006602052604090205460ff165b15610a8c5760095481610a22846001600160a01b031660009081526020819052604090205490565b610a2c9190610f6f565b1115610a8c5760405162461bcd60e51b815260206004820152602960248201527f544f4b454e3a20416d6f756e742065786365656473206d6178696d756d2077616044820152686c6c65742073697a6560b81b60648201526084016104ae565b6005546001600160a01b03848116911614801590610ab857506005546001600160a01b03838116911614155b8015610add57506001600160a01b03821660009081526006602052604090205460ff16155b8015610b0257506001600160a01b03831660009081526006602052604090205460ff16155b15610b925760095481610b2a846001600160a01b031660009081526020819052604090205490565b610b349190610f6f565b1115610b925760405162461bcd60e51b815260206004820152602760248201527f544f4b454e3a2042616c616e63652065786365656473206d61782077616c6c65604482015266742073697a652160c81b60648201526084016104ae565b610b9d838383610c4e565b505050565b6005546001600160a01b031633146104355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ae565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316610c745760405162461bcd60e51b81526004016104ae90610f90565b6001600160a01b038216610c9a5760405162461bcd60e51b81526004016104ae90610fd5565b6001600160a01b03831660009081526020819052604090205481811015610d125760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104ae565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d49908490610f6f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9591815260200190565b60405180910390a3610840565b600060208083528351808285015260005b81811015610dcf57858101830151858201604001528201610db3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e0757600080fd5b919050565b60008060408385031215610e1f57600080fd5b610e2883610df0565b946020939093013593505050565b600080600060608486031215610e4b57600080fd5b610e5484610df0565b9250610e6260208501610df0565b9150604084013590509250925092565b80358015158114610e0757600080fd5b60008060408385031215610e9557600080fd5b610e9e83610df0565b9150610eac60208401610e72565b90509250929050565b600060208284031215610ec757600080fd5b610ed082610df0565b9392505050565b600060208284031215610ee957600080fd5b610ed082610e72565b60008060408385031215610f0557600080fd5b610f0e83610df0565b9150610eac60208401610df0565b600060208284031215610f2e57600080fd5b5035919050565b600181811c90821680610f4957607f821691505b602082108103610f6957634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103a457634e487b7160e01b600052601160045260246000fd5b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b60608201526080019056fea264697066735822122095c6694af47533f3d8bfe2c17992356c931688b5dac9ed9e8f0e8f0ae8fdd96564736f6c63430008110033