0x60806040526107086005553480156200001757600080fd5b5060405162001257380380620012578339810160408190526200003a9162000104565b620000453362000097565b600280546001600160a01b038086166001600160a01b0319928316179092556003805485841690831617905560018054928416929091169190911790556200008d8462000097565b5050505062000161565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000ff57600080fd5b919050565b600080600080608085870312156200011b57600080fd5b6200012685620000e7565b93506200013660208601620000e7565b92506200014660408601620000e7565b91506200015660608601620000e7565b905092959194509250565b6110e680620001716000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329057402146100675780632fbb80ec1461008f57806332c27052146100bd578063715018a6146100d25780638da5cb5b146100da578063f2fde38b146100f5575b600080fd5b61007a610075366004610e54565b610108565b60405190151581526020015b60405180910390f35b6100af61009d366004610f48565b60046020526000908152604090205481565b604051908152602001610086565b6100d06100cb366004610f48565b6106cc565b005b6100d06106fb565b6000546040516001600160a01b039091168152602001610086565b6100d0610103366004610f61565b610731565b600042600554604088015161011d9190610faf565b1061016f5760405162461bcd60e51b815260206004820152601c60248201527f5469636b657446693a207472616e73616374696f6e206578706972650000000060448201526064015b60405180910390fd5b600087815260046020526040902054156101cb5760405162461bcd60e51b815260206004820152601d60248201527f5469636b657446693a207472616e73616374696f6e20696e76616c69640000006044820152606401610166565b855160208701516000916101e09183886107cc565b875160208901519192506000916101fa91906001886107cc565b9050336001600160a01b038316148061021b5750336001600160a01b038216145b6102675760405162461bcd60e51b815260206004820152601860248201527f5469636b657446693a20696e76616c69642073656e64657200000000000000006044820152606401610166565b60006102778a84848c8c8a61086a565b6001549091506001600160a01b038083169116146102d75760405162461bcd60e51b815260206004820152601c60248201527f5469636b657446693a206e6f7420636f7272656374207369676e6572000000006044820152606401610166565b60008a815260046020819052604091829020600190556002548b519251632142170760e11b81526001600160a01b03909116926342842e0e926103209288928892909101610fc7565b600060405180830381600087803b15801561033a57600080fd5b505af115801561034e573d6000803e3d6000fd5b5050505060006127108a60036005811061036a5761036a610f83565b60200201518b600160200201516103819190610feb565b61038b919061100a565b60808b015160208c0151919250600091612710916103a891610feb565b6103b2919061100a565b9050600081838d600160200201516103ca919061102c565b6103d4919061102c565b6003546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd906104099088908a908690600401610fc7565b602060405180830381600087803b15801561042357600080fd5b505af1158015610437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045b9190611043565b6104b35760405162461bcd60e51b815260206004820152602360248201527f5469636b657446693a207472616e7366657220746f2073656c6c6572206661696044820152621b195960ea1b6064820152608401610166565b821561059b576003548b516040516323b872dd60e01b81526001600160a01b03909216916323b872dd916104ee918991908890600401610fc7565b602060405180830381600087803b15801561050857600080fd5b505af115801561051c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105409190611043565b61059b5760405162461bcd60e51b815260206004820152602660248201527f5469636b657446693a207472616e7366657220746f20726f79616c747920312060448201526519985a5b195960d21b6064820152608401610166565b81156106865760035460208c01516040516323b872dd60e01b81526001600160a01b03909216916323b872dd916105d9918991908790600401610fc7565b602060405180830381600087803b1580156105f357600080fd5b505af1158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611043565b6106865760405162461bcd60e51b815260206004820152602660248201527f5469636b657446693a207472616e7366657220746f20726f79616c747920322060448201526519985a5b195960d21b6064820152608401610166565b6040518d81527ff7f3cdbff35847fdebc0fa4e209d0649245454b8255d7bc4fa96e7cf1a1bd01f9060200160405180910390a15060019c9b505050505050505050505050565b6000546001600160a01b031633146106f65760405162461bcd60e51b815260040161016690611065565b600555565b6000546001600160a01b031633146107255760405162461bcd60e51b815260040161016690611065565b61072f600061093a565b565b6000546001600160a01b0316331461075b5760405162461bcd60e51b815260040161016690611065565b6001600160a01b0381166107c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610166565b6107c98161093a565b50565b6040805160208101869052908101849052606081018390526000908190610851906080015b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b9050600061085f828561098a565b979650505050505050565b60008061091f8888888885602002015189600160200201518a600260200201518b600360200201518b600060200201518d600460200201518d600160209081029190910151604080519283019b909b526bffffffffffffffffffffffff1960609a8b1b81169b83019b909b5297891b8a1660548201526068810196909652608886019490945260a885019290925260c8840152841b851660e883015260fc820152911b90911661011c820152610130016107f1565b9050600061092d828561098a565b9998505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600061099985856109ae565b915091506109a681610a1e565b509392505050565b6000808251604114156109e55760208301516040840151606085015160001a6109d987828585610bd9565b94509450505050610a17565b825160401415610a0f5760208301516040840151610a04868383610cc6565b935093505050610a17565b506000905060025b9250929050565b6000816004811115610a3257610a3261109a565b1415610a3b5750565b6001816004811115610a4f57610a4f61109a565b1415610a9d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610166565b6002816004811115610ab157610ab161109a565b1415610aff5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610166565b6003816004811115610b1357610b1361109a565b1415610b6c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610166565b6004816004811115610b8057610b8061109a565b14156107c95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610166565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610c105750600090506003610cbd565b8460ff16601b14158015610c2857508460ff16601c14155b15610c395750600090506004610cbd565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610c8d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cb657600060019250925050610cbd565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01610ce787828885610bd9565b935093505050935093915050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610d2e57610d2e610cf5565b60405290565b80356001600160a01b0381168114610d4b57600080fd5b919050565b600082601f830112610d6157600080fd5b6040516040810181811067ffffffffffffffff82111715610d8457610d84610cf5565b8060405250806040840185811115610d9b57600080fd5b845b81811015610dbc57610dae81610d34565b835260209283019201610d9d565b509195945050505050565b600082601f830112610dd857600080fd5b813567ffffffffffffffff80821115610df357610df3610cf5565b604051601f8301601f19908116603f01168101908282118183101715610e1b57610e1b610cf5565b81604052838152866020858801011115610e3457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806000806101608789031215610e6e57600080fd5b86359550602088603f890112610e8357600080fd5b610e8b610d0b565b8060c08a018b811115610e9d57600080fd5b838b015b81811015610eb85780358452928401928401610ea1565b50819850610ec68c82610d50565b97505050505061010087013567ffffffffffffffff80821115610ee857600080fd5b610ef48a838b01610dc7565b9450610120890135915080821115610f0b57600080fd5b610f178a838b01610dc7565b9350610140890135915080821115610f2e57600080fd5b50610f3b89828a01610dc7565b9150509295509295509295565b600060208284031215610f5a57600080fd5b5035919050565b600060208284031215610f7357600080fd5b610f7c82610d34565b9392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc257610fc2610f99565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600081600019048311821515161561100557611005610f99565b500290565b60008261102757634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561103e5761103e610f99565b500390565b60006020828403121561105557600080fd5b81518015158114610f7c57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212205e63fe5f5aee31b30fc435aa45cd51699074d15cdfb59a94699552390caed8b164736f6c634300080900330000000000000000000000002b5633250b70ab3bff5b2a24f218029307ae6a5c000000000000000000000000d404a6b3a24411606a47ded2de0fcde53d561320000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000dcb3f33e460da6979445952fb469ce69c5c5be1d