0x6080604052600436106102975760003560e01c8063893d20e81161015a578063a9e75723116100c1578063d2135f2c1161007a578063d2135f2c146109cc578063d8248358146109ff578063dd62ed3e14610a14578063e48849b214610a4f578063f2fde38b14610a64578063fce589d814610a975761029e565b8063a9e75723146108e4578063b65d08b0146108f9578063b98b677f1461090e578063c31c9c0714610941578063c6d98c8214610956578063c7f59a67146109915761029e565b80639f9a4e7f116101135780639f9a4e7f146107dd578063a0712d6814610809578063a0ef91df14610833578063a392e67414610848578063a457c2d714610872578063a9059cbb146108ab5761029e565b8063893d20e8146107225780638da5cb5b1461073757806395d89b411461074c5780639dd8ce16146107615780639e0f37241461078f5780639e281a98146107a45761029e565b80633ff8bf2e116101fe57806359c9176c116101b757806359c9176c1461063657806363f4df771461066457806365b4a9e7146106975780636a141e2c146106ac57806370a08231146106da578063715018a61461070d5761029e565b80633ff8bf2e1461055057806340c10f19146105655780634304d4a21461059e578063455e9561146105d95780634a74bb021461060c578063570ca735146106215761029e565b806329605e771161025057806329605e7714610448578063313ce5671461047d578063376c2391146104a857806339509351146104d657806339e7fddc1461050f5780633fb0da64146105245761029e565b806306fdde03146102a3578063095ea7b31461032d57806318160ddd1461037a57806323b872dd146103a157806326991cc8146103e4578063269f534c146104155761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610aac565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f25781810151838201526020016102da565b50505050905090810190601f16801561031f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033957600080fd5b506103666004803603604081101561035057600080fd5b506001600160a01b038135169060200135610b42565b604080519115158252519081900360200190f35b34801561038657600080fd5b5061038f610b60565b60408051918252519081900360200190f35b3480156103ad57600080fd5b50610366600480360360608110156103c457600080fd5b506001600160a01b03813581169160208101359091169060400135610b66565b3480156103f057600080fd5b506103f9610bed565b604080516001600160a01b039092168252519081900360200190f35b34801561042157600080fd5b506103666004803603602081101561043857600080fd5b50356001600160a01b0316610bfc565b34801561045457600080fd5b5061047b6004803603602081101561046b57600080fd5b50356001600160a01b0316610c1a565b005b34801561048957600080fd5b50610492610d04565b6040805160ff9092168252519081900360200190f35b3480156104b457600080fd5b5061047b600480360360208110156104cb57600080fd5b503561ffff16610d0d565b3480156104e257600080fd5b50610366600480360360408110156104f957600080fd5b506001600160a01b038135169060200135610e02565b34801561051b57600080fd5b506103f9610e50565b34801561053057600080fd5b50610539610e66565b6040805161ffff9092168252519081900360200190f35b34801561055c57600080fd5b50610539610e7d565b34801561057157600080fd5b5061047b6004803603604081101561058857600080fd5b506001600160a01b038135169060200135610e87565b3480156105aa57600080fd5b5061047b600480360360408110156105c157600080fd5b506001600160a01b0381351690602001351515610ef7565b3480156105e557600080fd5b5061047b600480360360208110156105fc57600080fd5b50356001600160a01b0316610f6b565b34801561061857600080fd5b50610366611000565b34801561062d57600080fd5b506103f9611009565b34801561064257600080fd5b5061047b6004803603602081101561065957600080fd5b503561ffff16611018565b34801561067057600080fd5b506103666004803603602081101561068757600080fd5b50356001600160a01b0316611116565b3480156106a357600080fd5b506103f9611134565b3480156106b857600080fd5b5061047b600480360360208110156106cf57600080fd5b503561ffff1661113a565b3480156106e657600080fd5b5061038f600480360360208110156106fd57600080fd5b50356001600160a01b0316611268565b34801561071957600080fd5b5061047b611283565b34801561072e57600080fd5b506103f961132f565b34801561074357600080fd5b506103f961133e565b34801561075857600080fd5b506102b861134d565b34801561076d57600080fd5b506107766113ae565b6040805163ffffffff9092168252519081900360200190f35b34801561079b57600080fd5b506103f96113c1565b3480156107b057600080fd5b5061047b600480360360408110156107c757600080fd5b506001600160a01b0381351690602001356113d0565b3480156107e957600080fd5b5061047b6004803603602081101561080057600080fd5b50351515611498565b34801561081557600080fd5b506103666004803603602081101561082c57600080fd5b503561152c565b34801561083f57600080fd5b5061047b6115a9565b34801561085457600080fd5b5061047b6004803603602081101561086b57600080fd5b5035611676565b34801561087e57600080fd5b506103666004803603604081101561089557600080fd5b506001600160a01b038135169060200135611702565b3480156108b757600080fd5b50610366600480360360408110156108ce57600080fd5b506001600160a01b03813516906020013561176a565b3480156108f057600080fd5b5061038f61177e565b34801561090557600080fd5b506105396117a8565b34801561091a57600080fd5b5061047b6004803603602081101561093157600080fd5b50356001600160a01b03166117b7565b34801561094d57600080fd5b506103f9611a64565b34801561096257600080fd5b5061047b6004803603604081101561097957600080fd5b506001600160a01b0381351690602001351515611a73565b34801561099d57600080fd5b5061047b600480360360408110156109b457600080fd5b506001600160a01b0381351690602001351515611ae7565b3480156109d857600080fd5b50610366600480360360208110156109ef57600080fd5b50356001600160a01b0316611b5b565b348015610a0b57600080fd5b5061038f611b79565b348015610a2057600080fd5b5061038f60048036036040811015610a3757600080fd5b506001600160a01b0381358116916020013516611b7f565b348015610a5b57600080fd5b50610539611baa565b348015610a7057600080fd5b5061047b60048036036020811015610a8757600080fd5b50356001600160a01b0316611bb0565b348015610aa357600080fd5b50610539611cb2565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b385780601f10610b0d57610100808354040283529160200191610b38565b820191906000526020600020905b815481529060010190602001808311610b1b57829003601f168201915b5050505050905090565b6000610b56610b4f611cc3565b8484611cc7565b5060015b92915050565b60035490565b6000610b73848484611db3565b610be384610b7f611cc3565b610bde856040518060600160405280602881526020016129d1602891396001600160a01b038a16600090815260026020526040812090610bbd611cc3565b6001600160a01b0316815260208101919091526040016000205491906120ca565b611cc7565b5060019392505050565b600e546001600160a01b031681565b6001600160a01b031660009081526008602052604090205460ff1690565b600f546001600160a01b03163314610c635760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b6001600160a01b038116610ca85760405162461bcd60e51b8152600401808060200182810382526039815260200180612b916039913960400191505060405180910390fd5b600f546040516001600160a01b038084169216907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed90600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60065460ff1690565b600f546001600160a01b03163314610d565760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b6101f461ffff82161115610d9b5760405162461bcd60e51b8152600401808060200182810382526051815260200180612bca6051913960600191505060405180910390fd5b6006546040805161ffff610100909304831681529183166020830152805133927fe9d5c8ee2a65d4fb859c680669d8f902172d53e3f15f9f11108a31bbada4b70b92908290030190a26006805461ffff9092166101000262ffff0019909216919091179055565b6000610b56610e0f611cc3565b84610bde8560026000610e20611cc3565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612161565b600654600160581b90046001600160a01b031681565b6006546901000000000000000000900461ffff1681565b60075461ffff1681565b610e8f611cc3565b6001600160a01b0316610ea061133e565b6001600160a01b031614610ee9576040805162461bcd60e51b81526020600482018190526024820152600080516020612a3d833981519152604482015290519081900360640190fd5b610ef382826121c2565b5050565b600f546001600160a01b03163314610f405760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600f546001600160a01b03163314610fb45760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b601080546001600160a01b0319166001600160a01b03831690811790915560405133907f22defbe659f219192f0957efe0c8fb97fddcd455e1c4bfaa94fde9938c18bb9d90600090a350565b600b5460ff1681565b600f546001600160a01b031690565b600f546001600160a01b031633146110615760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b60648161ffff1611156110a55760405162461bcd60e51b8152600401808060200182810382526041815260200180612b116041913960600191505060405180910390fd5b6006546040805161ffff600160381b909304831681529183166020830152805133927f9dd5b4b7c6d2d8952a052c811ac50e7001fcc6017949845a5aa027b1796ef0b892908290030190a26006805461ffff909216600160381b0268ffff0000000000000019909216919091179055565b6001600160a01b03166000908152600a602052604090205460ff1690565b61dead81565b600f546001600160a01b031633146111835760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b6103e88161ffff1611156111c85760405162461bcd60e51b81526004018080602001828103825260408152602001806128f66040913960400191505060405180910390fd5b60648161ffff16101561120c5760405162461bcd60e51b815260040180806020018281038252603f815260200180612c3d603f913960400191505060405180910390fd5b6007546040805161ffff92831681529183166020830152805133927fb62a50fc861a770636e85357becb3b82a32e911106609d4985871eaf29011e0892908290030190a26007805461ffff191661ffff92909216919091179055565b6001600160a01b031660009081526001602052604090205490565b61128b611cc3565b6001600160a01b031661129c61133e565b6001600160a01b0316146112e5576040805162461bcd60e51b81526020600482018190526024820152600080516020612a3d833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061133961133e565b905090565b6000546001600160a01b031690565b60058054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b385780601f10610b0d57610100808354040283529160200191610b38565b6006546301000000900463ffffffff1681565b6010546001600160a01b031690565b600f546001600160a01b031633146114195760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b505050506040513d602081101561149257600080fd5b50505050565b600f546001600160a01b031633146114e15760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b604080518215158152905133917f3ca65588b29182880283bc8778fea5f01b351e01d874839a39a99e1c281a2113919081900360200190a2600b805460ff1916911515919091179055565b6000611536611cc3565b6001600160a01b031661154761133e565b6001600160a01b031614611590576040805162461bcd60e51b81526020600482018190526024820152600080516020612a3d833981519152604482015290519081900360640190fd5b6115a161159b611cc3565b836121c2565b506001919050565b600f546001600160a01b031633146115f25760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b60004711611647576040805162461bcd60e51b815260206004820152601b60248201527f77697468647261774574683a204e6f204554482062616c616e63650000000000604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f19350505050158015611673573d6000803e3d6000fd5b50565b600f546001600160a01b031633146116bf5760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b600c546040805191825260208201839052805133927f54c7a13ff01698e4ed3550a23216585f8472c7b1515a932eac98c9a6d48990c592908290030190a2600c55565b6000610b5661170f611cc3565b84610bde85604051806060016040528060258152602001612aca6025913960026000611739611cc3565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906120ca565b6000610b56611777611cc3565b8484611db3565b60075460009061133990612710906117a29061ffff1661179c610b60565b906122a8565b90612301565b600654610100900461ffff1681565b600f546001600160a01b031633146118005760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b600d546001600160a01b0316156118485760405162461bcd60e51b815260040180806020018281038252602c8152602001806129a5602c913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0383811691909117918290556040805163c45a015560e01b81529051929091169163c45a015591600480820192602092909190829003018186803b1580156118a457600080fd5b505afa1580156118b8573d6000803e3d6000fd5b505050506040513d60208110156118ce57600080fd5b5051600d54604080516315ab88c960e31b815290516001600160a01b039384169363e6a4390593309391169163ad5c464891600480820192602092909190829003018186803b15801561192057600080fd5b505afa158015611934573d6000803e3d6000fd5b505050506040513d602081101561194a57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152516044808301926020929190829003018186803b15801561199a57600080fd5b505afa1580156119ae573d6000803e3d6000fd5b505050506040513d60208110156119c457600080fd5b5051600e80546001600160a01b0319166001600160a01b03928316179081905516611a205760405162461bcd60e51b815260040180806020018281038252602e815260200180612c7c602e913960400191505060405180910390fd5b600e54600d546040516001600160a01b03928316929091169033907fd4359230835d0c79972b7780914a403c7cdba8320af86bb1f31b3baf99c0c7c190600090a450565b600d546001600160a01b031681565b600f546001600160a01b03163314611abc5760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b600f546001600160a01b03163314611b305760405162461bcd60e51b8152600401808060200182810382526024815260200180612a5d6024913960400191505060405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526009602052604090205460ff1690565b600c5481565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101f481565b611bb8611cc3565b6001600160a01b0316611bc961133e565b6001600160a01b031614611c12576040805162461bcd60e51b81526020600482018190526024820152600080516020612a3d833981519152604482015290519081900360640190fd5b6001600160a01b038116611c575760405162461bcd60e51b815260040180806020018281038252602681526020018061297f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600654600160381b900461ffff1681565b3390565b6001600160a01b038316611d0c5760405162461bcd60e51b815260040180806020018281038252602481526020018061295b6024913960400191505060405180910390fd5b6001600160a01b038216611d515760405162461bcd60e51b8152600401808060200182810382526022815260200180612c1b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b8282826000611dc061177e565b1115611e53576001600160a01b03831660009081526008602052604090205460ff16158015611e0857506001600160a01b03821660009081526008602052604090205460ff16155b15611e5357611e1561177e565b811115611e535760405162461bcd60e51b815260040180806020018281038252603f815260200180612b52603f913960400191505060405180910390fd5b600b5460ff1615156001148015611e745750600e54600160a01b900460ff16155b8015611e8a5750600d546001600160a01b031615155b8015611ea05750600e546001600160a01b031615155b8015611eba5750600e546001600160a01b03878116911614155b8015611edf5750611ec961133e565b6001600160a01b0316866001600160a01b031614155b15611eec57611eec612368565b6000611ef787611b5b565b90506000611f0487611116565b90508180611f0f5750805b80611f235750600654610100900461ffff16155b15611f3857611f338888886124cb565b6120c0565b600654600090611f5a90612710906117a2908a90610100900461ffff166122a8565b600654909150600090611f80906064906117a2908590600160381b900461ffff166122a8565b90506000611f8e838361261d565b90508082018314611fd05760405162461bcd60e51b81526004018080602001828103825260238152602001806129f96023913960400191505060405180910390fd5b6000611fdc8a8561261d565b90508381018a1461201e5760405162461bcd60e51b8152600401808060200182810382526022815260200180612aef6022913960400191505060405180910390fd5b336001600160a01b038d16148015612045575060065442630100000090910463ffffffff16115b15612097576120578c61dead856124cb565b6120628c30846124cb565b6120718c8c6002845b046124cb565b600654612092908d90600160581b90046001600160a01b031660028461206b565b6120ba565b6120a48c61dead856124cb565b6120af8c30846124cb565b6120ba8c8c836124cb565b98505050505b5050505050505050565b600081848411156121595760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561211e578181015183820152602001612106565b50505050905090810190601f16801561214b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156121bb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661221d576040805162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035461222a9082612161565b6003556001600160a01b0382166000908152600160205260409020546122509082612161565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000826122b757506000610b5a565b828202828482816122c457fe5b04146121bb5760405162461bcd60e51b8152600401808060200182810382526021815260200180612a1c6021913960400191505060405180910390fd5b6000808211612357576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161236057fe5b049392505050565b600e805460ff60a01b1916600160a01b1790556006805462ffff0019811690915561ffff61010090910416600061239e30611268565b905060006123aa61177e565b90508082116123b957816123bb565b805b9150600c54821061249e57600c5460006123d6826002612301565b905060006123f46123ed60646117a28560506122a8565b849061261d565b90506123ff8261267a565b600654600160581b90046001600160a01b03166108fc61242560646117a24760146122a8565b6040518115909202916000818181858888f1935050505015801561244d573d6000803e3d6000fd5b50476124598282612828565b604080518481526020810183905280820184905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a1505050505b50506006805461ffff9092166101000262ffff0019909216919091179055600e805460ff60a01b19169055565b6001600160a01b0383166125105760405162461bcd60e51b81526004018080602001828103825260258152602001806129366025913960400191505060405180910390fd5b6001600160a01b0382166125555760405162461bcd60e51b8152600401808060200182810382526023815260200180612aa76023913960400191505060405180910390fd5b61259281604051806060016040528060268152602001612a81602691396001600160a01b03861660009081526001602052604090205491906120ca565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546125c19082612161565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115612674576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516002808252606080830184529260208301908036833701905050905030816000815181106126a857fe5b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156126fc57600080fd5b505afa158015612710573d6000803e3d6000fd5b505050506040513d602081101561272657600080fd5b505181518290600190811061273757fe5b6001600160a01b039283166020918202929092010152600d5461275d9130911684611cc7565b600d5460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156127e35781810151838201526020016127cb565b505050509050019650505050505050600060405180830381600087803b15801561280c57600080fd5b505af1158015612820573d6000803e3d6000fd5b505050505050565b600d546128409030906001600160a01b031684611cc7565b600d546001600160a01b031663f305d71982308560008061285f6113c1565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b1580156128ca57600080fd5b505af11580156128de573d6000803e3d6000fd5b50505050506040513d606081101561149257600080fdfe544f4b454e3a3a7570646174654d61785472616e73666572416d6f756e74526174653a204d6178207472616e7366657220616d6f756e7420746f20486967682e42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373544f4b454e3a3a75706461746553776170526f757465723a20526f7574657220616c7265616479207365742e42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365544f4b454e3a3a7472616e736665723a204275726e2076616c756520696e76616c6964536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657261746f7242455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e3a3a7472616e736665723a205461782076616c756520696e76616c6964544f4b454e3a3a7570646174654275726e526174653a204275726e20466565206d757374206e6f742065786365656420746865206d6178696d756d20726174652e544f4b454e3a3a616e74695768616c653a205472616e7366657220616d6f756e74206578636565647320746865206d61785472616e73666572416d6f756e74544f4b454e3a3a7472616e736665724f70657261746f723a206e6577206f70657261746f7220697320746865207a65726f2061646472657373544f4b454e3a3a7570646174655472616e73666572546178526174653a205472616e73666572207461782072617465206d757374206e6f742065786365656420746865206d6178696d756d20726174652e42455032303a20617070726f766520746f20746865207a65726f2061646472657373544f4b454e3a3a7570646174654d61785472616e73666572416d6f756e74526174653a204d696e207472616e7366657220616d6f756e7420746f204c6f772e544f4b454e3a3a75706461746553776170526f757465723a20496e76616c6964207061697220616464726573732ea26469706673582212204e54396c0006e1134256611222c5338148e26753fe6a9310dcaa41da875b2e6664736f6c634300060c0033