0x608060405260043610610126575f3560e01c80637d1db4a5116100a15780638f9a55c011610071578063a9059cbb11610057578063a9059cbb1461035d578063bf474bed1461037c578063dd62ed3e14610391575f80fd5b80638f9a55c01461030357806395d89b4114610318575f80fd5b80637d1db4a5146102935780638a8c523c146102a85780638da5cb5b146102bc5780638f58eef0146102ef575f80fd5b806318160ddd116100f6578063313ce567116100dc578063313ce5671461022357806370a082311461023e578063715018a61461027f575f80fd5b806318160ddd146101f057806323b872dd14610204575f80fd5b80630614117a1461013157806306fdde0314610147578063095ea7b31461019e5780630faee56f146101cd575f80fd5b3661012d57005b5f80fd5b34801561013c575f80fd5b506101456103e2565b005b348015610152575f80fd5b5060408051808201909152600981527f436f6f6c204465616c000000000000000000000000000000000000000000000060208201525b6040516101959190611835565b60405180910390f35b3480156101a9575f80fd5b506101bd6101b83660046118c3565b61042a565b6040519015158152602001610195565b3480156101d8575f80fd5b506101e2600d5481565b604051908152602001610195565b3480156101fb575f80fd5b506101e2610447565b34801561020f575f80fd5b506101bd61021e3660046118ed565b610468565b34801561022e575f80fd5b5060405160128152602001610195565b348015610249575f80fd5b506101e261025836600461192b565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b34801561028a575f80fd5b50610145610506565b34801561029e575f80fd5b506101e2600b5481565b3480156102b3575f80fd5b50610145610603565b3480156102c7575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610195565b3480156102fa575f80fd5b50610145610874565b34801561030e575f80fd5b506101e2600c5481565b348015610323575f80fd5b5060408051808201909152600481527f4445414c000000000000000000000000000000000000000000000000000000006020820152610188565b348015610368575f80fd5b506101bd6103773660046118c3565b6108e2565b348015610387575f80fd5b506101e2600e5481565b34801561039c575f80fd5b506101e26103ab366004611946565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b600454604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083905f818181858888f19350505050158015610426573d5f803e3d5ffd5b5050565b5f61043d6104366108f5565b848461095b565b5060015b92915050565b5f6104546012600a611ac8565b610463906461f313f880611ad6565b905090565b5f610474848484610b0d565b6104fc846104806108f5565b6104f785604051806060016040528060288152602001611c816028913973ffffffffffffffffffffffffffffffffffffffff8a165f908152600260205260408120906104ca6108f5565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205491906112f4565b61095b565b5060019392505050565b61050e6108f5565b5f5473ffffffffffffffffffffffffffffffffffffffff908116911614610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61060b6108f5565b5f5473ffffffffffffffffffffffffffffffffffffffff90811691161461068e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b60105474010000000000000000000000000000000000000000900460ff1615610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161058d565b600f5473ffffffffffffffffffffffffffffffffffffffff1663f305d719473061075e8173ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b5f8061077e5f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610809573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061082e9190611aed565b5050601080547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff1676010001000000000000000000000000000000000000000017905550565b60045473ffffffffffffffffffffffffffffffffffffffff166108956108f5565b73ffffffffffffffffffffffffffffffffffffffff16146108b4575f80fd5b305f9081526001602052604090205480156108d2576108d281611346565b4780156104265761042681611557565b5f61043d6108ee6108f5565b8484610b0d565b5f303303610955575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff1691506109589050565b50335b90565b73ffffffffffffffffffffffffffffffffffffffff83166109fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161058d565b73ffffffffffffffffffffffffffffffffffffffff8216610aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161058d565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610bb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161058d565b73ffffffffffffffffffffffffffffffffffffffff8216610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161058d565b5f8111610ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161058d565b5f805473ffffffffffffffffffffffffffffffffffffffff858116911614801590610d2757505f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b1561117657600a545f03610d5957610d56612710610d506005548561159b90919063ffffffff16565b90611656565b90505b600a5415610d7f57610d7c612710610d506009548561159b90919063ffffffff16565b90505b600854600a5403610db757610d92611697565b5f5473ffffffffffffffffffffffffffffffffffffffff1615610db757610db7610596565b60105473ffffffffffffffffffffffffffffffffffffffff8581169116148015610dfc5750600f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b8015610e2d575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b15610fb157600b548210610e9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161058d565b600c5482610ecc8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b610ed69190611b18565b10610f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161058d565b600654600a54118015610f5157505f600554115b15610f7f57600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c0190555b610f9a612710610d506005548561159b90919063ffffffff16565b9050600854600a5411610fb157600a805460010190555b60105473ffffffffffffffffffffffffffffffffffffffff8481169116148015610ff1575073ffffffffffffffffffffffffffffffffffffffff84163014155b1561101457611011612710610d506005548561159b90919063ffffffff16565b90505b305f908152600160205260409020546010547501000000000000000000000000000000000000000000900460ff16158015611069575060105473ffffffffffffffffffffffffffffffffffffffff8581169116145b80156110915750601054760100000000000000000000000000000000000000000000900460ff165b801561109e5750600e5481115b80156110ad5750600754600a54115b15611174576012544311156110c1575f6011555b60036011541061112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161058d565b61114a6111458461114084600d54611722565b611722565b611346565b47801561115a5761115a47611557565b60118054905f61116983611b2b565b909155505043601255505b505b80156111fb57305f908152600160205260409020546111959082611736565b305f818152600160205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111f29085815260200190565b60405180910390a35b73ffffffffffffffffffffffffffffffffffffffff84165f9081526001602052604090205461122a90836117ae565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604090205561128761125c83836117ae565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604090205490611736565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112dd85856117ae565b60405190815260200160405180910390a350505050565b5f8184841115611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d9190611835565b505f61133d8486611b62565b95945050505050565b601080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106113b9576113b9611b75565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611436573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145a9190611ba2565b8160018151811061146d5761146d611b75565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600f546114a0913091168461095b565b600f546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906114fe9085905f90869030904290600401611bbd565b5f604051808303815f87803b158015611515575f80fd5b505af1158015611527573d5f803e3d5ffd5b5050601080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b60045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015610426573d5f803e3d5ffd5b5f825f036115aa57505f610441565b5f6115b58385611ad6565b9050826115c28583611c48565b1461164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161058d565b9392505050565b5f61164f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117ef565b6116a36012600a611ac8565b6116b2906461f313f880611ad6565b600b556116c16012600a611ac8565b6116d0906461f313f880611ad6565b600c557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6117006012600a611ac8565b61170f906461f313f880611ad6565b60405190815260200160405180910390a1565b5f818311611730578261164f565b50919050565b5f806117428385611b18565b90508381101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161058d565b5f61164f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f4565b5f8183611829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d9190611835565b505f61133d8486611c48565b5f602080835283518060208501525f5b8181101561186157858101830151858201604001528201611845565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146118c0575f80fd5b50565b5f80604083850312156118d4575f80fd5b82356118df8161189f565b946020939093013593505050565b5f805f606084860312156118ff575f80fd5b833561190a8161189f565b9250602084013561191a8161189f565b929592945050506040919091013590565b5f6020828403121561193b575f80fd5b813561164f8161189f565b5f8060408385031215611957575f80fd5b82356119628161189f565b915060208301356119728161189f565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b80851115611a0357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156119e9576119e961197d565b808516156119f657918102915b93841c93908002906119af565b509250929050565b5f82611a1957506001610441565b81611a2557505f610441565b8160018114611a3b5760028114611a4557611a61565b6001915050610441565b60ff841115611a5657611a5661197d565b50506001821b610441565b5060208310610133831016604e8410600b8410161715611a84575081810a610441565b611a8e83836119aa565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611ac057611ac061197d565b029392505050565b5f61164f60ff841683611a0b565b80820281158282048414176104415761044161197d565b5f805f60608486031215611aff575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156104415761044161197d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b5b57611b5b61197d565b5060010190565b818103818111156104415761044161197d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb2575f80fd5b815161164f8161189f565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c1a57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611be8565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b5f82611c7b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206dcf30d2eecd27fd0224980be8fcac99aae4473ed9940fcb15e86c2e3a2e069e64736f6c63430008180033
0x6080604052610bb86005556014600655601460075560646008555f6009555f600a556127106012600a62000034919062000774565b62000045906461f313f8806200078b565b620000529060fa6200078b565b6200005e9190620007a5565b600b55612710620000726012600a62000774565b62000083906461f313f8806200078b565b620000909060fa6200078b565b6200009c9190620007a5565b600c55612710620000b06012600a62000774565b620000c1906461f313f8806200078b565b620000ce9060fa6200078b565b620000da9190620007a5565b600d55612710620000ee6012600a62000774565b620000ff906461f313f8806200078b565b6200010c9060c86200078b565b620001189190620007a5565b600e556010805461ffff60a81b191690555f601181905560128190556200013e620004df565b5f80546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000191620004df565b600480546001600160a01b0319166001600160a01b0392909216919091179055620001bf6012600a62000774565b620001d0906461f313f8806200078b565b305f908152600160208190526040822092909255600390620001f95f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003845282812080548616600190811790915560048054909316825290839020805490951617909355600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b81529151909363c45a01559383820193909291908290030181865afa158015620002b1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d79190620007c5565b6001600160a01b031663c9c6539630600f5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000337573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035d9190620007c5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620003a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ce9190620007c5565b601080546001600160a01b0319166001600160a01b03928316908117909155600f5460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af115801562000432573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004589190620007ed565b50600f54620004749030906001600160a01b03165f196200053a565b6200047e620004df565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004b76012600a62000774565b620004c8906461f313f8806200078b565b60405190815260200160405180910390a36200080e565b5f30330362000534575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050503601516001600160a01b03169150620005379050565b50335b90565b6001600160a01b038316620005a25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006055760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000599565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006b957815f19048211156200069d576200069d62000665565b80851615620006ab57918102915b93841c93908002906200067e565b509250929050565b5f82620006d1575060016200076e565b81620006df57505f6200076e565b8160018114620006f85760028114620007035762000723565b60019150506200076e565b60ff84111562000717576200071762000665565b50506001821b6200076e565b5060208310610133831016604e8410600b841016171562000748575081810a6200076e565b62000754838362000679565b805f19048211156200076a576200076a62000665565b0290505b92915050565b5f6200078460ff841683620006c1565b9392505050565b80820281158282048414176200076e576200076e62000665565b5f82620007c057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620007d6575f80fd5b81516001600160a01b038116811462000784575f80fd5b5f60208284031215620007fe575f80fd5b8151801515811462000784575f80fd5b611cde806200081c5f395ff3fe608060405260043610610126575f3560e01c80637d1db4a5116100a15780638f9a55c011610071578063a9059cbb11610057578063a9059cbb1461035d578063bf474bed1461037c578063dd62ed3e14610391575f80fd5b80638f9a55c01461030357806395d89b4114610318575f80fd5b80637d1db4a5146102935780638a8c523c146102a85780638da5cb5b146102bc5780638f58eef0146102ef575f80fd5b806318160ddd116100f6578063313ce567116100dc578063313ce5671461022357806370a082311461023e578063715018a61461027f575f80fd5b806318160ddd146101f057806323b872dd14610204575f80fd5b80630614117a1461013157806306fdde0314610147578063095ea7b31461019e5780630faee56f146101cd575f80fd5b3661012d57005b5f80fd5b34801561013c575f80fd5b506101456103e2565b005b348015610152575f80fd5b5060408051808201909152600981527f436f6f6c204465616c000000000000000000000000000000000000000000000060208201525b6040516101959190611835565b60405180910390f35b3480156101a9575f80fd5b506101bd6101b83660046118c3565b61042a565b6040519015158152602001610195565b3480156101d8575f80fd5b506101e2600d5481565b604051908152602001610195565b3480156101fb575f80fd5b506101e2610447565b34801561020f575f80fd5b506101bd61021e3660046118ed565b610468565b34801561022e575f80fd5b5060405160128152602001610195565b348015610249575f80fd5b506101e261025836600461192b565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b34801561028a575f80fd5b50610145610506565b34801561029e575f80fd5b506101e2600b5481565b3480156102b3575f80fd5b50610145610603565b3480156102c7575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610195565b3480156102fa575f80fd5b50610145610874565b34801561030e575f80fd5b506101e2600c5481565b348015610323575f80fd5b5060408051808201909152600481527f4445414c000000000000000000000000000000000000000000000000000000006020820152610188565b348015610368575f80fd5b506101bd6103773660046118c3565b6108e2565b348015610387575f80fd5b506101e2600e5481565b34801561039c575f80fd5b506101e26103ab366004611946565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b600454604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083905f818181858888f19350505050158015610426573d5f803e3d5ffd5b5050565b5f61043d6104366108f5565b848461095b565b5060015b92915050565b5f6104546012600a611ac8565b610463906461f313f880611ad6565b905090565b5f610474848484610b0d565b6104fc846104806108f5565b6104f785604051806060016040528060288152602001611c816028913973ffffffffffffffffffffffffffffffffffffffff8a165f908152600260205260408120906104ca6108f5565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205491906112f4565b61095b565b5060019392505050565b61050e6108f5565b5f5473ffffffffffffffffffffffffffffffffffffffff908116911614610596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61060b6108f5565b5f5473ffffffffffffffffffffffffffffffffffffffff90811691161461068e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058d565b60105474010000000000000000000000000000000000000000900460ff1615610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161058d565b600f5473ffffffffffffffffffffffffffffffffffffffff1663f305d719473061075e8173ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b5f8061077e5f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610809573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061082e9190611aed565b5050601080547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff1676010001000000000000000000000000000000000000000017905550565b60045473ffffffffffffffffffffffffffffffffffffffff166108956108f5565b73ffffffffffffffffffffffffffffffffffffffff16146108b4575f80fd5b305f9081526001602052604090205480156108d2576108d281611346565b4780156104265761042681611557565b5f61043d6108ee6108f5565b8484610b0d565b5f303303610955575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff1691506109589050565b50335b90565b73ffffffffffffffffffffffffffffffffffffffff83166109fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161058d565b73ffffffffffffffffffffffffffffffffffffffff8216610aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161058d565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610bb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161058d565b73ffffffffffffffffffffffffffffffffffffffff8216610c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161058d565b5f8111610ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161058d565b5f805473ffffffffffffffffffffffffffffffffffffffff858116911614801590610d2757505f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b1561117657600a545f03610d5957610d56612710610d506005548561159b90919063ffffffff16565b90611656565b90505b600a5415610d7f57610d7c612710610d506009548561159b90919063ffffffff16565b90505b600854600a5403610db757610d92611697565b5f5473ffffffffffffffffffffffffffffffffffffffff1615610db757610db7610596565b60105473ffffffffffffffffffffffffffffffffffffffff8581169116148015610dfc5750600f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b8015610e2d575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b15610fb157600b548210610e9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161058d565b600c5482610ecc8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b610ed69190611b18565b10610f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161058d565b600654600a54118015610f5157505f600554115b15610f7f57600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c0190555b610f9a612710610d506005548561159b90919063ffffffff16565b9050600854600a5411610fb157600a805460010190555b60105473ffffffffffffffffffffffffffffffffffffffff8481169116148015610ff1575073ffffffffffffffffffffffffffffffffffffffff84163014155b1561101457611011612710610d506005548561159b90919063ffffffff16565b90505b305f908152600160205260409020546010547501000000000000000000000000000000000000000000900460ff16158015611069575060105473ffffffffffffffffffffffffffffffffffffffff8581169116145b80156110915750601054760100000000000000000000000000000000000000000000900460ff165b801561109e5750600e5481115b80156110ad5750600754600a54115b15611174576012544311156110c1575f6011555b60036011541061112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161058d565b61114a6111458461114084600d54611722565b611722565b611346565b47801561115a5761115a47611557565b60118054905f61116983611b2b565b909155505043601255505b505b80156111fb57305f908152600160205260409020546111959082611736565b305f818152600160205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111f29085815260200190565b60405180910390a35b73ffffffffffffffffffffffffffffffffffffffff84165f9081526001602052604090205461122a90836117ae565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604090205561128761125c83836117ae565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604090205490611736565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112dd85856117ae565b60405190815260200160405180910390a350505050565b5f8184841115611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d9190611835565b505f61133d8486611b62565b95945050505050565b601080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106113b9576113b9611b75565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611436573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145a9190611ba2565b8160018151811061146d5761146d611b75565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600f546114a0913091168461095b565b600f546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906114fe9085905f90869030904290600401611bbd565b5f604051808303815f87803b158015611515575f80fd5b505af1158015611527573d5f803e3d5ffd5b5050601080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b60045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015610426573d5f803e3d5ffd5b5f825f036115aa57505f610441565b5f6115b58385611ad6565b9050826115c28583611c48565b1461164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161058d565b9392505050565b5f61164f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117ef565b6116a36012600a611ac8565b6116b2906461f313f880611ad6565b600b556116c16012600a611ac8565b6116d0906461f313f880611ad6565b600c557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6117006012600a611ac8565b61170f906461f313f880611ad6565b60405190815260200160405180910390a1565b5f818311611730578261164f565b50919050565b5f806117428385611b18565b90508381101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161058d565b5f61164f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f4565b5f8183611829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058d9190611835565b505f61133d8486611c48565b5f602080835283518060208501525f5b8181101561186157858101830151858201604001528201611845565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146118c0575f80fd5b50565b5f80604083850312156118d4575f80fd5b82356118df8161189f565b946020939093013593505050565b5f805f606084860312156118ff575f80fd5b833561190a8161189f565b9250602084013561191a8161189f565b929592945050506040919091013590565b5f6020828403121561193b575f80fd5b813561164f8161189f565b5f8060408385031215611957575f80fd5b82356119628161189f565b915060208301356119728161189f565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b80851115611a0357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156119e9576119e961197d565b808516156119f657918102915b93841c93908002906119af565b509250929050565b5f82611a1957506001610441565b81611a2557505f610441565b8160018114611a3b5760028114611a4557611a61565b6001915050610441565b60ff841115611a5657611a5661197d565b50506001821b610441565b5060208310610133831016604e8410600b8410161715611a84575081810a610441565b611a8e83836119aa565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611ac057611ac061197d565b029392505050565b5f61164f60ff841683611a0b565b80820281158282048414176104415761044161197d565b5f805f60608486031215611aff575f80fd5b8351925060208401519150604084015190509250925092565b808201808211156104415761044161197d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b5b57611b5b61197d565b5060010190565b818103818111156104415761044161197d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb2575f80fd5b815161164f8161189f565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c1a57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611be8565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b5f82611c7b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206dcf30d2eecd27fd0224980be8fcac99aae4473ed9940fcb15e86c2e3a2e069e64736f6c63430008180033