60806040526ba18f07d736b90be55000000060035534801561002057600080fd5b5061003161002c61006c565b610070565b6000805460ff60a01b191681556003549060019061004d61006c565b6001600160a01b031681526020810191909152604001600020556100c0565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6110ff806100cf6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806370a08231116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb14610241578063dd62ed3e14610254578063f2fde38b1461026757610136565b806395d89b4114610226578063a457c2d71461022e57610136565b806370a08231146101ee578063715018a6146102015780638456cb59146102095780638da5cb5b1461021157610136565b8063313ce567116101095780633f4ba83a116100ee5780633f4ba83a146101c957806342966c68146101d35780635c975abb146101e657610136565b8063313ce567146101a157806339509351146101b657610136565b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017957806323b872dd1461018e575b600080fd5b61014361027a565b6040516101509190610b5f565b60405180910390f35b61016c610167366004610aff565b6102b1565b6040516101509190610b54565b6101816102ce565b6040516101509190611054565b61016c61019c366004610ac4565b6102d4565b6101a961036d565b604051610150919061105d565b61016c6101c4366004610aff565b610372565b6101d16103c6565b005b6101d16101e1366004610b28565b61040f565b61016c610423565b6101816101fc366004610a71565b610433565b6101d1610452565b6101d161049b565b6102196104e2565b6040516101509190610b40565b6101436104f1565b61016c61023c366004610aff565b610528565b61016c61024f366004610aff565b6105a1565b610181610262366004610a92565b6105b5565b6101d1610275366004610a71565b6105e0565b60408051808201909152601081527f4d6574616865726d696120546f6b656e00000000000000000000000000000000602082015290565b60006102c56102be61064e565b8484610652565b50600192915050565b60035490565b60006102e1848484610706565b6001600160a01b03841660009081526002602052604081208161030261064e565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508281101561034e5760405162461bcd60e51b815260040161034590610df1565b60405180910390fd5b6103628561035a61064e565b858403610652565b506001949350505050565b601290565b60006102c561037f61064e565b84846002600061038d61064e565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546103c1919061106b565b610652565b6103ce61064e565b6001600160a01b03166103df6104e2565b6001600160a01b0316146104055760405162461bcd60e51b815260040161034590610e4e565b61040d610822565b565b61042061041a61064e565b82610893565b50565b600054600160a01b900460ff1690565b6001600160a01b0381166000908152600160205260409020545b919050565b61045a61064e565b6001600160a01b031661046b6104e2565b6001600160a01b0316146104915760405162461bcd60e51b815260040161034590610e4e565b61040d600061096c565b6104a361064e565b6001600160a01b03166104b46104e2565b6001600160a01b0316146104da5760405162461bcd60e51b815260040161034590610e4e565b61040d6109d4565b6000546001600160a01b031690565b60408051808201909152600681527f4845524d49410000000000000000000000000000000000000000000000000000602082015290565b6000806002600061053761064e565b6001600160a01b03908116825260208083019390935260409182016000908120918816815292529020549050828110156105835760405162461bcd60e51b815260040161034590610f9a565b61059761058e61064e565b85858403610652565b5060019392505050565b60006102c56105ae61064e565b8484610706565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6105e861064e565b6001600160a01b03166105f96104e2565b6001600160a01b03161461061f5760405162461bcd60e51b815260040161034590610e4e565b6001600160a01b0381166106455760405162461bcd60e51b815260040161034590610ca3565b6104208161096c565b3390565b6001600160a01b0383166106785760405162461bcd60e51b815260040161034590610f3d565b6001600160a01b03821661069e5760405162461bcd60e51b815260040161034590610d00565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f9908590611054565b60405180910390a3505050565b6001600160a01b03831661072c5760405162461bcd60e51b815260040161034590610ee0565b6001600160a01b0382166107525760405162461bcd60e51b815260040161034590610bb2565b61075a610a35565b6001600160a01b038316600090815260016020526040902054818110156107935760405162461bcd60e51b815260040161034590610d5d565b6001600160a01b038085166000908152600160205260408082208585039055918516815290812080548492906107ca90849061106b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108149190611054565b60405180910390a350505050565b61082a610423565b6108465760405162461bcd60e51b815260040161034590610c0f565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61087c61064e565b6040516108899190610b40565b60405180910390a1565b6001600160a01b0382166108b95760405162461bcd60e51b815260040161034590610e83565b6108c1610a35565b6001600160a01b038216600090815260016020526040902054818110156108fa5760405162461bcd60e51b815260040161034590610c46565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610929908490611083565b90915550506040516000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106f9908690611054565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6109dc610423565b156109f95760405162461bcd60e51b815260040161034590610dba565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861087c61064e565b610a3d610423565b1561040d5760405162461bcd60e51b815260040161034590610ff7565b80356001600160a01b038116811461044d57600080fd5b600060208284031215610a82578081fd5b610a8b82610a5a565b9392505050565b60008060408385031215610aa4578081fd5b610aad83610a5a565b9150610abb60208401610a5a565b90509250929050565b600080600060608486031215610ad8578081fd5b610ae184610a5a565b9250610aef60208501610a5a565b9150604084013590509250925092565b60008060408385031215610b11578182fd5b610b1a83610a5a565b946020939093013593505050565b600060208284031215610b39578081fd5b5035919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610b8b57858101830151858201604001528201610b6f565b81811115610b9c5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604082015260600190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60408201527f6365000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260408201527f616c616e63650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f5061757361626c653a2070617573656400000000000000000000000000000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160408201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760408201527f207a65726f000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f45524332305061757361626c653a20746f6b656e207472616e7366657220776860408201527f696c652070617573656400000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60ff91909116815260200190565b6000821982111561107e5761107e61109a565b500190565b6000828210156110955761109561109a565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207ed8d7f76c262f42dd921e6e4895e693860cf20eab1ee3705e15fb6e9615ab9a64736f6c63430008000033