0x608060405234801561001057600080fd5b5060405161152538038061152583398101604081905261002f9161005d565b600080546001600160a01b039092166001600160a01b0319928316179055600180549091163317905561008d565b60006020828403121561006f57600080fd5b81516001600160a01b038116811461008657600080fd5b9392505050565b6114898061009c6000396000f3fe60806040526004361061005a5760003560e01c8063d2d71d5c11610043578063d2d71d5c146100a7578063d58c0240146100c7578063db90382d146100ff57600080fd5b80631444897b1461005f578063c4083ee914610074575b600080fd5b61007261006d36600461109e565b61011f565b005b34801561008057600080fd5b5061009461008f36600461114b565b61071c565b6040519081526020015b60405180910390f35b3480156100b357600080fd5b506100726100c23660046111af565b61082c565b3480156100d357600080fd5b506000546100e7906001600160a01b031681565b6040516001600160a01b03909116815260200161009e565b34801561010b57600080fd5b5061007261011a3660046111ca565b610925565b8351835181146101c25760405162461bcd60e51b815260206004820152605160248201527f456e646c657373454e5342756c6b52656769737465722e62756c6b526567697360448201527f7465723a204f776e6572206c656e67746820646f6573206e6f74206d6174636860648201527f2074686520646f6d61696e206e616d6573000000000000000000000000000000608482015260a4015b60405180910390fd5b8251811461025e5760405162461bcd60e51b815260206004820152605260248201527f456e646c657373454e5342756c6b52656769737465722e62756c6b526567697360448201527f7465723a20536563726574206c656e67746820646f6573206e6f74206d61746360648201527f682074686520646f6d61696e206e616d65730000000000000000000000000000608482015260a4016101b9565b815181146102fa5760405162461bcd60e51b815260206004820152605460248201527f456e646c657373454e5342756c6b52656769737465722e62756c6b526567697360448201527f7465723a204475726174696f6e206c656e67746820646f6573206e6f74206d6160648201527f7463682074686520646f6d61696e206e616d6573000000000000000000000000608482015260a4016101b9565b610304858361071c565b3410156103795760405162461bcd60e51b815260206004820152603e60248201527f456e646c657373454e5342756c6b52656769737465722e62756c6b526567697360448201527f7465723a20496e73756666696369656e74206e617469766520746f6b656e000060648201526084016101b9565b3460005b86518160ff1610156106735760006103cd888360ff16815181106103a3576103a361126b565b6020026020010151868460ff16815181106103c0576103c061126b565b6020026020010151610dd2565b90506000808054906101000a90046001600160a01b03166001600160a01b03166385f6d155838b8660ff16815181106104085761040861126b565b60200260200101518b8760ff16815181106104255761042561126b565b60200260200101518a8860ff16815181106104425761044261126b565b60200260200101518c8960ff168151811061045f5761045f61126b565b60200260200101516040518663ffffffff1660e01b815260040161048694939291906112c6565b6000604051808303818588803b15801561049f57600080fd5b505af1935050505080156104b1575060015b61059a573d8080156104df576040519150601f19603f3d011682016040523d82523d6000602084013e6104e4565b606091505b50600191507f377bdfd1b3d8e01e8773066f6cf25d380949da626e30f101844d6b2b4b9337f78a8560ff168151811061051f5761051f61126b565b60200260200101518a8660ff168151811061053c5761053c61126b565b60200260200101518a8760ff16815181106105595761055961126b565b60200260200101518a8860ff16815181106105765761057661126b565b6020026020010151856040516105909594939291906112fe565b60405180910390a1505b80151560000361065e576105ae8285611360565b93507fde411ce1226471aa6b4737d5257b4217142044216bc48f081be58acae26743a0898460ff16815181106105e6576105e661126b565b6020026020010151898560ff16815181106106035761060361126b565b6020026020010151898660ff16815181106106205761062061126b565b6020026020010151898760ff168151811061063d5761063d61126b565b602002602001015160405161065594939291906112c6565b60405180910390a15b5050808061066b90611373565b91505061037d565b50801561071457604051600090339083908381818185875af1925050503d80600081146106bc576040519150601f19603f3d011682016040523d82523d6000602084013e6106c1565b606091505b50509050806107125760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e6420457468657200000000000000000000000060448201526064016101b9565b505b505050505050565b815181516000919081146107be5760405162461bcd60e51b815260206004820152605660248201527f456e646c657373454e5342756c6b52656769737465722e67657450726963655260448201527f616e6765733a204475726174696f6e206c656e67746820646f6573206e6f742060648201527f6d617463682074686520646f6d61696e206e616d657300000000000000000000608482015260a4016101b9565b6000805b85518160ff16101561082157610803868260ff16815181106107e6576107e661126b565b6020026020010151868360ff16815181106103c0576103c061126b565b61080d9083611392565b91508061081981611373565b9150506107c2565b509150505b92915050565b6001546001600160a01b031633146108ac5760405162461bcd60e51b815260206004820152602f60248201527f456e646c657373454e5342756c6b52656769737465722e6f6e6c794f776e657260448201527f3a204163636573732064656e696564000000000000000000000000000000000060648201526084016101b9565b600080546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f6f6bf5b084bc58fb601dcf3f90d06e692b354fd00bddea21392b7549786b0c6c910160405180910390a15050565b8351835181146109c35760405162461bcd60e51b815260206004820152604f60248201527f456e646c657373454e5342756c6b52656769737465722e62756c6b436f6d6d6960448201527f743a204f776e6572206c656e67746820646f6573206e6f74206d61746368207460648201527f686520646f6d61696e206e616d65730000000000000000000000000000000000608482015260a4016101b9565b82518114610a5f5760405162461bcd60e51b815260206004820152605060248201527f456e646c657373454e5342756c6b52656769737465722e62756c6b436f6d6d6960448201527f743a20536563726574206c656e67746820646f6573206e6f74206d617463682060648201527f74686520646f6d61696e206e616d657300000000000000000000000000000000608482015260a4016101b9565b8151600003610bbe5760005b85518160ff161015610bb8576000805487516001600160a01b039091169063f49826be90899060ff8616908110610aa457610aa461126b565b6020026020010151888560ff1681518110610ac157610ac161126b565b6020026020010151888660ff1681518110610ade57610ade61126b565b60200260200101516040518463ffffffff1660e01b8152600401610b04939291906113a5565b602060405180830381865afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906113d3565b600054604051631e29f97960e31b8152600481018390529192506001600160a01b03169063f14fcbc890602401600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b50505050508080610bb090611373565b915050610a6b565b50610dcb565b81518114610c5a5760405162461bcd60e51b815260206004820152605360248201527f456e646c657373454e5342756c6b52656769737465722e62756c6b436f6d6d6960448201527f743a205265736f6c76657273206c656e67746820646f6573206e6f74206d617460648201527f63682074686520646f6d61696e206e616d657300000000000000000000000000608482015260a4016101b9565b60005b85518160ff161015610714576000805487516001600160a01b0390911690633d86c52f90899060ff8616908110610c9657610c9661126b565b6020026020010151888560ff1681518110610cb357610cb361126b565b6020026020010151888660ff1681518110610cd057610cd061126b565b6020026020010151888760ff1681518110610ced57610ced61126b565b602002602001015160006040518663ffffffff1660e01b8152600401610d179594939291906113ec565b602060405180830381865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5891906113d3565b600054604051631e29f97960e31b8152600481018390529192506001600160a01b03169063f14fcbc890602401600060405180830381600087803b158015610d9f57600080fd5b505af1158015610db3573d6000803e3d6000fd5b50505050508080610dc390611373565b915050610c5d565b5050505050565b600080546040517f83e7f6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906383e7f6ff90610e1e9086908690600401611431565b602060405180830381865afa158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f91906113d3565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ea557610ea5610e66565b604052919050565b600067ffffffffffffffff821115610ec757610ec7610e66565b5060051b60200190565b6000601f8381840112610ee357600080fd5b82356020610ef8610ef383610ead565b610e7c565b82815260059290921b85018101918181019087841115610f1757600080fd5b8287015b84811015610fae57803567ffffffffffffffff80821115610f3c5760008081fd5b818a0191508a603f830112610f515760008081fd5b85820135604082821115610f6757610f67610e66565b610f78828b01601f19168901610e7c565b92508183528c81838601011115610f8f5760008081fd5b8181850189850137506000908201870152845250918301918301610f1b565b50979650505050505050565b80356001600160a01b0381168114610fd157600080fd5b919050565b600082601f830112610fe757600080fd5b81356020610ff7610ef383610ead565b82815260059290921b8401810191818101908684111561101657600080fd5b8286015b848110156110385761102b81610fba565b835291830191830161101a565b509695505050505050565b600082601f83011261105457600080fd5b81356020611064610ef383610ead565b82815260059290921b8401810191818101908684111561108357600080fd5b8286015b848110156110385780358352918301918301611087565b600080600080608085870312156110b457600080fd5b843567ffffffffffffffff808211156110cc57600080fd5b6110d888838901610ed1565b955060208701359150808211156110ee57600080fd5b6110fa88838901610fd6565b9450604087013591508082111561111057600080fd5b61111c88838901611043565b9350606087013591508082111561113257600080fd5b5061113f87828801611043565b91505092959194509250565b6000806040838503121561115e57600080fd5b823567ffffffffffffffff8082111561117657600080fd5b61118286838701610ed1565b9350602085013591508082111561119857600080fd5b506111a585828601611043565b9150509250929050565b6000602082840312156111c157600080fd5b610e5f82610fba565b600080600080608085870312156111e057600080fd5b843567ffffffffffffffff808211156111f857600080fd5b61120488838901610ed1565b9550602087013591508082111561121a57600080fd5b61122688838901610fd6565b9450604087013591508082111561123c57600080fd5b61124888838901611043565b9350606087013591508082111561125e57600080fd5b5061113f87828801610fd6565b634e487b7160e01b600052603260045260246000fd5b60008151808452602060005b828110156112a857848101820151868201830152810161128d565b506000858301820152601f909101601f191690930190920192915050565b6080815260006112d96080830187611281565b6001600160a01b03959095166020830152506040810192909252606090910152919050565b60a08152600061131160a0830188611281565b6001600160a01b0387166020840152856040840152846060840152828103608084015261133e8185611281565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108265761082661134a565b600060ff821660ff81036113895761138961134a565b60010192915050565b808201808211156108265761082661134a565b6060815260006113b86060830186611281565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156113e557600080fd5b5051919050565b60a0815260006113ff60a0830188611281565b6001600160a01b0396871660208401526040830195909552509184166060830152909216608090920191909152919050565b6040815260006114446040830185611281565b9050826020830152939250505056fea2646970667358221220a066f1a884affc7c73cc5cc4a999a23812578a515f21f775f755aa8ca5f6dd7664736f6c63430008130033000000000000000000000000253553366da8546fc250f225fe3d25d0c782303b