0x6080604052600436106102cd5760003560e01c8063893d20e811610175578063ba876bb9116100dc578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14610926578063f887ea4014610946578063fe575a8714610966578063fe9fbb801461099657600080fd5b8063f0b37c04146108c6578063f2fde38b146108e6578063f74c9f471461090657600080fd5b8063ba876bb9146107ea578063c04a78ad1461080a578063d00efb2f1461082a578063dd62ed3e14610840578063df20fd4914610886578063e1d5584c146108a657600080fd5b80639a7a23d61161012e5780639a7a23d61461071a578063a8aa1b311461073a578063a8df7fb01461075a578063a9059cbb1461077a578063b62496f51461079a578063b6a5d7de146107ca57600080fd5b8063893d20e81461062b5780638b42507f1461065d5780638cd4426d1461068d5780638e2eee84146106ad5780638f02bb5b146106cd57806395d89b41146106ed57600080fd5b8063364333f4116102345780635c85974f116101ed5780636c0a24eb116101c75780636c0a24eb146105a85780636ddd1713146105be57806370a08231146105df5780637d1db4a51461061557600080fd5b80635c85974f146105485780635d0044ca14610568578063658d4b7f1461058857600080fd5b8063364333f41461048d5780633f4218e0146104a257806345434032146104d25780634ada218b146104f2578063571ac8b0146105135780635b895c291461053357600080fd5b806318160ddd1161028657806318160ddd146103d857806318abb635146103ed57806323b872dd1461040d5780632b112e491461042d5780632f54bf6e14610442578063313ce5671461047157600080fd5b806301f59d16146102d95780630445b6671461030257806306fdde0314610318578063095ea7b3146103565780630bd11f8a146103865780630d295980146103b657600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef601e5481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b506102ef60295481565b34801561032457600080fd5b5060408051808201909152600c81526b08cd2e4ca40a0d0decadcd2f60a31b60208201525b6040516102f99190612d5f565b34801561036257600080fd5b50610376610371366004612b72565b6109cf565b60405190151581526020016102f9565b34801561039257600080fd5b506103766103a1366004612a3c565b600f6020526000908152604090205460ff1681565b3480156103c257600080fd5b506103d66103d1366004612c24565b610a3c565b005b3480156103e457600080fd5b506005546102ef565b3480156103f957600080fd5b506103d6610408366004612a92565b610b24565b34801561041957600080fd5b50610376610428366004612b03565b610ca7565b34801561043957600080fd5b506102ef610d69565b34801561044e57600080fd5b5061037661045d366004612a3c565b6000546001600160a01b0391821691161490565b34801561047d57600080fd5b50604051601281526020016102f9565b34801561049957600080fd5b506103d6610dbb565b3480156104ae57600080fd5b506103766104bd366004612a3c565b600d6020526000908152604090205460ff1681565b3480156104de57600080fd5b506103d66104ed366004612b44565b610df7565b3480156104fe57600080fd5b5060285461037690600160a01b900460ff1681565b34801561051f57600080fd5b5061037661052e366004612a3c565b610e85565b34801561053f57600080fd5b506103d6610e93565b34801561055457600080fd5b506103d6610563366004612c7c565b610ec7565b34801561057457600080fd5b506103d6610583366004612c7c565b610f7c565b34801561059457600080fd5b506103d66105a3366004612b44565b611031565b3480156105b457600080fd5b506102ef60075481565b3480156105ca57600080fd5b5060285461037690600160a81b900460ff1681565b3480156105eb57600080fd5b506102ef6105fa366004612a3c565b6001600160a01b031660009081526008602052604090205490565b34801561062157600080fd5b506102ef60065481565b34801561063757600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f9565b34801561066957600080fd5b50610376610678366004612a3c565b600e6020526000908152604090205460ff1681565b34801561069957600080fd5b506103766106a8366004612b72565b6110b7565b3480156106b957600080fd5b506103d66106c8366004612b9e565b61113f565b3480156106d957600080fd5b506103d66106e8366004612c7c565b611277565b3480156106f957600080fd5b506040805180820190915260048152634649524560e01b6020820152610349565b34801561072657600080fd5b506103d6610735366004612b44565b6112f7565b34801561074657600080fd5b50602854610645906001600160a01b031681565b34801561076657600080fd5b506103d6610775366004612c7c565b61158c565b34801561078657600080fd5b50610376610795366004612b72565b611630565b3480156107a657600080fd5b506103766107b5366004612a3c565b600b6020526000908152604090205460ff1681565b3480156107d657600080fd5b506103d66107e5366004612a3c565b61163d565b3480156107f657600080fd5b506103d6610805366004612cc3565b61168e565b34801561081657600080fd5b506103d6610825366004612b44565b61176c565b34801561083657600080fd5b506102ef60115481565b34801561084c57600080fd5b506102ef61085b366004612a59565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561089257600080fd5b506103d66108a1366004612c5e565b6117f2565b3480156108b257600080fd5b506106456108c1366004612c7c565b611874565b3480156108d257600080fd5b506103d66108e1366004612a3c565b61189e565b3480156108f257600080fd5b506103d6610901366004612a3c565b6118e9565b34801561091257600080fd5b506103d6610921366004612cc3565b611979565b34801561093257600080fd5b506103d6610941366004612b44565b611a7f565b34801561095257600080fd5b50602754610645906001600160a01b031681565b34801561097257600080fd5b50610376610981366004612a3c565b600c6020526000908152604090205460ff1681565b3480156109a257600080fd5b506103766109b1366004612a3c565b6001600160a01b031660009081526001602052604090205460ff1690565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a2a9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610a6f5760405162461bcd60e51b8152600401610a6690612e21565b60405180910390fd5b602854600160a01b900460ff1615610abe5760405162461bcd60e51b815260206004820152601260248201527143616e27742073746f702074726164696e6760701b6044820152606401610a66565b6028805460ff60a01b1916600160a01b83151502179055436011819055601054610ae89190611b05565b60125560405181151581527f316709d79ee7f0c74ca101f383d03c0651393c02be15433064ce7707ee82c9df906020015b60405180910390a150565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b03851615801590610b6e57506001600160a01b03841615155b8015610b8257506001600160a01b03831615155b8015610b9657506001600160a01b03821615155b8015610baa57506001600160a01b03811615155b610bf65760405162461bcd60e51b815260206004820152601760248201527f5a65726f20416464726573732076616c69646174696f6e0000000000000000006044820152606401610a66565b602280546001600160a01b038781166001600160a01b031992831681179093556023805488831690841681179091556024805488841690851681179091556025805488851690861681179091556026805494881694909516841790945560408051958652602086019290925290840152606083019190915260808201527fcbc6e694f9cedabb09aeff1b1031513e7c8738cedf6395c1cd6d08760e28bc6e9060a00160405180910390a15050505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610d54576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610d2f918490611b64565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610d5f848484611b9e565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610db6906003546001600160a01b0316600090815260086020526040902054610db09060055490612055565b90612055565b905090565b6025546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610df4573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610e215760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600c6020908152604091829020805460ff19168515159081179091558251938452908301527ffa491a64c37cae03f614a1a2cac67ee30dd227958ca171908cf843cf9692fdda91015b60405180910390a15050565b6000610a36826000196109cf565b6000546001600160a01b03163314610ebd5760405162461bcd60e51b8152600401610a6690612e21565b610ec5612097565b565b6000546001600160a01b03163314610ef15760405162461bcd60e51b8152600401610a6690612e21565b600554610f009061271061249a565b8111610f475760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a66565b60068190556040518181527f510e4637d257d903a794aca1c3cac80d12bf71d2409f8f975ff245c61845732e90602001610b19565b6000546001600160a01b03163314610fa65760405162461bcd60e51b8152600401610a6690612e21565b600554610fb59061271061249a565b8111610ffc5760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a66565b60078190556040518181527fd3028a4dc8f3e7c2bbc9b4259751380fe21f44274195bcf63ebaaac4c17cbc8b90602001610b19565b6000546001600160a01b0316331461105b5760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600d6020908152604091829020805460ff19168515159081179091558251938452908301527f2f640a0ab7e2a6d9ec57f3932923908568f2984073dcebac1b9a3db32debe91d9101610e79565b60255460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb90604401602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d629190612c41565b6000546001600160a01b031633146111695760405162461bcd60e51b8152600401610a6690612e21565b60c882106111c75760405162461bcd60e51b815260206004820152602560248201527f43616e27742075706461746520746f6f206d616e792077616c6c657473206174604482015264206f6e636560d81b6064820152608401610a66565b60005b828110156112365781600c60008686858181106111e9576111e9612f69565b90506020020160208101906111fe9190612a3c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561122f81612f22565b90506111ca565b507f11d4d128e8f89ae2e8815168b9eba079dd6668b75f1e3a9dd96ac6192a7c4dcb83838360405161126a93929190612d06565b60405180910390a1505050565b6000546001600160a01b031633146112a15760405162461bcd60e51b8152600401610a6690612e21565b601e5481106112c25760405162461bcd60e51b8152600401610a6690612ddf565b601d8190556040518181527f0496ed1e61eb69727f9659a8e859288db4758ffb1f744d1c1424634f90a257f490602001610b19565b6000546001600160a01b031633146113215760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000908152600b602052604090205460ff16151581151514156113845760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610a66565b6001600160a01b0382166000908152600b60205260409020805460ff1916821580159190911790915561140157600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416179055611550565b600a546001106114455760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401610a66565b60005b600a5481101561154e57826001600160a01b0316600a828154811061146f5761146f612f69565b6000918252602090912001546001600160a01b0316141561153c57600a805461149a90600190612f0b565b815481106114aa576114aa612f69565b600091825260209091200154600a80546001600160a01b0390921691839081106114d6576114d6612f69565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a80548061151557611515612f53565b600082815260209020810160001990810180546001600160a01b031916905501905561154e565b8061154681612f22565b915050611448565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6000546001600160a01b031633146115b65760405162461bcd60e51b8152600401610a6690612e21565b603281106115fb5760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b6044820152606401610a66565b60108190556040518181527f80838eb3341767dec8bc142ca41047631270a18952c3b835d5ca0d1c3608a2cb90602001610b19565b6000610d62338484611b9e565b6000546001600160a01b031633146116675760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146116b85760405162461bcd60e51b8152600401610a6690612e21565b60188690556019859055601a849055601b839055601c8290556116e9826116e3858188818c8c611b05565b90611b05565b60208190556021829055601e5410156117145760405162461bcd60e51b8152600401610a6690612ddf565b604080518781526020810187905290810185905260608101849052608081018390527ffdd7c66a68b70fa92b44bc177e5154fe4ae8a19e8fc2920396a5ea2db9a783329060a0015b60405180910390a1505050505050565b6000546001600160a01b031633146117965760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600f6020908152604091829020805460ff19168515159081179091558251938452908301527f6ed6ea20fcc829cc51f14b3190919b5563b8ffaec1eb69b4070c7a539f42f35b9101610e79565b6000546001600160a01b0316331461181c5760405162461bcd60e51b8152600401610a6690612e21565b6028805460ff60a81b1916600160a81b84151590810291909117909155602982905560408051918252602082018390527fbb6a036f87bc4903f9d59c9f83a8733a8e8004a0a17b29bf1a817b4fe6bcf6bd9101610e79565b600a818154811061188457600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146118c85760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146119135760405162461bcd60e51b8152600401610a6690612e21565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610b19565b6000546001600160a01b031633146119a35760405162461bcd60e51b8152600401610a6690612e21565b601386905560148590556015849055601683905560178290556119ce826116e3858188818c8c611b05565b601f8190556021829055601e541015611a335760405162461bcd60e51b815260206004820152602160248201527f466565732063616e6e6f7420626520686967686572207468616e204d617866656044820152606560f81b6064820152608401610a66565b604080518781526020810187905290810185905260608101849052608081018390527f0ebc4c8adc990f93864d49e46d4543ac8e892fd73ba3ebe0b1794d0f6929f8169060a00161175c565b6000546001600160a01b03163314611aa95760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f62ff8320fc089e815ec009a710ef61f8c650c1666630c8fc091aee0f66474f669101610e79565b600080611b128385612eb2565b905083811015610d625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a66565b60008184841115611b885760405162461bcd60e51b8152600401610a669190612d5f565b506000611b958486612f0b565b95945050505050565b6001600160a01b0383166000908152600c602052604081205460ff16158015611be057506001600160a01b0383166000908152600c602052604090205460ff16155b611c1a5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a66565b602a5460ff1615611c3757611c308484846124dc565b9050610d62565b6001600160a01b0384166000908152600d602052604090205460ff16158015611c7957506001600160a01b0383166000908152600d602052604090205460ff16155b15611cce57602854600160a01b900460ff16611cce5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a66565b611cd66125b0565b15611ce357611ce3612097565b6001600160a01b0384166000908152600b6020526040902054829060ff1615611e15576001600160a01b0384166000908152600d602052604090205460ff16611e10576007546001600160a01b038516600090815260086020526040902054611d4c9085611b05565b111580611d7157506001600160a01b0384166000908152600f602052604090205460ff165b611dbd5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a66565b60065483111580611de657506001600160a01b0384166000908152600e602052604090205460ff165b611e025760405162461bcd60e51b8152600401610a6690612db4565b611e0d858585612608565b90505b611fae565b6001600160a01b0384166000908152600b602052604090205460ff1615611ea5576001600160a01b0385166000908152600d602052604090205460ff16611e105760065483111580611e7f57506001600160a01b0385166000908152600e602052604090205460ff165b611e9b5760405162461bcd60e51b8152600401610a6690612db4565b611e0d85846127b1565b6001600160a01b0385166000908152600d602052604090205460ff16611fae576007546001600160a01b038516600090815260086020526040902054611eeb9085611b05565b111580611f1057506001600160a01b0384166000908152600f602052604090205460ff165b611f5c5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a66565b60065483111580611f8557506001600160a01b0385166000908152600e602052604090205460ff165b611fa15760405162461bcd60e51b8152600401610a6690612db4565b611fab85846128f2565b90505b6001600160a01b038516600090815260086020526040902054611fd19084612055565b6001600160a01b0380871660009081526008602052604080822093909355908616815220546120009082611b05565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020612fa3833981519152906120429085815260200190565b60405180910390a3506001949350505050565b6000610d6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b64565b602a805460ff191660011790556018546013546000916120b79190611b05565b905060006120de601c54610db0601754610db0602054601f54611b0590919063ffffffff16565b3060009081526008602052604081205491925061210860026121028581868961298f565b9061249a565b905060006121168383612055565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061215057612150612f69565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061218157612181612f69565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac947906121c7908690600090869030904290600401612e41565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b50505050600061220e834761205590919063ffffffff16565b905060006122276122208a600261249a565b8990612055565b9050600061225560026121028461210261224e601854601354611b0590919063ffffffff16565b889061298f565b9050600061227e83612102612277601954601454611b0590919063ffffffff16565b879061298f565b905060006122a08461210261224e601a54601554611b0590919063ffffffff16565b905060006122c9856121026122c2601b54601654611b0590919063ffffffff16565b899061298f565b6023546040519192506000916001600160a01b039091169085908381818185875af1925050503d806000811461231b576040519150601f19603f3d011682016040523d82523d6000602084013e612320565b606091505b50506024546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612370576040519150601f19603f3d011682016040523d82523d6000602084013e612375565b606091505b50506025546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146123c5576040519150601f19603f3d011682016040523d82523d6000602084013e6123ca565b606091505b5060009250508b1590506124805760275460225460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561244357600080fd5b505af1158015612457573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061247c9190612c95565b5050505b5050602a805460ff19169055505050505050505050505050565b6000610d6283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a0e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461252d918490611b64565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461255c9083611b05565b6001600160a01b038085166000818152600860205260409081902093909355915190861690600080516020612fa38339815191529061259e9086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff161580156125d35750602a5460ff16155b80156125e85750602854600160a81b900460ff165b8015610db657505060295430600090815260086020526040902054101590565b6000601254431015612669576028546001600160a01b0384811691161480159061264057506027546001600160a01b03848116911614155b15612669576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b600061269260215461210261268b601754601f5461205590919063ffffffff16565b869061298f565b905060006126b16021546121026017548761298f90919063ffffffff16565b905060006126bf8383611b05565b306000908152600860205260409020549091506126dc9084611b05565b30600081815260086020526040908190209290925590516001600160a01b03891690600080516020612fa38339815191529061271b9087815260200190565b60405180910390a3811561279c576026546001600160a01b031660009081526008602052604090205461274e9083611b05565b602680546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908a1691600080516020612fa3833981519152910160405180910390a35b6127a68582612055565b979650505050505050565b6000806127d460215461210261268b601c5460205461205590919063ffffffff16565b905060006127f3602154612102601c548761298f90919063ffffffff16565b905060006128018383611b05565b3060009081526008602052604090205490915061281e9084611b05565b30600081815260086020526040908190209290925590516001600160a01b03881690600080516020612fa38339815191529061285d9087815260200190565b60405180910390a381156128de576026546001600160a01b03166000908152600860205260409020546128909083611b05565b602680546001600160a01b0390811660009081526008602090815260409182902094909455915491518581529181169290891691600080516020612fa3833981519152910160405180910390a35b6128e88582612055565b9695505050505050565b601d5460125460009190431015612907575060635b60215460009061291b90612102868561298f565b90508015612985573060009081526008602052604090205461293d9082611b05565b30600081815260086020526040908190209290925590516001600160a01b03871690600080516020612fa38339815191529061297c9085815260200190565b60405180910390a35b611b958482612055565b60008261299e57506000610a36565b60006129aa8385612eec565b9050826129b78583612eca565b14610d625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a66565b60008183612a2f5760405162461bcd60e51b8152600401610a669190612d5f565b506000611b958486612eca565b600060208284031215612a4e57600080fd5b8135610d6281612f7f565b60008060408385031215612a6c57600080fd5b8235612a7781612f7f565b91506020830135612a8781612f7f565b809150509250929050565b600080600080600060a08688031215612aaa57600080fd5b8535612ab581612f7f565b94506020860135612ac581612f7f565b93506040860135612ad581612f7f565b92506060860135612ae581612f7f565b91506080860135612af581612f7f565b809150509295509295909350565b600080600060608486031215612b1857600080fd5b8335612b2381612f7f565b92506020840135612b3381612f7f565b929592945050506040919091013590565b60008060408385031215612b5757600080fd5b8235612b6281612f7f565b91506020830135612a8781612f94565b60008060408385031215612b8557600080fd5b8235612b9081612f7f565b946020939093013593505050565b600080600060408486031215612bb357600080fd5b833567ffffffffffffffff80821115612bcb57600080fd5b818601915086601f830112612bdf57600080fd5b813581811115612bee57600080fd5b8760208260051b8501011115612c0357600080fd5b60209283019550935050840135612c1981612f94565b809150509250925092565b600060208284031215612c3657600080fd5b8135610d6281612f94565b600060208284031215612c5357600080fd5b8151610d6281612f94565b60008060408385031215612c7157600080fd5b8235612b9081612f94565b600060208284031215612c8e57600080fd5b5035919050565b600080600060608486031215612caa57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612cdc57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6040808252810183905260008460608301825b86811015612d49578235612d2c81612f7f565b6001600160a01b0316825260209283019290910190600101612d19565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015612d8c57858101830151858201604001528201612d70565b81811115612d9e576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b60208082526022908201527f466565732063616e6e6f7420626520686967686572207468616e204d61786665604082015261652560f01b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e915784516001600160a01b031683529383019391830191600101612e6c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ec557612ec5612f3d565b500190565b600082612ee757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612f0657612f06612f3d565b500290565b600082821015612f1d57612f1d612f3d565b500390565b6000600019821415612f3657612f36612f3d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610df457600080fd5b8015158114610df457600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205eaa957f10fb3c170d858a3c98b315878cbb162dc3eafcf58c58fe254d21c41364736f6c63430008070033
0x6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326012600a62000883565b6200004290633b9aca006200094f565b600555600554600655600554600755600160105560006013556002601455600060155560006016556002601755600060185560026019556000601a556000601b556002601c556000601d55600a601e55620000d9601754620000c5601654620000c5601554620000c56014546013546200049760201b62001b051790919060201c565b6200049760201b62001b051790919060201c565b601f556200010f601c54620000c5601b54620000c5601a54620000c56019546018546200049760201b62001b051790919060201c565b602055606460215560228054336001600160a01b0319918216811790925560238054821683179055602480548216831790556025805482169092179091556026805461dead92169190911790556028805461ffff60a01b191661010160a01b179055600580546103e8916200018591906200094f565b62000191919062000817565b602955348015620001a157600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560278054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c46489260048083019392829003018186803b1580156200022357600080fd5b505afa15801562000238573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025e9190620007d1565b600280546001600160a01b0319166001600160a01b039283161790556027546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b158015620002b857600080fd5b505afa158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f39190620007d1565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200034057600080fd5b505af115801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b9190620007d1565b602880546001600160a01b0319166001600160a01b03929092169182179055620003a790600162000507565b3060008181526009602090815260408083206027546001600160a01b039081168552908352818420600019905533808552600d8085528386208054600160ff199182168117909255600e8088528689208054831684179055600f808952878a2080548416851790559989529287528588208054821683179055918652848720805483168217905596855283862080548216881790556028549092168552828520805490921690951790556005548484526008835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620009eb565b600080620004a68385620007fc565b905083811015620004fe5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b6000546001600160a01b031633146200054c5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401620004f5565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415620005b15760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401620004f5565b6001600160a01b0382166000908152600b60205260409020805460ff191682158015919091179091556200063057600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b03841617905562000795565b600a54600110620006765760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401620004f5565b60005b600a548110156200079357826001600160a01b0316600a8281548110620006a457620006a4620009d5565b6000918252602090912001546001600160a01b031614156200077e57600a8054620006d29060019062000971565b81548110620006e557620006e5620009d5565b600091825260209091200154600a80546001600160a01b039092169183908110620007145762000714620009d5565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a805480620007565762000756620009bf565b600082815260209020810160001990810180546001600160a01b031916905501905562000793565b806200078a816200098b565b91505062000679565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b600060208284031215620007e457600080fd5b81516001600160a01b0381168114620004fe57600080fd5b60008219821115620008125762000812620009a9565b500190565b6000826200083557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200087b5781600019048211156200085f576200085f620009a9565b808516156200086d57918102915b93841c93908002906200083f565b509250929050565b60006200089460ff8416836200089b565b9392505050565b600082620008ac5750600162000501565b81620008bb5750600062000501565b8160018114620008d45760028114620008df57620008ff565b600191505062000501565b60ff841115620008f357620008f3620009a9565b50506001821b62000501565b5060208310610133831016604e8410600b841016171562000924575081810a62000501565b6200093083836200083a565b8060001904821115620009475762000947620009a9565b029392505050565b60008160001904831182151516156200096c576200096c620009a9565b500290565b600082821015620009865762000986620009a9565b500390565b6000600019821415620009a257620009a2620009a9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b612ff880620009fb6000396000f3fe6080604052600436106102cd5760003560e01c8063893d20e811610175578063ba876bb9116100dc578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14610926578063f887ea4014610946578063fe575a8714610966578063fe9fbb801461099657600080fd5b8063f0b37c04146108c6578063f2fde38b146108e6578063f74c9f471461090657600080fd5b8063ba876bb9146107ea578063c04a78ad1461080a578063d00efb2f1461082a578063dd62ed3e14610840578063df20fd4914610886578063e1d5584c146108a657600080fd5b80639a7a23d61161012e5780639a7a23d61461071a578063a8aa1b311461073a578063a8df7fb01461075a578063a9059cbb1461077a578063b62496f51461079a578063b6a5d7de146107ca57600080fd5b8063893d20e81461062b5780638b42507f1461065d5780638cd4426d1461068d5780638e2eee84146106ad5780638f02bb5b146106cd57806395d89b41146106ed57600080fd5b8063364333f4116102345780635c85974f116101ed5780636c0a24eb116101c75780636c0a24eb146105a85780636ddd1713146105be57806370a08231146105df5780637d1db4a51461061557600080fd5b80635c85974f146105485780635d0044ca14610568578063658d4b7f1461058857600080fd5b8063364333f41461048d5780633f4218e0146104a257806345434032146104d25780634ada218b146104f2578063571ac8b0146105135780635b895c291461053357600080fd5b806318160ddd1161028657806318160ddd146103d857806318abb635146103ed57806323b872dd1461040d5780632b112e491461042d5780632f54bf6e14610442578063313ce5671461047157600080fd5b806301f59d16146102d95780630445b6671461030257806306fdde0314610318578063095ea7b3146103565780630bd11f8a146103865780630d295980146103b657600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef601e5481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b506102ef60295481565b34801561032457600080fd5b5060408051808201909152600c81526b08cd2e4ca40a0d0decadcd2f60a31b60208201525b6040516102f99190612d5f565b34801561036257600080fd5b50610376610371366004612b72565b6109cf565b60405190151581526020016102f9565b34801561039257600080fd5b506103766103a1366004612a3c565b600f6020526000908152604090205460ff1681565b3480156103c257600080fd5b506103d66103d1366004612c24565b610a3c565b005b3480156103e457600080fd5b506005546102ef565b3480156103f957600080fd5b506103d6610408366004612a92565b610b24565b34801561041957600080fd5b50610376610428366004612b03565b610ca7565b34801561043957600080fd5b506102ef610d69565b34801561044e57600080fd5b5061037661045d366004612a3c565b6000546001600160a01b0391821691161490565b34801561047d57600080fd5b50604051601281526020016102f9565b34801561049957600080fd5b506103d6610dbb565b3480156104ae57600080fd5b506103766104bd366004612a3c565b600d6020526000908152604090205460ff1681565b3480156104de57600080fd5b506103d66104ed366004612b44565b610df7565b3480156104fe57600080fd5b5060285461037690600160a01b900460ff1681565b34801561051f57600080fd5b5061037661052e366004612a3c565b610e85565b34801561053f57600080fd5b506103d6610e93565b34801561055457600080fd5b506103d6610563366004612c7c565b610ec7565b34801561057457600080fd5b506103d6610583366004612c7c565b610f7c565b34801561059457600080fd5b506103d66105a3366004612b44565b611031565b3480156105b457600080fd5b506102ef60075481565b3480156105ca57600080fd5b5060285461037690600160a81b900460ff1681565b3480156105eb57600080fd5b506102ef6105fa366004612a3c565b6001600160a01b031660009081526008602052604090205490565b34801561062157600080fd5b506102ef60065481565b34801561063757600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f9565b34801561066957600080fd5b50610376610678366004612a3c565b600e6020526000908152604090205460ff1681565b34801561069957600080fd5b506103766106a8366004612b72565b6110b7565b3480156106b957600080fd5b506103d66106c8366004612b9e565b61113f565b3480156106d957600080fd5b506103d66106e8366004612c7c565b611277565b3480156106f957600080fd5b506040805180820190915260048152634649524560e01b6020820152610349565b34801561072657600080fd5b506103d6610735366004612b44565b6112f7565b34801561074657600080fd5b50602854610645906001600160a01b031681565b34801561076657600080fd5b506103d6610775366004612c7c565b61158c565b34801561078657600080fd5b50610376610795366004612b72565b611630565b3480156107a657600080fd5b506103766107b5366004612a3c565b600b6020526000908152604090205460ff1681565b3480156107d657600080fd5b506103d66107e5366004612a3c565b61163d565b3480156107f657600080fd5b506103d6610805366004612cc3565b61168e565b34801561081657600080fd5b506103d6610825366004612b44565b61176c565b34801561083657600080fd5b506102ef60115481565b34801561084c57600080fd5b506102ef61085b366004612a59565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561089257600080fd5b506103d66108a1366004612c5e565b6117f2565b3480156108b257600080fd5b506106456108c1366004612c7c565b611874565b3480156108d257600080fd5b506103d66108e1366004612a3c565b61189e565b3480156108f257600080fd5b506103d6610901366004612a3c565b6118e9565b34801561091257600080fd5b506103d6610921366004612cc3565b611979565b34801561093257600080fd5b506103d6610941366004612b44565b611a7f565b34801561095257600080fd5b50602754610645906001600160a01b031681565b34801561097257600080fd5b50610376610981366004612a3c565b600c6020526000908152604090205460ff1681565b3480156109a257600080fd5b506103766109b1366004612a3c565b6001600160a01b031660009081526001602052604090205460ff1690565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a2a9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610a6f5760405162461bcd60e51b8152600401610a6690612e21565b60405180910390fd5b602854600160a01b900460ff1615610abe5760405162461bcd60e51b815260206004820152601260248201527143616e27742073746f702074726164696e6760701b6044820152606401610a66565b6028805460ff60a01b1916600160a01b83151502179055436011819055601054610ae89190611b05565b60125560405181151581527f316709d79ee7f0c74ca101f383d03c0651393c02be15433064ce7707ee82c9df906020015b60405180910390a150565b6000546001600160a01b03163314610b4e5760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b03851615801590610b6e57506001600160a01b03841615155b8015610b8257506001600160a01b03831615155b8015610b9657506001600160a01b03821615155b8015610baa57506001600160a01b03811615155b610bf65760405162461bcd60e51b815260206004820152601760248201527f5a65726f20416464726573732076616c69646174696f6e0000000000000000006044820152606401610a66565b602280546001600160a01b038781166001600160a01b031992831681179093556023805488831690841681179091556024805488841690851681179091556025805488851690861681179091556026805494881694909516841790945560408051958652602086019290925290840152606083019190915260808201527fcbc6e694f9cedabb09aeff1b1031513e7c8738cedf6395c1cd6d08760e28bc6e9060a00160405180910390a15050505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610d54576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610d2f918490611b64565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610d5f848484611b9e565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610db6906003546001600160a01b0316600090815260086020526040902054610db09060055490612055565b90612055565b905090565b6025546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610df4573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610e215760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600c6020908152604091829020805460ff19168515159081179091558251938452908301527ffa491a64c37cae03f614a1a2cac67ee30dd227958ca171908cf843cf9692fdda91015b60405180910390a15050565b6000610a36826000196109cf565b6000546001600160a01b03163314610ebd5760405162461bcd60e51b8152600401610a6690612e21565b610ec5612097565b565b6000546001600160a01b03163314610ef15760405162461bcd60e51b8152600401610a6690612e21565b600554610f009061271061249a565b8111610f475760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a66565b60068190556040518181527f510e4637d257d903a794aca1c3cac80d12bf71d2409f8f975ff245c61845732e90602001610b19565b6000546001600160a01b03163314610fa65760405162461bcd60e51b8152600401610a6690612e21565b600554610fb59061271061249a565b8111610ffc5760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a66565b60078190556040518181527fd3028a4dc8f3e7c2bbc9b4259751380fe21f44274195bcf63ebaaac4c17cbc8b90602001610b19565b6000546001600160a01b0316331461105b5760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600d6020908152604091829020805460ff19168515159081179091558251938452908301527f2f640a0ab7e2a6d9ec57f3932923908568f2984073dcebac1b9a3db32debe91d9101610e79565b60255460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb90604401602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d629190612c41565b6000546001600160a01b031633146111695760405162461bcd60e51b8152600401610a6690612e21565b60c882106111c75760405162461bcd60e51b815260206004820152602560248201527f43616e27742075706461746520746f6f206d616e792077616c6c657473206174604482015264206f6e636560d81b6064820152608401610a66565b60005b828110156112365781600c60008686858181106111e9576111e9612f69565b90506020020160208101906111fe9190612a3c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561122f81612f22565b90506111ca565b507f11d4d128e8f89ae2e8815168b9eba079dd6668b75f1e3a9dd96ac6192a7c4dcb83838360405161126a93929190612d06565b60405180910390a1505050565b6000546001600160a01b031633146112a15760405162461bcd60e51b8152600401610a6690612e21565b601e5481106112c25760405162461bcd60e51b8152600401610a6690612ddf565b601d8190556040518181527f0496ed1e61eb69727f9659a8e859288db4758ffb1f744d1c1424634f90a257f490602001610b19565b6000546001600160a01b031633146113215760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000908152600b602052604090205460ff16151581151514156113845760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610a66565b6001600160a01b0382166000908152600b60205260409020805460ff1916821580159190911790915561140157600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416179055611550565b600a546001106114455760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401610a66565b60005b600a5481101561154e57826001600160a01b0316600a828154811061146f5761146f612f69565b6000918252602090912001546001600160a01b0316141561153c57600a805461149a90600190612f0b565b815481106114aa576114aa612f69565b600091825260209091200154600a80546001600160a01b0390921691839081106114d6576114d6612f69565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a80548061151557611515612f53565b600082815260209020810160001990810180546001600160a01b031916905501905561154e565b8061154681612f22565b915050611448565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6000546001600160a01b031633146115b65760405162461bcd60e51b8152600401610a6690612e21565b603281106115fb5760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b6044820152606401610a66565b60108190556040518181527f80838eb3341767dec8bc142ca41047631270a18952c3b835d5ca0d1c3608a2cb90602001610b19565b6000610d62338484611b9e565b6000546001600160a01b031633146116675760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146116b85760405162461bcd60e51b8152600401610a6690612e21565b60188690556019859055601a849055601b839055601c8290556116e9826116e3858188818c8c611b05565b90611b05565b60208190556021829055601e5410156117145760405162461bcd60e51b8152600401610a6690612ddf565b604080518781526020810187905290810185905260608101849052608081018390527ffdd7c66a68b70fa92b44bc177e5154fe4ae8a19e8fc2920396a5ea2db9a783329060a0015b60405180910390a1505050505050565b6000546001600160a01b031633146117965760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600f6020908152604091829020805460ff19168515159081179091558251938452908301527f6ed6ea20fcc829cc51f14b3190919b5563b8ffaec1eb69b4070c7a539f42f35b9101610e79565b6000546001600160a01b0316331461181c5760405162461bcd60e51b8152600401610a6690612e21565b6028805460ff60a81b1916600160a81b84151590810291909117909155602982905560408051918252602082018390527fbb6a036f87bc4903f9d59c9f83a8733a8e8004a0a17b29bf1a817b4fe6bcf6bd9101610e79565b600a818154811061188457600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146118c85760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146119135760405162461bcd60e51b8152600401610a6690612e21565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610b19565b6000546001600160a01b031633146119a35760405162461bcd60e51b8152600401610a6690612e21565b601386905560148590556015849055601683905560178290556119ce826116e3858188818c8c611b05565b601f8190556021829055601e541015611a335760405162461bcd60e51b815260206004820152602160248201527f466565732063616e6e6f7420626520686967686572207468616e204d617866656044820152606560f81b6064820152608401610a66565b604080518781526020810187905290810185905260608101849052608081018390527f0ebc4c8adc990f93864d49e46d4543ac8e892fd73ba3ebe0b1794d0f6929f8169060a00161175c565b6000546001600160a01b03163314611aa95760405162461bcd60e51b8152600401610a6690612e21565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f62ff8320fc089e815ec009a710ef61f8c650c1666630c8fc091aee0f66474f669101610e79565b600080611b128385612eb2565b905083811015610d625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a66565b60008184841115611b885760405162461bcd60e51b8152600401610a669190612d5f565b506000611b958486612f0b565b95945050505050565b6001600160a01b0383166000908152600c602052604081205460ff16158015611be057506001600160a01b0383166000908152600c602052604090205460ff16155b611c1a5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a66565b602a5460ff1615611c3757611c308484846124dc565b9050610d62565b6001600160a01b0384166000908152600d602052604090205460ff16158015611c7957506001600160a01b0383166000908152600d602052604090205460ff16155b15611cce57602854600160a01b900460ff16611cce5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a66565b611cd66125b0565b15611ce357611ce3612097565b6001600160a01b0384166000908152600b6020526040902054829060ff1615611e15576001600160a01b0384166000908152600d602052604090205460ff16611e10576007546001600160a01b038516600090815260086020526040902054611d4c9085611b05565b111580611d7157506001600160a01b0384166000908152600f602052604090205460ff165b611dbd5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a66565b60065483111580611de657506001600160a01b0384166000908152600e602052604090205460ff165b611e025760405162461bcd60e51b8152600401610a6690612db4565b611e0d858585612608565b90505b611fae565b6001600160a01b0384166000908152600b602052604090205460ff1615611ea5576001600160a01b0385166000908152600d602052604090205460ff16611e105760065483111580611e7f57506001600160a01b0385166000908152600e602052604090205460ff165b611e9b5760405162461bcd60e51b8152600401610a6690612db4565b611e0d85846127b1565b6001600160a01b0385166000908152600d602052604090205460ff16611fae576007546001600160a01b038516600090815260086020526040902054611eeb9085611b05565b111580611f1057506001600160a01b0384166000908152600f602052604090205460ff165b611f5c5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a66565b60065483111580611f8557506001600160a01b0385166000908152600e602052604090205460ff165b611fa15760405162461bcd60e51b8152600401610a6690612db4565b611fab85846128f2565b90505b6001600160a01b038516600090815260086020526040902054611fd19084612055565b6001600160a01b0380871660009081526008602052604080822093909355908616815220546120009082611b05565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020612fa3833981519152906120429085815260200190565b60405180910390a3506001949350505050565b6000610d6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b64565b602a805460ff191660011790556018546013546000916120b79190611b05565b905060006120de601c54610db0601754610db0602054601f54611b0590919063ffffffff16565b3060009081526008602052604081205491925061210860026121028581868961298f565b9061249a565b905060006121168383612055565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061215057612150612f69565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061218157612181612f69565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac947906121c7908690600090869030904290600401612e41565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b50505050600061220e834761205590919063ffffffff16565b905060006122276122208a600261249a565b8990612055565b9050600061225560026121028461210261224e601854601354611b0590919063ffffffff16565b889061298f565b9050600061227e83612102612277601954601454611b0590919063ffffffff16565b879061298f565b905060006122a08461210261224e601a54601554611b0590919063ffffffff16565b905060006122c9856121026122c2601b54601654611b0590919063ffffffff16565b899061298f565b6023546040519192506000916001600160a01b039091169085908381818185875af1925050503d806000811461231b576040519150601f19603f3d011682016040523d82523d6000602084013e612320565b606091505b50506024546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612370576040519150601f19603f3d011682016040523d82523d6000602084013e612375565b606091505b50506025546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146123c5576040519150601f19603f3d011682016040523d82523d6000602084013e6123ca565b606091505b5060009250508b1590506124805760275460225460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561244357600080fd5b505af1158015612457573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061247c9190612c95565b5050505b5050602a805460ff19169055505050505050505050505050565b6000610d6283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a0e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461252d918490611b64565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461255c9083611b05565b6001600160a01b038085166000818152600860205260409081902093909355915190861690600080516020612fa38339815191529061259e9086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff161580156125d35750602a5460ff16155b80156125e85750602854600160a81b900460ff165b8015610db657505060295430600090815260086020526040902054101590565b6000601254431015612669576028546001600160a01b0384811691161480159061264057506027546001600160a01b03848116911614155b15612669576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b600061269260215461210261268b601754601f5461205590919063ffffffff16565b869061298f565b905060006126b16021546121026017548761298f90919063ffffffff16565b905060006126bf8383611b05565b306000908152600860205260409020549091506126dc9084611b05565b30600081815260086020526040908190209290925590516001600160a01b03891690600080516020612fa38339815191529061271b9087815260200190565b60405180910390a3811561279c576026546001600160a01b031660009081526008602052604090205461274e9083611b05565b602680546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908a1691600080516020612fa3833981519152910160405180910390a35b6127a68582612055565b979650505050505050565b6000806127d460215461210261268b601c5460205461205590919063ffffffff16565b905060006127f3602154612102601c548761298f90919063ffffffff16565b905060006128018383611b05565b3060009081526008602052604090205490915061281e9084611b05565b30600081815260086020526040908190209290925590516001600160a01b03881690600080516020612fa38339815191529061285d9087815260200190565b60405180910390a381156128de576026546001600160a01b03166000908152600860205260409020546128909083611b05565b602680546001600160a01b0390811660009081526008602090815260409182902094909455915491518581529181169290891691600080516020612fa3833981519152910160405180910390a35b6128e88582612055565b9695505050505050565b601d5460125460009190431015612907575060635b60215460009061291b90612102868561298f565b90508015612985573060009081526008602052604090205461293d9082611b05565b30600081815260086020526040908190209290925590516001600160a01b03871690600080516020612fa38339815191529061297c9085815260200190565b60405180910390a35b611b958482612055565b60008261299e57506000610a36565b60006129aa8385612eec565b9050826129b78583612eca565b14610d625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a66565b60008183612a2f5760405162461bcd60e51b8152600401610a669190612d5f565b506000611b958486612eca565b600060208284031215612a4e57600080fd5b8135610d6281612f7f565b60008060408385031215612a6c57600080fd5b8235612a7781612f7f565b91506020830135612a8781612f7f565b809150509250929050565b600080600080600060a08688031215612aaa57600080fd5b8535612ab581612f7f565b94506020860135612ac581612f7f565b93506040860135612ad581612f7f565b92506060860135612ae581612f7f565b91506080860135612af581612f7f565b809150509295509295909350565b600080600060608486031215612b1857600080fd5b8335612b2381612f7f565b92506020840135612b3381612f7f565b929592945050506040919091013590565b60008060408385031215612b5757600080fd5b8235612b6281612f7f565b91506020830135612a8781612f94565b60008060408385031215612b8557600080fd5b8235612b9081612f7f565b946020939093013593505050565b600080600060408486031215612bb357600080fd5b833567ffffffffffffffff80821115612bcb57600080fd5b818601915086601f830112612bdf57600080fd5b813581811115612bee57600080fd5b8760208260051b8501011115612c0357600080fd5b60209283019550935050840135612c1981612f94565b809150509250925092565b600060208284031215612c3657600080fd5b8135610d6281612f94565b600060208284031215612c5357600080fd5b8151610d6281612f94565b60008060408385031215612c7157600080fd5b8235612b9081612f94565b600060208284031215612c8e57600080fd5b5035919050565b600080600060608486031215612caa57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612cdc57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6040808252810183905260008460608301825b86811015612d49578235612d2c81612f7f565b6001600160a01b0316825260209283019290910190600101612d19565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015612d8c57858101830151858201604001528201612d70565b81811115612d9e576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b60208082526022908201527f466565732063616e6e6f7420626520686967686572207468616e204d61786665604082015261652560f01b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e915784516001600160a01b031683529383019391830191600101612e6c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ec557612ec5612f3d565b500190565b600082612ee757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612f0657612f06612f3d565b500290565b600082821015612f1d57612f1d612f3d565b500390565b6000600019821415612f3657612f36612f3d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610df457600080fd5b8015158114610df457600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205eaa957f10fb3c170d858a3c98b315878cbb162dc3eafcf58c58fe254d21c41364736f6c63430008070033