60806040526003805460ff19166009908117909155600260045560006005556200002b90600a620008a5565b6200003b90633b9aca0062000964565b60068190556200004e90600019620009dd565b6200005c9060001962000986565b60075562000097600a620000836103e86006546200058860201b620020fb1790919060201c565b620005db60201b6200213d1790919060201c565b6009556000600a556032600b55600a600c556000600d5561012c600e55600a600f55600a54601055600b54601155600c54601255620000e96011546010546200066660201b620021bc1790919060201c565b601355601354601455620001166014620000836127106006546200058860201b620020fb1790919060201c565b6015556016805463ffffff00191663010000001790556040805180820190915260128082527129b434b1309029b2bc10283932b230ba37b960711b6020909201918252620001679160179162000705565b506040805180820190915260038082526251554d60e81b6020909201918252620001949160189162000705565b50601b80546001600160a01b03199081167340740b69ed1024dcfe6f66306b844b29223d1c8d17909155601c805490911661dead179055348015620001d857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754336000908152601d602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200027c57600080fd5b505afa15801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b79190620007ab565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030057600080fd5b505afa15801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b9190620007ab565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200038457600080fd5b505af115801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf9190620007ab565b601a80546001600160a01b03199081166001600160a01b039384161790915560198054909116918316919091179055600160216000620004076000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526021909252812080549092166001908117909255602290620004606000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526022909352818320805485166001908117909155601a54821684528284208054861682179055601c54909116835290822080549093168117909255602490620004e26000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601a5490911681526024909252902080549091166001179055620005313390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200057991815260200190565b60405180910390a35062000a20565b6000620005d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620006c960201b60201c565b90505b92915050565b600082620005ec57506000620005d5565b6000620005fa838562000964565b90508262000609858362000845565b14620005d25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b6000806200067583856200082a565b905083811015620005d25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200065d565b60008183620006ed5760405162461bcd60e51b81526004016200065d9190620007d4565b506000620006fc848662000845565b95945050505050565b8280546200071390620009a0565b90600052602060002090601f01602090048101928262000737576000855562000782565b82601f106200075257805160ff191683800117855562000782565b8280016001018555821562000782579182015b828111156200078257825182559160200191906001019062000765565b506200079092915062000794565b5090565b5b8082111562000790576000815560010162000795565b600060208284031215620007bd578081fd5b81516001600160a01b0381168114620005d2578182fd5b6000602080835283518082850152825b818110156200080257858101830151858201604001528201620007e4565b81811115620008145783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115620008405762000840620009f4565b500190565b60008262000857576200085762000a0a565b500490565b600181815b808511156200089d578160001904821115620008815762000881620009f4565b808516156200088f57918102915b93841c939080029062000861565b509250929050565b6000620005d260ff841683600082620008c157506001620005d5565b81620008d057506000620005d5565b8160018114620008e95760028114620008f45762000914565b6001915050620005d5565b60ff841115620009085762000908620009f4565b50506001821b620005d5565b5060208310610133831016604e8410600b841016171562000939575081810a620005d5565b6200094583836200085c565b80600019048211156200095c576200095c620009f4565b029392505050565b6000816000190483118215151615620009815762000981620009f4565b500290565b6000828210156200099b576200099b620009f4565b500390565b600181811c90821680620009b557607f821691505b60208210811415620009d757634e487b7160e01b600052602260045260246000fd5b50919050565b600082620009ef57620009ef62000a0a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b613b7a8062000a306000396000f3fe6080604052600436106103545760003560e01c806370a08231116101c6578063a9059cbb116100f7578063eafb5a3c11610095578063f389a43e1161006f578063f389a43e146109da578063f3b1e83b146109fa578063fabb0b4f14610a10578063ffb54a9914610a2657600080fd5b8063eafb5a3c1461097a578063f259c57b1461099a578063f2fde38b146109ba57600080fd5b8063dc44b6a0116100d1578063dc44b6a0146108de578063dd62ed3e146108f4578063deaa59df1461093a578063ea2f0b371461095a57600080fd5b8063a9059cbb14610888578063afb8865e146108a8578063bf56b371146108c857600080fd5b806384530c46116101645780638da5cb5b1161013e5780638da5cb5b146108155780638f4590d21461083357806395d89b4114610853578063a457c2d71461086857600080fd5b806384530c46146107a657806388790a68146107c657806388f82020146107dc57600080fd5b806372fdf6ee116101a057806372fdf6ee14610744578063743942b61461075a5780637598f8bc1461077a57806378109e541461079057600080fd5b806370a08231146106ef578063715018a61461070f57806371b9189c1461072457600080fd5b8063313ce567116102a05780634549b0391161023e5780634eeaf458116102185780634eeaf4581461066f57806352390c021461068f5780635d54c0af146106af578063632e5442146106cf57600080fd5b80634549b0391461060f57806349bd5a5e1461062f5780634b01547f1461064f57600080fd5b80633bd5d1731161027a5780633bd5d173146105995780633ddf65ab146105b9578063401aa5c0146105d957806343b127a6146105ef57600080fd5b8063313ce567146105375780633685d41914610559578063395093511461057957600080fd5b806318160ddd1161030d5780632691bc80116102e75780632691bc80146104b757806328a23cd1146104d75780632d838119146104f75780632dd5efe71461051757600080fd5b806318160ddd146104605780631e89d5451461047557806323b872dd1461049757600080fd5b80630445b6671461036057806306fdde0314610389578063095ea7b3146103ab5780630f3a325f146103db57806313114a9d146104135780631694505e1461042857600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660155481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b5061039e610a45565b6040516103809190613824565b3480156103b757600080fd5b506103cb6103c636600461353a565b610ad7565b6040519015158152602001610380565b3480156103e757600080fd5b506103cb6103f636600461348a565b6001600160a01b0316600090815260208052604090205460ff1690565b34801561041f57600080fd5b50600854610376565b34801561043457600080fd5b50601954610448906001600160a01b031681565b6040516001600160a01b039091168152602001610380565b34801561046c57600080fd5b50600654610376565b34801561048157600080fd5b506104956104903660046135a5565b610aee565b005b3480156104a357600080fd5b506103cb6104b23660046134fa565b610d52565b3480156104c357600080fd5b506016546103cb9062010000900460ff1681565b3480156104e357600080fd5b506104956104f2366004613702565b610dbb565b34801561050357600080fd5b50610376610512366004613714565b610eeb565b34801561052357600080fd5b5061049561053236600461348a565b610f6f565b34801561054357600080fd5b5060035460405160ff9091168152602001610380565b34801561056557600080fd5b5061049561057436600461348a565b610fbd565b34801561058557600080fd5b506103cb61059436600461353a565b6111ac565b3480156105a557600080fd5b506104956105b4366004613714565b6111e2565b3480156105c557600080fd5b506104956105d43660046136ad565b6112cc565b3480156105e557600080fd5b50610376600c5481565b3480156105fb57600080fd5b5061049561060a366004613789565b611314565b34801561061b57600080fd5b5061037661062a366004613744565b61136e565b34801561063b57600080fd5b50601a54610448906001600160a01b031681565b34801561065b57600080fd5b5061049561066a3660046136ad565b6113fb565b34801561067b57600080fd5b5061049561068a366004613789565b611441565b34801561069b57600080fd5b506104956106aa36600461348a565b611479565b3480156106bb57600080fd5b506104956106ca36600461360e565b611563565b3480156106db57600080fd5b506104956106ea366004613663565b61160a565b3480156106fb57600080fd5b5061037661070a36600461348a565b611798565b34801561071b57600080fd5b506104956117f7565b34801561073057600080fd5b5061049561073f366004613565565b61186b565b34801561075057600080fd5b50610376600b5481565b34801561076657600080fd5b5061049561077536600461348a565b611918565b34801561078657600080fd5b50610376600f5481565b34801561079c57600080fd5b5061037660095481565b3480156107b257600080fd5b506104956107c1366004613565565b611977565b3480156107d257600080fd5b50610376600d5481565b3480156107e857600080fd5b506103cb6107f736600461348a565b6001600160a01b031660009081526023602052604090205460ff1690565b34801561082157600080fd5b506000546001600160a01b0316610448565b34801561083f57600080fd5b5061049561084e366004613768565b611a1f565b34801561085f57600080fd5b5061039e611a69565b34801561087457600080fd5b506103cb61088336600461353a565b611a78565b34801561089457600080fd5b506103cb6108a336600461353a565b611ac7565b3480156108b457600080fd5b506104956108c3366004613714565b611ad4565b3480156108d457600080fd5b5061037660055481565b3480156108ea57600080fd5b50610376600a5481565b34801561090057600080fd5b5061037661090f3660046134c2565b6001600160a01b039182166000908152601f6020908152604080832093909416825291909152205490565b34801561094657600080fd5b5061049561095536600461348a565b611b25565b34801561096657600080fd5b5061049561097536600461348a565b611b71565b34801561098657600080fd5b5061049561099536600461348a565b611bbc565b3480156109a657600080fd5b506104956109b536600461348a565b611f42565b3480156109c657600080fd5b506104956109d536600461348a565b611f90565b3480156109e657600080fd5b506104956109f53660046136e5565b61207a565b348015610a0657600080fd5b50610376600e5481565b348015610a1c57600080fd5b5061037660045481565b348015610a3257600080fd5b506016546103cb90610100900460ff1681565b606060178054610a5490613a65565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8090613a65565b8015610acd5780601f10610aa257610100808354040283529160200191610acd565b820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b5050505050905090565b6000610ae433848461221b565b5060015b92915050565b6000546001600160a01b03163314610b215760405162461bcd60e51b8152600401610b1890613877565b60405180910390fd5b6103218310610b885760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610b18565b828114610be85760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610b18565b6000805b84811015610c5457600354610c059060ff16600a613984565b848483818110610c2557634e487b7160e01b600052603260045260246000fd5b90506020020135610c369190613a2f565b610c409083613909565b915080610c4c81613aa0565b915050610bec565b5080610c5f33611798565b1015610cad5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b18565b60005b84811015610d4a57610d3833878784818110610cdc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cf1919061348a565b600354610d029060ff16600a613984565b878786818110610d2257634e487b7160e01b600052603260045260246000fd5b90506020020135610d339190613a2f565b61233f565b80610d4281613aa0565b915050610cb0565b505050505050565b6000610d5f84848461233f565b610db18433610dac85604051806060016040528060288152602001613af8602891396001600160a01b038a166000908152601f602090815260408083203384529091529020549190612883565b61221b565b5060019392505050565b6000546001600160a01b03163314610de55760405162461bcd60e51b8152600401610b1890613877565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610e2757600080fd5b505afa158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f919061372c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee591906136c9565b50505050565b6000600754821115610f525760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b18565b6000610f5c6128bd565b9050610f6883826120fb565b9392505050565b6000546001600160a01b03163314610f995760405162461bcd60e51b8152600401610b1890613877565b6001600160a01b03166000908152602260205260409020805460ff19166001179055565b6000546001600160a01b03163314610fe75760405162461bcd60e51b8152600401610b1890613877565b6001600160a01b03811660009081526023602052604090205460ff1661104f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b18565b60005b6025548110156111a857816001600160a01b03166025828154811061108757634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561119657602580546110b290600190613a4e565b815481106110d057634e487b7160e01b600052603260045260246000fd5b600091825260209091200154602580546001600160a01b03909216918390811061110a57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152601e82526040808220829055602390925220805460ff19169055602580548061117057634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111a081613aa0565b915050611052565b5050565b336000818152601f602090815260408083206001600160a01b03871684529091528120549091610ae4918590610dac90866121bc565b3360008181526023602052604090205460ff16156112575760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b18565b6000611262836128e0565b505050506001600160a01b0384166000908152601d602052604090205491925061128e9190508261292f565b6001600160a01b0383166000908152601d60205260409020556007546112b4908261292f565b6007556008546112c490846121bc565b600855505050565b6000546001600160a01b031633146112f65760405162461bcd60e51b8152600401610b1890613877565b6016805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b0316331461133e5760405162461bcd60e51b8152600401610b1890613877565b600a829055600b819055600c83905560128390556010829055601181905561136682826121bc565b601355505050565b60006006548311156113c25760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b18565b816113e15760006113d2846128e0565b50939550610ae8945050505050565b60006113ec846128e0565b50929550610ae8945050505050565b6000546001600160a01b031633146114255760405162461bcd60e51b8152600401610b1890613877565b60168054911515620100000262ff000019909216919091179055565b6000546001600160a01b0316331461146b5760405162461bcd60e51b8152600401610b1890613877565b600d91909155600e55600f55565b6000546001600160a01b031633146114a35760405162461bcd60e51b8152600401610b1890613877565b6001600160a01b0381166000908152601d6020526040902054156114fd576001600160a01b0381166000908152601d60205260409020546114e390610eeb565b6001600160a01b0382166000908152601e60205260409020555b6001600160a01b03166000818152602360205260408120805460ff191660019081179091556025805491820181559091527f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c0180546001600160a01b0319169091179055565b6000546001600160a01b0316331461158d5760405162461bcd60e51b8152600401610b1890613877565b60005b82811015610ee55781602060008686858181106115bd57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115d2919061348a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561160381613aa0565b9050611590565b6000546001600160a01b031633146116345760405162461bcd60e51b8152600401610b1890613877565b6107d1821061169c5760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610b18565b60035460009083906116b29060ff16600a613984565b6116bc9084613a2f565b6116c69190613a2f565b9050806116d233611798565b10156117205760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b18565b60005b838110156117915761177f3386868481811061174f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611764919061348a565b6003546117759060ff16600a613984565b610d339087613a2f565b8061178981613aa0565b915050611723565b5050505050565b6001600160a01b03811660009081526023602052604081205460ff16156117d557506001600160a01b03166000908152601e602052604090205490565b6001600160a01b0382166000908152601d6020526040902054610ae890610eeb565b6000546001600160a01b031633146118215760405162461bcd60e51b8152600401610b1890613877565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146118955760405162461bcd60e51b8152600401610b1890613877565b60005b81811015611913576001602160008585858181106118c657634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118db919061348a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561190c81613aa0565b9050611898565b505050565b6000546001600160a01b031633146119425760405162461bcd60e51b8152600401610b1890613877565b6040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156111a8573d6000803e3d6000fd5b6000546001600160a01b031633146119a15760405162461bcd60e51b8152600401610b1890613877565b60005b81811015611913576001602460008585858181106119d257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119e7919061348a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a1881613aa0565b90506119a4565b6000546001600160a01b03163314611a495760405162461bcd60e51b8152600401610b1890613877565b8082600654611a589190613a2f565b611a629190613921565b6015555050565b606060188054610a5490613a65565b6000610ae43384610dac85604051806060016040528060258152602001613b2060259139336000908152601f602090815260408083206001600160a01b038d1684529091529020549190612883565b6000610ae433848461233f565b6000546001600160a01b03163314611afe5760405162461bcd60e51b8152600401610b1890613877565b611b1f81611b196103e86006546120fb90919063ffffffff16565b9061213d565b60095550565b6000546001600160a01b03163314611b4f5760405162461bcd60e51b8152600401610b1890613877565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b9b5760405162461bcd60e51b8152600401610b1890613877565b6001600160a01b03166000908152602160205260409020805460ff19169055565b6000546001600160a01b03163314611be65760405162461bcd60e51b8152600401610b1890613877565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2657600080fd5b505afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e91906134a6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca657600080fd5b505afa158015611cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cde91906134a6565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015611d2457600080fd5b505afa158015611d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5c91906134a6565b90506001600160a01b038116611f0257816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611da557600080fd5b505afa158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd91906134a6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2557600080fd5b505afa158015611e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5d91906134a6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611ea557600080fd5b505af1158015611eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edd91906134a6565b601a80546001600160a01b0319166001600160a01b0392909216919091179055611f1e565b601a80546001600160a01b0319166001600160a01b0383161790555b50601980546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611f6c5760405162461bcd60e51b8152600401610b1890613877565b6001600160a01b03166000908152602160205260409020805460ff19166001179055565b6000546001600160a01b03163314611fba5760405162461bcd60e51b8152600401610b1890613877565b6001600160a01b03811661201f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b18565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120a45760405162461bcd60e51b8152600401610b1890613877565b6016805461ff001916610100841515021790556120c030611479565b601a546120d5906001600160a01b0316611479565b601654610100900460ff1680156120ec5750600554155b156111a8574360055560045550565b6000610f6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612971565b60008261214c57506000610ae8565b60006121588385613a2f565b9050826121658583613921565b14610f685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b18565b6000806121c98385613909565b905083811015610f685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b18565b6001600160a01b03831661227d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b18565b6001600160a01b0382166122de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b18565b6001600160a01b038381166000818152601f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166123a35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b18565b6001600160a01b0382166124055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b18565b600081116124675760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b18565b6001600160a01b038216600090815260208052604090205460ff16156124bc5760405162461bcd60e51b815260206004820152600a602482015269536f72727920426f737360b01b6044820152606401610b18565b6001600160a01b038316600090815260208052604090205460ff16156125115760405162461bcd60e51b815260206004820152600a602482015269536f72727920426f737360b01b6044820152606401610b18565b6000546001600160a01b0384811691161480159061253d57506000546001600160a01b03838116911614155b1561259957601654610100900460ff166125995760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b18565b601a546000906001600160a01b03858116911614806125c55750601a546001600160a01b038481169116145b801561260d57506001600160a01b03841660009081526021602052604090205460ff168061260b57506001600160a01b03831660009081526021602052604090205460ff165b155b15612616575060015b600060055411801561265a57506001600160a01b03831660009081526022602052604090205460ff1615801561265a57506000546001600160a01b03858116911614155b80156126745750436004546005546126729190613909565b115b156126e85760095461268584611798565b61268f9084613909565b11156126e85760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610b18565b601354601455600c54601255601654610100900460ff1680156127185750601a546001600160a01b038481169116145b1561273657600e54600d5461272c916121bc565b601455600f546012555b60006005541180156127565750436004546005546127549190613909565b115b1561277e576001600160a01b03831660009081526020805260409020805460ff191660011790555b600060055411801561279e57506000546001600160a01b03858116911614155b80156127b957506004546005546127b59190613909565b4311155b80156127ce57506016546301000000900460ff165b156127da576103b66014555b60165462010000900460ff161561281a57601654610100900460ff16801561280f5750601a546001600160a01b038581169116145b1561281a5760006014555b60165460ff161580156128345750601654610100900460ff165b801561284d5750601a546001600160a01b038481169116145b1561287757600061285d30611798565b9050601554811061287557506015546128758161299f565b505b610ee584848484612a8b565b600081848411156128a75760405162461bcd60e51b8152600401610b189190613824565b5060006128b48486613a4e565b95945050505050565b60008060006128ca612bb7565b90925090506128d982826120fb565b9250505090565b60008060008060008060008060006128f78a612d71565b92509250925060008060006129158d86866129106128bd565b612db3565b919f909e50909c50959a5093985091965092945050505050565b6000610f6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612883565b600081836129925760405162461bcd60e51b8152600401610b189190613824565b5060006128b48486613921565b6016805460ff191660011790556013546010546000916129cf916002916129c9918290879061213d565b906120fb565b905060006129dd838361292f565b90506129e881612e03565b6010544790600090612a08906129ff9060026120fb565b6013549061292f565b90506000612a2a60026129c9846129c96010548861213d90919063ffffffff16565b90506000612a47836129c96011548761213d90919063ffffffff16565b9050478015612a6757601b54612a679083906001600160a01b0316612fc1565b8615612a7757612a778784612ff7565b50506016805460ff19169055505050505050565b60125460145482612aa157600060128190556014555b6001600160a01b03861660009081526023602052604090205460ff168015612ae257506001600160a01b03851660009081526023602052604090205460ff16155b15612af757612af28686866130d4565b612ba3565b6001600160a01b03861660009081526023602052604090205460ff16158015612b3857506001600160a01b03851660009081526023602052604090205460ff165b15612b4857612af28686866131fa565b6001600160a01b03861660009081526023602052604090205460ff168015612b8857506001600160a01b03851660009081526023602052604090205460ff165b15612b9857612af28686866132a3565b612ba3868686613316565b82610d4a5760129190915560145550505050565b6007546006546000918291825b602554811015612d415782601d600060258481548110612bf457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612c6d575081601e600060258481548110612c4657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612c8357600754600654945094505050509091565b612cd7601d600060258481548110612cab57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061292f565b9250612d2d601e600060258481548110612d0157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061292f565b915080612d3981613aa0565b915050612bc4565b50600654600754612d51916120fb565b821015612d68576007546006549350935050509091565b90939092509050565b600080600080612d808561335a565b90506000612d8d86613377565b90506000612da582612d9f898661292f565b9061292f565b979296509094509092505050565b6000808080612dc2888661213d565b90506000612dd0888761213d565b90506000612dde888861213d565b90506000612df082612d9f868661292f565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e4657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612e9a57600080fd5b505afa158015612eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed291906134a6565b81600181518110612ef357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954612f19913091168461221b565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790612f529085906000908690309042906004016138cd565b600060405180830381600087803b158015612f6c57600080fd5b505af1158015612f80573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612fb59291906138ac565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611913573d6000803e3d6000fd5b60195461300f9030906001600160a01b03168461221b565b6019546001600160a01b031663f305d7198230856000806130386000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561309b57600080fd5b505af11580156130af573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061179191906137b4565b6000806000806000806130e6876128e0565b6001600160a01b038f166000908152601e6020526040902054959b50939950919750955093509150613118908861292f565b6001600160a01b038a166000908152601e6020908152604080832093909355601d90522054613147908761292f565b6001600160a01b03808b166000908152601d602052604080822093909355908a168152205461317690866121bc565b6001600160a01b0389166000908152601d602052604090205561319881613394565b6131a2848361341c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516131e791815260200190565b60405180910390a3505050505050505050565b60008060008060008061320c876128e0565b6001600160a01b038f166000908152601d6020526040902054959b5093995091975095509350915061323e908761292f565b6001600160a01b03808b166000908152601d6020908152604080832094909455918b168152601e909152205461327490846121bc565b6001600160a01b0389166000908152601e6020908152604080832093909355601d9052205461317690866121bc565b6000806000806000806132b5876128e0565b6001600160a01b038f166000908152601e6020526040902054959b509399509197509550935091506132e7908861292f565b6001600160a01b038a166000908152601e6020908152604080832093909355601d9052205461323e908761292f565b600080600080600080613328876128e0565b6001600160a01b038f166000908152601d6020526040902054959b50939950919750955093509150613147908761292f565b6000610ae86103e86129c96012548561213d90919063ffffffff16565b6000610ae86103e86129c96014548561213d90919063ffffffff16565b600061339e6128bd565b905060006133ac838361213d565b306000908152601d60205260409020549091506133c990826121bc565b306000908152601d602090815260408083209390935560239052205460ff161561191357306000908152601e602052604090205461340790846121bc565b306000908152601e6020526040902055505050565b600754613429908361292f565b60075560085461343990826121bc565b6008555050565b60008083601f840112613451578182fd5b50813567ffffffffffffffff811115613468578182fd5b6020830191508360208260051b850101111561348357600080fd5b9250929050565b60006020828403121561349b578081fd5b8135610f6881613ad1565b6000602082840312156134b7578081fd5b8151610f6881613ad1565b600080604083850312156134d4578081fd5b82356134df81613ad1565b915060208301356134ef81613ad1565b809150509250929050565b60008060006060848603121561350e578081fd5b833561351981613ad1565b9250602084013561352981613ad1565b929592945050506040919091013590565b6000806040838503121561354c578182fd5b823561355781613ad1565b946020939093013593505050565b60008060208385031215613577578182fd5b823567ffffffffffffffff81111561358d578283fd5b61359985828601613440565b90969095509350505050565b600080600080604085870312156135ba578081fd5b843567ffffffffffffffff808211156135d1578283fd5b6135dd88838901613440565b909650945060208701359150808211156135f5578283fd5b5061360287828801613440565b95989497509550505050565b600080600060408486031215613622578283fd5b833567ffffffffffffffff811115613638578384fd5b61364486828701613440565b909450925050602084013561365881613ae9565b809150509250925092565b600080600060408486031215613677578283fd5b833567ffffffffffffffff81111561368d578384fd5b61369986828701613440565b909790965060209590950135949350505050565b6000602082840312156136be578081fd5b8135610f6881613ae9565b6000602082840312156136da578081fd5b8151610f6881613ae9565b600080604083850312156136f7578182fd5b823561355781613ae9565b600080604083850312156134d4578182fd5b600060208284031215613725578081fd5b5035919050565b60006020828403121561373d578081fd5b5051919050565b60008060408385031215613756578182fd5b8235915060208301356134ef81613ae9565b6000806040838503121561377a578182fd5b50508035926020909101359150565b60008060006060848603121561379d578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156137c8578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156138195781516001600160a01b0316875295820195908201906001016137f4565b509495945050505050565b6000602080835283518082850152825b8181101561385057858101830151858201604001528201613834565b818111156138615783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006138c560408301846137e1565b949350505050565b85815284602082015260a0604082015260006138ec60a08301866137e1565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561391c5761391c613abb565b500190565b60008261393c57634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111561397c57816000190482111561396257613962613abb565b8085161561396f57918102915b93841c9390800290613946565b509250929050565b6000610f6860ff84168360008261399d57506001610ae8565b816139aa57506000610ae8565b81600181146139c057600281146139ca576139e6565b6001915050610ae8565b60ff8411156139db576139db613abb565b50506001821b610ae8565b5060208310610133831016604e8410600b8410161715613a09575081810a610ae8565b613a138383613941565b8060001904821115613a2757613a27613abb565b029392505050565b6000816000190483118215151615613a4957613a49613abb565b500290565b600082821015613a6057613a60613abb565b500390565b600181811c90821680613a7957607f821691505b60208210811415613a9a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613ab457613ab4613abb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114613ae657600080fd5b50565b8015158114613ae657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220402a9cdb798e0ebb74a8e60a69fc8ddf60e5c853c2cd8b1d2128d22c4880b7dd64736f6c63430008040033