60806040523480156200001157600080fd5b50604080518082018252600881526757454e536861726560c01b60208083019182528351808501909452600684526529a420a922a760d11b9084015281519192916200006091600391620001cf565b50805162000076906004906020840190620001cf565b50506005805460ff1916601217905550600062000092620000f1565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000eb33620000f5565b6200026b565b3390565b6200011081600b6200014960201b620017e91790919060201c565b6040516001600160a01b0382169033907f3c091dafb1d99e4a4c333024492eac3b2cd8bf921a3dd547c937db33be307bb890600090a350565b6001600160a01b0381166200015d57600080fd5b62000169828262000199565b156200017457600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001af57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021257805160ff191683800117855562000242565b8280016001018555821562000242579182015b828111156200024257825182559160200191906001019062000225565b506200025092915062000254565b5090565b5b8082111562000250576000815560010162000255565b615143806200027b6000396000f3fe60806040523480156200001157600080fd5b5060043610620002805760003560e01c80637ecebe001162000159578063aa271e1a11620000c9578063dc38679c1162000087578063dc38679c14620007e0578063dd62ed3e14620007ea578063e7a324dc146200081b578063f1127ed81462000825578063f2fde38b146200087a5762000280565b8063aa271e1a146200071a578063b4b5ea571462000743578063c3cda520146200076c578063d319a1f814620007b6578063d6f124f014620007d65762000280565b8063983b2d561162000117578063983b2d56146200067f5780639865027514620006a857806398d5fdca14620006b2578063a457c2d714620006bc578063a9059cbb14620006eb5762000280565b80637ecebe0014620006185780638da5cb5b146200064157806395d89b41146200064b5780639711715a1462000655578063981b24d0146200065f5762000280565b806340c10f1911620001f55780636bb35e7211620001b35780636bb35e7214620005515780636fcfff45146200057457806370a0823114620005b6578063715018a614620005df578063782d6fe114620005e95762000280565b806340c10f19146200047b5780634ee2cd7e14620004aa578063587cde1e14620004d95780635b3476b6146200051e5780635c19a95c14620005285762000280565b806323b872dd116200024357806323b872dd14620003905780632cc84ce614620003c95780633092afd51462000401578063313ce567146200042c57806339509351146200044c5762000280565b806306fdde031462000285578063095ea7b3146200030757806318160ddd146200034a5780631e02703b146200036657806320606b701462000386575b600080fd5b6200028f620008a3565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620002cb578181015183820152602001620002b1565b50505050905090810190601f168015620002f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b62000336600480360360408110156200031f57600080fd5b506001600160a01b0381351690602001356200093d565b604080519115158252519081900360200190f35b620003546200095f565b60408051918252519081900360200190f35b62000336600480360360208110156200037e57600080fd5b503562000965565b62000354620009dc565b6200033660048036036060811015620003a857600080fd5b506001600160a01b0381358116916020810135909116906040013562000a00565b6200033660048036036040811015620003e157600080fd5b5080356001600160a01b031690602001356001600160701b031662000a92565b6200042a600480360360208110156200041957600080fd5b50356001600160a01b031662000b1b565b005b6200043662000b91565b6040805160ff9092168252519081900360200190f35b62000336600480360360408110156200046457600080fd5b506001600160a01b03813516906020013562000b9a565b6200042a600480360360408110156200049357600080fd5b506001600160a01b03813516906020013562000bef565b6200035460048036036040811015620004c257600080fd5b506001600160a01b03813516906020013562000c6e565b6200050260048036036020811015620004f157600080fd5b50356001600160a01b031662000cbd565b604080516001600160a01b039092168252519081900360200190f35b6200033662000cdb565b6200042a600480360360208110156200054057600080fd5b50356001600160a01b031662000d56565b6200055b62000d62565b6040805192835290151560208301528051918290030190f35b6200059d600480360360208110156200058c57600080fd5b50356001600160a01b031662000d68565b6040805163ffffffff9092168252519081900360200190f35b6200035460048036036020811015620005ce57600080fd5b50356001600160a01b031662000d80565b6200042a62000d9b565b62000354600480360360408110156200060157600080fd5b506001600160a01b03813516906020013562000e4d565b62000354600480360360208110156200063057600080fd5b50356001600160a01b031662001065565b6200050262001077565b6200028f62001086565b62000354620010ea565b62000354600480360360208110156200067757600080fd5b50356200113e565b6200042a600480360360208110156200069757600080fd5b50356001600160a01b031662001174565b6200042a620011e7565b62000354620011f4565b6200033660048036036040811015620006d457600080fd5b506001600160a01b03813516906020013562001210565b62000336600480360360408110156200070357600080fd5b506001600160a01b03813516906020013562001280565b62000336600480360360208110156200073257600080fd5b50356001600160a01b031662001298565b62000354600480360360208110156200075b57600080fd5b50356001600160a01b0316620012a7565b6200042a600480360360c08110156200078457600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a001356200130c565b6200033660048036036020811015620007ce57600080fd5b50356200158c565b6200033662001603565b6200035462001659565b62000354600480360360408110156200080257600080fd5b506001600160a01b038135811691602001351662001662565b620003546200168d565b6200085a600480360360408110156200083d57600080fd5b5080356001600160a01b0316906020013563ffffffff16620016b1565b6040805163ffffffff909316835260208301919091528051918290030190f35b6200042a600480360360208110156200089257600080fd5b50356001600160a01b0316620016de565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620009335780601f10620009075761010080835404028352916020019162000933565b820191906000526020600020905b8154815290600101906020018083116200091557829003601f168201915b5050505050905090565b6000620009556200094d62001839565b84846200183d565b5060015b92915050565b60025490565b6000620009723362001298565b620009af5760405162461bcd60e51b815260040180806020018281038252603081526020018062004fdd6030913960400191505060405180910390fd5b81600d541015620009d357600d829055620009cb600c6200192d565b9050620009d7565b5060005b919050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600062000a0f848484620019e8565b62000a888462000a1e62001839565b62000a828560405180606001604052806028815260200162005034602891396001600160a01b038a1660009081526001602052604081209062000a6062001839565b6001600160a01b03168152602081019190915260400160002054919062001b4e565b6200183d565b5060019392505050565b600062000a9e62001839565b6001600160a01b031662000ab162001077565b6001600160a01b03161462000afc576040805162461bcd60e51b815260206004820181905260248201526000805160206200505c833981519152604482015290519081900360640190fd5b62000b14600c6001600160701b038416853062001be9565b9392505050565b62000b2562001839565b6001600160a01b031662000b3862001077565b6001600160a01b03161462000b83576040805162461bcd60e51b815260206004820181905260248201526000805160206200505c833981519152604482015290519081900360640190fd5b62000b8e8162001d13565b50565b60055460ff1690565b60006200095562000baa62001839565b8462000a82856001600062000bbe62001839565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549062001d59565b62000bfa3362001298565b62000c375760405162461bcd60e51b815260040180806020018281038252603081526020018062004fdd6030913960400191505060405180910390fd5b62000c43828262001db4565b6001600160a01b038083166000908152600e602052604081205462000c6a92168362001eab565b5050565b6001600160a01b03821660009081526006602052604081208190819062000c9790859062001ffd565b915091508162000cb25762000cac8562000d80565b62000cb4565b805b95945050505050565b6001600160a01b039081166000908152600e60205260409020541690565b600062000ce762001839565b6001600160a01b031662000cfa62001077565b6001600160a01b03161462000d45576040805162461bcd60e51b815260206004820181905260248201526000805160206200505c833981519152604482015290519081900360640190fd5b62000d51600c62002103565b905090565b62000b8e338262002119565b60008091565b60106020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526020819052604090205490565b62000da562001839565b6001600160a01b031662000db862001077565b6001600160a01b03161462000e03576040805162461bcd60e51b815260206004820181905260248201526000805160206200505c833981519152604482015290519081900360640190fd5b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600043821062000e8f5760405162461bcd60e51b815260040180806020018281038252602881526020018062004f336028913960400191505060405180910390fd5b6001600160a01b03831660009081526010602052604090205463ffffffff168062000ebf57600091505062000959565b6001600160a01b0384166000908152600f6020908152604080832063ffffffff60001986018116855292529091205416831062000f30576001600160a01b0384166000908152600f602090815260408083206000199490940163ffffffff1683529290522060010154905062000959565b6001600160a01b0384166000908152600f6020908152604080832083805290915290205463ffffffff1683101562000f6d57600091505062000959565b600060001982015b8163ffffffff168163ffffffff1611156200102e57600282820363ffffffff1604810362000fa262002a6f565b506001600160a01b0387166000908152600f6020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156200100657602001519450620009599350505050565b805163ffffffff168711156200101f5781935062001026565b6001820392505b505062000f75565b506001600160a01b0385166000908152600f6020908152604080832063ffffffff9094168352929052206001015491505092915050565b60116020526000908152604090205481565b600a546001600160a01b031690565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620009335780601f10620009075761010080835404028352916020019162000933565b6000620010f73362001298565b620011345760405162461bcd60e51b815260040180806020018281038252603081526020018062004fdd6030913960400191505060405180910390fd5b62000d51620021b2565b60008060006200115084600762001ffd565b91509150816200116a57620011646200095f565b6200116c565b805b949350505050565b6200117e62001839565b6001600160a01b03166200119162001077565b6001600160a01b031614620011dc576040805162461bcd60e51b815260206004820181905260248201526000805160206200505c833981519152604482015290519081900360640190fd5b62000b8e816200220a565b620011f23362001d13565b565b600062001202600c62002250565b6001600160901b0316905090565b6000620009556200122062001839565b8462000a8285604051806060016040528060258152602001620050c560259139600160006200124e62001839565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919062001b4e565b6000620009556200129062001839565b8484620019e8565b600062000959600b8362002466565b6001600160a01b03811660009081526010602052604081205463ffffffff1680620012d457600062000b14565b6001600160a01b0383166000908152600f6020908152604080832063ffffffff60001986011684529091529020600101549392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86662001339620008a3565b805190602001206200134a6200249c565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa1580156200147e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620014d25760405162461bcd60e51b81526004018080602001828103825260278152602001806200500d6027913960400191505060405180910390fd5b6001600160a01b03811660009081526011602052604090208054600181019091558914620015325760405162461bcd60e51b815260040180806020018281038252602381526020018062004f106023913960400191505060405180910390fd5b87421115620015735760405162461bcd60e51b815260040180806020018281038252602781526020018062004fb66027913960400191505060405180910390fd5b6200157f818b62002119565b505050505b505050505050565b60006200159862001839565b6001600160a01b0316620015ab62001077565b6001600160a01b031614620015f6576040805162461bcd60e51b815260206004820181905260248201526000805160206200505c833981519152604482015290519081900360640190fd5b62000959600c83620024a0565b6000620016103362001298565b6200164d5760405162461bcd60e51b815260040180806020018281038252603081526020018062004fdd6030913960400191505060405180910390fd5b62000d51600c6200192d565b64e8d4a5100090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600f6020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b620016e862001839565b6001600160a01b0316620016fb62001077565b6001600160a01b03161462001746576040805162461bcd60e51b815260206004820181905260248201526000805160206200505c833981519152604482015290519081900360640190fd5b6001600160a01b0381166200178d5760405162461bcd60e51b815260040180806020018281038252602681526020018062004ec86026913960400191505060405180910390fd5b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116620017fd57600080fd5b62001809828262002466565b156200181457600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b3390565b6001600160a01b038316620018845760405162461bcd60e51b8152600401808060200182810382526024815260200180620050a16024913960400191505060405180910390fd5b6001600160a01b038216620018cb5760405162461bcd60e51b815260040180806020018281038252602281526020018062004eee6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000805b8254811015620019e2578260000181815481106200194b57fe5b906000526020600020906003020160010160009054906101000a90046001600160a01b03166001600160a01b031663a2e620456040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620019ab57600080fd5b505af1158015620019c0573d6000803e3d6000fd5b505050506040513d6020811015620019d757600080fd5b505060010162001931565b50919050565b6001600160a01b03831662001a2f5760405162461bcd60e51b81526004018080602001828103825260258152602001806200507c6025913960400191505060405180910390fd5b6001600160a01b03821662001a765760405162461bcd60e51b815260040180806020018281038252602381526020018062004ea56023913960400191505060405180910390fd5b62001a83838383620025e8565b62001ac38160405180606001604052806026815260200162004f5b602691396001600160a01b038616600090815260208190526040902054919062001b4e565b6001600160a01b03808516600090815260208190526040808220939093559084168152205462001af4908262001d59565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111562001be15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001ba557818101518382015260200162001b8b565b50505050905090810190601f16801562001bd35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006064846001600160901b0316111562001c365760405162461bcd60e51b8152600401808060200182810382526024815260200180620050ea6024913960400191505060405180910390fd5b60008360405162001c479062002a86565b6001600160a01b03909116815260405190819003602001906000f08015801562001c75573d6000803e3d6000fd5b50604080516060810182526001600160901b0397881681526001600160a01b039283166020808301918252968416928201928352895460018082018c5560009b8c5297909a2091516003909a0290910180546001600160901b03191699909816989098178755965186850180546001600160a01b03199081169284169290921790559651600290960180549097169516949094179094559392505050565b62001d20600b826200264f565b6040516001600160a01b0382169033907f4b5ef9a786cf64a7d82ebcf2d5132667edc9faef4ac36260d9a9e52c526b623290600090a350565b60008282018381101562000b14576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03821662001e10576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b62001e1e60008383620025e8565b60025462001e2d908262001d59565b6002556001600160a01b03821660009081526020819052604090205462001e55908262001d59565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b816001600160a01b0316836001600160a01b03161415801562001ece5750600081115b1562001ff8576001600160a01b0383161562001f68576001600160a01b03831660009081526010602052604081205463ffffffff16908162001f1257600062001f44565b6001600160a01b0385166000908152600f6020908152604080832063ffffffff60001987011684529091529020600101545b9050600062001f5482856200269b565b905062001f6486848484620026f9565b5050505b6001600160a01b0382161562001ff8576001600160a01b03821660009081526010602052604081205463ffffffff16908162001fa657600062001fd8565b6001600160a01b0384166000908152600f6020908152604080832063ffffffff60001987011684529091529020600101545b9050600062001fe8828562001d59565b90506200158485848484620026f9565b505050565b600080600084116200204f576040805162461bcd60e51b815260206004820152601660248201527504552433230536e617073686f743a20696420697320360541b604482015290519081900360640190fd5b6200205b600962002864565b841115620020b0576040805162461bcd60e51b815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000604482015290519081900360640190fd5b6000620020be848662002868565b8454909150811415620020d9576000809250925050620020fc565b6001846001018281548110620020eb57fe5b906000526020600020015492509250505b9250929050565b600062002111828262002a94565b506001919050565b6001600160a01b038083166000908152600e602052604081205490911690620021428462000d80565b6001600160a01b038581166000818152600e602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4620021ac82848362001eab565b50505050565b6000620021c0600962002917565b6000620021ce600962002864565b6040805182815290519192507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67919081900360200190a1905090565b62002217600b82620017e9565b6040516001600160a01b0382169033907f3c091dafb1d99e4a4c333024492eac3b2cd8bf921a3dd547c937db33be307bb890600090a350565b60008080600c815b8554811015620023f9576000808760000183815481106200227557fe5b600091825260209091206001600390920201015488546001600160a01b039091169063aea91078908a9086908110620022aa57fe5b6000918252602090912060026003909202010154604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301528051602480840193829003018186803b1580156200230057600080fd5b505afa15801562002315573d6000803e3d6000fd5b505050506040513d60408110156200232c57600080fd5b508051602090910151909250905060ff808516908216116200235c5760ff81850316600a0a91909102906200238d565b83810360ff16600a6001600160901b03160a6001600160901b0316826001600160901b0316816200238957fe5b0491505b8760000183815481106200239d57fe5b600091825260209091206003909102015488546001600160901b0390911683029690960195889084908110620023cf57fe5b60009182526020909120600390910201546001600160901b03169490940193505060010162002258565b50816001600160901b031660641462002450576040805162461bcd60e51b81526020600482015260146024820152731b9bdd08199a5b9a5cda081cd95d1d5c081e595d60621b604482015290519081900360640190fd5b60646001600160901b0384160495945050505050565b60006001600160a01b0382166200247c57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b4690565b600080805b84548110156200258a57846000018181548110620024bf57fe5b600091825260208083206001600390930201820154604080516314b087e160e31b8152600481018a9052429094016024850152516001600160a01b039091169363a5843f08936044808201949392918390030190829087803b1580156200252557600080fd5b505af11580156200253a573d6000803e3d6000fd5b505050506040513d60208110156200255157600080fd5b505084548590829081106200256257fe5b60009182526020909120600390910201546001600160901b03169190910190600101620024a5565b50806001600160901b0316606414620025e1576040805162461bcd60e51b81526020600482015260146024820152731b9bdd08199a5b9a5cda081cd95d1d5c081e595d60621b604482015290519081900360640190fd5b5092915050565b620025f583838362001ff8565b6001600160a01b0383166200261f576200260f8262002920565b620026196200294e565b62001ff8565b6001600160a01b03821662002639576200260f8362002920565b620026448362002920565b62001ff88262002920565b6001600160a01b0381166200266357600080fd5b6200266f828262002466565b6200267957600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b600082821115620026f3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000620027204360405180606001604052806035815260200162004f81603591396200295e565b905060008463ffffffff161180156200276a57506001600160a01b0385166000908152600f6020908152604080832063ffffffff6000198901811685529252909120548282169116145b15620027a9576001600160a01b0385166000908152600f6020908152604080832063ffffffff600019890116845290915290206001018290556200281a565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600f84528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260109092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b5490565b81546000906200287b5750600062000959565b82546000905b80821015620028d1576000620028988383620029bf565b905084868281548110620028a857fe5b90600052602060002001541115620028c357809150620028ca565b8060010192505b5062002881565b600082118015620028fb575083856001840381548110620028ee57fe5b9060005260206000200154145b156200290e575060001901905062000959565b50905062000959565b80546001019055565b6001600160a01b038116600090815260066020526040902062000b8e90620029488362000d80565b620029e5565b620011f26007620029486200095f565b6000816401000000008410620029b75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831562001ba557818101518382015260200162001b8b565b509192915050565b60006002808306600285060181620029d357fe5b04600283046002850401019392505050565b6000620029f3600962002864565b90508062002a018462002a36565b101562001ff8578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b805460009062002a4957506000620009d7565b81548290600019810190811062002a5c57fe5b90600052602060002001549050620009d7565b604080518082019091526000808252602082015290565b6123ae8062002af783390190565b508054600082556003029060005260206000209081019062000b8e91905b8082111562002af25780546001600160901b03191681556001810180546001600160a01b0319908116909155600282018054909116905560030162002ab2565b509056fe60806040526000805460ff60a01b1916600960a11b17905534801561002357600080fd5b506040516123ae3803806123ae8339818101604052602081101561004657600080fd5b505160006100526100c1565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100c5565b3390565b6122da806100d46000396000f3fe60806040523480156200001157600080fd5b50600436106200006a5760003560e01c8063715018a6146200006f5780638da5cb5b146200007b578063a2e6204514620000a1578063a5843f0814620000bf578063aea9107814620000e5578063f2fde38b146200013e575b600080fd5b6200007962000167565b005b620000856200022a565b604080516001600160a01b039092168252519081900360200190f35b620000ab62000239565b604080519115158252519081900360200190f35b620000ab60048036036040811015620000d757600080fd5b50803590602001356200029f565b6200010e60048036036020811015620000fd57600080fd5b50356001600160a01b0316620003a3565b6040805171ffffffffffffffffffffffffffffffffffff909316835260ff90911660208301528051918290030190f35b62000079600480360360208110156200015657600080fd5b50356001600160a01b03166200069f565b62000171620007ba565b6001600160a01b0316620001846200022a565b6001600160a01b031614620001e0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6002546040805163a2e6204560e01b815290516000926001600160a01b03169163a2e62045916004808301928692919082900301818387803b1580156200027f57600080fd5b505af115801562000294573d6000803e3d6000fd5b505050506001905090565b6000620002ab620007ba565b6001600160a01b0316620002be6200022a565b6001600160a01b0316146200031a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516001600160a01b0390911690849084906200033b90620007be565b80846001600160a01b031681526020018381526020018281526020019350505050604051809103906000f08015801562000379573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b039290921691909117905550600192915050565b60025460009081906001600160a01b031662000406576040805162461bcd60e51b815260206004820152601760248201527f4f7261636c65206973206e6f7420696e69746c697a6564000000000000000000604482015290519081900360640190fd5b60015460408051630dfe168160e01b815290516000926001600160a01b031691630dfe1681916004808301926020929190829003018186803b1580156200044c57600080fd5b505afa15801562000461573d6000803e3d6000fd5b505050506040513d60208110156200047857600080fd5b50516001546040805163d21220a760e01b815290519293506000926001600160a01b039092169163d21220a791600480820192602092909190829003018186803b158015620004c657600080fd5b505afa158015620004db573d6000803e3d6000fd5b505050506040513d6020811015620004f257600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0385169163313ce567916004808301926020929190829003018186803b1580156200053b57600080fd5b505afa15801562000550573d6000803e3d6000fd5b505050506040513d60208110156200056757600080fd5b50516040805163313ce56760e01b815290519192506000916001600160a01b0385169163313ce567916004808301926020929190829003018186803b158015620005b057600080fd5b505afa158015620005c5573d6000803e3d6000fd5b505050506040513d6020811015620005dc57600080fd5b505160025460408051633ddac95360e01b81526001600160a01b038b81166004830152670de0b6b3a7640000602483015291519394506000939190921691633ddac953916044808301926020929190829003018186803b1580156200064057600080fd5b505afa15801562000655573d6000803e3d6000fd5b505050506040513d60208110156200066c57600080fd5b5051905060006001600160a01b03868116908a16146200068d57836200068f565b825b9197509095505050505050915091565b620006a9620007ba565b6001600160a01b0316620006bc6200022a565b6001600160a01b03161462000718576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166200075f5760405162461bcd60e51b81526004018080602001828103825260268152602001806200227f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b611ab280620007cd8339019056fe60806040523480156200001157600080fd5b5060405162001ab238038062001ab2833981810160405260608110156200003757600080fd5b508051602082015160409092015190919081816000806200005762000458565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350428211620000f6576040805162461bcd60e51b815260206004820152601960248201527f45706f63683a20696e76616c69642073746172742074696d6500000000000000604482015290519081900360640190fd5b60018390556002829055620001336200011c82856200045c602090811b62000bf017901c565b600254620004c360201b62000c491790919060201c565b6003555050506007829055600680546001600160a01b0319166001600160a01b03851690811790915560408051630dfe168160e01b81529051630dfe168191600480820192602092909190829003018186803b1580156200019357600080fd5b505afa158015620001a8573d6000803e3d6000fd5b505050506040513d6020811015620001bf57600080fd5b5051600480546001600160a01b0319166001600160a01b039283161781556040805163d21220a760e01b815290519286169263d21220a792828101926020929190829003018186803b1580156200021557600080fd5b505afa1580156200022a573d6000803e3d6000fd5b505050506040513d60208110156200024157600080fd5b5051600580546001600160a01b0319166001600160a01b0392831617905560408051635909c0d560e01b8152905191851691635909c0d591600480820192602092909190829003018186803b1580156200029a57600080fd5b505afa158015620002af573d6000803e3d6000fd5b505050506040513d6020811015620002c657600080fd5b505160095560408051635a3d549360e01b815290516001600160a01b03851691635a3d5493916004808301926020929190829003018186803b1580156200030c57600080fd5b505afa15801562000321573d6000803e3d6000fd5b505050506040513d60208110156200033857600080fd5b5051600a5560408051630240bc6b60e21b8152905160009182916001600160a01b03871691630902f1ac916004808301926060929190829003018186803b1580156200038357600080fd5b505afa15801562000398573d6000803e3d6000fd5b505050506040513d6060811015620003af57600080fd5b50805160208201516040909201516008805463ffffffff191663ffffffff909216919091179055925090506001600160701b03821615801590620003fb57506001600160701b03811615155b6200044d576040805162461bcd60e51b815260206004820152601360248201527f4f7261636c653a204e4f5f524553455256455300000000000000000000000000604482015290519081900360640190fd5b50505050506200051e565b3390565b6000826200046d57506000620004bd565b828202828482816200047b57fe5b0414620004ba5760405162461bcd60e51b815260040180806020018281038252602181526020018062001a916021913960400191505060405180910390fd5b90505b92915050565b600082820183811015620004ba576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611563806200052e6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063a2e62045116100c3578063c828371e1161007c578063c828371e146102eb578063d21220a7146102f3578063ef78d4fd146102fb578063efe97d0514610303578063f00d371c1461030b578063f2fde38b1461033757610158565b8063a2e62045146102a2578063a6bb4539146102aa578063a8aa1b31146102b2578063b97dd9e2146102ba578063c5700a02146102c2578063c5967c26146102e357610158565b80635a3d5493116101155780635a3d5493146102125780635e6aaf2c1461021a5780636a2ab6021461023e5780636d91c0e21461025a578063715018a6146102925780638da5cb5b1461029a57610158565b80630dfe16811461015d5780630f3a9f65146101815780631ed24195146101a0578063398bac63146101ba5780633ddac953146101c25780635909c0d51461020a575b600080fd5b61016561035d565b604080516001600160a01b039092168252519081900360200190f35b61019e6004803603602081101561019757600080fd5b503561036c565b005b6101a86103e5565b60408051918252519081900360200190f35b6101a86103ec565b6101ee600480360360408110156101d857600080fd5b506001600160a01b038135169060200135610416565b604080516001600160901b039092168252519081900360200190f35b6101a86104ec565b6101a86104f2565b6102226104f8565b604080516001600160e01b039092168252519081900360200190f35b610246610507565b604080519115158252519081900360200190f35b6101656004803603606081101561027057600080fd5b506001600160a01b038135811691602081013582169160409091013516610520565b61019e610537565b6101656105f5565b61019e610604565b6102226108d7565b6101656108e6565b6101a86108f5565b6102ca610915565b6040805163ffffffff9092168252519081900360200190f35b6101a8610921565b6101a8610943565b610165610949565b6101a8610958565b6101a861095e565b6102226004803603604081101561032157600080fd5b506001600160a01b03813516906020013561098e565b61019e6004803603602081101561034d57600080fd5b50356001600160a01b0316610adc565b6004546001600160a01b031681565b610374610ca3565b6001600160a01b03166103856105f5565b6001600160a01b0316146103e0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600155565b6001545b90565b600061041160015461040b600254600354610ca790919063ffffffff16565b90610d04565b905090565b6004546000906001600160a01b0384811691161415610462576040805160208101909152600b546001600160e01b0316815261045b906104569084610d6b565b610dff565b90506104e6565b6005546001600160a01b038481169116146104bc576040805162461bcd60e51b815260206004820152601560248201527427b930b1b6329d1024a72b20a624a22faa27a5a2a760591b604482015290519081900360640190fd5b6040805160208101909152600c546001600160e01b031681526104e3906104569084610d6b565b90505b92915050565b60095481565b600a5481565b600c546001600160e01b031681565b600061051161095e565b6105196108f5565b1015905090565b600061052d848484610e06565b90505b9392505050565b61053f610ca3565b6001600160a01b03166105506105f5565b6001600160a01b0316146105ab576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6002544211610653576040805162461bcd60e51b8152602060048201526016602482015275115c1bd8da0e881b9bdd081cdd185c9d1959081e595d60521b604482015290519081900360640190fd5b61065b610507565b6106a1576040805162461bcd60e51b8152602060048201526012602482015271115c1bd8da0e881b9bdd08185b1b1bddd95960721b604482015290519081900360640190fd5b600654600090819081906106bd906001600160a01b0316610ec6565b600854929550909350915063ffffffff90811682039081166106e257505050506108d1565b6007548163ffffffff16101561073f576040805162461bcd60e51b815260206004820152601a60248201527f4f7261636c653a20504552494f445f4e4f545f454c4150534544000000000000604482015290519081900360640190fd5b60405180602001604052808263ffffffff1660095487038161075d57fe5b046001600160e01b039081169091529051600b80546001600160e01b031916919092161790556040805160208101909152600a54819063ffffffff8416908603816107a457fe5b046001600160e01b039081169091529051600c80546001600160e01b031916919092161790556009849055600a8390556008805463ffffffff191663ffffffff8416179055604080518581526020810185905281517fd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902929181900390910190a16040805160208101909152600b546001600160e01b031681527fe8ef0d515ef2d01bc2ef598a99a9514d94abc4054bde68e697d160b28989b74d90610872906104569064e8d4a51000610d6b565b6040805160208101909152600c546001600160e01b0316815261089e906104569064e8d4a51000610d6b565b60405180836001600160901b03168152602001826001600160901b031681526020019250505060405180910390a1505050505b42600355565b600b546001600160e01b031681565b6006546001600160a01b031681565b600061041160015461040b60025461090f600254426110b5565b90610ca7565b60085463ffffffff1681565b600061041161093a60015461093461095e565b90610bf0565b60025490610c49565b60025490565b6005546001600160a01b031681565b60075481565b6000600354600254141561097b576109746103ec565b90506103e9565b61041160016109886103ec565b90610c49565b6006546000908190819081906109ac906001600160a01b0316610ec6565b600854929550909350915063ffffffff1681036109c7611476565b60405180602001604052808363ffffffff166009548803816109e557fe5b046001600160e01b031681525090506109fc611476565b60405180602001604052808463ffffffff16600a54880381610a1a57fe5b046001600160e01b031690526004549091506001600160a01b03908116908a161415610a5d57610a4d610456838a610d6b565b6001600160901b03169650610ad0565b6005546001600160a01b038a8116911614610ab7576040805162461bcd60e51b815260206004820152601560248201527427b930b1b6329d1024a72b20a624a22faa27a5a2a760591b604482015290519081900360640190fd5b610ac4610456828a610d6b565b6001600160901b031696505b50505050505092915050565b610ae4610ca3565b6001600160a01b0316610af56105f5565b6001600160a01b031614610b50576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610b955760405162461bcd60e51b815260040180806020018281038252602681526020018061149c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082610bff575060006104e6565b82820282848281610c0c57fe5b04146104e35760405162461bcd60e51b815260040180806020018281038252602181526020018061150d6021913960400191505060405180910390fd5b6000828201838110156104e3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600082821115610cfe576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808211610d5a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610d6357fe5b049392505050565b610d73611488565b6000821580610d9957505082516001600160e01b031682810290838281610d9657fe5b04145b610dea576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610e1585856110cc565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610ed36111aa565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0e57600080fd5b505afa158015610f22573d6000803e3d6000fd5b505050506040513d6020811015610f3857600080fd5b505160408051635a3d549360e01b815290519194506001600160a01b03861691635a3d549391600480820192602092909190829003018186803b158015610f7e57600080fd5b505afa158015610f92573d6000803e3d6000fd5b505050506040513d6020811015610fa857600080fd5b505160408051630240bc6b60e21b81529051919350600091829182916001600160a01b03891691630902f1ac916004808301926060929190829003018186803b158015610ff457600080fd5b505afa158015611008573d6000803e3d6000fd5b505050506040513d606081101561101e57600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146110ab5780840363ffffffff81166110646001600160701b038086169087166111b4565b600001516001600160e01b031602870196508063ffffffff16611099856001600160701b0316856001600160701b03166111b4565b516001600160e01b0316029590950194505b5050509193909250565b6000818310156110c557816104e3565b5090919050565b600080826001600160a01b0316846001600160a01b031614156111205760405162461bcd60e51b81526004018080602001828103825260258152602001806114c26025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610611140578284611143565b83835b90925090506001600160a01b0382166111a3576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b63ffffffff421690565b6111bc611476565b600082116111fb5760405162461bcd60e51b81526004018080602001828103825260268152602001806114e76026913960400191505060405180910390fd5b8261121557506040805160208101909152600081526104e6565b6001600160901b0383116112b157600082607085901b8161123257fe5b0490506001600160e01b03811115611291576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b03168152509150506104e6565b60006112c284600160701b85611320565b90506001600160e01b03811115611291576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b600080600061132f86866113d9565b915091506000848061133d57fe5b868809905082811115611351576001820391505b91829003918161136f5784838161136457fe5b049350505050610530565b8482106113c3576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b6113ce838387611406565b979650505050505050565b60008080600019848609905083850292508281039150828110156113fe576001820391505b509250929050565b6000818103821680838161141657fe5b04925080858161142257fe5b04945080816000038161143157fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373556e697377617056324c6962726172793a204944454e544943414c5f4144445245535345534669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212206249834e0da6961c2347836c1ccf33fc7109c52335806c88bd19df064c4596bf64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220e03ff2b4ed232c0ab303d657278e102997a2598119a8bd83db853c9db67ec63964736f6c634300060c003345524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737353484152453a3a64656c656761746542795369673a20696e76616c6964206e6f6e636553484152453a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636553484152453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747353484152453a3a64656c656761746542795369673a207369676e617475726520657870697265644d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c6553484152453a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f7765696768742073686f756c64206c657373206f7220657175616c207468616e20313030a2646970667358221220495c4890524a3047649d53f9fddba072a9b262aaed4fa7c7dcdd6fa9eea5de6c64736f6c634300060c0033