0x608060405234801561001057600080fd5b50600436106101985760003560e01c80637dc6af24116100e3578063a457c2d71161008c578063dd62ed3e11610066578063dd62ed3e14610344578063f2fde38b1461037d578063fdcf9d071461039057600080fd5b8063a457c2d71461030b578063a9059cbb1461031e578063d045096f1461033157600080fd5b806394bb76e0116100bd57806394bb76e0146102e857806395d89b41146102f057806398095250146102f857600080fd5b80637dc6af24146102b257806388782c77146102ba5780638da5cb5b146102cd57600080fd5b8063484b973c1161014557806370a082311161011f57806370a0823114610279578063715018a6146102a257806377d03ba8146102aa57600080fd5b8063484b973c1461022557806365f7eb171461023a5780636a20de921461026657600080fd5b806323b872dd1161017657806323b872dd146101f0578063313ce56714610203578063395093511461021257600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610398565b6040516101b29190610e86565b60405180910390f35b6101ce6101c9366004610ef0565b61042a565b60405190151581526020016101b2565b6003545b6040519081526020016101b2565b6101ce6101fe366004610f1a565b610444565b604051601281526020016101b2565b6101ce610220366004610ef0565b610468565b610238610233366004610ef0565b6104a7565b005b6101ce610248366004610f56565b6001600160a01b031660009081526007602052604090205460ff1690565b610238610274366004610ef0565b6104ff565b6101e2610287366004610f56565b6001600160a01b031660009081526001602052604090205490565b610238610590565b6102386105a4565b6102386105bf565b6102386102c8366004610f56565b6105d6565b6000546040516001600160a01b0390911681526020016101b2565b610238610615565b6101a561062e565b610238610306366004610f78565b61063d565b6101ce610319366004610ef0565b610701565b6101ce61032c366004610ef0565b6107ab565b61023861033f366004610f56565b6107b9565b6101e2610352366004610fa6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61023861038b366004610f56565b6107fb565b6101e261088b565b6060600480546103a790610fd9565b80601f01602080910402602001604051908101604052809291908181526020018280546103d390610fd9565b80156104205780601f106103f557610100808354040283529160200191610420565b820191906000526020600020905b81548152906001019060200180831161040357829003601f168201915b5050505050905090565b6000336104388185856108de565b60019150505b92915050565b600033610452858285610a36565b61045d858585610ac8565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490919061043890829086906104a2908790611029565b6108de565b6104af610cbc565b600654610100900460ff16156104f1576040517f4661d5f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104fb8282610d16565b5050565b3360009081526007602052604090205460ff1661054f576040517fd7111ade0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b61055761088b565b8111156104f1576040517f82df6e5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610598610cbc565b6105a26000610d5d565b565b6105ac610cbc565b6006805462ff0000191662010000179055565b6105c7610cbc565b6006805460ff19166001179055565b6105de610cbc565b60065462010000900460ff16156105f457600080fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b61061d610cbc565b6006805461ff001916610100179055565b6060600580546103a790610fd9565b610645610cbc565b600354816bffffffffffffffffffffffff1610156106cb5760405162461bcd60e51b815260206004820152602860248201527f4d617820737570706c792063616e27742062652062656c6f772063757272656e60448201527f7420737570706c790000000000000000000000000000000000000000000000006064820152608401610546565b600680546bffffffffffffffffffffffff9092166301000000026effffffffffffffffffffffff00000019909216919091179055565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091908381101561079e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610546565b61045d82868684036108de565b600033610438818585610ac8565b6107c1610cbc565b60065462010000900460ff16156107d757600080fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b610803610cbc565b6001600160a01b03811661087f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610546565b61088881610d5d565b50565b600654600354600091630100000090046bffffffffffffffffffffffff16106108d8576003546006546108d39190630100000090046bffffffffffffffffffffffff1661103c565b905090565b50600090565b6001600160a01b0383166109595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b0382166109d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198114610ac25781811015610ab55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610546565b610ac284848484036108de565b50505050565b6001600160a01b038316610b445760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b038216610bc05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b03831660009081526001602052604090205481811015610c4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610caf9086815260200190565b60405180910390a3610ac2565b6000546001600160a01b031633146105a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610546565b60065460ff1615610d53576040517faa71a6e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104fb8282610dc5565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216610e1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610546565b8060036000828254610e2d9190611029565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610eb357858101830151858201604001528201610e97565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610eeb57600080fd5b919050565b60008060408385031215610f0357600080fd5b610f0c83610ed4565b946020939093013593505050565b600080600060608486031215610f2f57600080fd5b610f3884610ed4565b9250610f4660208501610ed4565b9150604084013590509250925092565b600060208284031215610f6857600080fd5b610f7182610ed4565b9392505050565b600060208284031215610f8a57600080fd5b81356bffffffffffffffffffffffff81168114610f7157600080fd5b60008060408385031215610fb957600080fd5b610fc283610ed4565b9150610fd060208401610ed4565b90509250929050565b600181811c90821680610fed57607f821691505b60208210810361100d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561043e5761043e611013565b8181038181111561043e5761043e61101356fea2646970667358221220f5461d02db6a1eb2ada37447da27b1d1cb231a78a8d1840be696623b59667df764736f6c63430008120033
0x60806040523480156200001157600080fd5b506040518060400160405280601081526020016f4d696c6164794d616b6572506172747960801b815250604051806040016040528060068152602001654d504152545960d01b815250620000746200006e6200009a60201b60201c565b6200009e565b600462000082838262000193565b50600562000091828262000193565b5050506200025f565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011957607f821691505b6020821081036200013a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018e57600081815260208120601f850160051c81016020861015620001695750805b601f850160051c820191505b818110156200018a5782815560010162000175565b5050505b505050565b81516001600160401b03811115620001af57620001af620000ee565b620001c781620001c0845462000104565b8462000140565b602080601f831160018114620001ff5760008415620001e65750858301515b600019600386901b1c1916600185901b1785556200018a565b600085815260208120601f198616915b8281101562000230578886015182559484019460019091019084016200020f565b50858210156200024f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611085806200026f6000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637dc6af24116100e3578063a457c2d71161008c578063dd62ed3e11610066578063dd62ed3e14610344578063f2fde38b1461037d578063fdcf9d071461039057600080fd5b8063a457c2d71461030b578063a9059cbb1461031e578063d045096f1461033157600080fd5b806394bb76e0116100bd57806394bb76e0146102e857806395d89b41146102f057806398095250146102f857600080fd5b80637dc6af24146102b257806388782c77146102ba5780638da5cb5b146102cd57600080fd5b8063484b973c1161014557806370a082311161011f57806370a0823114610279578063715018a6146102a257806377d03ba8146102aa57600080fd5b8063484b973c1461022557806365f7eb171461023a5780636a20de921461026657600080fd5b806323b872dd1161017657806323b872dd146101f0578063313ce56714610203578063395093511461021257600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a5610398565b6040516101b29190610e86565b60405180910390f35b6101ce6101c9366004610ef0565b61042a565b60405190151581526020016101b2565b6003545b6040519081526020016101b2565b6101ce6101fe366004610f1a565b610444565b604051601281526020016101b2565b6101ce610220366004610ef0565b610468565b610238610233366004610ef0565b6104a7565b005b6101ce610248366004610f56565b6001600160a01b031660009081526007602052604090205460ff1690565b610238610274366004610ef0565b6104ff565b6101e2610287366004610f56565b6001600160a01b031660009081526001602052604090205490565b610238610590565b6102386105a4565b6102386105bf565b6102386102c8366004610f56565b6105d6565b6000546040516001600160a01b0390911681526020016101b2565b610238610615565b6101a561062e565b610238610306366004610f78565b61063d565b6101ce610319366004610ef0565b610701565b6101ce61032c366004610ef0565b6107ab565b61023861033f366004610f56565b6107b9565b6101e2610352366004610fa6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61023861038b366004610f56565b6107fb565b6101e261088b565b6060600480546103a790610fd9565b80601f01602080910402602001604051908101604052809291908181526020018280546103d390610fd9565b80156104205780601f106103f557610100808354040283529160200191610420565b820191906000526020600020905b81548152906001019060200180831161040357829003601f168201915b5050505050905090565b6000336104388185856108de565b60019150505b92915050565b600033610452858285610a36565b61045d858585610ac8565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490919061043890829086906104a2908790611029565b6108de565b6104af610cbc565b600654610100900460ff16156104f1576040517f4661d5f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104fb8282610d16565b5050565b3360009081526007602052604090205460ff1661054f576040517fd7111ade0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b61055761088b565b8111156104f1576040517f82df6e5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610598610cbc565b6105a26000610d5d565b565b6105ac610cbc565b6006805462ff0000191662010000179055565b6105c7610cbc565b6006805460ff19166001179055565b6105de610cbc565b60065462010000900460ff16156105f457600080fd5b6001600160a01b03166000908152600760205260409020805460ff19169055565b61061d610cbc565b6006805461ff001916610100179055565b6060600580546103a790610fd9565b610645610cbc565b600354816bffffffffffffffffffffffff1610156106cb5760405162461bcd60e51b815260206004820152602860248201527f4d617820737570706c792063616e27742062652062656c6f772063757272656e60448201527f7420737570706c790000000000000000000000000000000000000000000000006064820152608401610546565b600680546bffffffffffffffffffffffff9092166301000000026effffffffffffffffffffffff00000019909216919091179055565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091908381101561079e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610546565b61045d82868684036108de565b600033610438818585610ac8565b6107c1610cbc565b60065462010000900460ff16156107d757600080fd5b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b610803610cbc565b6001600160a01b03811661087f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610546565b61088881610d5d565b50565b600654600354600091630100000090046bffffffffffffffffffffffff16106108d8576003546006546108d39190630100000090046bffffffffffffffffffffffff1661103c565b905090565b50600090565b6001600160a01b0383166109595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b0382166109d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198114610ac25781811015610ab55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610546565b610ac284848484036108de565b50505050565b6001600160a01b038316610b445760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b038216610bc05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b03831660009081526001602052604090205481811015610c4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610546565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610caf9086815260200190565b60405180910390a3610ac2565b6000546001600160a01b031633146105a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610546565b60065460ff1615610d53576040517faa71a6e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104fb8282610dc5565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216610e1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610546565b8060036000828254610e2d9190611029565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610eb357858101830151858201604001528201610e97565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610eeb57600080fd5b919050565b60008060408385031215610f0357600080fd5b610f0c83610ed4565b946020939093013593505050565b600080600060608486031215610f2f57600080fd5b610f3884610ed4565b9250610f4660208501610ed4565b9150604084013590509250925092565b600060208284031215610f6857600080fd5b610f7182610ed4565b9392505050565b600060208284031215610f8a57600080fd5b81356bffffffffffffffffffffffff81168114610f7157600080fd5b60008060408385031215610fb957600080fd5b610fc283610ed4565b9150610fd060208401610ed4565b90509250929050565b600181811c90821680610fed57607f821691505b60208210810361100d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561043e5761043e611013565b8181038181111561043e5761043e61101356fea2646970667358221220f5461d02db6a1eb2ada37447da27b1d1cb231a78a8d1840be696623b59667df764736f6c63430008120033