0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638f1910981161008c578063a9059cbb11610066578063a9059cbb146101de578063c2af913b146101f1578063dd62ed3e146101f9578063f4bf98051461023257600080fd5b80638f191098146101ae57806395d89b41146101c3578063a1e433b8146101cb57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce5671461015557806370a082311461016a5780638da5cb5b1461019357600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025b565b6040516101049190610853565b60405180910390f35b61012061011b3660046108a2565b6102ed565b6040519015158152602001610104565b6009545b604051908152602001610104565b6101206101503660046108cc565b610355565b60085460405160ff9091168152602001610104565b610134610178366004610908565b6001600160a01b031660009081526001602052604090205490565b6000546040516001600160a01b039091168152602001610104565b6101c16101bc3660046108a2565b610505565b005b6100f761054b565b6101c16101d9366004610940565b61055a565b6101206101ec3660046108a2565b61064d565b6101c1610785565b610134610207366004610a02565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610134610240366004610908565b6001600160a01b031660009081526003602052604090205490565b60606006805461026a90610a2c565b80601f016020809104026020016040519081016040528092919081815260200182805461029690610a2c565b80156102e35780601f106102b8576101008083540402835291602001916102e3565b820191906000526020600020905b8154815290600101906020018083116102c657829003601f168201915b5050505050905090565b3360008181526002602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156103db5760405162461bcd60e51b815260206004820152602560248201527f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f60448201526477616e636560d81b60648201526084015b60405180910390fd5b6001600160a01b0384166000908152600360205260409020548015610419578083146104195760405162461bcd60e51b81526004016103d290610a66565b6001600160a01b03851660009081526001602052604081208054859290610441908490610ad9565b90915550506001600160a01b0384166000908152600160205260408120805485929061046e908490610aec565b90915550506001600160a01b0385166000908152600260209081526040808320338452909152812080548592906104a6908490610ad9565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516104f291815260200190565b60405180910390a3506001949350505050565b6005546001600160a01b0316331461052f5760405162461bcd60e51b81526004016103d290610aff565b6001600160a01b03909116600090815260036020526040902055565b60606007805461026a90610a2c565b6005546001600160a01b031633146105845760405162461bcd60e51b81526004016103d290610aff565b60006004836040516105969190610b40565b9081526020016040518091039020549050600081116105f75760405162461bcd60e51b815260206004820152601760248201527f54543a20696e76616c696420636f75706f6e20636f646500000000000000000060448201526064016103d2565b6001600160a01b0382166000908152600160205260408120805483929061061f908490610aec565b9250508190555060006004846040516106389190610b40565b90815260405190819003602001902055505050565b336000908152600160205260408120548211156106b85760405162461bcd60e51b815260206004820152602360248201527f54543a207472616e7366657220616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103d2565b60006106c333610240565b905080156106ea578083146106ea5760405162461bcd60e51b81526004016103d290610a66565b3360009081526001602052604081208054859290610709908490610ad9565b90915550506001600160a01b03841660009081526001602052604081208054859290610736908490610aec565b90915550506040518381526001600160a01b0385169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35060019392505050565b6000546001600160a01b031633146107df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d2565b6000805460405161dead926001600160a01b03909216917f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b791a3600080546001600160a01b03191661dead179055565b60005b8381101561084a578181015183820152602001610832565b50506000910152565b602081526000825180602084015261087281604085016020870161082f565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461089d57600080fd5b919050565b600080604083850312156108b557600080fd5b6108be83610886565b946020939093013593505050565b6000806000606084860312156108e157600080fd5b6108ea84610886565b92506108f860208501610886565b9150604084013590509250925092565b60006020828403121561091a57600080fd5b61092382610886565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561095357600080fd5b823567ffffffffffffffff8082111561096b57600080fd5b818501915085601f83011261097f57600080fd5b8135818111156109915761099161092a565b604051601f8201601f19908116603f011681019083821181831017156109b9576109b961092a565b816040528281528860208487010111156109d257600080fd5b8260208601602083013760006020848301015280965050505050506109f960208401610886565b90509250929050565b60008060408385031215610a1557600080fd5b610a1e83610886565b91506109f960208401610886565b600181811c90821680610a4057607f821691505b602082108103610a6057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252603c908201527f54543a207472616e7366657220616d6f756e7420646f6573206e6f742065717560408201527f616c20746865206578616374207472616e7366657220616d6f756e7400000000606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561034f5761034f610ac3565b8082018082111561034f5761034f610ac3565b60208082526021908201527f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c656040820152603960f91b606082015260800190565b60008251610b5281846020870161082f565b919091019291505056fea2646970667358221220fc30b81aee84d671c1ef5cd622a15175ef72888bb245d9020c49106e23f00b2164736f6c63430008120033
0x60806040523480156200001157600080fd5b50604051620011b6380380620011b68339810160408190526200003491620002e7565b600080546001600160a01b031916339081178255604051909182917f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b7908290a350600662000083858262000401565b50600762000092848262000401565b506008805460ff191660ff8416179055620000af82600a620005e2565b620000bb9082620005fa565b6009819055600580546001600160a01b03191673f025f416f51e6d8b66499bf2bb0a32199b9ad3a417905560016000620000f23390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200015591815260200190565b60405180910390a3600954620001719064e8d4a51000620005fa565b60405169434f55504f4e3230323360b01b8152600490600a0190815260405190819003602001902055600954620001af906512309ce54000620005fa565b6040516910d3d55413d38c8c0c8d60b21b8152600490600a0190815260405190819003602001902055600954620001ee90660aa87bee538000620005fa565b60405169434f55504f4e3230323560b01b8152600490600a0190815260405190819003602001902055506200061492505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200024a57600080fd5b81516001600160401b038082111562000267576200026762000222565b604051601f8301601f19908116603f0116810190828211818310171562000292576200029262000222565b81604052838152602092508683858801011115620002af57600080fd5b600091505b83821015620002d35785820183015181830184015290820190620002b4565b600093810190920192909252949350505050565b60008060008060808587031215620002fe57600080fd5b84516001600160401b03808211156200031657600080fd5b620003248883890162000238565b955060208701519150808211156200033b57600080fd5b506200034a8782880162000238565b935050604085015160ff811681146200036257600080fd5b6060959095015193969295505050565b600181811c908216806200038757607f821691505b602082108103620003a857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003fc57600081815260208120601f850160051c81016020861015620003d75750805b601f850160051c820191505b81811015620003f857828155600101620003e3565b5050505b505050565b81516001600160401b038111156200041d576200041d62000222565b62000435816200042e845462000372565b84620003ae565b602080601f8311600181146200046d5760008415620004545750858301515b600019600386901b1c1916600185901b178555620003f8565b600085815260208120601f198616915b828110156200049e578886015182559484019460019091019084016200047d565b5085821015620004bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000524578160001904821115620005085762000508620004cd565b808516156200051657918102915b93841c9390800290620004e8565b509250929050565b6000826200053d57506001620005dc565b816200054c57506000620005dc565b8160018114620005655760028114620005705762000590565b6001915050620005dc565b60ff841115620005845762000584620004cd565b50506001821b620005dc565b5060208310610133831016604e8410600b8410161715620005b5575081810a620005dc565b620005c18383620004e3565b8060001904821115620005d857620005d8620004cd565b0290505b92915050565b6000620005f360ff8416836200052c565b9392505050565b8082028115828204841417620005dc57620005dc620004cd565b610b9280620006246000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638f1910981161008c578063a9059cbb11610066578063a9059cbb146101de578063c2af913b146101f1578063dd62ed3e146101f9578063f4bf98051461023257600080fd5b80638f191098146101ae57806395d89b41146101c3578063a1e433b8146101cb57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce5671461015557806370a082311461016a5780638da5cb5b1461019357600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025b565b6040516101049190610853565b60405180910390f35b61012061011b3660046108a2565b6102ed565b6040519015158152602001610104565b6009545b604051908152602001610104565b6101206101503660046108cc565b610355565b60085460405160ff9091168152602001610104565b610134610178366004610908565b6001600160a01b031660009081526001602052604090205490565b6000546040516001600160a01b039091168152602001610104565b6101c16101bc3660046108a2565b610505565b005b6100f761054b565b6101c16101d9366004610940565b61055a565b6101206101ec3660046108a2565b61064d565b6101c1610785565b610134610207366004610a02565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610134610240366004610908565b6001600160a01b031660009081526003602052604090205490565b60606006805461026a90610a2c565b80601f016020809104026020016040519081016040528092919081815260200182805461029690610a2c565b80156102e35780601f106102b8576101008083540402835291602001916102e3565b820191906000526020600020905b8154815290600101906020018083116102c657829003601f168201915b5050505050905090565b3360008181526002602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156103db5760405162461bcd60e51b815260206004820152602560248201527f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f60448201526477616e636560d81b60648201526084015b60405180910390fd5b6001600160a01b0384166000908152600360205260409020548015610419578083146104195760405162461bcd60e51b81526004016103d290610a66565b6001600160a01b03851660009081526001602052604081208054859290610441908490610ad9565b90915550506001600160a01b0384166000908152600160205260408120805485929061046e908490610aec565b90915550506001600160a01b0385166000908152600260209081526040808320338452909152812080548592906104a6908490610ad9565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516104f291815260200190565b60405180910390a3506001949350505050565b6005546001600160a01b0316331461052f5760405162461bcd60e51b81526004016103d290610aff565b6001600160a01b03909116600090815260036020526040902055565b60606007805461026a90610a2c565b6005546001600160a01b031633146105845760405162461bcd60e51b81526004016103d290610aff565b60006004836040516105969190610b40565b9081526020016040518091039020549050600081116105f75760405162461bcd60e51b815260206004820152601760248201527f54543a20696e76616c696420636f75706f6e20636f646500000000000000000060448201526064016103d2565b6001600160a01b0382166000908152600160205260408120805483929061061f908490610aec565b9250508190555060006004846040516106389190610b40565b90815260405190819003602001902055505050565b336000908152600160205260408120548211156106b85760405162461bcd60e51b815260206004820152602360248201527f54543a207472616e7366657220616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103d2565b60006106c333610240565b905080156106ea578083146106ea5760405162461bcd60e51b81526004016103d290610a66565b3360009081526001602052604081208054859290610709908490610ad9565b90915550506001600160a01b03841660009081526001602052604081208054859290610736908490610aec565b90915550506040518381526001600160a01b0385169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35060019392505050565b6000546001600160a01b031633146107df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d2565b6000805460405161dead926001600160a01b03909216917f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b791a3600080546001600160a01b03191661dead179055565b60005b8381101561084a578181015183820152602001610832565b50506000910152565b602081526000825180602084015261087281604085016020870161082f565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461089d57600080fd5b919050565b600080604083850312156108b557600080fd5b6108be83610886565b946020939093013593505050565b6000806000606084860312156108e157600080fd5b6108ea84610886565b92506108f860208501610886565b9150604084013590509250925092565b60006020828403121561091a57600080fd5b61092382610886565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561095357600080fd5b823567ffffffffffffffff8082111561096b57600080fd5b818501915085601f83011261097f57600080fd5b8135818111156109915761099161092a565b604051601f8201601f19908116603f011681019083821181831017156109b9576109b961092a565b816040528281528860208487010111156109d257600080fd5b8260208601602083013760006020848301015280965050505050506109f960208401610886565b90509250929050565b60008060408385031215610a1557600080fd5b610a1e83610886565b91506109f960208401610886565b600181811c90821680610a4057607f821691505b602082108103610a6057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252603c908201527f54543a207472616e7366657220616d6f756e7420646f6573206e6f742065717560408201527f616c20746865206578616374207472616e7366657220616d6f756e7400000000606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561034f5761034f610ac3565b8082018082111561034f5761034f610ac3565b60208082526021908201527f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c656040820152603960f91b606082015260800190565b60008251610b5281846020870161082f565b919091019291505056fea2646970667358221220fc30b81aee84d671c1ef5cd622a15175ef72888bb245d9020c49106e23f00b2164736f6c63430008120033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000218711a000000000000000000000000000000000000000000000000000000000000000009536869766120496e75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055348495641000000000000000000000000000000000000000000000000000000