0x6080604052600436106101f25760003560e01c806375f0a8741161010d578063a9059cbb116100a0578063c492f0461161006f578063c492f046146105b1578063d2889fb0146105d1578063dd62ed3e146105e7578063e2f456051461062d578063f2fde38b1461064357600080fd5b8063a9059cbb1461052b578063aa4bde281461054b578063b62496f514610561578063c02466681461059157600080fd5b806395d89b41116100dc57806395d89b41146104c05780639a7a23d6146104d5578063a045bfef146104f5578063a457c2d71461050b57600080fd5b806375f0a874146104475780638c0b5e22146104675780638da5cb5b1461047d5780638f2076fd146104a057600080fd5b806339509351116101855780635d098b38116101545780635d098b38146103bc57806365b8dbc0146103dc57806370a08231146103fc578063715018a61461043257600080fd5b8063395093511461032e578063460418321461034e57806349bd5a5e146103635780634fbee1931461038357600080fd5b806318160ddd116101c157806318160ddd146102b557806321ce72e5146102ca57806323b872dd146102ec578063313ce5671461030c57600080fd5b806306fdde03146101fe578063095ea7b31461022957806310c8aeac146102595780631694505e1461027d57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610213610663565b6040516102209190611a05565b60405180910390f35b34801561023557600080fd5b50610249610244366004611a7b565b6106f5565b6040519015158152602001610220565b34801561026557600080fd5b5061026f60075481565b604051908152602001610220565b34801561028957600080fd5b5060085461029d906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b3480156102c157600080fd5b5060025461026f565b3480156102d657600080fd5b506102ea6102e5366004611aa7565b61070c565b005b3480156102f857600080fd5b50610249610307366004611ad3565b61079f565b34801561031857600080fd5b5060055460405160ff9091168152602001610220565b34801561033a57600080fd5b50610249610349366004611a7b565b610808565b34801561035a57600080fd5b506102ea61083e565b34801561036f57600080fd5b5060095461029d906001600160a01b031681565b34801561038f57600080fd5b5061024961039e366004611b14565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156103c857600080fd5b506102ea6103d7366004611b14565b610895565b3480156103e857600080fd5b506102ea6103f7366004611b14565b6108e7565b34801561040857600080fd5b5061026f610417366004611b14565b6001600160a01b031660009081526020819052604090205490565b34801561043e57600080fd5b506102ea610b57565b34801561045357600080fd5b50600d5461029d906001600160a01b031681565b34801561047357600080fd5b5061026f600e5481565b34801561048957600080fd5b5060055461010090046001600160a01b031661029d565b3480156104ac57600080fd5b506102ea6104bb366004611aa7565b610bd7565b3480156104cc57600080fd5b50610213610c61565b3480156104e157600080fd5b506102ea6104f0366004611b41565b610c70565b34801561050157600080fd5b5061026f600b5481565b34801561051757600080fd5b50610249610526366004611a7b565b610d42565b34801561053757600080fd5b50610249610546366004611a7b565b610d91565b34801561055757600080fd5b5061026f600f5481565b34801561056d57600080fd5b5061024961057c366004611b14565b60116020526000908152604090205460ff1681565b34801561059d57600080fd5b506102ea6105ac366004611b41565b610d9e565b3480156105bd57600080fd5b506102ea6105cc366004611b8c565b610e2d565b3480156105dd57600080fd5b5061026f600c5481565b3480156105f357600080fd5b5061026f610602366004611c63565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561063957600080fd5b5061026f600a5481565b34801561064f57600080fd5b506102ea61065e366004611b14565b610f02565b60606003805461067290611c9c565b80601f016020809104026020016040519081016040528092919081815260200182805461069e90611c9c565b80156106eb5780601f106106c0576101008083540402835291602001916106eb565b820191906000526020600020905b8154815290600101906020018083116106ce57829003601f168201915b5050505050905090565b6000610702338484610ffe565b5060015b92915050565b6005546001600160a01b036101009091041633146107455760405162461bcd60e51b815260040161073c90611cd6565b60405180910390fd5b606483108015610756575060098211155b8015610763575060098111155b61076c57600080fd5b8061077883600a611d21565b610783856064611d21565b61078d9190611d38565b6107979190611d38565b600c55505050565b60006107ac848484611123565b6107fe84336107f985604051806060016040528060288152602001611e97602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061141c565b610ffe565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107029185906107f99086611456565b6005546001600160a01b0361010090910416331461086e5760405162461bcd60e51b815260040161073c90611cd6565b3060009081526020819052604090205461089390600d546001600160a01b03166114bc565b565b6005546001600160a01b036101009091041633146108c55760405162461bcd60e51b815260040161073c90611cd6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b036101009091041633146109175760405162461bcd60e51b815260040161073c90611cd6565b6008546001600160a01b03908116908216036109815760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b606482015260840161073c565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611d4b565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190611d4b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b339190611d4b565b600980546001600160a01b0319166001600160a01b03929092169190911790555050565b6005546001600160a01b03610100909104163314610b875760405162461bcd60e51b815260040161073c90611cd6565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546001600160a01b03610100909104163314610c075760405162461bcd60e51b815260040161073c90611cd6565b606483108015610c18575060098211155b8015610c25575060098111155b610c2e57600080fd5b80610c3a83600a611d21565b610c45856064611d21565b610c4f9190611d38565b610c599190611d38565b600b55505050565b60606004805461067290611c9c565b6005546001600160a01b03610100909104163314610ca05760405162461bcd60e51b815260040161073c90611cd6565b6009546001600160a01b0390811690831603610d345760405162461bcd60e51b815260206004820152604760248201527f5468652050616e5265776172645377617020706169722063616e6e6f7420626560448201527f2072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6064820152666572506169727360c81b608482015260a40161073c565b610d3e8282611512565b5050565b600061070233846107f985604051806060016040528060258152602001611ebf602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061141c565b6000610702338484611123565b6005546001600160a01b03610100909104163314610dce5760405162461bcd60e51b815260040161073c90611cd6565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03610100909104163314610e5d5760405162461bcd60e51b815260040161073c90611cd6565b60005b8251811015610ec4578160106000858481518110610e8057610e80611d68565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ebc81611d7e565b915050610e60565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358282604051610ef6929190611ddb565b60405180910390a15050565b6005546001600160a01b03610100909104163314610f325760405162461bcd60e51b815260040161073c90611cd6565b6001600160a01b038116610f975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161073c565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b0383166110605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161073c565b6001600160a01b0382166110c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161073c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038216158061114357506001600160a01b03821661dead145b8061118857506001600160a01b03831660009081526010602052604090205460ff168061118857506001600160a01b03821660009081526010602052604090205460ff165b80611191575080155b156111a6576111a18383836115fc565b505050565b600e548111156112095760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161073c565b6009546001600160a01b03838116911614611294576001600160a01b038216600090815260208190526040902054600f546112448383611d38565b11156112925760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000604482015260640161073c565b505b30600090815260208190526040902054600a54811080159081906112c25750600954600160a01b900460ff16155b80156112e757506001600160a01b03851660009081526011602052604090205460ff16155b1561132e576009805460ff60a01b1916600160a01b179055600a54801561131f57600d5461131f9082906001600160a01b03166114bc565b506009805460ff60a01b191690555b6009546001600160a01b03861660009081526010602052604090205460ff600160a01b90920482161591168061137c57506001600160a01b03851660009081526010602052604090205460ff165b15611385575060005b80156114095760006113ae6127106113a8600c548861177f90919063ffffffff16565b90611801565b6001600160a01b03871660009081526011602052604090205490915060ff16156113f0576113ed6127106113a8600b548861177f90919063ffffffff16565b90505b6113fa8582611843565b94506114078730836115fc565b505b6114148686866115fc565b505050505050565b600081848411156114405760405162461bcd60e51b815260040161073c9190611a05565b50600061144d8486611dff565b95945050505050565b6000806114638385611d38565b9050838110156114b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161073c565b9392505050565b476114c683611885565b60006114d24783611843565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561150b573d6000803e3d6000fd5b5050505050565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036115a85760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840161073c565b6001600160a01b038216600081815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166116605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073c565b6001600160a01b0382166116c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161073c565b6116ff81604051806060016040528060268152602001611e71602691396001600160a01b038616600090815260208190526040902054919061141c565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461172e9082611456565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611116565b60008260000361179157506000610706565b600061179d8385611d21565b9050826117aa8583611e12565b146114b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161073c565b60006114b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119d7565b60006114b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061141c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118ba576118ba611d68565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190611d4b565b8160018151811061194a5761194a611d68565b6001600160a01b0392831660209182029290920101526008546119709130911684610ffe565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906119a9908590600090869030904290600401611e34565b600060405180830381600087803b1580156119c357600080fd5b505af1158015611414573d6000803e3d6000fd5b600081836119f85760405162461bcd60e51b815260040161073c9190611a05565b50600061144d8486611e12565b600060208083528351808285015260005b81811015611a3257858101830151858201604001528201611a16565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6857600080fd5b50565b8035611a7681611a53565b919050565b60008060408385031215611a8e57600080fd5b8235611a9981611a53565b946020939093013593505050565b600080600060608486031215611abc57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ae857600080fd5b8335611af381611a53565b92506020840135611b0381611a53565b929592945050506040919091013590565b600060208284031215611b2657600080fd5b81356114b581611a53565b80358015158114611a7657600080fd5b60008060408385031215611b5457600080fd5b8235611b5f81611a53565b9150611b6d60208401611b31565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b8135602082821115611bdf57611bdf611b76565b8160051b604051601f19603f83011681018181108682111715611c0457611c04611b76565b604052928352818301935084810182019289841115611c2257600080fd5b948201945b83861015611c4757611c3886611a6b565b85529482019493820193611c27565b9650611c569050878201611b31565b9450505050509250929050565b60008060408385031215611c7657600080fd5b8235611c8181611a53565b91506020830135611c9181611a53565b809150509250929050565b600181811c90821680611cb057607f821691505b602082108103611cd057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761070657610706611d0b565b8082018082111561070657610706611d0b565b600060208284031215611d5d57600080fd5b81516114b581611a53565b634e487b7160e01b600052603260045260246000fd5b600060018201611d9057611d90611d0b565b5060010190565b600081518084526020808501945080840160005b83811015611dd05781516001600160a01b031687529582019590820190600101611dab565b509495945050505050565b604081526000611dee6040830185611d97565b905082151560208301529392505050565b8181038181111561070657610706611d0b565b600082611e2f57634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a060408201526000611e5360a0830186611d97565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220198a296ba21fc1447f26653e7930897fa6dc78bd859db985b049f2a8bf0207fa64736f6c63430008130033
0x60806040526702599b0a5a755cf860075560405162002d3f38038062002d3f8339810160408190526200003291620009ff565b81888887600362000044848262000b6a565b50600462000053838262000b6a565b506005805460ff191660ff929092169190911790555060009050620000753390565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b0319166001600160a01b0392909216919091179055602081015160009060649062000102903462000c4c565b6200010e919062000c66565b90506001600160a01b0383166108fc62000129833462000c89565b6040518115909202916000818181858888f1935050505015801562000152573d6000803e3d6000fd5b5081516040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156200018d573d6000803e3d6000fd5b50604080860151600d80546001600160a01b039283166001600160a01b0319918216179091558751600c55602080890151600b5560088054938916939092168317909155825163c45a015560e01b81529251919263c45a015592600482810193928290030181865afa15801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e919062000c9f565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b7919062000c9f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b919062000c9f565b600980546001600160a01b0319166001600160a01b0392909216918217905562000357906001620004b1565b6200037b6200037360055461010090046001600160a01b031690565b6001620005a1565b600d5462000394906001600160a01b03166001620005a1565b620003a1306001620005a1565b600854620003ba906001600160a01b03166001620005a1565b620003c786600a62000dba565b620003d58861138862000662565b620003e290600162000dcb565b620003ee919062000c4c565b600a819055506200041161271087600a6200040a919062000dba565b9062000662565b87866060015162000423919062000c4c565b6200042f919062000c4c565b600e55620004466127106200040a88600a62000dba565b87866080015162000458919062000c4c565b62000464919062000c4c565b600f55620004a26200048360055461010090046001600160a01b031690565b6200049088600a62000dba565b6200049c908a62000c4c565b620006b5565b50505050505050505062000e16565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036200054d5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03610100909104163314620006035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000544565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000620006ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200079960201b60201c565b90505b92915050565b6001600160a01b0382166200070d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000544565b6002546200071c9082620007da565b6002556001600160a01b038216600090815260208190526040902054620007449082620007da565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008183620007bd5760405162461bcd60e51b815260040162000544919062000de1565b506000620007cc848662000c66565b95945050505050565b505050565b600080620007e9838562000dcb565b905083811015620006ac5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000544565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200087057818101518382015260200162000856565b50506000910152565b600082601f8301126200088b57600080fd5b81516001600160401b0380821115620008a857620008a86200083d565b604051601f8301601f19908116603f01168101908282118183101715620008d357620008d36200083d565b81604052838152866020858801011115620008ed57600080fd5b6200090084602083016020890162000853565b9695505050505050565b80516001600160a01b03811681146200092257600080fd5b919050565b600060a082840312156200093a57600080fd5b60405160a081016001600160401b03811182821017156200095f576200095f6200083d565b8060405250809150825181526020830151602082015262000983604084016200090a565b604082015260608301516060820152608083015160808201525092915050565b600060408284031215620009b657600080fd5b604080519081016001600160401b0381118282101715620009db57620009db6200083d565b604052905080620009ec836200090a565b8152602083015160208201525092915050565b6000806000806000806000806101a0898b03121562000a1d57600080fd5b88516001600160401b038082111562000a3557600080fd5b62000a438c838d0162000879565b995060208b015191508082111562000a5a57600080fd5b5062000a698b828c0162000879565b97505060408901519550606089015160ff8116811462000a8857600080fd5b945062000a998a60808b0162000927565b935062000aaa6101208a016200090a565b925062000abb6101408a016200090a565b915062000acd8a6101608b01620009a3565b90509295985092959890939650565b600181811c9082168062000af157607f821691505b60208210810362000b1257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007d557600081815260208120601f850160051c8101602086101562000b415750805b601f850160051c820191505b8181101562000b625782815560010162000b4d565b505050505050565b81516001600160401b0381111562000b865762000b866200083d565b62000b9e8162000b97845462000adc565b8462000b18565b602080601f83116001811462000bd6576000841562000bbd5750858301515b600019600386901b1c1916600185901b17855562000b62565b600085815260208120601f198616915b8281101562000c075788860151825594840194600190910190840162000be6565b508582101562000c265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620006af57620006af62000c36565b60008262000c8457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620006af57620006af62000c36565b60006020828403121562000cb257600080fd5b620006ac826200090a565b600181815b8085111562000cfe57816000190482111562000ce25762000ce262000c36565b8085161562000cf057918102915b93841c939080029062000cc2565b509250929050565b60008262000d1757506001620006af565b8162000d2657506000620006af565b816001811462000d3f576002811462000d4a5762000d6a565b6001915050620006af565b60ff84111562000d5e5762000d5e62000c36565b50506001821b620006af565b5060208310610133831016604e8410600b841016171562000d8f575081810a620006af565b62000d9b838362000cbd565b806000190482111562000db25762000db262000c36565b029392505050565b6000620006ac60ff84168362000d06565b80820180821115620006af57620006af62000c36565b602081526000825180602084015262000e0281604085016020870162000853565b601f01601f19169190910160400192915050565b611f198062000e266000396000f3fe6080604052600436106101f25760003560e01c806375f0a8741161010d578063a9059cbb116100a0578063c492f0461161006f578063c492f046146105b1578063d2889fb0146105d1578063dd62ed3e146105e7578063e2f456051461062d578063f2fde38b1461064357600080fd5b8063a9059cbb1461052b578063aa4bde281461054b578063b62496f514610561578063c02466681461059157600080fd5b806395d89b41116100dc57806395d89b41146104c05780639a7a23d6146104d5578063a045bfef146104f5578063a457c2d71461050b57600080fd5b806375f0a874146104475780638c0b5e22146104675780638da5cb5b1461047d5780638f2076fd146104a057600080fd5b806339509351116101855780635d098b38116101545780635d098b38146103bc57806365b8dbc0146103dc57806370a08231146103fc578063715018a61461043257600080fd5b8063395093511461032e578063460418321461034e57806349bd5a5e146103635780634fbee1931461038357600080fd5b806318160ddd116101c157806318160ddd146102b557806321ce72e5146102ca57806323b872dd146102ec578063313ce5671461030c57600080fd5b806306fdde03146101fe578063095ea7b31461022957806310c8aeac146102595780631694505e1461027d57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610213610663565b6040516102209190611a05565b60405180910390f35b34801561023557600080fd5b50610249610244366004611a7b565b6106f5565b6040519015158152602001610220565b34801561026557600080fd5b5061026f60075481565b604051908152602001610220565b34801561028957600080fd5b5060085461029d906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b3480156102c157600080fd5b5060025461026f565b3480156102d657600080fd5b506102ea6102e5366004611aa7565b61070c565b005b3480156102f857600080fd5b50610249610307366004611ad3565b61079f565b34801561031857600080fd5b5060055460405160ff9091168152602001610220565b34801561033a57600080fd5b50610249610349366004611a7b565b610808565b34801561035a57600080fd5b506102ea61083e565b34801561036f57600080fd5b5060095461029d906001600160a01b031681565b34801561038f57600080fd5b5061024961039e366004611b14565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156103c857600080fd5b506102ea6103d7366004611b14565b610895565b3480156103e857600080fd5b506102ea6103f7366004611b14565b6108e7565b34801561040857600080fd5b5061026f610417366004611b14565b6001600160a01b031660009081526020819052604090205490565b34801561043e57600080fd5b506102ea610b57565b34801561045357600080fd5b50600d5461029d906001600160a01b031681565b34801561047357600080fd5b5061026f600e5481565b34801561048957600080fd5b5060055461010090046001600160a01b031661029d565b3480156104ac57600080fd5b506102ea6104bb366004611aa7565b610bd7565b3480156104cc57600080fd5b50610213610c61565b3480156104e157600080fd5b506102ea6104f0366004611b41565b610c70565b34801561050157600080fd5b5061026f600b5481565b34801561051757600080fd5b50610249610526366004611a7b565b610d42565b34801561053757600080fd5b50610249610546366004611a7b565b610d91565b34801561055757600080fd5b5061026f600f5481565b34801561056d57600080fd5b5061024961057c366004611b14565b60116020526000908152604090205460ff1681565b34801561059d57600080fd5b506102ea6105ac366004611b41565b610d9e565b3480156105bd57600080fd5b506102ea6105cc366004611b8c565b610e2d565b3480156105dd57600080fd5b5061026f600c5481565b3480156105f357600080fd5b5061026f610602366004611c63565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561063957600080fd5b5061026f600a5481565b34801561064f57600080fd5b506102ea61065e366004611b14565b610f02565b60606003805461067290611c9c565b80601f016020809104026020016040519081016040528092919081815260200182805461069e90611c9c565b80156106eb5780601f106106c0576101008083540402835291602001916106eb565b820191906000526020600020905b8154815290600101906020018083116106ce57829003601f168201915b5050505050905090565b6000610702338484610ffe565b5060015b92915050565b6005546001600160a01b036101009091041633146107455760405162461bcd60e51b815260040161073c90611cd6565b60405180910390fd5b606483108015610756575060098211155b8015610763575060098111155b61076c57600080fd5b8061077883600a611d21565b610783856064611d21565b61078d9190611d38565b6107979190611d38565b600c55505050565b60006107ac848484611123565b6107fe84336107f985604051806060016040528060288152602001611e97602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061141c565b610ffe565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107029185906107f99086611456565b6005546001600160a01b0361010090910416331461086e5760405162461bcd60e51b815260040161073c90611cd6565b3060009081526020819052604090205461089390600d546001600160a01b03166114bc565b565b6005546001600160a01b036101009091041633146108c55760405162461bcd60e51b815260040161073c90611cd6565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b036101009091041633146109175760405162461bcd60e51b815260040161073c90611cd6565b6008546001600160a01b03908116908216036109815760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b606482015260840161073c565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611d4b565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190611d4b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b339190611d4b565b600980546001600160a01b0319166001600160a01b03929092169190911790555050565b6005546001600160a01b03610100909104163314610b875760405162461bcd60e51b815260040161073c90611cd6565b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6005546001600160a01b03610100909104163314610c075760405162461bcd60e51b815260040161073c90611cd6565b606483108015610c18575060098211155b8015610c25575060098111155b610c2e57600080fd5b80610c3a83600a611d21565b610c45856064611d21565b610c4f9190611d38565b610c599190611d38565b600b55505050565b60606004805461067290611c9c565b6005546001600160a01b03610100909104163314610ca05760405162461bcd60e51b815260040161073c90611cd6565b6009546001600160a01b0390811690831603610d345760405162461bcd60e51b815260206004820152604760248201527f5468652050616e5265776172645377617020706169722063616e6e6f7420626560448201527f2072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6064820152666572506169727360c81b608482015260a40161073c565b610d3e8282611512565b5050565b600061070233846107f985604051806060016040528060258152602001611ebf602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061141c565b6000610702338484611123565b6005546001600160a01b03610100909104163314610dce5760405162461bcd60e51b815260040161073c90611cd6565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03610100909104163314610e5d5760405162461bcd60e51b815260040161073c90611cd6565b60005b8251811015610ec4578160106000858481518110610e8057610e80611d68565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ebc81611d7e565b915050610e60565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358282604051610ef6929190611ddb565b60405180910390a15050565b6005546001600160a01b03610100909104163314610f325760405162461bcd60e51b815260040161073c90611cd6565b6001600160a01b038116610f975760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161073c565b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b0383166110605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161073c565b6001600160a01b0382166110c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161073c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038216158061114357506001600160a01b03821661dead145b8061118857506001600160a01b03831660009081526010602052604090205460ff168061118857506001600160a01b03821660009081526010602052604090205460ff165b80611191575080155b156111a6576111a18383836115fc565b505050565b600e548111156112095760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161073c565b6009546001600160a01b03838116911614611294576001600160a01b038216600090815260208190526040902054600f546112448383611d38565b11156112925760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000604482015260640161073c565b505b30600090815260208190526040902054600a54811080159081906112c25750600954600160a01b900460ff16155b80156112e757506001600160a01b03851660009081526011602052604090205460ff16155b1561132e576009805460ff60a01b1916600160a01b179055600a54801561131f57600d5461131f9082906001600160a01b03166114bc565b506009805460ff60a01b191690555b6009546001600160a01b03861660009081526010602052604090205460ff600160a01b90920482161591168061137c57506001600160a01b03851660009081526010602052604090205460ff165b15611385575060005b80156114095760006113ae6127106113a8600c548861177f90919063ffffffff16565b90611801565b6001600160a01b03871660009081526011602052604090205490915060ff16156113f0576113ed6127106113a8600b548861177f90919063ffffffff16565b90505b6113fa8582611843565b94506114078730836115fc565b505b6114148686866115fc565b505050505050565b600081848411156114405760405162461bcd60e51b815260040161073c9190611a05565b50600061144d8486611dff565b95945050505050565b6000806114638385611d38565b9050838110156114b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161073c565b9392505050565b476114c683611885565b60006114d24783611843565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561150b573d6000803e3d6000fd5b5050505050565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036115a85760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840161073c565b6001600160a01b038216600081815260116020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166116605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073c565b6001600160a01b0382166116c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161073c565b6116ff81604051806060016040528060268152602001611e71602691396001600160a01b038616600090815260208190526040902054919061141c565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461172e9082611456565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611116565b60008260000361179157506000610706565b600061179d8385611d21565b9050826117aa8583611e12565b146114b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161073c565b60006114b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119d7565b60006114b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061141c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106118ba576118ba611d68565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190611d4b565b8160018151811061194a5761194a611d68565b6001600160a01b0392831660209182029290920101526008546119709130911684610ffe565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906119a9908590600090869030904290600401611e34565b600060405180830381600087803b1580156119c357600080fd5b505af1158015611414573d6000803e3d6000fd5b600081836119f85760405162461bcd60e51b815260040161073c9190611a05565b50600061144d8486611e12565b600060208083528351808285015260005b81811015611a3257858101830151858201604001528201611a16565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6857600080fd5b50565b8035611a7681611a53565b919050565b60008060408385031215611a8e57600080fd5b8235611a9981611a53565b946020939093013593505050565b600080600060608486031215611abc57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ae857600080fd5b8335611af381611a53565b92506020840135611b0381611a53565b929592945050506040919091013590565b600060208284031215611b2657600080fd5b81356114b581611a53565b80358015158114611a7657600080fd5b60008060408385031215611b5457600080fd5b8235611b5f81611a53565b9150611b6d60208401611b31565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b8135602082821115611bdf57611bdf611b76565b8160051b604051601f19603f83011681018181108682111715611c0457611c04611b76565b604052928352818301935084810182019289841115611c2257600080fd5b948201945b83861015611c4757611c3886611a6b565b85529482019493820193611c27565b9650611c569050878201611b31565b9450505050509250929050565b60008060408385031215611c7657600080fd5b8235611c8181611a53565b91506020830135611c9181611a53565b809150509250929050565b600181811c90821680611cb057607f821691505b602082108103611cd057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761070657610706611d0b565b8082018082111561070657610706611d0b565b600060208284031215611d5d57600080fd5b81516114b581611a53565b634e487b7160e01b600052603260045260246000fd5b600060018201611d9057611d90611d0b565b5060010190565b600081518084526020808501945080840160005b83811015611dd05781516001600160a01b031687529582019590820190600101611dab565b509495945050505050565b604081526000611dee6040830185611d97565b905082151560208301529392505050565b8181038181111561070657610706611d0b565b600082611e2f57634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a060408201526000611e5360a0830186611d97565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220198a296ba21fc1447f26653e7930897fa6dc78bd859db985b049f2a8bf0207fa64736f6c6343000813003300000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000009c40000000000000000000000007f5ded55b0aa4671779afb5e15e2d9f756e7d2dc00000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f40000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005b8a969814aea42cc1fac408e95383eb5c44e0590000000000000000000000005b8a969814aea42cc1fac408e95383eb5c44e059000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000006444558424f5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006444558424f540000000000000000000000000000000000000000000000000000