0x60806040526004805461ffff60a01b1916600560a11b17905534801561002457600080fd5b5060405161112b38038061112b833981016040819052610043916100ed565b61004c33610081565b60018055600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055610120565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100e857600080fd5b919050565b6000806040838503121561010057600080fd5b610109836100d1565b9150610117602084016100d1565b90509250929050565b610ffc8061012f6000396000f3fe6080604052600436106100ec5760003560e01c80639d8066681161008a578063caa75c3611610059578063caa75c361461026f578063cc9351b61461028f578063f2fde38b146102af578063fa89c171146102cf57600080fd5b80639d806668146101ea578063a0ef91df1461020a578063c73acd811461021f578063c8f8c6c51461024f57600080fd5b806369c101f4116100c657806369c101f414610177578063715018a61461019757806389476069146101ac5780638da5cb5b146101cc57600080fd5b806311bd9687146100f857806363caa1e31461011a578063650bda341461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004610dae565b6102ef565b005b34801561012657600080fd5b50610118610135366004610dd0565b610422565b34801561014657600080fd5b5061015a610155366004610df4565b61044c565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561018357600080fd5b5060045461015a906001600160a01b031681565b3480156101a357600080fd5b50610118610476565b3480156101b857600080fd5b506101186101c7366004610dae565b61048a565b3480156101d857600080fd5b506000546001600160a01b031661015a565b3480156101f657600080fd5b50610118610205366004610dae565b6105bd565b34801561021657600080fd5b506101186105e7565b34801561022b57600080fd5b5061023f61023a366004610dae565b61067e565b604051901515815260200161016e565b34801561025b57600080fd5b5061011861026a366004610e0d565b6106e7565b34801561027b57600080fd5b5061011861028a366004610dae565b610a47565b34801561029b57600080fd5b506101186102aa366004610dae565b610bde565b3480156102bb57600080fd5b506101186102ca366004610dae565b610c08565b3480156102db57600080fd5b5060035461015a906001600160a01b031681565b6102f7610c7e565b6001600160a01b0381166103445760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064015b60405180910390fd5b61034d8161067e565b156103aa5760405162461bcd60e51b815260206004820152602760248201527f4164647265737320616c72656164792065786973747320696e207468652062616044820152663735b1b430b4b760c91b606482015260840161033b565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560405190917f7ae4af6001d6aa983476b1eca0cfc5b2f26d617ede4a9f8a86534d1896cc6cb491a250565b61042a610c7e565b6004805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b6002818154811061045c57600080fd5b6000918252602090912001546001600160a01b0316905081565b61047e610c7e565b6104886000610cd8565b565b610492610c7e565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190610e49565b60035460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044016020604051808303816000875af1158015610552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105769190610e62565b506003546040518281526001600160a01b03909116907f7948a9c59728231dcf4f97482d85cfd815d4250fc610df4a92ce0a712f0237f39060200160405180910390a25050565b6105c5610c7e565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6105ef610c7e565b604051600090339047908381818185875af1925050503d8060008114610631576040519150601f19603f3d011682016040523d82523d6000602084013e610636565b606091505b505090508061067b5760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b604482015260640161033b565b50565b6000805b6002548110156106de57826001600160a01b0316600282815481106106a9576106a9610e84565b6000918252602090912001546001600160a01b0316036106cc5750600192915050565b806106d681610eb0565b915050610682565b50600092915050565b6002600154036107395760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161033b565b60026001556004546001600160a01b0384811691161461078b5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161033b565b600082116107db5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161033b565b6107e48161067e565b6108485760405162461bcd60e51b815260206004820152602f60248201527f496e76616c69642064657374696e6174696f6e2061646472657373206f72206e60448201526e37ba1034b7103130b735b1b430b4b760891b606482015260840161033b565b60005a9050600061085c3660248184610ec9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293506060921591506108a690505750806108cb565b604051631b9d5b1b60e21b602082015260240160405160208183030381529060405290505b600480546040516323b872dd60e01b815233928101929092526001600160a01b0386811660248401526044830188905216906323b872dd906064016020604051808303816000875af1158015610925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109499190610e62565b506004546040516001600160a01b039182169186169033907f054b281ba60aa2cf0531b9ce64b889668a85b9f408fd273073345eddcbb9ff3590610990908a908790610ef3565b60405180910390a460005a905060006109a98583610d28565b604051909150600090339083908381818185875af1925050503d80600081146109ee576040519150601f19603f3d011682016040523d82523d6000602084013e6109f3565b606091505b5050905080610a385760405162461bcd60e51b815260206004820152601160248201527014995d1d5c9b8811d85cc811985a5b1959607a1b604482015260640161033b565b50506001805550505050505050565b610a4f610c7e565b60005b600254811015610b8a57816001600160a01b031660028281548110610a7957610a79610e84565b6000918252602090912001546001600160a01b031603610b785760028054610aa390600190610f49565b81548110610ab357610ab3610e84565b600091825260209091200154600280546001600160a01b039092169183908110610adf57610adf610e84565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506002805480610b1e57610b1e610f5c565b600082815260208120820160001990810180546001600160a01b03191690559091019091556040516001600160a01b038416917f99b54fb2d9cc6cac804f0fde6109f66e64cc60555f906b6e1bfd8c539a47bdb491a25050565b80610b8281610eb0565b915050610a52565b5060405162461bcd60e51b815260206004820152602260248201527f41646472657373206e6f7420666f756e6420696e207468652062616e6b63686160448201526134b760f11b606482015260840161033b565b610be6610c7e565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610c10610c7e565b6001600160a01b038116610c755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161033b565b61067b81610cd8565b6000546001600160a01b031633146104885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161033b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080610d358385610f49565b610d419061a410610f72565b90503a6000610d508383610f85565b600454909150600090606490610d7190600160a01b900461ffff1684610f85565b610d7b9190610fa4565b610d859083610f72565b9450505050505b92915050565b80356001600160a01b0381168114610da957600080fd5b919050565b600060208284031215610dc057600080fd5b610dc982610d92565b9392505050565b600060208284031215610de257600080fd5b813561ffff81168114610dc957600080fd5b600060208284031215610e0657600080fd5b5035919050565b600080600060608486031215610e2257600080fd5b610e2b84610d92565b925060208401359150610e4060408501610d92565b90509250925092565b600060208284031215610e5b57600080fd5b5051919050565b600060208284031215610e7457600080fd5b81518015158114610dc957600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610ec257610ec2610e9a565b5060010190565b60008085851115610ed957600080fd5b83861115610ee657600080fd5b5050820193919092039150565b82815260006020604081840152835180604085015260005b81811015610f2757858101830151858201606001528201610f0b565b506000606082860101526060601f19601f830116850101925050509392505050565b81810381811115610d8c57610d8c610e9a565b634e487b7160e01b600052603160045260246000fd5b80820180821115610d8c57610d8c610e9a565b6000816000190483118215151615610f9f57610f9f610e9a565b500290565b600082610fc157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220f7e00632526e2b85301869e7fc47601a4cda27de481d10cbbe852f4d2fb66b5f64736f6c63430008100033000000000000000000000000c129097f61e6355a59004e734cbcba4fbef04ac5000000000000000000000000a7bd526e698a7ee6261982607d7b64cc8e7be0ef