60806040526111776010553480156200001757600080fd5b5073ba12cb540a376370663817604d7766606373e3ee60405180604001604052806004815260200163416e647960e01b81525060405180604001604052806004815260200163414e445960e01b8152508160039081620000789190620002b6565b506004620000878282620002b6565b5050506001600160a01b038116620000ba57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000c581620000f8565b50620000f273ba12cb540a376370663817604d7766606373e3ee6b204fce5e3e250261100000006200014a565b620003aa565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001a25760405162461bcd60e51b815260206004820152601e60248201527f416e64793a206d696e7420746f20746865207a65726f206164647265737300006044820152606401620000b1565b8060026000828254620001b6919062000382565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200023d57607f821691505b6020821081036200025e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020d57600081815260208120601f850160051c810160208610156200028d5750805b601f850160051c820191505b81811015620002ae5782815560010162000299565b505050505050565b81516001600160401b03811115620002d257620002d262000212565b620002ea81620002e3845462000228565b8462000264565b602080601f831160018114620003225760008415620003095750858301515b600019600386901b1c1916600185901b178555620002ae565b600085815260208120601f198616915b82811015620003535788860151825594840194600190910190840162000332565b5085821015620003725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003a457634e487b7160e01b600052601160045260246000fd5b92915050565b610bbc80620003ba6000396000f3fe608060405234801561001057600080fd5b50600436106101225760003560e01c806370a08231116100a857806370a0823114610208578063715018a6146102315780638da5cb5b1461023957806391d148541461025257806395d89b4114610268578063a457c2d714610270578063a9059cbb14610283578063c0acf80014610296578063d547741f146101aa578063dd62ed3e1461029e578063f2fde38b146102b157600080fd5b806306fdde0314610127578063095ea7b31461014557806318160ddd1461016857806323b872dd1461017a578063248a9ca31461018d5780632778100e146101a15780632f2ff15d146101aa578063313ce567146101bf57806336568abe146101ce578063370d6f29146101e057806339509351146101f5575b600080fd5b61012f6102c4565b60405161013c9190610997565b60405180910390f35b610158610153366004610a01565b610356565b604051901515815260200161013c565b6002545b60405190815260200161013c565b610158610188366004610a2b565b610370565b61016c61019b366004610a67565b50600090565b61016c60105481565b6101bd6101b8366004610a80565b610394565b005b6040516012815260200161013c565b6101bd6101dc366004610a80565b5050565b61016c6101ee366004610aac565b5060105490565b610158610203366004610a01565b61039c565b61016c610216366004610aac565b6001600160a01b031660009081526020819052604090205490565b6101bd6103be565b6005546001600160a01b031660405161013c9190610ace565b610158610260366004610a80565b600092915050565b61012f6103d2565b61015861027e366004610a01565b6103e1565b610158610291366004610a01565b61045f565b61016c61046d565b61016c6102ac366004610ae2565b610572565b6101bd6102bf366004610aac565b61059d565b6060600380546102d390610b0c565b80601f01602080910402602001604051908101604052809291908181526020018280546102ff90610b0c565b801561034c5780601f106103215761010080835404028352916020019161034c565b820191906000526020600020905b81548152906001019060200180831161032f57829003601f168201915b5050505050905090565b6000336103648185856105db565b60019150505b92915050565b60003361037e8582856106fe565b610389858585610778565b506001949350505050565b6101dc610918565b6000336103648185856103af8383610572565b6103b99190610b5c565b6105db565b6103c6610918565b6103d06000610945565b565b6060600480546102d390610b0c565b600033816103ef8286610572565b9050838110156104525760405162461bcd60e51b8152602060048201526024808201527f416e64793a2064656372656173656420616c6c6f77616e63652062656c6f77206044820152637a65726f60e01b60648201526084015b60405180910390fd5b61038982868684036105db565b600033610364818585610778565b600080600a54600261047f9190610b5c565b9050600a5460026104909190610b6f565b61049a9082610b5c565b9050600e5460036104ab9190610b6f565b6104b59082610b5c565b9050600b5460046104c69190610b6f565b6104d09082610b5c565b9050600a5460056104e19190610b6f565b6104eb9082610b5c565b9050600e5460066104fc9190610b6f565b6105069082610b5c565b9050600e5460076105179190610b6f565b6105219082610b5c565b9050600d5460086105329190610b6f565b61053c9082610b5c565b9050600e54600961054d9190610b6f565b6105579082610b5c565b9050600e5460096105689190610b6f565b61036a9082610b5c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6105a5610918565b6001600160a01b0381166105cf576000604051631e4fbdf760e01b81526004016104499190610ace565b6105d881610945565b50565b6001600160a01b03831661063d5760405162461bcd60e51b815260206004820152602360248201527f416e64793a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610449565b6001600160a01b03821661069d5760405162461bcd60e51b815260206004820152602160248201527f416e64793a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610449565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061070a8484610572565b9050600019811461077257818110156107655760405162461bcd60e51b815260206004820152601c60248201527f416e64793a20696e73756666696369656e7420616c6c6f77616e6365000000006044820152606401610449565b61077284848484036105db565b50505050565b6001600160a01b0383166107da5760405162461bcd60e51b8152602060048201526024808201527f416e64793a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610449565b6001600160a01b03821661083b5760405162461bcd60e51b815260206004820152602260248201527f416e64793a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610449565b6001600160a01b038316600090815260208190526040902054818110156108b25760405162461bcd60e51b815260206004820152602560248201527f416e64793a207472616e7366657220616d6f756e7420657863656564732062616044820152646c616e636560d81b6064820152608401610449565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610772565b6005546001600160a01b031633146103d0573360405163118cdaa760e01b81526004016104499190610ace565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b818110156109c4578581018301518582016040015282016109a8565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109fc57600080fd5b919050565b60008060408385031215610a1457600080fd5b610a1d836109e5565b946020939093013593505050565b600080600060608486031215610a4057600080fd5b610a49846109e5565b9250610a57602085016109e5565b9150604084013590509250925092565b600060208284031215610a7957600080fd5b5035919050565b60008060408385031215610a9357600080fd5b82359150610aa3602084016109e5565b90509250929050565b600060208284031215610abe57600080fd5b610ac7826109e5565b9392505050565b6001600160a01b0391909116815260200190565b60008060408385031215610af557600080fd5b610afe836109e5565b9150610aa3602084016109e5565b600181811c90821680610b2057607f821691505b602082108103610b4057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561036a5761036a610b46565b808202811582820484141761036a5761036a610b4656fea264697066735822122049e8b044e50fa3be1a8ada07caa66192eacd3c0b05322f0045b731d28ab8d9bc64736f6c63430008130033