0x608060405234801561000f575f80fd5b506040518060400160405280600a81526020016915195d1a195c881554d160b21b815250604051806040016040528060048152602001631554d11560e21b81525061005e61014d60201b60201c565b61006c9060ff16600a61032d565b61007a9063ea88c41b61033f565b60066100886012600a610356565b610092908361033f565b91506100a06012600a610356565b6100aa908261033f565b60025560046100b985826103fb565b5060056100c684826103fb565b50505050506100fe336100dd61014d60201b60201c565b6100eb9060ff16600a61032d565b6100f990633b9aca0061033f565b610152565b600680546001600160a01b03191633179055610118601290565b6101269060ff16600a61032d565b61013490633b9aca0061033f565b6007819055335f908152600860205260409020556104cd565b601290565b6001600160a01b0382166101ac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060035f8282546101bd91906104ba565b90915550506001600160a01b0382165f90815260208190526040812080548392906101e99084906104ba565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561028557815f190482111561026b5761026b610237565b8085161561027857918102915b93841c9390800290610250565b509250929050565b5f8261029b57506001610327565b816102a757505f610327565b81600181146102bd57600281146102c7576102e3565b6001915050610327565b60ff8411156102d8576102d8610237565b50506001821b610327565b5060208310610133831016604e8410600b8410161715610306575081810a610327565b610310838361024b565b805f190482111561032357610323610237565b0290505b92915050565b5f610338838361028d565b9392505050565b808202811582820484141761032757610327610237565b5f61033860ff84168361028d565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061038c57607f821691505b6020821081036103aa57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561023257805f5260205f20601f840160051c810160208510156103d55750805b601f840160051c820191505b818110156103f4575f81556001016103e1565b5050505050565b81516001600160401b0381111561041457610414610364565b610428816104228454610378565b846103b0565b602080601f83116001811461045b575f84156104445750858301515b5f19600386901b1c1916600185901b1785556104b2565b5f85815260208120601f198616915b828110156104895788860151825594840194600190910190840161046a565b50858210156104a657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8082018082111561032757610327610237565b610b84806104da5f395ff3fe608060405234801561000f575f80fd5b506004361061013d575f3560e01c806395d89b41116100b4578063c717823011610079578063c7178230146102ac578063c7c7e9ea146102b9578063c84aae17146101fe578063dd62ed3e146102b9578063f2fde38b146102f1578063fded252914610304575f80fd5b806395d89b4114610261578063a25394d014610269578063a457c2d71461027e578063a9059cbb14610291578063c4e41b22146102a4575f80fd5b8063313ce56711610105578063313ce567146101af57806339509351146101be5780633af32abf146101d157806370a08231146101fe578063893d20e8146102265780638c9f99ce1461024b575f80fd5b806306fdde031461014157806308d7ce021461015f578063095ea7b31461017157806318160ddd1461019457806323b872dd1461019c575b5f80fd5b61014961030c565b60405161015691906109b5565b60405180910390f35b600c545b604051908152602001610156565b61018461017f366004610a05565b61039c565b6040519015158152602001610156565b600354610163565b6101846101aa366004610a2d565b610480565b60405160128152602001610156565b6101846101cc366004610a05565b610530565b6101846101df366004610a66565b6001600160a01b03165f908152600a602052604090205460ff16151590565b61016361020c366004610a66565b6001600160a01b03165f9081526008602052604090205490565b6006546001600160a01b03165b6040516001600160a01b039091168152602001610156565b600d5461010090046001600160a01b0316610233565b610149610574565b61027c610277366004610a86565b610583565b005b61018461028c366004610a05565b610684565b61018461029f366004610a05565b61071c565b600754610163565b600d5460ff161515610184565b6101636102c7366004610ac6565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61027c6102ff366004610a66565b6107b2565b600b54610163565b60606004805461031b90610af7565b80601f016020809104026020016040519081016040528092919081815260200182805461034790610af7565b80156103925780601f1061036957610100808354040283529160200191610392565b820191905f5260205f20905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b5f8115806103ca5750335f9081526009602090815260408083206001600160a01b0387168452909152902054155b61041b5760405162461bcd60e51b815260206004820152601960248201527f4e6f6e2d7a65726f20616c6c6f77616e6365206578697374730000000000000060448201526064015b60405180910390fd5b335f8181526009602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b335f908152600a602052604081205460ff1681036104d95760405162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b6044820152606401610412565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161051e91815260200190565b60405180910390a35060019392505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161056b918590610566908690610b2f565b61089a565b50600192915050565b60606005805461031b90610af7565b6006546001600160a01b031633146105e75760405162461bcd60e51b815260206004820152602160248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6044820152603760f91b6064820152608401610412565b816105f2575f6105f5565b60015b6001600160a01b0384165f908152600a60209081526040808320805460ff191660ff9590951694909417909355600890529081208054839290610639908490610b2f565b90915550506040518181526001600160a01b038416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156107055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610412565b610712338585840361089a565b5060019392505050565b335f908152600a602052604081205460ff1681036107755760405162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b6044820152606401610412565b6040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161046e565b6006546001600160a01b031633146108165760405162461bcd60e51b815260206004820152602160248201527f4f6e6c79206f776e65722063616e207472616e73666572206f776e65727368696044820152600760fc1b6064820152608401610412565b6001600160a01b0381166108785760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f206164646044820152637265737360e01b6064820152608401610412565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610412565b6001600160a01b03821661095d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610412565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610677565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610a00575f80fd5b919050565b5f8060408385031215610a16575f80fd5b610a1f836109ea565b946020939093013593505050565b5f805f60608486031215610a3f575f80fd5b610a48846109ea565b9250610a56602085016109ea565b9150604084013590509250925092565b5f60208284031215610a76575f80fd5b610a7f826109ea565b9392505050565b5f805f60608486031215610a98575f80fd5b610aa1846109ea565b925060208401358015158114610ab5575f80fd5b929592945050506040919091013590565b5f8060408385031215610ad7575f80fd5b610ae0836109ea565b9150610aee602084016109ea565b90509250929050565b600181811c90821680610b0b57607f821691505b602082108103610b2957634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561047a57634e487b7160e01b5f52601160045260245ffdfea26469706673582212202494299ce40ed3717c031913c30bc99270720241c33bfad89fcce14fadeb74f764736f6c63430008190033