60806040523480156200001157600080fd5b50604080518082018252600e81526d3820426974204d616e73696f6e7360901b6020808301918252835180850190945260088452674d414e53494f4e5360c01b9084015281519192916200006891600091620000f7565b5080516200007e906001906020840190620000f7565b5050506200009b62000095620000a160201b60201c565b620000a5565b620001da565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000105906200019d565b90600052602060002090601f01602090048101928262000129576000855562000174565b82601f106200014457805160ff191683800117855562000174565b8280016001018555821562000174579182015b828111156200017457825182559160200191906001019062000157565b506200018292915062000186565b5090565b5b8082111562000182576000815560010162000187565b600181811c90821680620001b257607f821691505b60208210811415620001d457634e487b7160e01b600052602260045260246000fd5b50919050565b6117ed80620001ea6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063b88d4fde11610071578063b88d4fde1461026a578063baca3dfe1461027d578063c87b56dd14610286578063e985e9c514610299578063f2fde38b146102d557600080fd5b806370a0823114610223578063715018a6146102365780638da5cb5b1461023e57806395d89b411461024f578063a22cb4651461025757600080fd5b806323b872dd116100f457806323b872dd146101c457806342842e0e146101d757806355f804b3146101ea57806360061fbb146101fd5780636352211e1461021057600080fd5b806301ffc9a71461013157806306fdde0314610159578063081812fc1461016e578063095ea7b31461019957806318160ddd146101ae575b600080fd5b61014461013f366004611451565b6102e8565b60405190151581526020015b60405180910390f35b61016161033a565b6040516101509190611585565b61018161017c3660046114d4565b6103cc565b6040516001600160a01b039091168152602001610150565b6101ac6101a7366004611427565b610466565b005b6101b661057c565b604051908152602001610150565b6101ac6101d2366004611333565b61058c565b6101ac6101e5366004611333565b6105bd565b6101ac6101f836600461148b565b6105d8565b6101ac61020b3660046114d4565b610619565b61018161021e3660046114d4565b6106c5565b6101b66102313660046112e5565b61073c565b6101ac6107c3565b6006546001600160a01b0316610181565b6101616107f9565b6101ac6102653660046113eb565b610808565b6101ac61027836600461136f565b6108cd565b6101b66101a481565b6101616102943660046114d4565b610905565b6101446102a7366004611300565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101ac6102e33660046112e5565b6109e0565b60006001600160e01b031982166380ac58cd60e01b148061031957506001600160e01b03198216635b5e139f60e01b145b8061033457506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060008054610349906116df565b80601f0160208091040260200160405190810160405280929190818152602001828054610375906116df565b80156103c25780601f10610397576101008083540402835291602001916103c2565b820191906000526020600020905b8154815290600101906020018083116103a557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661044a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610471826106c5565b9050806001600160a01b0316836001600160a01b031614156104df5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610441565b336001600160a01b03821614806104fb57506104fb81336102a7565b61056d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610441565b6105778383610a7b565b505050565b6000610587600a5490565b905090565b6105963382610ae9565b6105b25760405162461bcd60e51b81526004016104419061161f565b610577838383610be0565b610577838383604051806020016040528060008152506108cd565b6006546001600160a01b031633146106025760405162461bcd60e51b8152600401610441906115ea565b80516106159060099060208401906111ba565b5050565b6101a461062f82610629600a5490565b90610d80565b111561067d5760405162461bcd60e51b815260206004820152601c60248201527f4d696e7420776f756c6420657863656564206d617820737570706c79000000006044820152606401610441565b60005b81811015610615576106a533610695600a5490565b6106a0906001611670565b610d8c565b6106b3600a80546001019055565b806106bd8161171a565b915050610680565b6000818152600260205260408120546001600160a01b0316806103345760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610441565b60006001600160a01b0382166107a75760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610441565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146107ed5760405162461bcd60e51b8152600401610441906115ea565b6107f76000610da6565b565b606060018054610349906116df565b6001600160a01b0382163314156108615760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610441565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6108d73383610ae9565b6108f35760405162461bcd60e51b81526004016104419061161f565b6108ff84848484610df8565b50505050565b6000818152600260205260409020546060906001600160a01b03166109845760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610441565b600061098e610e2b565b905060008151116109ae57604051806020016040528060008152506109d9565b806109b884610e3a565b6040516020016109c9929190611519565b6040516020818303038152906040525b9392505050565b6006546001600160a01b03163314610a0a5760405162461bcd60e51b8152600401610441906115ea565b6001600160a01b038116610a6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610441565b610a7881610da6565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610ab0826106c5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316610b625760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610441565b6000610b6d836106c5565b9050806001600160a01b0316846001600160a01b03161480610ba85750836001600160a01b0316610b9d846103cc565b6001600160a01b0316145b80610bd857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610bf3826106c5565b6001600160a01b031614610c5b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610441565b6001600160a01b038216610cbd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610441565b610cc8600082610a7b565b6001600160a01b0383166000908152600360205260408120805460019290610cf190849061169c565b90915550506001600160a01b0382166000908152600360205260408120805460019290610d1f908490611670565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006109d98284611670565b610615828260405180602001604052806000815250610f38565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610e03848484610be0565b610e0f84848484610f6b565b6108ff5760405162461bcd60e51b815260040161044190611598565b606060098054610349906116df565b606081610e5e5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610e885780610e728161171a565b9150610e819050600a83611688565b9150610e62565b60008167ffffffffffffffff811115610ea357610ea361178b565b6040519080825280601f01601f191660200182016040528015610ecd576020820181803683370190505b5090505b8415610bd857610ee260018361169c565b9150610eef600a86611735565b610efa906030611670565b60f81b818381518110610f0f57610f0f611775565b60200101906001600160f81b031916908160001a905350610f31600a86611688565b9450610ed1565b610f428383611078565b610f4f6000848484610f6b565b6105775760405162461bcd60e51b815260040161044190611598565b60006001600160a01b0384163b1561106d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610faf903390899088908890600401611548565b602060405180830381600087803b158015610fc957600080fd5b505af1925050508015610ff9575060408051601f3d908101601f19168201909252610ff69181019061146e565b60015b611053573d808015611027576040519150601f19603f3d011682016040523d82523d6000602084013e61102c565b606091505b50805161104b5760405162461bcd60e51b815260040161044190611598565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610bd8565b506001949350505050565b6001600160a01b0382166110ce5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610441565b6000818152600260205260409020546001600160a01b0316156111335760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610441565b6001600160a01b038216600090815260036020526040812080546001929061115c908490611670565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546111c6906116df565b90600052602060002090601f0160209004810192826111e8576000855561122e565b82601f1061120157805160ff191683800117855561122e565b8280016001018555821561122e579182015b8281111561122e578251825591602001919060010190611213565b5061123a92915061123e565b5090565b5b8082111561123a576000815560010161123f565b600067ffffffffffffffff8084111561126e5761126e61178b565b604051601f8501601f19908116603f011681019082821181831017156112965761129661178b565b816040528093508581528686860111156112af57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b03811681146112e057600080fd5b919050565b6000602082840312156112f757600080fd5b6109d9826112c9565b6000806040838503121561131357600080fd5b61131c836112c9565b915061132a602084016112c9565b90509250929050565b60008060006060848603121561134857600080fd5b611351846112c9565b925061135f602085016112c9565b9150604084013590509250925092565b6000806000806080858703121561138557600080fd5b61138e856112c9565b935061139c602086016112c9565b925060408501359150606085013567ffffffffffffffff8111156113bf57600080fd5b8501601f810187136113d057600080fd5b6113df87823560208401611253565b91505092959194509250565b600080604083850312156113fe57600080fd5b611407836112c9565b91506020830135801515811461141c57600080fd5b809150509250929050565b6000806040838503121561143a57600080fd5b611443836112c9565b946020939093013593505050565b60006020828403121561146357600080fd5b81356109d9816117a1565b60006020828403121561148057600080fd5b81516109d9816117a1565b60006020828403121561149d57600080fd5b813567ffffffffffffffff8111156114b457600080fd5b8201601f810184136114c557600080fd5b610bd884823560208401611253565b6000602082840312156114e657600080fd5b5035919050565b600081518084526115058160208601602086016116b3565b601f01601f19169290920160200192915050565b6000835161152b8184602088016116b3565b83519083019061153f8183602088016116b3565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061157b908301846114ed565b9695505050505050565b6020815260006109d960208301846114ed565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561168357611683611749565b500190565b6000826116975761169761175f565b500490565b6000828210156116ae576116ae611749565b500390565b60005b838110156116ce5781810151838201526020016116b6565b838111156108ff5750506000910152565b600181811c908216806116f357607f821691505b6020821081141561171457634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561172e5761172e611749565b5060010190565b6000826117445761174461175f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610a7857600080fdfea264697066735822122045cef8b00637c16eb131c1ab2009fc902ec66a12da6909ba9c2c3f01c83bd1db64736f6c63430008070033