0x60806040526004361061012a5760003560e01c806370a08231116100ab5780639da552ed1161006f5780639da552ed14610335578063a457c2d714610359578063a9059cbb14610379578063ca0dcf1614610399578063dd62ed3e146103af578063f2fde38b146103cf57600080fd5b806370a0823114610290578063715018a6146102c65780638da5cb5b146102db57806395d89b41146103035780639659867e1461031857600080fd5b806323b872dd116100f257806323b872dd14610211578063313ce5671461023157806339509351146102455780633e6eaa031461026557806348cd4cb11461027a57600080fd5b8063055ad42e1461012f57806306fdde0314610167578063095ea7b31461018957806318160ddd146101b95780631f21bfbf146101d8575b600080fd5b34801561013b57600080fd5b5060055461015090600160c01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b34801561017357600080fd5b5061017c6103ef565b60405161015e9190610e13565b34801561019557600080fd5b506101a96101a4366004610e84565b610481565b604051901515815260200161015e565b3480156101c557600080fd5b506002545b60405190815260200161015e565b3480156101e457600080fd5b506005546101fc90600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161015e565b34801561021d57600080fd5b506101a961022c366004610eae565b610499565b34801561023d57600080fd5b506012610150565b34801561025157600080fd5b506101a9610260366004610e84565b6104bd565b610278610273366004610eea565b6104df565b005b34801561028657600080fd5b506101ca60075481565b34801561029c57600080fd5b506101ca6102ab366004610f28565b6001600160a01b031660009081526020819052604090205490565b3480156102d257600080fd5b5061027861069d565b3480156102e757600080fd5b506005546040516001600160a01b03909116815260200161015e565b34801561030f57600080fd5b5061017c610703565b34801561032457600080fd5b506006546101fc9063ffffffff1681565b34801561034157600080fd5b506005546101fc90600160c81b900463ffffffff1681565b34801561036557600080fd5b506101a9610374366004610e84565b610712565b34801561038557600080fd5b506101a9610394366004610e84565b61078d565b3480156103a557600080fd5b506101ca60085481565b3480156103bb57600080fd5b506101ca6103ca366004610f4a565b61079b565b3480156103db57600080fd5b506102786103ea366004610f28565b6107c6565b6060600380546103fe90610f66565b80601f016020809104026020016040519081016040528092919081815260200182805461042a90610f66565b80156104775780601f1061044c57610100808354040283529160200191610477565b820191906000526020600020905b81548152906001019060200180831161045a57829003601f168201915b5050505050905090565b60003361048f818585610891565b5060019392505050565b6000336104a78582856109b5565b6104b2858585610a2f565b506001949350505050565b60003361048f8185856104d0838361079b565b6104da9190610fb7565b610891565b6007544310156105365760405162461bcd60e51b815260206004820152601b60248201527f4d696e74696e6720686173206e6f74207374617274656420796574000000000060448201526064015b60405180910390fd5b60055460065463ffffffff600160a01b90920482169161055891859116610fcf565b63ffffffff1611156105ac5760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746f74616c206d696e74206c696d69740000000000000000604482015260640161052d565b60055460065463ffffffff600160c81b9092048216916105ce91859116610fcf565b63ffffffff1611156106225760405162461bcd60e51b815260206004820152601b60248201527f457863656564732063757272656e74207068617365206c696d69740000000000604482015260640161052d565b61063f818363ffffffff1660085461063a9190610ff7565b610bfd565b6006805483919060009061065a90849063ffffffff16610fcf565b82546101009290920a63ffffffff818102199093169183160217909155600554600654600160c81b909104821691161415905061069957610699610cdc565b5050565b6005546001600160a01b031633146106f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052d565b6107016000610dc1565b565b6060600480546103fe90610f66565b60003381610720828661079b565b9050838110156107805760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161052d565b6104b28286868403610891565b60003361048f818585610a2f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031633146108205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052d565b6001600160a01b0381166108855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052d565b61088e81610dc1565b50565b6001600160a01b0383166108f35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b0382166109545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109c1848461079b565b90506000198114610a295781811015610a1c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052d565b610a298484848403610891565b50505050565b6001600160a01b038316610a935760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b6001600160a01b038216610af55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052d565b6001600160a01b03831660009081526020819052604090205481811015610b6d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161052d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610ba4908490610fb7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bf091815260200190565b60405180910390a3610a29565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052d565b8060026000828254610c659190610fb7565b90915550506001600160a01b03821660009081526020819052604081208054839290610c92908490610fb7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60058054600160c01b900460ff16906018610cf683611016565b91906101000a81548160ff021916908360ff1602179055505060058060189054906101000a900460ff1660ff1611610d6a576003600560198282829054906101000a900463ffffffff16610d4a9190611036565b92506101000a81548163ffffffff021916908363ffffffff160217905550565b600554600160c01b900460ff166006141561070157600654600554610d9f9163ffffffff90811691600160a01b900416611062565b600560196101000a81548163ffffffff021916908363ffffffff160217905550565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610e4057858101830151858201604001528201610e24565b81811115610e52576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e7f57600080fd5b919050565b60008060408385031215610e9757600080fd5b610ea083610e68565b946020939093013593505050565b600080600060608486031215610ec357600080fd5b610ecc84610e68565b9250610eda60208501610e68565b9150604084013590509250925092565b60008060408385031215610efd57600080fd5b823563ffffffff81168114610f1157600080fd5b9150610f1f60208401610e68565b90509250929050565b600060208284031215610f3a57600080fd5b610f4382610e68565b9392505050565b60008060408385031215610f5d57600080fd5b610f1183610e68565b600181811c90821680610f7a57607f821691505b60208210811415610f9b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fca57610fca610fa1565b500190565b600063ffffffff808316818516808303821115610fee57610fee610fa1565b01949350505050565b600081600019048311821515161561101157611011610fa1565b500290565b600060ff821660ff81141561102d5761102d610fa1565b60010192915050565b600063ffffffff8083168185168183048111821515161561105957611059610fa1565b02949350505050565b600063ffffffff8381169083168181101561107f5761107f610fa1565b03939250505056fea2646970667358221220511bb800e2553b394eb85b96e8a0f1bee6f83e1a46b764e2ef866f2917f6bc3f64736f6c634300080c0033
0x60806040523480156200001157600080fd5b506040518060400160405280600d81526020016c4b494e47c2b7564954414c494b60981b81525060405180604001604052806004815260200163f09f97bf60e01b81525063012d838061c350688445cd605371200000848481600390805190602001906200008192919062000158565b5080516200009790600490602084019062000158565b505050620000b4620000ae6200010260201b60201c565b62000106565b60079290925560058054600893909355600160a01b600160e81b0319909216600160a01b63ffffffff929092169190910264ffffffffff60c01b191617607d60ca1b179055506200023b9050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200016690620001fe565b90600052602060002090601f0160209004810192826200018a5760008555620001d5565b82601f10620001a557805160ff1916838001178555620001d5565b82800160010185558215620001d5579182015b82811115620001d5578251825591602001919060010190620001b8565b50620001e3929150620001e7565b5090565b5b80821115620001e35760008155600101620001e8565b600181811c908216806200021357607f821691505b602082108114156200023557634e487b7160e01b600052602260045260246000fd5b50919050565b6110bd806200024b6000396000f3fe60806040526004361061012a5760003560e01c806370a08231116100ab5780639da552ed1161006f5780639da552ed14610335578063a457c2d714610359578063a9059cbb14610379578063ca0dcf1614610399578063dd62ed3e146103af578063f2fde38b146103cf57600080fd5b806370a0823114610290578063715018a6146102c65780638da5cb5b146102db57806395d89b41146103035780639659867e1461031857600080fd5b806323b872dd116100f257806323b872dd14610211578063313ce5671461023157806339509351146102455780633e6eaa031461026557806348cd4cb11461027a57600080fd5b8063055ad42e1461012f57806306fdde0314610167578063095ea7b31461018957806318160ddd146101b95780631f21bfbf146101d8575b600080fd5b34801561013b57600080fd5b5060055461015090600160c01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b34801561017357600080fd5b5061017c6103ef565b60405161015e9190610e13565b34801561019557600080fd5b506101a96101a4366004610e84565b610481565b604051901515815260200161015e565b3480156101c557600080fd5b506002545b60405190815260200161015e565b3480156101e457600080fd5b506005546101fc90600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161015e565b34801561021d57600080fd5b506101a961022c366004610eae565b610499565b34801561023d57600080fd5b506012610150565b34801561025157600080fd5b506101a9610260366004610e84565b6104bd565b610278610273366004610eea565b6104df565b005b34801561028657600080fd5b506101ca60075481565b34801561029c57600080fd5b506101ca6102ab366004610f28565b6001600160a01b031660009081526020819052604090205490565b3480156102d257600080fd5b5061027861069d565b3480156102e757600080fd5b506005546040516001600160a01b03909116815260200161015e565b34801561030f57600080fd5b5061017c610703565b34801561032457600080fd5b506006546101fc9063ffffffff1681565b34801561034157600080fd5b506005546101fc90600160c81b900463ffffffff1681565b34801561036557600080fd5b506101a9610374366004610e84565b610712565b34801561038557600080fd5b506101a9610394366004610e84565b61078d565b3480156103a557600080fd5b506101ca60085481565b3480156103bb57600080fd5b506101ca6103ca366004610f4a565b61079b565b3480156103db57600080fd5b506102786103ea366004610f28565b6107c6565b6060600380546103fe90610f66565b80601f016020809104026020016040519081016040528092919081815260200182805461042a90610f66565b80156104775780601f1061044c57610100808354040283529160200191610477565b820191906000526020600020905b81548152906001019060200180831161045a57829003601f168201915b5050505050905090565b60003361048f818585610891565b5060019392505050565b6000336104a78582856109b5565b6104b2858585610a2f565b506001949350505050565b60003361048f8185856104d0838361079b565b6104da9190610fb7565b610891565b6007544310156105365760405162461bcd60e51b815260206004820152601b60248201527f4d696e74696e6720686173206e6f74207374617274656420796574000000000060448201526064015b60405180910390fd5b60055460065463ffffffff600160a01b90920482169161055891859116610fcf565b63ffffffff1611156105ac5760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746f74616c206d696e74206c696d69740000000000000000604482015260640161052d565b60055460065463ffffffff600160c81b9092048216916105ce91859116610fcf565b63ffffffff1611156106225760405162461bcd60e51b815260206004820152601b60248201527f457863656564732063757272656e74207068617365206c696d69740000000000604482015260640161052d565b61063f818363ffffffff1660085461063a9190610ff7565b610bfd565b6006805483919060009061065a90849063ffffffff16610fcf565b82546101009290920a63ffffffff818102199093169183160217909155600554600654600160c81b909104821691161415905061069957610699610cdc565b5050565b6005546001600160a01b031633146106f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052d565b6107016000610dc1565b565b6060600480546103fe90610f66565b60003381610720828661079b565b9050838110156107805760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161052d565b6104b28286868403610891565b60003361048f818585610a2f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031633146108205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052d565b6001600160a01b0381166108855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052d565b61088e81610dc1565b50565b6001600160a01b0383166108f35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b0382166109545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109c1848461079b565b90506000198114610a295781811015610a1c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052d565b610a298484848403610891565b50505050565b6001600160a01b038316610a935760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b6001600160a01b038216610af55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052d565b6001600160a01b03831660009081526020819052604090205481811015610b6d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161052d565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610ba4908490610fb7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bf091815260200190565b60405180910390a3610a29565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052d565b8060026000828254610c659190610fb7565b90915550506001600160a01b03821660009081526020819052604081208054839290610c92908490610fb7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60058054600160c01b900460ff16906018610cf683611016565b91906101000a81548160ff021916908360ff1602179055505060058060189054906101000a900460ff1660ff1611610d6a576003600560198282829054906101000a900463ffffffff16610d4a9190611036565b92506101000a81548163ffffffff021916908363ffffffff160217905550565b600554600160c01b900460ff166006141561070157600654600554610d9f9163ffffffff90811691600160a01b900416611062565b600560196101000a81548163ffffffff021916908363ffffffff160217905550565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610e4057858101830151858201604001528201610e24565b81811115610e52576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e7f57600080fd5b919050565b60008060408385031215610e9757600080fd5b610ea083610e68565b946020939093013593505050565b600080600060608486031215610ec357600080fd5b610ecc84610e68565b9250610eda60208501610e68565b9150604084013590509250925092565b60008060408385031215610efd57600080fd5b823563ffffffff81168114610f1157600080fd5b9150610f1f60208401610e68565b90509250929050565b600060208284031215610f3a57600080fd5b610f4382610e68565b9392505050565b60008060408385031215610f5d57600080fd5b610f1183610e68565b600181811c90821680610f7a57607f821691505b60208210811415610f9b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fca57610fca610fa1565b500190565b600063ffffffff808316818516808303821115610fee57610fee610fa1565b01949350505050565b600081600019048311821515161561101157611011610fa1565b500290565b600060ff821660ff81141561102d5761102d610fa1565b60010192915050565b600063ffffffff8083168185168183048111821515161561105957611059610fa1565b02949350505050565b600063ffffffff8381169083168181101561107f5761107f610fa1565b03939250505056fea2646970667358221220511bb800e2553b394eb85b96e8a0f1bee6f83e1a46b764e2ef866f2917f6bc3f64736f6c634300080c0033