0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c806370a082311161009e5780639b792a441161006e5780639b792a4414610260578063a1c617f514610273578063a457c2d714610286578063a9059cbb14610299578063dd62ed3e146102ac575f80fd5b806370a0823114610205578063715018a61461022d5780638da5cb5b1461023557806395d89b4114610115575f80fd5b806323b872dd116100e457806323b872dd1461019f578063313ce567146101b257806335d16274146101cc57806339509351146101df57806366d38203146101f2575f80fd5b806306fdde0314610115578063095ea7b31461015057806318160ddd1461017357806318aee9201461018a575b5f80fd5b61013a6040518060400160405280600681526020016511119112119160d21b81525081565b6040516101479190610e13565b60405180910390f35b61016361015e366004610e85565b6102bf565b6040519015158152602001610147565b61017c60095481565b604051908152602001610147565b61019d610198366004610eaf565b6102d5565b005b6101636101ad366004610f2a565b61040f565b6101ba601281565b60405160ff9091168152602001610147565b61017c6101da366004610f68565b610430565b6101636101ed366004610e85565b61055c565b61019d610200366004610f68565b61057d565b61017c610213366004610f68565b6001600160a01b03165f9081526007602052604090205490565b61019d6105c9565b600254610248906001600160a01b031681565b6040516001600160a01b039091168152602001610147565b61016361026e366004610f97565b610605565b61019d610281366004610eaf565b6106af565b610163610294366004610e85565b6107bf565b6101636102a7366004610e85565b610844565b61017c6102ba366004611079565b610850565b5f6102cb33848461087a565b5060015b92915050565b6002546001600160a01b031633146103085760405162461bcd60e51b81526004016102ff906110b0565b60405180910390fd5b5f6064600954600561031a91906110fb565b6103249190611112565b90505f5b84811015610407575f86868381811061034357610343611131565b90506020020160208101906103589190610f68565b6001600160a01b0381165f9081526007602052604090205490915085116103f4575f610384828661099e565b6001600160a01b0383165f9081526007602052604090205490915084116103d7576001600160a01b0382165f90815260076020526040812080548392906103cc908490611145565b909155506103f29050565b6001600160a01b0382165f9081526007602052604090208190555b505b50806103ff81611158565b915050610328565b505050505050565b5f61041b8433846109c7565b610426848484610a3f565b5060019392505050565b5f805f60015f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610483573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a79190611186565b50915091505f846001600160a01b031660015f9054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610507573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052b91906111d2565b6001600160a01b03161461054857816001600160701b0316610553565b826001600160701b03165b95945050505050565b5f3361042681858561056e8383610850565b6105789190611145565b61087a565b6002546001600160a01b031633146105a75760405162461bcd60e51b81526004016102ff906110b0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146105f35760405162461bcd60e51b81526004016102ff906110b0565b600280546001600160a01b0319169055565b6003545f906001600160a01b031633146106615760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865204f776e657200000000000000000060448201526064016102ff565b5f5b85518110156106a35761069186828151811061068157610681611131565b6020026020010151868686610c15565b8061069b81611158565b915050610663565b50600195945050505050565b5f5b838110156107b8578484828181106106cb576106cb611131565b90506020020160208101906106e09190610f68565b600554604080518681525f60208201819052818301526060810186905290516001600160a01b0393841693909216917f75b2fdf4488954cfbe3fad3f07ca6ebf12156d6b897c6df1014d7c51ed3227719181900360800190a384848281811061074b5761074b611131565b90506020020160208101906107609190610f68565b6006546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806107b081611158565b9150506106b1565b5050505050565b5f33816107cc8286610850565b90508381101561082c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102ff565b610839828686840361087a565b506001949350505050565b5f6102cb338484610a3f565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6001600160a01b0383166108dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102ff565b6001600160a01b03821661093d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102ff565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382165f908152600760205260408120546109c09083610ca6565b9392505050565b5f6109d28484610850565b90505f198114610a395781811015610a2c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016102ff565b610a39848484840361087a565b50505050565b6001600160a01b038316610aa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102ff565b6001600160a01b038216610b055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102ff565b6001600160a01b0383165f9081526007602052604090205481811015610b7c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102ff565b610b868183610cb1565b6001600160a01b038086165f908152600760205260408082209390935590851681522054610bb49083610d15565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c079086815260200190565b60405180910390a350505050565b610c1f8484610d73565b610c2a838386610dbb565b6001546040516370ab58db60e11b81526001600160a01b0386811660048301529182166024820152604481018490529082169063e156b1b6906064016020604051808303815f875af1158015610c82573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b891906111ed565b5f6109c08284611112565b5f82821115610d025760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016102ff565b5f610d0d838561120c565b949350505050565b5f80610d218385611145565b9050838110156109c05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016102ff565b6001546040518281526001600160a01b038481169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600454604080518581525f6020820181905291810191909152606081018490526001600160a01b038381169216907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82290608001610991565b5f6020808352835180828501525f5b81811015610e3e57858101830151858201604001528201610e22565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e72575f80fd5b50565b8035610e8081610e5e565b919050565b5f8060408385031215610e96575f80fd5b8235610ea181610e5e565b946020939093013593505050565b5f805f8060608587031215610ec2575f80fd5b843567ffffffffffffffff80821115610ed9575f80fd5b818701915087601f830112610eec575f80fd5b813581811115610efa575f80fd5b8860208260051b8501011115610f0e575f80fd5b6020928301999098509187013596604001359550909350505050565b5f805f60608486031215610f3c575f80fd5b8335610f4781610e5e565b92506020840135610f5781610e5e565b929592945050506040919091013590565b5f60208284031215610f78575f80fd5b81356109c081610e5e565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610faa575f80fd5b843567ffffffffffffffff80821115610fc1575f80fd5b818701915087601f830112610fd4575f80fd5b8135602082821115610fe857610fe8610f83565b8160051b604051601f19603f8301168101818110868211171561100d5761100d610f83565b60405292835281830193508481018201928b84111561102a575f80fd5b948201945b8386101561104f5761104086610e75565b8552948201949382019361102f565b985050880135955050506040860135925061106e905060608601610e75565b905092959194509250565b5f806040838503121561108a575f80fd5b823561109581610e5e565b915060208301356110a581610e5e565b809150509250929050565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102cf576102cf6110e7565b5f8261112c57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b808201808211156102cf576102cf6110e7565b5f60018201611169576111696110e7565b5060010190565b80516001600160701b0381168114610e80575f80fd5b5f805f60608486031215611198575f80fd5b6111a184611170565b92506111af60208501611170565b9150604084015163ffffffff811681146111c7575f80fd5b809150509250925092565b5f602082840312156111e2575f80fd5b81516109c081610e5e565b5f602082840312156111fd575f80fd5b815180151581146109c0575f80fd5b818103818111156102cf576102cf6110e756fea26469706673582212204b5669e5c9a1ca92eb50ae5ba7e9292f87dda2dc9d1c20f543b5793bbb155e3e64736f6c63430008140033
0x6080604052600480546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556005805490911673ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b1790556a3913517ebd3c0c65000000600955348015610066575f80fd5b5060028054336001600160a01b03199182168117909255600380548216909217909155600480545f80546001600160a01b039092169190931681179092556040805163c45a015560e01b8152905163c45a0155928281019260209291908290030181865afa1580156100da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fe919061025c565b6001600160a01b031663c9c65396305f8054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017f919061025c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156101c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ed919061025c565b600180546001600160a01b0319166001600160a01b0392909216919091179055600954335f81815260076020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610289565b5f6020828403121561026c575f80fd5b81516001600160a01b0381168114610282575f80fd5b9392505050565b61125580620002975f395ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c806370a082311161009e5780639b792a441161006e5780639b792a4414610260578063a1c617f514610273578063a457c2d714610286578063a9059cbb14610299578063dd62ed3e146102ac575f80fd5b806370a0823114610205578063715018a61461022d5780638da5cb5b1461023557806395d89b4114610115575f80fd5b806323b872dd116100e457806323b872dd1461019f578063313ce567146101b257806335d16274146101cc57806339509351146101df57806366d38203146101f2575f80fd5b806306fdde0314610115578063095ea7b31461015057806318160ddd1461017357806318aee9201461018a575b5f80fd5b61013a6040518060400160405280600681526020016511119112119160d21b81525081565b6040516101479190610e13565b60405180910390f35b61016361015e366004610e85565b6102bf565b6040519015158152602001610147565b61017c60095481565b604051908152602001610147565b61019d610198366004610eaf565b6102d5565b005b6101636101ad366004610f2a565b61040f565b6101ba601281565b60405160ff9091168152602001610147565b61017c6101da366004610f68565b610430565b6101636101ed366004610e85565b61055c565b61019d610200366004610f68565b61057d565b61017c610213366004610f68565b6001600160a01b03165f9081526007602052604090205490565b61019d6105c9565b600254610248906001600160a01b031681565b6040516001600160a01b039091168152602001610147565b61016361026e366004610f97565b610605565b61019d610281366004610eaf565b6106af565b610163610294366004610e85565b6107bf565b6101636102a7366004610e85565b610844565b61017c6102ba366004611079565b610850565b5f6102cb33848461087a565b5060015b92915050565b6002546001600160a01b031633146103085760405162461bcd60e51b81526004016102ff906110b0565b60405180910390fd5b5f6064600954600561031a91906110fb565b6103249190611112565b90505f5b84811015610407575f86868381811061034357610343611131565b90506020020160208101906103589190610f68565b6001600160a01b0381165f9081526007602052604090205490915085116103f4575f610384828661099e565b6001600160a01b0383165f9081526007602052604090205490915084116103d7576001600160a01b0382165f90815260076020526040812080548392906103cc908490611145565b909155506103f29050565b6001600160a01b0382165f9081526007602052604090208190555b505b50806103ff81611158565b915050610328565b505050505050565b5f61041b8433846109c7565b610426848484610a3f565b5060019392505050565b5f805f60015f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610483573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a79190611186565b50915091505f846001600160a01b031660015f9054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610507573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052b91906111d2565b6001600160a01b03161461054857816001600160701b0316610553565b826001600160701b03165b95945050505050565b5f3361042681858561056e8383610850565b6105789190611145565b61087a565b6002546001600160a01b031633146105a75760405162461bcd60e51b81526004016102ff906110b0565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146105f35760405162461bcd60e51b81526004016102ff906110b0565b600280546001600160a01b0319169055565b6003545f906001600160a01b031633146106615760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865204f776e657200000000000000000060448201526064016102ff565b5f5b85518110156106a35761069186828151811061068157610681611131565b6020026020010151868686610c15565b8061069b81611158565b915050610663565b50600195945050505050565b5f5b838110156107b8578484828181106106cb576106cb611131565b90506020020160208101906106e09190610f68565b600554604080518681525f60208201819052818301526060810186905290516001600160a01b0393841693909216917f75b2fdf4488954cfbe3fad3f07ca6ebf12156d6b897c6df1014d7c51ed3227719181900360800190a384848281811061074b5761074b611131565b90506020020160208101906107609190610f68565b6006546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806107b081611158565b9150506106b1565b5050505050565b5f33816107cc8286610850565b90508381101561082c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102ff565b610839828686840361087a565b506001949350505050565b5f6102cb338484610a3f565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6001600160a01b0383166108dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102ff565b6001600160a01b03821661093d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102ff565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382165f908152600760205260408120546109c09083610ca6565b9392505050565b5f6109d28484610850565b90505f198114610a395781811015610a2c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016102ff565b610a39848484840361087a565b50505050565b6001600160a01b038316610aa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102ff565b6001600160a01b038216610b055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102ff565b6001600160a01b0383165f9081526007602052604090205481811015610b7c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102ff565b610b868183610cb1565b6001600160a01b038086165f908152600760205260408082209390935590851681522054610bb49083610d15565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c079086815260200190565b60405180910390a350505050565b610c1f8484610d73565b610c2a838386610dbb565b6001546040516370ab58db60e11b81526001600160a01b0386811660048301529182166024820152604481018490529082169063e156b1b6906064016020604051808303815f875af1158015610c82573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b891906111ed565b5f6109c08284611112565b5f82821115610d025760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016102ff565b5f610d0d838561120c565b949350505050565b5f80610d218385611145565b9050838110156109c05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016102ff565b6001546040518281526001600160a01b038481169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600454604080518581525f6020820181905291810191909152606081018490526001600160a01b038381169216907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82290608001610991565b5f6020808352835180828501525f5b81811015610e3e57858101830151858201604001528201610e22565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e72575f80fd5b50565b8035610e8081610e5e565b919050565b5f8060408385031215610e96575f80fd5b8235610ea181610e5e565b946020939093013593505050565b5f805f8060608587031215610ec2575f80fd5b843567ffffffffffffffff80821115610ed9575f80fd5b818701915087601f830112610eec575f80fd5b813581811115610efa575f80fd5b8860208260051b8501011115610f0e575f80fd5b6020928301999098509187013596604001359550909350505050565b5f805f60608486031215610f3c575f80fd5b8335610f4781610e5e565b92506020840135610f5781610e5e565b929592945050506040919091013590565b5f60208284031215610f78575f80fd5b81356109c081610e5e565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610faa575f80fd5b843567ffffffffffffffff80821115610fc1575f80fd5b818701915087601f830112610fd4575f80fd5b8135602082821115610fe857610fe8610f83565b8160051b604051601f19603f8301168101818110868211171561100d5761100d610f83565b60405292835281830193508481018201928b84111561102a575f80fd5b948201945b8386101561104f5761104086610e75565b8552948201949382019361102f565b985050880135955050506040860135925061106e905060608601610e75565b905092959194509250565b5f806040838503121561108a575f80fd5b823561109581610e5e565b915060208301356110a581610e5e565b809150509250929050565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102cf576102cf6110e7565b5f8261112c57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b808201808211156102cf576102cf6110e7565b5f60018201611169576111696110e7565b5060010190565b80516001600160701b0381168114610e80575f80fd5b5f805f60608486031215611198575f80fd5b6111a184611170565b92506111af60208501611170565b9150604084015163ffffffff811681146111c7575f80fd5b809150509250925092565b5f602082840312156111e2575f80fd5b81516109c081610e5e565b5f602082840312156111fd575f80fd5b815180151581146109c0575f80fd5b818103818111156102cf576102cf6110e756fea26469706673582212204b5669e5c9a1ca92eb50ae5ba7e9292f87dda2dc9d1c20f543b5793bbb155e3e64736f6c63430008140033