0x608060405260006005556000600655600060075560006008556002600955605a600a556000600b5560646012600a6200003991906200033b565b6200004990633b9aca0062000353565b6200005591906200036d565b6200006290600262000353565b600c556064620000756012600a6200033b565b6200008590633b9aca0062000353565b6200009191906200036d565b6200009e90600262000353565b600d55620f4240620000b36012600a6200033b565b620000c390633b9aca0062000353565b620000cf91906200036d565b620000dc90600262000353565b600e556064620000ef6012600a6200033b565b620000ff90633b9aca0062000353565b6200010b91906200036d565b6200011890600262000353565b600f556011805461ffff60a01b191690553480156200013657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916730525bf161789dcba4ee4560b339c52a7f1aa38e2179055620001ac6012600a6200033b565b620001bc90633b9aca0062000353565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001ff6012600a6200033b565b6200020f90633b9aca0062000353565b60405190815260200160405180910390a362000390565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200027d57816000190482111562000261576200026162000226565b808516156200026f57918102915b93841c939080029062000241565b509250929050565b600082620002965750600162000335565b81620002a55750600062000335565b8160018114620002be5760028114620002c957620002e9565b600191505062000335565b60ff841115620002dd57620002dd62000226565b50506001821b62000335565b5060208310610133831016604e8410600b84101617156200030e575081810a62000335565b6200031a83836200023c565b806000190482111562000331576200033162000226565b0290505b92915050565b60006200034c60ff84168362000285565b9392505050565b808202811582820484141762000335576200033562000226565b6000826200038b57634e487b7160e01b600052601260045260246000fd5b500490565b61151d80620003a06000396000f3fe6080604052600436106100c65760003560e01c8063715018a61161007f57806395d89b411161005957806395d89b4114610234578063a9059cbb14610262578063dd62ed3e14610282578063e23937e2146102c857600080fd5b8063715018a6146101e0578063751039fc146101f75780638da5cb5b1461020c57600080fd5b806306fdde03146100d2578063095ea7b31461011b57806318160ddd1461014b57806323b872dd1461016e578063313ce5671461018e57806370a08231146101aa57600080fd5b366100cd57005b600080fd5b3480156100de57600080fd5b5060408051808201909152600e81526d457468657265756d2052756e657360901b60208201525b60405161011291906110ec565b60405180910390f35b34801561012757600080fd5b5061013b610136366004611152565b6102dd565b6040519015158152602001610112565b34801561015757600080fd5b506101606102f4565b604051908152602001610112565b34801561017a57600080fd5b5061013b61018936600461117e565b610315565b34801561019a57600080fd5b5060405160128152602001610112565b3480156101b657600080fd5b506101606101c53660046111bf565b6001600160a01b031660009081526001602052604090205490565b3480156101ec57600080fd5b506101f561037e565b005b34801561020357600080fd5b506101f56103fb565b34801561021857600080fd5b506000546040516001600160a01b039091168152602001610112565b34801561024057600080fd5b5060408051808201909152600581526452554e455360d81b6020820152610105565b34801561026e57600080fd5b5061013b61027d366004611152565b610461565b34801561028e57600080fd5b5061016061029d3660046111dc565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156102d457600080fd5b506101f561046e565b60006102ea3384846107cc565b5060015b92915050565b60006103026012600a61130f565b61031090633b9aca0061131e565b905090565b60006103228484846108f0565b610374843361036f856040518060600160405280602881526020016114c0602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610e45565b6107cc565b5060019392505050565b6000546001600160a01b031633146103b15760405162461bcd60e51b81526004016103a890611335565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146104255760405162461bcd60e51b81526004016103a890611335565b6104316012600a61130f565b61043f90633b9aca0061131e565b600d5561044e6012600a61130f565b61045c90633b9aca0061131e565b600c55565b60006102ea3384846108f0565b6000546001600160a01b031633146104985760405162461bcd60e51b81526004016103a890611335565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556104e19030906104d36012600a61130f565b61036f90633b9aca0061131e565b601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610558919061136a565b6001600160a01b031663c9c6539630601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105de919061136a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561062b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064f919061136a565b601180546001600160a01b039283166001600160a01b03199091161790556010541663f305d7194730610697816001600160a01b031660009081526001602052604090205490565b6000806106ac6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610714573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107399190611387565b505060115460105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b691906113b5565b506011805460ff60a81b1916600160a81b179055565b6001600160a01b03831661082e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b6001600160a01b03821661088f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103a8565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383161580159061091057506001600160a01b03821615155b61096a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103a8565b600081116109cc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103a8565b60006109d784610e7f565b806109e657506109e683610e7f565b905060006109f385610ec0565b601154909150600160a81b900460ff16610a495781610a495760405162461bcd60e51b815260206004820152601260248201527114ddd85c081a5cc81b9bdd081bdc195b995960721b60448201526064016103a8565b6011546000906001600160a01b038681169116148015610a67575082155b15610b1657600c54841115610abe5760405162461bcd60e51b815260206004820152601860248201527f53656c6c20416d6f756e74206973206e6f74207661696c64000000000000000060448201526064016103a8565b6001600160a01b038616600090815260036020526040902054429003610afb576064600a5485610aee919061131e565b610af891906113d7565b93505b600954600b541015610b0f57600654610b13565b6008545b90505b6011546001600160a01b038781169116148015610b4157506010546001600160a01b03868116911614155b8015610b4b575082155b15610c0757600d546001600160a01b038616600090815260016020526040902054610b779086906113f9565b1115610bbd5760405162461bcd60e51b815260206004820152601560248201527453776170206973206e6f7420617661696c61626c6560581b60448201526064016103a8565b600954600b541015610bd157600554610bd5565b6007545b6001600160a01b0386166000908152600360205260408120429055600b805492935090610c018361140c565b91905055505b601154600160a01b900460ff16158015610c2e57506011546001600160a01b038681169116145b8015610c435750601154600160a81b900460ff165b8015610c505750600e5484115b15610cd957600e54306000908152600160205260409020541115610c9e5730600090815260016020526040902054600f54610c9e91610c99918791610c9491610f5a565b610f5a565b610f72565b6004546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610cd7573d6000803e3d6000fd5b505b60006064610ce7838761131e565b610cf191906113d7565b90508115610d6e5730600090815260016020526040902054610d149082906113f9565b30600081815260016020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d659085815260200190565b60405180910390a35b610d78838661131e565b6001600160a01b038816600090815260016020526040902054610d9b9190611425565b6001600160a01b038816600090815260016020526040902055610dbe8186611425565b6001600160a01b038716600090815260016020526040902054610de191906113f9565b6001600160a01b0380881660008181526001602052604090209290925588167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e2b8489611425565b60405190815260200160405180910390a350505050505050565b60008184841115610e695760405162461bcd60e51b81526004016103a891906110ec565b506000610e768486611425565b95945050505050565b60006001600160a01b038216301480610ea557506004546001600160a01b038381169116145b806102ee5750506000546001600160a01b0391821691161490565b6004546000906001600160a01b0390811690831603610ee157506000919050565b306001600160a01b03831603610f0b576064600754610f0091906113d7565b6102ee906001611425565b6000546001600160a01b03166001600160a01b0316826001600160a01b031603610f3e576064600754610f0091906113d7565b6009546064600754610f5091906113d7565b610f0091906113d7565b6000818311610f695782610f6b565b815b9392505050565b6011805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610fba57610fba611438565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611013573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611037919061136a565b8160018151811061104a5761104a611438565b6001600160a01b03928316602091820292909201015260105461107091309116846107cc565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906110a990859060009086903090429060040161144e565b600060405180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b50506011805460ff60a01b1916905550505050565b600060208083528351808285015260005b81811015611119578581018301518582016040015282016110fd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461114f57600080fd5b50565b6000806040838503121561116557600080fd5b82356111708161113a565b946020939093013593505050565b60008060006060848603121561119357600080fd5b833561119e8161113a565b925060208401356111ae8161113a565b929592945050506040919091013590565b6000602082840312156111d157600080fd5b8135610f6b8161113a565b600080604083850312156111ef57600080fd5b82356111fa8161113a565b9150602083013561120a8161113a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561126657816000190482111561124c5761124c611215565b8085161561125957918102915b93841c9390800290611230565b509250929050565b60008261127d575060016102ee565b8161128a575060006102ee565b81600181146112a057600281146112aa576112c6565b60019150506102ee565b60ff8411156112bb576112bb611215565b50506001821b6102ee565b5060208310610133831016604e8410600b84101617156112e9575081810a6102ee565b6112f3838361122b565b806000190482111561130757611307611215565b029392505050565b6000610f6b60ff84168361126e565b80820281158282048414176102ee576102ee611215565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561137c57600080fd5b8151610f6b8161113a565b60008060006060848603121561139c57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156113c757600080fd5b81518015158114610f6b57600080fd5b6000826113f457634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156102ee576102ee611215565b60006001820161141e5761141e611215565b5060010190565b818103818111156102ee576102ee611215565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561149e5784516001600160a01b031683529383019391830191600101611479565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220607223d1e7926f80884478f8ab7835a8e1ed27972d80c57c7a37b83bffe99b7764736f6c63430008130033