0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638f32d59b116100b8578063d95b63711161007c578063d95b63711461058a578063dd62ed3e146105b8578063f2fde38b146105e6578063fad8b32a1461060c578063fc673c4f14610632578063fe9d93031461077057610142565b80638f32d59b1461046f578063959b8c3f1461047757806395d89b411461049d5780639bd9bbc6146104a5578063a9059cbb1461055e57610142565b8063313ce5671161010a578063313ce567146102ac578063556f0dc7146102ca57806362ad1b83146102d257806370a082311461041d578063715018a6146104435780638da5cb5b1461044b57610142565b806306e485381461014757806306fdde031461019f578063095ea7b31461021c57806318160ddd1461025c57806323b872dd14610276575b600080fd5b61014f61081b565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561018b578181015183820152602001610173565b505050509050019250505060405180910390f35b6101a761087d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101e15781810151838201526020016101c9565b50505050905090810190601f16801561020e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102486004803603604081101561023257600080fd5b506001600160a01b03813516906020013561090a565b604080519115158252519081900360200190f35b61026461092c565b60408051918252519081900360200190f35b6102486004803603606081101561028c57600080fd5b506001600160a01b03813581169160208101359091169060400135610932565b6102b4610ab5565b6040805160ff9092168252519081900360200190f35b610264610aba565b61041b600480360360a08110156102e857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561032257600080fd5b82018360208201111561033457600080fd5b803590602001918460018302840111600160201b8311171561035557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111600160201b831117156103da57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610abf945050505050565b005b6102646004803603602081101561043357600080fd5b50356001600160a01b0316610b29565b61041b610b44565b610453610be7565b604080516001600160a01b039092168252519081900360200190f35b610248610bf6565b61041b6004803603602081101561048d57600080fd5b50356001600160a01b0316610c1a565b6101a7610d66565b61041b600480360360608110156104bb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460018302840111600160201b8311171561051d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610dc7945050505050565b6102486004803603604081101561057457600080fd5b506001600160a01b038135169060200135610df9565b610248600480360360408110156105a057600080fd5b506001600160a01b0381358116916020013516610ed2565b610264600480360360408110156105ce57600080fd5b506001600160a01b0381358116916020013516610f74565b61041b600480360360208110156105fc57600080fd5b50356001600160a01b0316610f9f565b61041b6004803603602081101561062257600080fd5b50356001600160a01b0316611004565b61041b6004803603608081101561064857600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561067757600080fd5b82018360208201111561068957600080fd5b803590602001918460018302840111600160201b831117156106aa57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106fc57600080fd5b82018360208201111561070e57600080fd5b803590602001918460018302840111600160201b8311171561072f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611150945050505050565b61041b6004803603604081101561078657600080fd5b81359190810190604081016020820135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460018302840111600160201b831117156107da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111b6945050505050565b6060600580548060200260200160405190810160405280929190818152602001828054801561087357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610855575b5050505050905090565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108735780601f106108de57610100808354040283529160200191610873565b820191906000526020600020905b8154815290600101906020018083116108ec57509395945050505050565b6000806109156111e4565b90506109228185856111e8565b5060019392505050565b60025490565b60006001600160a01b0383166109795760405162461bcd60e51b8152600401808060200182810382526024815260200180611fbc6024913960400191505060405180910390fd5b6001600160a01b0384166109be5760405162461bcd60e51b81526004018080602001828103825260268152602001806120356026913960400191505060405180910390fd5b60006109c86111e4565b90506109f681868686604051806020016040528060008152506040518060200160405280600081525061128f565b610a228186868660405180602001604052806000815250604051806020016040528060008152506114d7565b610a7c8582610a778660405180606001604052806029815260200161200c602991396001600160a01b03808c166000908152600960209081526040808320938b1683529290522054919063ffffffff6116f116565b6111e8565b610aaa8186868660405180602001604052806000815250604051806020016040528060008152506000611788565b506001949350505050565b601290565b600190565b610ad0610aca6111e4565b86610ed2565b610b0b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611fe0602c913960400191505060405180910390fd5b610b22610b166111e4565b86868686866001611a28565b5050505050565b6001600160a01b031660009081526001602052604090205490565b610b4c610bf6565b610b9d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b0316610c0b6111e4565b6001600160a01b031614905090565b806001600160a01b0316610c2c6111e4565b6001600160a01b03161415610c725760405162461bcd60e51b8152600401808060200182810382526024815260200180611f2a6024913960400191505060405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff1615610cd55760086000610c9f6111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918516815292529020805460ff19169055610d1c565b600160076000610ce36111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020805460ff19169115159190911790555b610d246111e4565b6001600160a01b0316816001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108735780601f106108de57610100808354040283529160200191610873565b610df4610dd26111e4565b610dda6111e4565b858585604051806020016040528060008152506001611a28565b505050565b60006001600160a01b038316610e405760405162461bcd60e51b8152600401808060200182810382526024815260200180611fbc6024913960400191505060405180910390fd5b6000610e4a6111e4565b9050610e7881828686604051806020016040528060008152506040518060200160405280600081525061128f565b610ea48182868660405180602001604052806000815250604051806020016040528060008152506114d7565b6109228182868660405180602001604052806000815250604051806020016040528060008152506000611788565b6000816001600160a01b0316836001600160a01b03161480610f3d57506001600160a01b03831660009081526006602052604090205460ff168015610f3d57506001600160a01b0380831660009081526008602090815260408083209387168352929052205460ff16155b80610f6d57506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b610fa7610bf6565b610ff8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61100181611af3565b50565b61100c6111e4565b6001600160a01b0316816001600160a01b0316141561105c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4e6021913960400191505060405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff16156110c85760016008600061108b6111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020805460ff1916911515919091179055611106565b600760006110d46111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918516815292529020805460ff191690555b61110e6111e4565b6001600160a01b0316816001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b61116161115b6111e4565b85610ed2565b61119c5760405162461bcd60e51b815260040180806020018281038252602c815260200180611fe0602c913960400191505060405180910390fd5b6111b06111a76111e4565b85858585611b93565b50505050565b6111e06111c16111e4565b6111c96111e4565b848460405180602001604052806000815250611b93565b5050565b3390565b6001600160a01b03821661122d5760405162461bcd60e51b815260040180806020018281038252602381526020018061207e6023913960400191505060405180910390fd5b6001600160a01b03808416600081815260096020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6040805163555ddc6560e11b81526001600160a01b03871660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560248201529051600091731820a4b7618bde71dce8cdc73aab6c95905fad249163aabbb8ca91604480820192602092909190829003018186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b505190506001600160a01b038116156114ce57806001600160a01b03166375ab97828888888888886040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156114035781810151838201526020016113eb565b50505050905090810190601f1680156114305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561146357818101518382015260200161144b565b50505050905090810190601f1680156114905780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156114b557600080fd5b505af11580156114c9573d6000803e3d6000fd5b505050505b50505050505050565b61151a83604051806060016040528060278152602001611ebb602791396001600160a01b038816600090815260016020526040902054919063ffffffff6116f116565b6001600160a01b03808716600090815260016020526040808220939093559086168152205461154f908463ffffffff611dc016565b60016000866001600160a01b03166001600160a01b0316815260200190815260200160002081905550836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156116015781810151838201526020016115e9565b50505050905090810190601f16801561162e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611661578181015183820152602001611649565b50505050905090810190601f16801561168e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b600081848411156117805760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561174557818101518382015260200161172d565b50505050905090810190601f1680156117725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040805163555ddc6560e11b81526001600160a01b03871660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248201529051600091731820a4b7618bde71dce8cdc73aab6c95905fad249163aabbb8ca91604480820192602092909190829003018186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050506040513d602081101561183657600080fd5b505190506001600160a01b038116156119ca57806001600160a01b03166223de298989898989896040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156118fb5781810151838201526020016118e3565b50505050905090810190601f1680156119285780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561195b578181015183820152602001611943565b50505050905090810190601f1680156119885780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156119ad57600080fd5b505af11580156119c1573d6000803e3d6000fd5b50505050611a1e565b8115611a1e576119e2866001600160a01b0316611e1a565b15611a1e5760405162461bcd60e51b815260040180806020018281038252604d815260200180611f6f604d913960600191505060405180910390fd5b5050505050505050565b6001600160a01b038616611a6d5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e996022913960400191505060405180910390fd5b6001600160a01b038516611ac8576040805162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611ad687878787878761128f565b611ae48787878787876114d7565b6114ce87878787878787611788565b6001600160a01b038116611b385760405162461bcd60e51b8152600401808060200182810382526026815260200180611ee26026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038416611bd85760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b611be78585600086868661128f565b611c2a8360405180606001604052806023815260200161205b602391396001600160a01b038716600090815260016020526040902054919063ffffffff6116f116565b6001600160a01b038516600090815260016020526040902055600254611c56908463ffffffff611e5616565b600281905550836001600160a01b0316856001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611cdb578181015183820152602001611cc3565b50505050905090810190601f168015611d085780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611d3b578181015183820152602001611d23565b50505050905090810190601f168015611d685780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a36040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050565b600082820183811015610f6d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611e4e57508115155b949350505050565b6000610f6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116f156fe4552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a265627a7a7231582094ce30ce9752d79b9af53f774983f8d71a9225f18a8a282bab22f814e9cf53f164736f6c63430005100032
0x60806040523480156200001157600080fd5b5060405162002b8938038062002b89833981810160405260408110156200003757600080fd5b5080516020909101516000620000556001600160e01b036200036e16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805180820190915260138082527f556e69746564204d616e6b696e6420436f696e000000000000000000000000006020909201918252620000e59160039162000928565b5060408051808201909152600380825262554d4360e81b6020909201918252620001129160049162000928565b506200015133336a457bb11fdb3df8d400000060405180602001604052806000815250604051806020016040528060008152506200037360201b60201c565b60408051600081526020810191829052516200017091600591620009ad565b50600580546001818101835560008381527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db092830180546001600160a01b038089166001600160a01b031992831617909255855493840190955591909201805491851691909316179091555b600554811015620002385760016006600060058481548110620001fb57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101620001dc565b50604080516a22a9219b9b9baa37b5b2b760a91b8152815190819003600b0181206329965a1d60e01b82523060048301819052602483019190915260448201529051731820a4b7618bde71dce8cdc73aab6c95905fad24916329965a1d91606480830192600092919082900301818387803b158015620002b757600080fd5b505af1158015620002cc573d6000803e3d6000fd5b5050604080516922a92199182a37b5b2b760b11b8152815190819003600a0181206329965a1d60e01b82523060048301819052602483019190915260448201529051731820a4b7618bde71dce8cdc73aab6c95905fad2493506329965a1d9250606480830192600092919082900301818387803b1580156200034d57600080fd5b505af115801562000362573d6000803e3d6000fd5b50505050505062000a57565b335b90565b6001600160a01b038416620003cf576040805162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b620003eb83600254620005cc60201b62001dc01790919060201c565b6002556001600160a01b0384166000908152600160209081526040909120546200042091859062001dc0620005cc821b17901c565b60016000866001600160a01b03166001600160a01b0316815260200190815260200160002081905550620004628560008686868660016200062e60201b60201c565b836001600160a01b0316856001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015620004e3578181015183820152602001620004c9565b50505050905090810190601f168015620005115780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620005465781810151838201526020016200052c565b50505050905090810190601f168015620005745780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a36040805184815290516001600160a01b038616916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050565b60008282018381101562000627576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6040805163555ddc6560e11b81526001600160a01b03871660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248201529051600091731820a4b7618bde71dce8cdc73aab6c95905fad249163aabbb8ca91604480820192602092909190829003018186803b158015620006b357600080fd5b505afa158015620006c8573d6000803e3d6000fd5b505050506040513d6020811015620006df57600080fd5b505190506001600160a01b038116156200087d57806001600160a01b03166223de298989898989896040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015620007a75781810151838201526020016200078d565b50505050905090810190601f168015620007d55780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156200080a578181015183820152602001620007f0565b50505050905090810190601f168015620008385780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156200085e57600080fd5b505af115801562000873573d6000803e3d6000fd5b50505050620008e1565b8115620008e157620008a3866001600160a01b0316620008eb60201b62001e1a1760201c565b15620008e15760405162461bcd60e51b815260040180806020018281038252604d81526020018062002b3c604d913960600191505060405180910390fd5b5050505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200092057508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200096b57805160ff19168380011785556200099b565b828001600101855582156200099b579182015b828111156200099b5782518255916020019190600101906200097e565b50620009a992915062000a13565b5090565b82805482825590600052602060002090810192821562000a05579160200282015b8281111562000a0557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620009ce565b50620009a992915062000a30565b6200037091905b80821115620009a9576000815560010162000a1a565b6200037091905b80821115620009a95780546001600160a01b031916815560010162000a37565b6120d58062000a676000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638f32d59b116100b8578063d95b63711161007c578063d95b63711461058a578063dd62ed3e146105b8578063f2fde38b146105e6578063fad8b32a1461060c578063fc673c4f14610632578063fe9d93031461077057610142565b80638f32d59b1461046f578063959b8c3f1461047757806395d89b411461049d5780639bd9bbc6146104a5578063a9059cbb1461055e57610142565b8063313ce5671161010a578063313ce567146102ac578063556f0dc7146102ca57806362ad1b83146102d257806370a082311461041d578063715018a6146104435780638da5cb5b1461044b57610142565b806306e485381461014757806306fdde031461019f578063095ea7b31461021c57806318160ddd1461025c57806323b872dd14610276575b600080fd5b61014f61081b565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561018b578181015183820152602001610173565b505050509050019250505060405180910390f35b6101a761087d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101e15781810151838201526020016101c9565b50505050905090810190601f16801561020e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102486004803603604081101561023257600080fd5b506001600160a01b03813516906020013561090a565b604080519115158252519081900360200190f35b61026461092c565b60408051918252519081900360200190f35b6102486004803603606081101561028c57600080fd5b506001600160a01b03813581169160208101359091169060400135610932565b6102b4610ab5565b6040805160ff9092168252519081900360200190f35b610264610aba565b61041b600480360360a08110156102e857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561032257600080fd5b82018360208201111561033457600080fd5b803590602001918460018302840111600160201b8311171561035557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111600160201b831117156103da57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610abf945050505050565b005b6102646004803603602081101561043357600080fd5b50356001600160a01b0316610b29565b61041b610b44565b610453610be7565b604080516001600160a01b039092168252519081900360200190f35b610248610bf6565b61041b6004803603602081101561048d57600080fd5b50356001600160a01b0316610c1a565b6101a7610d66565b61041b600480360360608110156104bb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460018302840111600160201b8311171561051d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610dc7945050505050565b6102486004803603604081101561057457600080fd5b506001600160a01b038135169060200135610df9565b610248600480360360408110156105a057600080fd5b506001600160a01b0381358116916020013516610ed2565b610264600480360360408110156105ce57600080fd5b506001600160a01b0381358116916020013516610f74565b61041b600480360360208110156105fc57600080fd5b50356001600160a01b0316610f9f565b61041b6004803603602081101561062257600080fd5b50356001600160a01b0316611004565b61041b6004803603608081101561064857600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561067757600080fd5b82018360208201111561068957600080fd5b803590602001918460018302840111600160201b831117156106aa57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106fc57600080fd5b82018360208201111561070e57600080fd5b803590602001918460018302840111600160201b8311171561072f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611150945050505050565b61041b6004803603604081101561078657600080fd5b81359190810190604081016020820135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460018302840111600160201b831117156107da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111b6945050505050565b6060600580548060200260200160405190810160405280929190818152602001828054801561087357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610855575b5050505050905090565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108735780601f106108de57610100808354040283529160200191610873565b820191906000526020600020905b8154815290600101906020018083116108ec57509395945050505050565b6000806109156111e4565b90506109228185856111e8565b5060019392505050565b60025490565b60006001600160a01b0383166109795760405162461bcd60e51b8152600401808060200182810382526024815260200180611fbc6024913960400191505060405180910390fd5b6001600160a01b0384166109be5760405162461bcd60e51b81526004018080602001828103825260268152602001806120356026913960400191505060405180910390fd5b60006109c86111e4565b90506109f681868686604051806020016040528060008152506040518060200160405280600081525061128f565b610a228186868660405180602001604052806000815250604051806020016040528060008152506114d7565b610a7c8582610a778660405180606001604052806029815260200161200c602991396001600160a01b03808c166000908152600960209081526040808320938b1683529290522054919063ffffffff6116f116565b6111e8565b610aaa8186868660405180602001604052806000815250604051806020016040528060008152506000611788565b506001949350505050565b601290565b600190565b610ad0610aca6111e4565b86610ed2565b610b0b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611fe0602c913960400191505060405180910390fd5b610b22610b166111e4565b86868686866001611a28565b5050505050565b6001600160a01b031660009081526001602052604090205490565b610b4c610bf6565b610b9d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b0316610c0b6111e4565b6001600160a01b031614905090565b806001600160a01b0316610c2c6111e4565b6001600160a01b03161415610c725760405162461bcd60e51b8152600401808060200182810382526024815260200180611f2a6024913960400191505060405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff1615610cd55760086000610c9f6111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918516815292529020805460ff19169055610d1c565b600160076000610ce36111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020805460ff19169115159190911790555b610d246111e4565b6001600160a01b0316816001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108735780601f106108de57610100808354040283529160200191610873565b610df4610dd26111e4565b610dda6111e4565b858585604051806020016040528060008152506001611a28565b505050565b60006001600160a01b038316610e405760405162461bcd60e51b8152600401808060200182810382526024815260200180611fbc6024913960400191505060405180910390fd5b6000610e4a6111e4565b9050610e7881828686604051806020016040528060008152506040518060200160405280600081525061128f565b610ea48182868660405180602001604052806000815250604051806020016040528060008152506114d7565b6109228182868660405180602001604052806000815250604051806020016040528060008152506000611788565b6000816001600160a01b0316836001600160a01b03161480610f3d57506001600160a01b03831660009081526006602052604090205460ff168015610f3d57506001600160a01b0380831660009081526008602090815260408083209387168352929052205460ff16155b80610f6d57506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b610fa7610bf6565b610ff8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61100181611af3565b50565b61100c6111e4565b6001600160a01b0316816001600160a01b0316141561105c5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4e6021913960400191505060405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff16156110c85760016008600061108b6111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020805460ff1916911515919091179055611106565b600760006110d46111e4565b6001600160a01b03908116825260208083019390935260409182016000908120918516815292529020805460ff191690555b61110e6111e4565b6001600160a01b0316816001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b61116161115b6111e4565b85610ed2565b61119c5760405162461bcd60e51b815260040180806020018281038252602c815260200180611fe0602c913960400191505060405180910390fd5b6111b06111a76111e4565b85858585611b93565b50505050565b6111e06111c16111e4565b6111c96111e4565b848460405180602001604052806000815250611b93565b5050565b3390565b6001600160a01b03821661122d5760405162461bcd60e51b815260040180806020018281038252602381526020018061207e6023913960400191505060405180910390fd5b6001600160a01b03808416600081815260096020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6040805163555ddc6560e11b81526001600160a01b03871660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560248201529051600091731820a4b7618bde71dce8cdc73aab6c95905fad249163aabbb8ca91604480820192602092909190829003018186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b505190506001600160a01b038116156114ce57806001600160a01b03166375ab97828888888888886040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156114035781810151838201526020016113eb565b50505050905090810190601f1680156114305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561146357818101518382015260200161144b565b50505050905090810190601f1680156114905780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156114b557600080fd5b505af11580156114c9573d6000803e3d6000fd5b505050505b50505050505050565b61151a83604051806060016040528060278152602001611ebb602791396001600160a01b038816600090815260016020526040902054919063ffffffff6116f116565b6001600160a01b03808716600090815260016020526040808220939093559086168152205461154f908463ffffffff611dc016565b60016000866001600160a01b03166001600160a01b0316815260200190815260200160002081905550836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156116015781810151838201526020016115e9565b50505050905090810190601f16801561162e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611661578181015183820152602001611649565b50505050905090810190601f16801561168e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b600081848411156117805760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561174557818101518382015260200161172d565b50505050905090810190601f1680156117725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040805163555ddc6560e11b81526001600160a01b03871660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248201529051600091731820a4b7618bde71dce8cdc73aab6c95905fad249163aabbb8ca91604480820192602092909190829003018186803b15801561180c57600080fd5b505afa158015611820573d6000803e3d6000fd5b505050506040513d602081101561183657600080fd5b505190506001600160a01b038116156119ca57806001600160a01b03166223de298989898989896040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156118fb5781810151838201526020016118e3565b50505050905090810190601f1680156119285780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561195b578181015183820152602001611943565b50505050905090810190601f1680156119885780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156119ad57600080fd5b505af11580156119c1573d6000803e3d6000fd5b50505050611a1e565b8115611a1e576119e2866001600160a01b0316611e1a565b15611a1e5760405162461bcd60e51b815260040180806020018281038252604d815260200180611f6f604d913960600191505060405180910390fd5b5050505050505050565b6001600160a01b038616611a6d5760405162461bcd60e51b8152600401808060200182810382526022815260200180611e996022913960400191505060405180910390fd5b6001600160a01b038516611ac8576040805162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611ad687878787878761128f565b611ae48787878787876114d7565b6114ce87878787878787611788565b6001600160a01b038116611b385760405162461bcd60e51b8152600401808060200182810382526026815260200180611ee26026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038416611bd85760405162461bcd60e51b8152600401808060200182810382526022815260200180611f086022913960400191505060405180910390fd5b611be78585600086868661128f565b611c2a8360405180606001604052806023815260200161205b602391396001600160a01b038716600090815260016020526040902054919063ffffffff6116f116565b6001600160a01b038516600090815260016020526040902055600254611c56908463ffffffff611e5616565b600281905550836001600160a01b0316856001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611cdb578181015183820152602001611cc3565b50505050905090810190601f168015611d085780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611d3b578181015183820152602001611d23565b50505050905090810190601f168015611d685780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a36040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050565b600082820183811015610f6d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611e4e57508115155b949350505050565b6000610f6d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116f156fe4552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a265627a7a7231582094ce30ce9752d79b9af53f774983f8d71a9225f18a8a282bab22f814e9cf53f164736f6c634300051000324552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e7400000000000000000000000091931d7597918ddd9bba53e04c800aefa5110f4f000000000000000000000000af72495adef4ef07ef818b9110ba0ef2f8546b63