0x608060405234801561001057600080fd5b50600080546001600160a01b03191633178155600355670de0b6b3a764000060019081556002805460ff19169091179055611972806100506000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063481c6a751161008c5780635c4a793f116100665780635c4a793f1461028e578063867b568b146102ab578063d0ebdbe7146102c7578063d551818c146102ed576100cf565b8063481c6a751461021d578063482c2fa3146102415780635be701d414610249576100cf565b806303e871d1146100d4578063062642b9146100f35780630a7ec6441461016d5780631ab839db146101875780632acd5e4e146101aa5780633d662a4d146101c7575b600080fd5b6100f1600480360360208110156100ea57600080fd5b503561030a565b005b6101106004803603602081101561010957600080fd5b503561054c565b60405180886001600160a01b03168152602001876001600160a01b0316815260200186815260200185815260200184815260200183815260200182600281111561015657fe5b815260200197505050505050505060405180910390f35b610175610599565b60408051918252519081900360200190f35b6100f16004803603604081101561019d57600080fd5b508035906020013561059f565b6100f1600480360360208110156101c057600080fd5b50356108d7565b6100f1600480360360e08110156101dd57600080fd5b506001600160a01b03813516906020810135906040810135906060810135906080810135906001600160c01b031960a082013581169160c0013516610900565b610225610f12565b604080516001600160a01b039092168252519081900360200190f35b6100f1610f21565b6102666004803603602081101561025f57600080fd5b5035610f64565b6040518083600281111561027657fe5b81526020018281526020019250505060405180910390f35b6100f1600480360360208110156102a457600080fd5b5035611069565b6102b3611438565b604080519115158252519081900360200190f35b6100f1600480360360208110156102dd57600080fd5b50356001600160a01b0316611441565b6100f16004803603602081101561030357600080fd5b5035611491565b60008181526004602052604090206001015481906001600160a01b03163314610366576040805162461bcd60e51b815260206004820152600960248201526813db9b1e48121bdcdd60ba1b604482015290519081900360640190fd5b60008281526004602052604090206001600682015460ff16600281111561038957fe5b146103db576040805162461bcd60e51b815260206004820152601d60248201527f5265736572766174696f6e206d75737420626520414354495641544544000000604482015290519081900360640190fd5b60006103ee826002015462012750611635565b90508042101561042f5760405162461bcd60e51b815260040180806020018281038252603b815260200180611855603b913960400191505060405180910390fd5b60058201805460009182905560068401805460ff1916600217905560018401546040805163a9059cbb60e01b81526001600160a01b03909216600483015260248201839052519192736b175474e89094c44da98b954eedeac495271d0f9263a9059cbb926044808201936020939283900390910190829087803b1580156104b557600080fd5b505af11580156104c9573d6000803e3d6000fd5b505050506040513d60208110156104df57600080fd5b50506006830154600584015460405187927f6c5723e32846bc50d5aab1893dae2f79367ac8324adcf5f56ed692732544afc59260ff9091169142908084600281111561052757fe5b8152602001838152602001828152602001935050505060405180910390a25050505050565b600460208190526000918252604090912080546001820154600283015460038401549484015460058501546006909501546001600160a01b03948516969390941694919390919060ff1687565b60015481565b60008281526004602052604090206001015482906001600160a01b031633146105fb576040805162461bcd60e51b815260206004820152600960248201526813db9b1e48121bdcdd60ba1b604482015290519081900360640190fd5b60008381526004602052604090206001600682015460ff16600281111561061e57fe5b14610670576040805162461bcd60e51b815260206004820152601f60248201527f5265736572766174696f6e2068617320746f2062652041435449564154454400604482015290519081900360640190fd5b6000610683826002015462012750611635565b9050804210156106c45760405162461bcd60e51b81526004018080602001828103825260478152602001806118906047913960600191505060405180910390fd5b600582015484158015906106d85750808511155b6107135760405162461bcd60e51b815260040180806020018281038252602c815260200180611756602c913960400191505060405180910390fd5b600061071f828761164b565b6000600586015560068501805491925060029160ff1916600183021790555083546040805163a9059cbb60e01b81526001600160a01b0390921660048301526024820188905251736b175474e89094c44da98b954eedeac495271d0f9163a9059cbb9160448083019260209291908290030181600087803b1580156107a357600080fd5b505af11580156107b7573d6000803e3d6000fd5b505050506040513d60208110156107cd57600080fd5b5050801561086a5760018401546040805163a9059cbb60e01b81526001600160a01b0390921660048301526024820183905251736b175474e89094c44da98b954eedeac495271d0f9163a9059cbb9160448083019260209291908290030181600087803b15801561083d57600080fd5b505af1158015610851573d6000803e3d6000fd5b505050506040513d602081101561086757600080fd5b50505b6006840154600585015460405189927f6c5723e32846bc50d5aab1893dae2f79367ac8324adcf5f56ed692732544afc59260ff909116914290808460028111156108b057fe5b8152602001838152602001828152602001935050505060405180910390a250505050505050565b6000546001600160a01b031633146108ee57600080fd5b600081116108fb57600080fd5b600155565b60025460ff166109415760405162461bcd60e51b81526004018080602001828103825260218152602001806118d76021913960400191505060405180910390fd5b60001960035410610999576040805162461bcd60e51b815260206004820152601d60248201527f4d6178696d756d207265736572766174696f6e69642072656163686564000000604482015290519081900360640190fd5b336001600160a01b03881614156109f7576040805162461bcd60e51b815260206004820152601e60248201527f486f737420616e642047756573742063616e206e6f742062652073616d650000604482015290519081900360640190fd5b60008411610a4c576040805162461bcd60e51b815260206004820152601960248201527f4461696c792050726963652073686f756c64206265203e203000000000000000604482015290519081900360640190fd5b610a598662012750611635565b4210610a965760405162461bcd60e51b81526004018080602001828103825260228152602001806118336022913960400191505060405180910390fd5b6000610aa2878761165b565b905060008111610af9576040805162461bcd60e51b815260206004820152601c60248201527f4c656e677468206f6620537461792073686f756c64206265203e203000000000604482015290519081900360640190fd5b6000610b0586836116d8565b9050600060058311610b175786610b22565b610b228760026116d8565b9050808610158015610b345750818611155b610b6f5760405162461bcd60e51b81526004018080602001828103825260458152602001806118f86045913960600191505060405180910390fd5b610b7b86600154611635565b60408051636eb1769f60e11b81523360048201523060248201529051736b175474e89094c44da98b954eedeac495271d0f9163dd62ed3e916044808301926020929190829003018186803b158015610bd257600080fd5b505afa158015610be6573d6000803e3d6000fd5b505050506040513d6020811015610bfc57600080fd5b50511015610c51576040805162461bcd60e51b815260206004820152601b60248201527f646169546f6b656e20616c6c6f77616e63652065786365656465640000000000604482015290519081900360640190fd5b600354604080516020808201939093528151808203840181528183018084528151919094012061012082019092523383526001600160a01b038d166060820152608081018c905260a081018b905260c081018a905260e081018990529091906101000160019052600082815260046020818152604092839020845181546001600160a01b039182166001600160a01b031991821617835592860151600180840180549290931691909416179055928401516002808501919091556060850151600385015560808501519284019290925560a0840151600584015560c08401516006840180549193909260ff1990921691908490811115610d4d57fe5b0217905550905050610d626003546001611635565b600355604080516323b872dd60e01b8152336004820152306024820152604481018990529051736b175474e89094c44da98b954eedeac495271d0f916323b872dd9160648083019260209291908290030181600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b505050506040513d6020811015610def57600080fd5b505060008054600154604080516323b872dd60e01b81523360048201526001600160a01b039093166024840152604483019190915251736b175474e89094c44da98b954eedeac495271d0f926323b872dd92606480820193602093909283900390910190829087803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050506040513d6020811015610e8e57600080fd5b5050604080518b8152602081018b90528082018a9052606081018990526001600160c01b03198089166080830152871660a08201524260c082015290516001600160a01b038d1691339184917f39ddb5a147729681d0bb2120dfd0ff4c758a4f3114a9dd7c8c73e212263e6d0b919081900360e00190a45050505050505050505050565b6000546001600160a01b031681565b6000546001600160a01b03163314610f3857600080fd5b60025460ff161515600114610f4e576001610f51565b60005b6002805460ff1916911515919091179055565b600080610f6f6116fc565b600084815260046020818152604092839020835160e08101855281546001600160a01b039081168252600183015416928101929092526002808201549483019490945260038101546060830152918201546080820152600582015460a08201526006820154909260c084019160ff1690811115610fe857fe5b6002811115610ff357fe5b90525080519091506001600160a01b0316611055576040805162461bcd60e51b815260206004820152601a60248201527f5265736572766174696f6e20646f6573206e6f74206578697374000000000000604482015290519081900360640190fd5b8060c001518160a001519250925050915091565b60008181526004602052604090205481906001600160a01b031633146110c3576040805162461bcd60e51b815260206004820152600a60248201526913db9b1e4811dd595cdd60b21b604482015290519081900360640190fd5b60008281526004602052604090206001600682015460ff1660028111156110e657fe5b14611138576040805162461bcd60e51b815260206004820152601d60248201527f5265736572766174696f6e206d75737420626520414354495641544544000000604482015290519081900360640190fd5b600061114b826002015462012750611635565b905080421061118b5760405162461bcd60e51b81526004018080602001828103825260398152602001806117fa6039913960400191505060405180910390fd5b600061119f8360020154846003015461165b565b90506000600582116111b25760036111b5565b60055b600585018054600090915560068601805460ff19169055600286015460ff929092169250906111f0906111eb84620151806116d8565b61164b565b42101561128e5784546040805163a9059cbb60e01b81526001600160a01b0390921660048301526024820183905251736b175474e89094c44da98b954eedeac495271d0f9163a9059cbb9160448083019260209291908290030181600087803b15801561125c57600080fd5b505af1158015611270573d6000803e3d6000fd5b505050506040513d602081101561128657600080fd5b506113f29050565b6000600584116112a25785600401546112b1565b6112b1866004015460026116d8565b905060006112bf838361164b565b60018801546040805163a9059cbb60e01b81526001600160a01b0390921660048301526024820185905251919250736b175474e89094c44da98b954eedeac495271d0f9163a9059cbb916044808201926020929091908290030181600087803b15801561132b57600080fd5b505af115801561133f573d6000803e3d6000fd5b505050506040513d602081101561135557600080fd5b505080156113ef5786546040805163a9059cbb60e01b81526001600160a01b0390921660048301526024820183905251736b175474e89094c44da98b954eedeac495271d0f9163a9059cbb9160448083019260209291908290030181600087803b1580156113c257600080fd5b505af11580156113d6573d6000803e3d6000fd5b505050506040513d60208110156113ec57600080fd5b50505b50505b6006850154600586015460405189927f6c5723e32846bc50d5aab1893dae2f79367ac8324adcf5f56ed692732544afc59260ff909116914290808460028111156108b057fe5b60025460ff1681565b6000546001600160a01b0316331461145857600080fd5b6000816001600160a01b0316311161146f57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008181526004602052604090206001015481906001600160a01b031633146114ed576040805162461bcd60e51b815260206004820152600960248201526813db9b1e48121bdcdd60ba1b604482015290519081900360640190fd5b60008281526004602052604090206001600682015460ff16600281111561151057fe5b14611562576040805162461bcd60e51b815260206004820152601d60248201527f5265736572766174696f6e206d75737420626520414354495641544544000000604482015290519081900360640190fd5b6000611575826002015462012750611635565b90508042106115b55760405162461bcd60e51b81526004018080602001828103825260408152602001806117826040913960400191505060405180910390fd5b60058201805460009182905560068401805460ff1916905583546040805163a9059cbb60e01b81526001600160a01b03909216600483015260248201839052519192736b175474e89094c44da98b954eedeac495271d0f9263a9059cbb926044808201936020939283900390910190829087803b1580156104b557600080fd5b8082018281101561164557600080fd5b92915050565b8082038281111561164557600080fd5b600082821161169b5760405162461bcd60e51b81526004018080602001828103825260388152602001806117c26038913960400191505060405180910390fd5b60006116a7838561164b565b90506201518080820490820661a8c08110156116c357816116ce565b6116ce826001611635565b9695505050505050565b60008115806116f3575050808202828282816116f057fe5b04145b61164557600080fd5b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000600281111561175057fe5b90529056fe526566756e6420616d6f756e742073686f756c64206265203e2030202626203c3d2072737662616c616e63655265736572766174696f6e2043616e2062652043414e43454c4c4544207570746f20323120487273206166746572207265736572766174696f6e2073746172745265736572766174696f6e20456e642068617320746f2062652067726561746572207468616e205265736572766174696f6e20537461727447756573742063616e206f6e6c792063616e63656c207570746f20323120487273206166746572207265736572766174696f6e207374617274546f6f206c61746520746f2073746172742074686973207265736572766174696f6e486f73742063616e206f6e6c7920636c61696d207468652072656e7420323120487273206166746572207265736572766174696f6e207374617274486f73742063616e20726566756e642070617274206f6620636f6e74726163742062616c616e636520323120487273206166746572205265736572766174696f6e205374617274466163746f727920436f6e74726163742073686f756c6420626520416374697665416476616e6365205061796d656e742073686f756c64206265203e3d206d696e6164767061796d656e7420616e64203c3d207265736572766174696f6e20616d6f756e7420a26469706673582212209ac1276f052516b7ca90bee50c47c8185ae8871482841765a94f9da865c6cd7a64736f6c634300060c0033