6080604052620000126012600a6200055d565b62000023906402540be40062000629565b600281905560038181556004828155600580546001600160a01b031990811661dead179091556006805490911690556007805474017a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a81b03199091161790556000600c55600d829055600e829055600f919091556015805461ffff191690556017805462ffff0019166101001790556107d091620000ba9162000629565b620000c69190620004f3565b601855348015620000d657600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754601280546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200018957600080fd5b505afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c49190620004af565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022157600080fd5b505afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c9190620004af565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002a457600080fd5b505af1158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620004af565b601380546001600160a01b03199081166001600160a01b03938416178255306000818152600960209081526040808320601254881684528252808320600019908190558654881684528184205533808452600a8352818420805460ff1990811660019081179092559585528285208054871682179055600580548a1686528386208054881683179055918552600b845282852080548716821790559654881684528184208054861688179055549096168252949020805490911690921790915560108054737e3cbb52193ac9ffa4193a6dabc44618d76ef4a5908316811790915560118054909216179055600d54600c54620003e79290919062000440811b62000d5717901c565b600e819055600f5560025433600081815260086020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000661565b6000806200044f8385620004d8565b905083811015620004a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b600060208284031215620004c1578081fd5b81516001600160a01b0381168114620004a6578182fd5b60008219821115620004ee57620004ee6200064b565b500190565b6000826200050f57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620005555781600019048211156200053957620005396200064b565b808516156200054757918102915b93841c939080029062000519565b509250929050565b60006200056e60ff84168362000575565b9392505050565b6000826200058657506001620004a9565b816200059557506000620004a9565b8160018114620005ae5760028114620005b957620005d9565b6001915050620004a9565b60ff841115620005cd57620005cd6200064b565b50506001821b620004a9565b5060208310610133831016604e8410600b8410161715620005fe575081810a620004a9565b6200060a838362000514565b80600019048211156200062157620006216200064b565b029392505050565b60008160001904831182151516156200064657620006466200064b565b500290565b634e487b7160e01b600052601160045260246000fd5b611cbc80620006716000396000f3fe6080604052600436106102605760003560e01c80637d1db4a511610144578063bf56b371116100b6578063f1d5f5171161007a578063f1d5f51714610739578063f2fde38b14610759578063f84ba65d14610779578063f887ea4014610799578063fe575a87146107b9578063ffb54a99146107e957600080fd5b8063bf56b37114610687578063ca33e64c1461069d578063ca987b0e146106bd578063da00097d146106d3578063dd62ed3e146106f357600080fd5b80638da5cb5b116101085780638da5cb5b146105755780638e2eee84146105e257806395d89b411461060257806398118cb414610631578063a8aa1b3114610647578063a9059cbb1461066757600080fd5b80637d1db4a514610549578063807c2d9c1461055f578063893d20e814610575578063896648c1146105935780638b42507f146105b257600080fd5b8063313ce567116101dd578063571ac8b0116101a1578063571ac8b0146104665780635e562f3b14610486578063658d4b7f146104a657806370a08231146104c6578063715018a6146104fc57806375f0a8741461051157600080fd5b8063313ce567146103c45780633f4218e0146103e057806344de2e4c146104105780634a74bb02146104315780634dc985031461045057600080fd5b806318160ddd1161022457806318160ddd1461034a5780631df4ccfc1461035f578063220f66961461037557806323b872dd1461038f5780632b112e49146103af57600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102d85780630b78f9c0146103085780630d2959801461032a57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028260185481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b50604080518082019091526011815270536f6e6773206f6620457468657265756d60781b60208201525b60405161028c9190611ad7565b3480156102e457600080fd5b506102f86102f33660046119ad565b610803565b604051901515815260200161028c565b34801561031457600080fd5b50610328610323366004611a89565b610870565b005b34801561033657600080fd5b50610328610345366004611a57565b6108c3565b34801561035657600080fd5b50600254610282565b34801561036b57600080fd5b50610282600e5481565b34801561038157600080fd5b506017546102f89060ff1681565b34801561039b57600080fd5b506102f86103aa366004611939565b610900565b3480156103bb57600080fd5b506102826109c2565b3480156103d057600080fd5b506040516012815260200161028c565b3480156103ec57600080fd5b506102f86103fb3660046118c9565b600a6020526000908152604090205460ff1681565b34801561041c57600080fd5b506007546102f890600160a01b900460ff1681565b34801561043d57600080fd5b506017546102f890610100900460ff1681565b34801561045c57600080fd5b50610282600d5481565b34801561047257600080fd5b506102f86104813660046118c9565b610a14565b34801561049257600080fd5b506103286104a1366004611a57565b610a22565b3480156104b257600080fd5b506103286104c1366004611979565b610a66565b3480156104d257600080fd5b506102826104e13660046118c9565b6001600160a01b031660009081526008602052604090205490565b34801561050857600080fd5b50610328610abb565b34801561051d57600080fd5b50601154610531906001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b34801561055557600080fd5b5061028260035481565b34801561056b57600080fd5b5061028260045481565b34801561058157600080fd5b506000546001600160a01b0316610531565b34801561059f57600080fd5b506015546102f890610100900460ff1681565b3480156105be57600080fd5b506102f86105cd3660046118c9565b600b6020526000908152604090205460ff1681565b3480156105ee57600080fd5b506103286105fd3660046119d8565b610b2f565b34801561060e57600080fd5b5060408051808201909152600681526535534f4e475360d01b60208201526102cb565b34801561063d57600080fd5b50610282600c5481565b34801561065357600080fd5b50601354610531906001600160a01b031681565b34801561067357600080fd5b506102f86106823660046119ad565b610bdc565b34801561069357600080fd5b5061028260145481565b3480156106a957600080fd5b50601054610531906001600160a01b031681565b3480156106c957600080fd5b50610282600f5481565b3480156106df57600080fd5b506017546102f89062010000900460ff1681565b3480156106ff57600080fd5b5061028261070e366004611901565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561074557600080fd5b50610328610754366004611a71565b610be9565b34801561076557600080fd5b506103286107743660046118c9565b610c18565b34801561078557600080fd5b50610328610794366004611979565b610d02565b3480156107a557600080fd5b50601254610531906001600160a01b031681565b3480156107c557600080fd5b506102f86107d43660046118c9565b60166020526000908152604090205460ff1681565b3480156107f557600080fd5b506015546102f89060ff1681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061085e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108a35760405162461bcd60e51b815260040161089a90611b2a565b60405180910390fd5b600c829055600d8190556108b78282610d57565b600e819055600f555050565b6000546001600160a01b031633146108ed5760405162461bcd60e51b815260040161089a90611b2a565b6015805460ff1916911515919091179055565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146109ad576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610988918490610db6565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6109b8848484610df0565b90505b9392505050565b6006546001600160a01b0316600090815260086020526040812054610a0f906005546001600160a01b0316600090815260086020526040902054610a099060025490611264565b90611264565b905090565b600061086a82600019610803565b6000546001600160a01b03163314610a4c5760405162461bcd60e51b815260040161089a90611b2a565b601580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610a905760405162461bcd60e51b815260040161089a90611b2a565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ae55760405162461bcd60e51b815260040161089a90611b2a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b595760405162461bcd60e51b815260040161089a90611b2a565b60005b82811015610bd6578160166000868685818110610b8957634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610b9e91906118c9565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bcf81611c3d565b9050610b5c565b50505050565b60006109bb338484610df0565b6000546001600160a01b03163314610c135760405162461bcd60e51b815260040161089a90611b2a565b600455565b6000546001600160a01b03163314610c425760405162461bcd60e51b815260040161089a90611b2a565b6001600160a01b038116610ca75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d2c5760405162461bcd60e51b815260040161089a90611b2a565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080610d648385611bcf565b9050838110156109bb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161089a565b60008184841115610dda5760405162461bcd60e51b815260040161089a9190611ad7565b506000610de78486611c26565b95945050505050565b60175460009060ff1615610e1057610e098484846112a6565b90506109bb565b6001600160a01b03841660009081526001602052604090205460ff16158015610e5257506001600160a01b03831660009081526001602052604090205460ff16155b15610ea05760155460ff16610ea05760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161089a565b60035482111580610ec957506001600160a01b0384166000908152600b602052604090205460ff165b610f095760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161089a565b6013546001600160a01b03163314801590610f27575060175460ff16155b8015610f3a5750601754610100900460ff165b8015610f5757506018543060009081526008602052604090205410155b15610f6457610f6461138c565b601454158015610f8157506013546001600160a01b038481169116145b15610fed576001600160a01b038416600090815260086020526040902054610fe45760405162461bcd60e51b81526020600482015260166024820152755a65726f2062616c616e63652076696f6c617465642160501b604482015260640161089a565b610fed43601455565b601554610100900460ff1615611079576001600160a01b03841660009081526016602052604090205460ff1615801561103f57506001600160a01b03831660009081526016602052604090205460ff16155b6110795760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161089a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546110cb918490610db6565b6001600160a01b038086166000908152600860209081526040808320949094559186168152600b909152205460ff161580156111105750600754600160a01b900460ff165b15611180576004546001600160a01b03841660009081526008602052604090205461113b9084610d57565b11156111805760405162461bcd60e51b81526020600482015260146024820152734d61782077616c6c65742076696f6c617465642160601b604482015260640161089a565b6001600160a01b0384166000908152600a602052604081205460ff161580156111c257506001600160a01b0384166000908152600a602052604090205460ff16155b6111cc57826111d7565b6111d7858585611707565b6001600160a01b0385166000908152600860205260409020549091506111fd9082610d57565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112519085815260200190565b60405180910390a3506001949350505050565b60006109bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610db6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546112f7918490610db6565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546113269083610d57565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061137a9086815260200190565b60405180910390a35060019392505050565b6017805460ff1916600117905530600090815260086020526040812054600e54600c549192916113cd916002916113c79190829087906117ca565b90611849565b905060006113db8383611264565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061142357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561147757600080fd5b505afa15801561148b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114af91906118e5565b816001815181106114d057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b815291169063791ac94790611516908590600090869030904290600401611b5f565b600060405180830381600087803b15801561153057600080fd5b505af1158015611544573d6000803e3d6000fd5b5050600c54479250600091506115689061155f906002611849565b600e5490611264565b9050600061158a60026113c7846113c7600c54886117ca90919063ffffffff16565b905060006115a7836113c7600d54876117ca90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146115fe576040519150601f19603f3d011682016040523d82523d6000602084013e611603565b606091505b506000925050881590506116f25760125460105460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b15801561167c57600080fd5b505af1158015611690573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116b59190611aaa565b505060408051858152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b60135460009081906001600160a01b0385811691161461172957600e5461172d565b600f545b9050600061174060646113c786856117ca565b3060009081526008602052604090205490915061175d9082610d57565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117ae9085815260200190565b60405180910390a36117c08482611264565b9695505050505050565b6000826117d95750600061086a565b60006117e58385611c07565b9050826117f28583611be7565b146109bb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161089a565b60006109bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836118a75760405162461bcd60e51b815260040161089a9190611ad7565b506000610de78486611be7565b803580151581146118c457600080fd5b919050565b6000602082840312156118da578081fd5b81356109bb81611c6e565b6000602082840312156118f6578081fd5b81516109bb81611c6e565b60008060408385031215611913578081fd5b823561191e81611c6e565b9150602083013561192e81611c6e565b809150509250929050565b60008060006060848603121561194d578081fd5b833561195881611c6e565b9250602084013561196881611c6e565b929592945050506040919091013590565b6000806040838503121561198b578182fd5b823561199681611c6e565b91506119a4602084016118b4565b90509250929050565b600080604083850312156119bf578182fd5b82356119ca81611c6e565b946020939093013593505050565b6000806000604084860312156119ec578283fd5b833567ffffffffffffffff80821115611a03578485fd5b818601915086601f830112611a16578485fd5b813581811115611a24578586fd5b8760208260051b8501011115611a38578586fd5b602092830195509350611a4e91860190506118b4565b90509250925092565b600060208284031215611a68578081fd5b6109bb826118b4565b600060208284031215611a82578081fd5b5035919050565b60008060408385031215611a9b578182fd5b50508035926020909101359150565b600080600060608486031215611abe578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015611b0357858101830151858201604001528201611ae7565b81811115611b145783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611bae5784516001600160a01b031683529383019391830191600101611b89565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611be257611be2611c58565b500190565b600082611c0257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611c2157611c21611c58565b500290565b600082821015611c3857611c38611c58565b500390565b6000600019821415611c5157611c51611c58565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611c8357600080fd5b5056fea2646970667358221220bee26d61939f9ecffbc2beb6385750c7bfe2b8a05159d3155f4e4fe544f8f8d964736f6c63430008040033