0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6114e58061007e6000396000f3fe6080604052600436106100745760003560e01c80637ca510a41161004e5780637ca510a4146100fc5780638da5cb5b1461011c578063c65be5ec1461013a578063f2fde38b1461015a57600080fd5b80634ef23038146100805780636c8bc80a14610095578063715018a6146100e757600080fd5b3661007b57005b600080fd5b61009361008e36600461102b565b61017a565b005b3480156100a157600080fd5b506100cb6100b0366004611092565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b3480156100f357600080fd5b506100936106f4565b34801561010857600080fd5b506100936101173660046110ab565b610708565b34801561012857600080fd5b506000546001600160a01b03166100cb565b34801561014657600080fd5b50610093610155366004611117565b6108f6565b34801561016657600080fd5b50610093610175366004611159565b6109e8565b60008585600081811061018f5761018f611174565b90506020028101906101a1919061118a565b6101af9060208101906111aa565b60008181106101c0576101c0611174565b90506020028101906101d291906111f4565b6101e09060208101906111aa565b60008181106101f1576101f1611174565b90506020020160208101906102069190611159565b90506001600160a01b03811661026f5783341461026a5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f494e5055545f414d4f554e5400000000000000000000000060448201526064015b60405180910390fd5b610284565b6102846001600160a01b038216333087610a78565b60005b858110156104f957368787838181106102a2576102a2611174565b90506020028101906102b4919061118a565b9050803560005b6102c860208401846111aa565b90508110156104e557366102df60208501856111aa565b838181106102ef576102ef611174565b905060200281019061030191906111f4565b905061031060408201826111aa565b61031c91506001611220565b61032960208301836111aa565b90501480156103465750600061034260408301836111aa565b9050115b6103925760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f5355425f524f5554450000000000000000000000000000006044820152606401610261565b803560009081526001602090815260408220546001600160a01b03169190819083907f71dcac86000000000000000000000000000000000000000000000000000000009088906103e4908801886111aa565b6103f160408a018a6111aa565b6103fe60608c018c611233565b60405160240161041497969594939291906112c1565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161047f919061134b565b600060405180830381855af49150503d80600081146104ba576040519150601f19603f3d011682016040523d82523d6000602084013e6104bf565b606091505b50915091506104ce8282610b2f565b955050505050806104de9061135d565b90506102bb565b505050806104f29061135d565b9050610287565b506000610532878761050c600182611376565b81811061051b5761051b611174565b905060200281019061052d919061118a565b610b95565b905060006001600160a01b038216156105cb576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190611389565b6105cd565b475b90508481101561061f5760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e540000000000006044820152606401610261565b6001600160a01b0382166106d6576000846001600160a01b03168260405160006040518083038185875af1925050503d806000811461067a576040519150601f19603f3d011682016040523d82523d6000602084013e61067f565b606091505b50509050806106d05760405162461bcd60e51b815260206004820152601560248201527f56414c55455f5452414e534645525f4641494c454400000000000000000000006044820152606401610261565b506106ea565b6106ea6001600160a01b0383168583610c34565b5050505050505050565b6106fc610c7d565b6107066000610cd7565b565b600054600160a81b900460ff161580801561073057506000546001600160a01b90910460ff16105b806107515750303b1580156107515750600054600160a01b900460ff166001145b6107c35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610261565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055801561080b576000805460ff60a81b1916600160a81b1790555b61081433610cd7565b60005b848110156108a65783838281811061083157610831611174565b90506020020160208101906108469190611159565b6001600088888581811061085c5761085c611174565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508061089f9061135d565b9050610817565b5080156108ef576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6108fe610c7d565b60005b818110156109e357600083838381811061091d5761091d611174565b90506020020160208101906109329190611159565b90506000816001600160a01b0316637aa19d226040518163ffffffff1660e01b8152600401602060405180830381865afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190611389565b6000908152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155506109dc8161135d565b9050610901565b505050565b6109f0610c7d565b6001600160a01b038116610a6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610261565b610a7581610cd7565b50565b6040516001600160a01b0380851660248301528316604482015260648101829052610b299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d34565b50505050565b600082610b7857604482511015610b4557600080fd5b60048201915081806020019051810190610b5f91906113b8565b60405162461bcd60e51b8152600401610261919061145a565b81806020019051810190610b8c9190611389565b90505b92915050565b600036610ba560208401846111aa565b6001610bb460208701876111aa565b610bbf929150611376565b818110610bce57610bce611174565b9050602002810190610be091906111f4565b9050610bef60208201826111aa565b6001610bfe60208501856111aa565b610c09929150611376565b818110610c1857610c18611174565b9050602002016020810190610c2d9190611159565b9392505050565b6040516001600160a01b0383166024820152604481018290526109e39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610ac5565b6000546001600160a01b031633146107065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610261565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610d89826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e1c9092919063ffffffff16565b9050805160001480610daa575080806020019051810190610daa919061148d565b6109e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610261565b6060610e2b8484600085610e33565b949350505050565b606082471015610eab5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610261565b600080866001600160a01b03168587604051610ec7919061134b565b60006040518083038185875af1925050503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5091509150610f1a87838387610f25565b979650505050505050565b60608315610f94578251600003610f8d576001600160a01b0385163b610f8d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610261565b5081610e2b565b610e2b8383815115610fa95781518083602001fd5b8060405162461bcd60e51b8152600401610261919061145a565b60008083601f840112610fd557600080fd5b50813567ffffffffffffffff811115610fed57600080fd5b6020830191508360208260051b850101111561100857600080fd5b9250929050565b80356001600160a01b038116811461102657600080fd5b919050565b60008060008060006080868803121561104357600080fd5b853567ffffffffffffffff81111561105a57600080fd5b61106688828901610fc3565b90965094505060208601359250604086013591506110866060870161100f565b90509295509295909350565b6000602082840312156110a457600080fd5b5035919050565b600080600080604085870312156110c157600080fd5b843567ffffffffffffffff808211156110d957600080fd5b6110e588838901610fc3565b909650945060208701359150808211156110fe57600080fd5b5061110b87828801610fc3565b95989497509550505050565b6000806020838503121561112a57600080fd5b823567ffffffffffffffff81111561114157600080fd5b61114d85828601610fc3565b90969095509350505050565b60006020828403121561116b57600080fd5b610b8c8261100f565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126111a057600080fd5b9190910192915050565b6000808335601e198436030181126111c157600080fd5b83018035915067ffffffffffffffff8211156111dc57600080fd5b6020019150600581901b360382131561100857600080fd5b60008235607e198336030181126111a057600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610b8f57610b8f61120a565b6000808335601e1984360301811261124a57600080fd5b83018035915067ffffffffffffffff82111561126557600080fd5b60200191503681900382131561100857600080fd5b8183526000602080850194508260005b858110156112b6576001600160a01b036112a38361100f565b168752958201959082019060010161128a565b509495945050505050565b8781526080602082015260006112db60808301888a61127a565b82810360408401526112ee81878961127a565b90508281036060840152838152838560208301376000602085830101526020601f19601f86011682010191505098975050505050505050565b60005b8381101561134257818101518382015260200161132a565b50506000910152565b600082516111a0818460208701611327565b60006001820161136f5761136f61120a565b5060010190565b81810381811115610b8f57610b8f61120a565b60006020828403121561139b57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156113ca57600080fd5b815167ffffffffffffffff808211156113e257600080fd5b818401915084601f8301126113f657600080fd5b815181811115611408576114086113a2565b604051601f8201601f19908116603f01168101908382118183101715611430576114306113a2565b8160405282815287602084870101111561144957600080fd5b610f1a836020830160208801611327565b6020815260008251806020840152611479816040850160208701611327565b601f01601f19169190910160400192915050565b60006020828403121561149f57600080fd5b81518015158114610c2d57600080fdfea2646970667358221220c09023e599fc2844dd69d718ffc161f9648059c284463eb510965506cb11d42364736f6c63430008110033