0x6080604052600436106100dc575f3560e01c80635408d42d1161007c57806395d89b411161005757806395d89b4114610284578063a8aa1b3114610298578063a9059cbb146102cf578063dd62ed3e146102ee575f80fd5b80635408d42d1461022657806370a082311461023a5780637a7986bb14610265575f80fd5b806323b872dd116100b757806323b872dd14610162578063313ce567146101815780633190b74c146101a75780634abe3052146101c8575f80fd5b806306fdde03146100e7578063095ea7b31461011157806318160ddd14610140575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b506100fb610324565b6040516101089190610bad565b60405180910390f35b34801561011c575f80fd5b5061013061012b366004610bd6565b6103b3565b6040519015158152602001610108565b34801561014b575f80fd5b5061015461041f565b604051908152602001610108565b34801561016d575f80fd5b5061013061017c366004610c00565b61043b565b34801561018c575f80fd5b50610195601281565b60405160ff9091168152602001610108565b3480156101b2575f80fd5b506101c66101c1366004610c53565b610488565b005b3480156101d3575f80fd5b506002546101fd906001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b604080516001600160a01b03909416845260ff9283166020850152911690820152606001610108565b348015610231575f80fd5b506101c66104e6565b348015610245575f80fd5b50610154610254366004610c84565b60036020525f908152604090205481565b348015610270575f80fd5b506101c661027f366004610d3c565b61069c565b34801561028f575f80fd5b506100fb61071e565b3480156102a3575f80fd5b506005546102b7906001600160a01b031681565b6040516001600160a01b039091168152602001610108565b3480156102da575f80fd5b506101306102e9366004610bd6565b61072d565b3480156102f9575f80fd5b50610154610308366004610d9c565b600460209081525f928352604080842090915290825290205481565b60605f805461033290610dd3565b80601f016020809104026020016040519081016040528092919081815260200182805461035e90610dd3565b80156103a95780601f10610380576101008083540402835291602001916103a9565b820191905f5260205f20905b81548152906001019060200180831161038c57829003601f168201915b5050505050905090565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061040d9086815260200190565b60405180910390a35060015b92915050565b61042b6012600a610eff565b6104389062989680610f0d565b81565b6001600160a01b0383165f90815260046020908152604080832033845290915281208054839190839061046f908490610f24565b909155506104809050848484610740565b949350505050565b6002546001600160a01b031633146104b257604051629af2b160e81b815260040160405180910390fd5b6002805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b6002546001600160a01b031633146104fc575f80fd5b600554600160a81b900460ff1615610512575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610563573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105879190610f37565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fe9190610f37565b60405163e6a4390560e01b81523060048201526001600160a01b0380831660248301529192505f9184169063e6a4390590604401602060405180830381865afa15801561064d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106719190610f37565b60058054600161ff0160a01b0319166001600160a01b0390921691909117600160a81b179055505050565b6002546001600160a01b031633146106c657604051629af2b160e81b815260040160405180910390fd5b5f6106d18382610f9e565b5060016106de8282610f9e565b507f85b9b94225b878231ce4d0b490112fdc3c3c72eb38733899a8c469c46ad63cb08282336040516107129392919061105e565b60405180910390a15050565b60606001805461033290610dd3565b5f610739338484610740565b9392505050565b5f806107546002546001600160a01b031690565b600554909150600160a81b900460ff16806107805750806001600160a01b0316856001600160a01b0316145b8061079c5750806001600160a01b0316846001600160a01b0316145b6107a4575f80fd5b6001600160a01b0385165f90815260036020526040812080548592906107cb908490610f24565b90915550506005546001600160a01b0385811691161480156107f75750600554600160a01b900460ff16155b80156108355750606461080c6012600a610eff565b6108199062989680610f0d565b610823919061109b565b305f9081526003602052604090205410155b80156108535750806001600160a01b0316856001600160a01b031614155b15610a30576005805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061089e5761089e6110ba565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109329190610f37565b81600181518110610945576109456110ba565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63791ac94760646109856012600a610eff565b6109929062989680610f0d565b61099c919061109b565b5f8430426040518663ffffffff1660e01b81526004016109c09594939291906110ce565b5f604051808303815f87803b1580156109d7575f80fd5b505af11580156109e9573d5f803e3d5ffd5b50506040516001600160a01b03851692504780156108fc029250905f818181858888f19350505050158015610a20573d5f803e3d5ffd5b50506005805460ff60a01b191690555b60025460ff600160a01b8204811691600160a81b9004166001600160a01b0387163014801590610a6e5750600554600160a81b900460ff1615156001145b15610ae2576005545f906064906001600160a01b03898116911614610a935783610a95565b825b610aa29060ff1688610f0d565b610aac919061109b565b9050610ab88187610f24565b305f90815260036020526040812080549298508392909190610adb90849061113f565b9091555050505b6001600160a01b0386165f9081526003602052604081208054879290610b0990849061113f565b92505081905550856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610b5591815260200190565b60405180910390a35060019695505050505050565b5f81518084525f5b81811015610b8e57602081850181015186830182015201610b72565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6107396020830184610b6a565b6001600160a01b0381168114610bd3575f80fd5b50565b5f8060408385031215610be7575f80fd5b8235610bf281610bbf565b946020939093013593505050565b5f805f60608486031215610c12575f80fd5b8335610c1d81610bbf565b92506020840135610c2d81610bbf565b929592945050506040919091013590565b803560ff81168114610c4e575f80fd5b919050565b5f8060408385031215610c64575f80fd5b610c6d83610c3e565b9150610c7b60208401610c3e565b90509250929050565b5f60208284031215610c94575f80fd5b813561073981610bbf565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610cc2575f80fd5b813567ffffffffffffffff80821115610cdd57610cdd610c9f565b604051601f8301601f19908116603f01168101908282118183101715610d0557610d05610c9f565b81604052838152866020858801011115610d1d575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215610d4d575f80fd5b823567ffffffffffffffff80821115610d64575f80fd5b610d7086838701610cb3565b93506020850135915080821115610d85575f80fd5b50610d9285828601610cb3565b9150509250929050565b5f8060408385031215610dad575f80fd5b8235610db881610bbf565b91506020830135610dc881610bbf565b809150509250929050565b600181811c90821680610de757607f821691505b602082108103610e0557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610e5957815f1904821115610e3f57610e3f610e0b565b80851615610e4c57918102915b93841c9390800290610e24565b509250929050565b5f82610e6f57506001610419565b81610e7b57505f610419565b8160018114610e915760028114610e9b57610eb7565b6001915050610419565b60ff841115610eac57610eac610e0b565b50506001821b610419565b5060208310610133831016604e8410600b8410161715610eda575081810a610419565b610ee48383610e1f565b805f1904821115610ef757610ef7610e0b565b029392505050565b5f61073960ff841683610e61565b808202811582820484141761041957610419610e0b565b8181038181111561041957610419610e0b565b5f60208284031215610f47575f80fd5b815161073981610bbf565b601f821115610f9957805f5260205f20601f840160051c81016020851015610f775750805b601f840160051c820191505b81811015610f96575f8155600101610f83565b50505b505050565b815167ffffffffffffffff811115610fb857610fb8610c9f565b610fcc81610fc68454610dd3565b84610f52565b602080601f831160018114610fff575f8415610fe85750858301515b5f19600386901b1c1916600185901b178555611056565b5f85815260208120601f198616915b8281101561102d5788860151825594840194600190910190840161100e565b508582101561104a57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b606081525f6110706060830186610b6a565b82810360208401526110828186610b6a565b91505060018060a01b0383166040830152949350505050565b5f826110b557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561111e5784516001600160a01b0316835293830193918301916001016110f9565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561041957610419610e0b56fea26469706673582212203df20c110bd95935fe4568eee5bb37e9eaa605c7590ec1d6e5c3888edafc81f464736f6c63430008170033
0x60c060405260116080908152705368656c7465722053656375726520414960781b60a0525f90620000319082620001f9565b506040805180820190915260048152635353414960e01b60208201526001906200005c9082620001f9565b5034801562000069575f80fd5b5060408051606081018252338082525f6020830181905291909201819052600280546001600160b01b03191661ffff60a01b199093169290921790915580620000b56012600a620003d4565b620000c49062989680620003eb565b335f8181526003602090815260408083209490945530825260048152838220737a250d5630b4cf539739df2c5dacb4c659f2488d835290529182205f199055907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001336012600a620003d4565b620001429062989680620003eb565b60405190815260200160405180910390a3505062000405565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200018457607f821691505b602082108103620001a357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001f457805f5260205f20601f840160051c81016020851015620001d05750805b601f840160051c820191505b81811015620001f1575f8155600101620001dc565b50505b505050565b81516001600160401b038111156200021557620002156200015b565b6200022d816200022684546200016f565b84620001a9565b602080601f83116001811462000263575f84156200024b5750858301515b5f19600386901b1c1916600185901b178555620002bd565b5f85815260208120601f198616915b82811015620002935788860151825594840194600190910190840162000272565b5085821015620002b157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200031957815f1904821115620002fd57620002fd620002c5565b808516156200030b57918102915b93841c9390800290620002de565b509250929050565b5f826200033157506001620003ce565b816200033f57505f620003ce565b8160018114620003585760028114620003635762000383565b6001915050620003ce565b60ff841115620003775762000377620002c5565b50506001821b620003ce565b5060208310610133831016604e8410600b8410161715620003a8575081810a620003ce565b620003b48383620002d9565b805f1904821115620003ca57620003ca620002c5565b0290505b92915050565b5f620003e460ff84168362000321565b9392505050565b8082028115828204841417620003ce57620003ce620002c5565b61118880620004135f395ff3fe6080604052600436106100dc575f3560e01c80635408d42d1161007c57806395d89b411161005757806395d89b4114610284578063a8aa1b3114610298578063a9059cbb146102cf578063dd62ed3e146102ee575f80fd5b80635408d42d1461022657806370a082311461023a5780637a7986bb14610265575f80fd5b806323b872dd116100b757806323b872dd14610162578063313ce567146101815780633190b74c146101a75780634abe3052146101c8575f80fd5b806306fdde03146100e7578063095ea7b31461011157806318160ddd14610140575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b506100fb610324565b6040516101089190610bad565b60405180910390f35b34801561011c575f80fd5b5061013061012b366004610bd6565b6103b3565b6040519015158152602001610108565b34801561014b575f80fd5b5061015461041f565b604051908152602001610108565b34801561016d575f80fd5b5061013061017c366004610c00565b61043b565b34801561018c575f80fd5b50610195601281565b60405160ff9091168152602001610108565b3480156101b2575f80fd5b506101c66101c1366004610c53565b610488565b005b3480156101d3575f80fd5b506002546101fd906001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b604080516001600160a01b03909416845260ff9283166020850152911690820152606001610108565b348015610231575f80fd5b506101c66104e6565b348015610245575f80fd5b50610154610254366004610c84565b60036020525f908152604090205481565b348015610270575f80fd5b506101c661027f366004610d3c565b61069c565b34801561028f575f80fd5b506100fb61071e565b3480156102a3575f80fd5b506005546102b7906001600160a01b031681565b6040516001600160a01b039091168152602001610108565b3480156102da575f80fd5b506101306102e9366004610bd6565b61072d565b3480156102f9575f80fd5b50610154610308366004610d9c565b600460209081525f928352604080842090915290825290205481565b60605f805461033290610dd3565b80601f016020809104026020016040519081016040528092919081815260200182805461035e90610dd3565b80156103a95780601f10610380576101008083540402835291602001916103a9565b820191905f5260205f20905b81548152906001019060200180831161038c57829003601f168201915b5050505050905090565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061040d9086815260200190565b60405180910390a35060015b92915050565b61042b6012600a610eff565b6104389062989680610f0d565b81565b6001600160a01b0383165f90815260046020908152604080832033845290915281208054839190839061046f908490610f24565b909155506104809050848484610740565b949350505050565b6002546001600160a01b031633146104b257604051629af2b160e81b815260040160405180910390fd5b6002805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b6002546001600160a01b031633146104fc575f80fd5b600554600160a81b900460ff1615610512575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610563573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105879190610f37565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fe9190610f37565b60405163e6a4390560e01b81523060048201526001600160a01b0380831660248301529192505f9184169063e6a4390590604401602060405180830381865afa15801561064d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106719190610f37565b60058054600161ff0160a01b0319166001600160a01b0390921691909117600160a81b179055505050565b6002546001600160a01b031633146106c657604051629af2b160e81b815260040160405180910390fd5b5f6106d18382610f9e565b5060016106de8282610f9e565b507f85b9b94225b878231ce4d0b490112fdc3c3c72eb38733899a8c469c46ad63cb08282336040516107129392919061105e565b60405180910390a15050565b60606001805461033290610dd3565b5f610739338484610740565b9392505050565b5f806107546002546001600160a01b031690565b600554909150600160a81b900460ff16806107805750806001600160a01b0316856001600160a01b0316145b8061079c5750806001600160a01b0316846001600160a01b0316145b6107a4575f80fd5b6001600160a01b0385165f90815260036020526040812080548592906107cb908490610f24565b90915550506005546001600160a01b0385811691161480156107f75750600554600160a01b900460ff16155b80156108355750606461080c6012600a610eff565b6108199062989680610f0d565b610823919061109b565b305f9081526003602052604090205410155b80156108535750806001600160a01b0316856001600160a01b031614155b15610a30576005805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061089e5761089e6110ba565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109329190610f37565b81600181518110610945576109456110ba565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63791ac94760646109856012600a610eff565b6109929062989680610f0d565b61099c919061109b565b5f8430426040518663ffffffff1660e01b81526004016109c09594939291906110ce565b5f604051808303815f87803b1580156109d7575f80fd5b505af11580156109e9573d5f803e3d5ffd5b50506040516001600160a01b03851692504780156108fc029250905f818181858888f19350505050158015610a20573d5f803e3d5ffd5b50506005805460ff60a01b191690555b60025460ff600160a01b8204811691600160a81b9004166001600160a01b0387163014801590610a6e5750600554600160a81b900460ff1615156001145b15610ae2576005545f906064906001600160a01b03898116911614610a935783610a95565b825b610aa29060ff1688610f0d565b610aac919061109b565b9050610ab88187610f24565b305f90815260036020526040812080549298508392909190610adb90849061113f565b9091555050505b6001600160a01b0386165f9081526003602052604081208054879290610b0990849061113f565b92505081905550856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610b5591815260200190565b60405180910390a35060019695505050505050565b5f81518084525f5b81811015610b8e57602081850181015186830182015201610b72565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f6107396020830184610b6a565b6001600160a01b0381168114610bd3575f80fd5b50565b5f8060408385031215610be7575f80fd5b8235610bf281610bbf565b946020939093013593505050565b5f805f60608486031215610c12575f80fd5b8335610c1d81610bbf565b92506020840135610c2d81610bbf565b929592945050506040919091013590565b803560ff81168114610c4e575f80fd5b919050565b5f8060408385031215610c64575f80fd5b610c6d83610c3e565b9150610c7b60208401610c3e565b90509250929050565b5f60208284031215610c94575f80fd5b813561073981610bbf565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610cc2575f80fd5b813567ffffffffffffffff80821115610cdd57610cdd610c9f565b604051601f8301601f19908116603f01168101908282118183101715610d0557610d05610c9f565b81604052838152866020858801011115610d1d575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215610d4d575f80fd5b823567ffffffffffffffff80821115610d64575f80fd5b610d7086838701610cb3565b93506020850135915080821115610d85575f80fd5b50610d9285828601610cb3565b9150509250929050565b5f8060408385031215610dad575f80fd5b8235610db881610bbf565b91506020830135610dc881610bbf565b809150509250929050565b600181811c90821680610de757607f821691505b602082108103610e0557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610e5957815f1904821115610e3f57610e3f610e0b565b80851615610e4c57918102915b93841c9390800290610e24565b509250929050565b5f82610e6f57506001610419565b81610e7b57505f610419565b8160018114610e915760028114610e9b57610eb7565b6001915050610419565b60ff841115610eac57610eac610e0b565b50506001821b610419565b5060208310610133831016604e8410600b8410161715610eda575081810a610419565b610ee48383610e1f565b805f1904821115610ef757610ef7610e0b565b029392505050565b5f61073960ff841683610e61565b808202811582820484141761041957610419610e0b565b8181038181111561041957610419610e0b565b5f60208284031215610f47575f80fd5b815161073981610bbf565b601f821115610f9957805f5260205f20601f840160051c81016020851015610f775750805b601f840160051c820191505b81811015610f96575f8155600101610f83565b50505b505050565b815167ffffffffffffffff811115610fb857610fb8610c9f565b610fcc81610fc68454610dd3565b84610f52565b602080601f831160018114610fff575f8415610fe85750858301515b5f19600386901b1c1916600185901b178555611056565b5f85815260208120601f198616915b8281101561102d5788860151825594840194600190910190840161100e565b508582101561104a57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b606081525f6110706060830186610b6a565b82810360208401526110828186610b6a565b91505060018060a01b0383166040830152949350505050565b5f826110b557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561111e5784516001600160a01b0316835293830193918301916001016110f9565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561041957610419610e0b56fea26469706673582212203df20c110bd95935fe4568eee5bb37e9eaa605c7590ec1d6e5c3888edafc81f464736f6c63430008170033