0x608060405234801561001057600080fd5b50600436106100935760003560e01c806341f8aa881161006657806341f8aa881461016f5780637dc0d1d014610195578063be27b22c1461019d578063d94585bd1461025b578063f77c47911461040957610093565b806301ffc9a71461009857806302fb0c5e146100d357806311344ce6146100db5780633f15457f1461014b575b600080fd5b6100bf600480360360208110156100ae57600080fd5b50356001600160e01b031916610411565b604080519115158252519081900360200190f35b6100bf6104e9565b610149600480360360208110156100f157600080fd5b810190602081018135600160201b81111561010b57600080fd5b82018360208201111561011d57600080fd5b803590602001918460018302840111600160201b8311171561013e57600080fd5b5090925090506104f2565b005b610153610667565b604080516001600160a01b039092168252519081900360200190f35b6101496004803603602081101561018557600080fd5b50356001600160a01b0316610676565b610153610719565b610149600480360360408110156101b357600080fd5b810190602081018135600160201b8111156101cd57600080fd5b8201836020820111156101df57600080fd5b803590602001918460018302840111600160201b8311171561020057600080fd5b919390929091602081019035600160201b81111561021d57600080fd5b82018360208201111561022f57600080fd5b803590602001918460018302840111600160201b8311171561025057600080fd5b509092509050610728565b6101496004803603606081101561027157600080fd5b810190602081018135600160201b81111561028b57600080fd5b82018360208201111561029d57600080fd5b803590602001918460018302840111600160201b831117156102be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460018302840111600160201b8311171561034357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111600160201b831117156103c857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610906945050505050565b610153610c2c565b604080517f737570706f727473496e74657266616365286279746573342900000000000000815290519081900360190190206000906001600160e01b0319838116911614806104e3575060408051676f7261636c65282960c01b815281519081900360080181207f70726f7665416e64436c61696d2862797465732c62797465732c6279746573298252825191829003602001822071636c61696d2862797465732c62797465732960701b83529251918290036012019091206001600160e01b03198581169190931890911891909116145b92915050565b60055460ff1681565b60055460ff1661050157600080fd5b6000546001600160a01b0316331461051857600080fd5b6000808383604051602001808383808284376040805191909301818103601f190182528084528151602090920191909120600480546002546003546306ab592360e01b8652928501829052602485018490526001600160a01b0392831660448601529551929a50985090931695506306ab592394506064808201945060009392509082900301818387803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b5050600354600454604080516020808201939093528082018890528151808203830181526060820192839052805190840120928252608081018990526001600160a01b0390931694509092507fa2e66ce20e6fb2c4f61339c364ad79f15160cf5307230c8bc4d628adbca2ba399188918891819060a001848480828437600083820152604051601f909101601f19169092018290039550909350505050a350505050565b6002546001600160a01b031681565b60055460ff1661068557600080fd5b6000546001600160a01b0316331461069c57600080fd5b6002546004805460408051635b0fc9c360e01b8152928301919091526001600160a01b0384811660248401529051921691635b0fc9c39160448082019260009290919082900301818387803b1580156106f457600080fd5b505af1158015610708573d6000803e3d6000fd5b50506005805460ff19169055505050565b6001546001600160a01b031681565b600154604080516020601f87018190048102820181019092528581526000926107ac926001600160a01b039091169190889088908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250610c3b92505050565b50809150506000806107f387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eae92505050565b600254604080516306ab592360e01b815260048101849052602481018590526001600160a01b038881166044830152915194965092945016916306ab59239160648082019260009290919082900301818387803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b50506040805160208082018690528183018790528251808303840181526060830193849052805190820120908352608082018b90526001600160a01b038816945092507fa2e66ce20e6fb2c4f61339c364ad79f15160cf5307230c8bc4d628adbca2ba39918b918b9190819060a001848480828437600083820152604051601f909101601f19169092018290039550909350505050a350505050505050565b600154604080516376a14d1d60e01b8152600481019182528451604482015284516001600160a01b03909316926376a14d1d928692869282916024810191606490910190602087019080838360005b8381101561096d578181015183820152602001610955565b50505050905090810190601f16801561099a5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156109cd5781810151838201526020016109b5565b50505050905090810190601f1680156109fa5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610a1b57600080fd5b505af1158015610a2f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610a5857600080fd5b8101908080516040519392919084600160201b821115610a7757600080fd5b908301906020820185811115610a8c57600080fd5b8251600160201b811182820188101715610aa557600080fd5b82525081516020918201929091019080838360005b83811015610ad2578181015183820152602001610aba565b50505050905090810190601f168015610aff5780820380516001836020036101000a031916815260200191505b506040818152632f89ec8b60e21b825260048201908152885160448301528851959650309563be27b22c955089945087935090918291602482019160640190602087019080838360005b83811015610b61578181015183820152602001610b49565b50505050905090810190601f168015610b8e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610bc1578181015183820152602001610ba9565b50505050905090810190601f168015610bee5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031681565b600080610c466113fa565b8451610c5c90829060050163ffffffff610f6316565b50604080518082019091526005815264045f656e7360d81b6020820152610c8a90829063ffffffff610f9b16565b50610c9b818663ffffffff610f9b16565b5080516040805163021e646f60e21b81526010600482018181526024830193845284516044840152845160009586956001600160a01b038e169563087991bc9594929360649091019060208501908083838c5b83811015610d06578181015183820152602001610cee565b50505050905090810190601f168015610d335780820380516001836020036101000a031916815260200191505b50935050505060606040518083038186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d6060811015610d7b57600080fd5b506020810151604090910151925090506bffffffffffffffffffffffff198216158015610da757508551155b15610dbc575060009350839250610ea6915050565b855160208701206bffffffffffffffffffffffff19838116911614610de057600080fd5b610de8611414565b610df987600063ffffffff610fbc16565b90505b610e0581610fd7565b610e9a5742816080015163ffffffff16830167ffffffffffffffff161015610e5e5760405162461bcd60e51b815260040180806020018281038252603c815260200180611460603c913960400191505060405180910390fd5b600080610e6f898460a00151610fe5565b925090508115610e8a57965060019550610ea6945050505050565b5050610e958161104f565b610dfc565b50600094508493505050505b935093915050565b60008080610ec2848263ffffffff61112216565b60ff1690506000610edc856001840163ffffffff61112216565b60ff169050610ef68560028484010163ffffffff61112216565b60ff1615610f0357600080fd5b610f158560018463ffffffff61114116565b6000610f2b87600286018563ffffffff61114116565b604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120935093505050915091565b610f6b6113fa565b6020820615610f805760208206602003820191505b50602082018190526040805180845260008152909101905290565b610fa36113fa565b610fb58384600001515184855161115d565b9392505050565b610fc4611414565b82815260c081018290526104e38161104f565b805151602090910151101590565b6000805b8351831015611041576000611004858563ffffffff61112216565b60ff16905060018401935060008061101d87878561120d565b92509050811561103557935060019250611048915050565b50509290920191610fe9565b5060009050805b9250929050565b60c081015160208201819052815151116110685761111f565b600061107c82600001518360200151611268565b6020830151835191019150611097908263ffffffff6112af16565b61ffff1660408301528151600291909101906110b9908263ffffffff6112af16565b61ffff1660608301528151600291909101906110db908263ffffffff6112cf16565b63ffffffff9081166080840152825160049290920191600091611101919084906112af16565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b6000825182600101111561113557600080fd5b50016001015160ff1690565b60008351828401111561115357600080fd5b5091016020012090565b6111656113fa565b825182111561117357600080fd5b60208501518551518584010111156111a1576111a18561119987602001518786016112f1565b600202611308565b6000808651805187602083010193508088870111156111c05787860182525b505050602084015b602084106111e75780518252601f1990930192602091820191016111c8565b51815160001960208690036101000a019081169019919091161790525083949350505050565b600080611220858563ffffffff6112cf16565b63ffffffff1663613d30781461123b57506000905080610ea6565b602c83101561124f57506000905080610ea6565b61125c8585600401611325565b91509150935093915050565b6000815b8351811061127657fe5b6000611288858363ffffffff61112216565b60ff169182016001019190508061129f57506112a5565b5061126c565b9190910392915050565b600082518260020111156112c257600080fd5b50016002015161ffff1690565b600082518260040111156112e257600080fd5b50016004015163ffffffff1690565b6000818311156113025750816104e3565b50919050565b81516113148383610f63565b5061131f8382610f9b565b50505050565b600080602883855103101561133f57506000905080611048565b6000835b846028018110156113ee5760049190911b906000611367878363ffffffff61112216565b60ff1690506030811015801561137d5750603a81105b1561138f5760308103831792506113e5565b604181101580156113a05750604781105b156113b25760378103831792506113e5565b606181101580156113c35750606781105b156113d55760578103831792506113e5565b5060009350839250611048915050565b50600101611343565b50946001945092505050565b604051806040016040528060608152602001600081525090565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff1681526020016000815260200160008152509056fe444e53207265636f7264206973207374616c653b2072656672657368206f722064656c657465206974206265666f72652070726f63656564696e672ea265627a7a723158204cc3d9dc2b332d662c4dd687f6f23215084cdbdf341771d1f1f37f78e32ba8ba64736f6c63430005100032
0x608060405234801561001057600080fd5b5060405161158b38038061158b833981810160405260a081101561003357600080fd5b508051602082015160408301516060840151608090940151600080546001600160a01b03199081166001600160a01b0396871617825560018054821695871695909517855560028054821694871694909417909355600495909555600380549092169316929092179091556005805460ff191690911790556114d09081906100bb90396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806341f8aa881161006657806341f8aa881461016f5780637dc0d1d014610195578063be27b22c1461019d578063d94585bd1461025b578063f77c47911461040957610093565b806301ffc9a71461009857806302fb0c5e146100d357806311344ce6146100db5780633f15457f1461014b575b600080fd5b6100bf600480360360208110156100ae57600080fd5b50356001600160e01b031916610411565b604080519115158252519081900360200190f35b6100bf6104e9565b610149600480360360208110156100f157600080fd5b810190602081018135600160201b81111561010b57600080fd5b82018360208201111561011d57600080fd5b803590602001918460018302840111600160201b8311171561013e57600080fd5b5090925090506104f2565b005b610153610667565b604080516001600160a01b039092168252519081900360200190f35b6101496004803603602081101561018557600080fd5b50356001600160a01b0316610676565b610153610719565b610149600480360360408110156101b357600080fd5b810190602081018135600160201b8111156101cd57600080fd5b8201836020820111156101df57600080fd5b803590602001918460018302840111600160201b8311171561020057600080fd5b919390929091602081019035600160201b81111561021d57600080fd5b82018360208201111561022f57600080fd5b803590602001918460018302840111600160201b8311171561025057600080fd5b509092509050610728565b6101496004803603606081101561027157600080fd5b810190602081018135600160201b81111561028b57600080fd5b82018360208201111561029d57600080fd5b803590602001918460018302840111600160201b831117156102be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460018302840111600160201b8311171561034357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111600160201b831117156103c857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610906945050505050565b610153610c2c565b604080517f737570706f727473496e74657266616365286279746573342900000000000000815290519081900360190190206000906001600160e01b0319838116911614806104e3575060408051676f7261636c65282960c01b815281519081900360080181207f70726f7665416e64436c61696d2862797465732c62797465732c6279746573298252825191829003602001822071636c61696d2862797465732c62797465732960701b83529251918290036012019091206001600160e01b03198581169190931890911891909116145b92915050565b60055460ff1681565b60055460ff1661050157600080fd5b6000546001600160a01b0316331461051857600080fd5b6000808383604051602001808383808284376040805191909301818103601f190182528084528151602090920191909120600480546002546003546306ab592360e01b8652928501829052602485018490526001600160a01b0392831660448601529551929a50985090931695506306ab592394506064808201945060009392509082900301818387803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b5050600354600454604080516020808201939093528082018890528151808203830181526060820192839052805190840120928252608081018990526001600160a01b0390931694509092507fa2e66ce20e6fb2c4f61339c364ad79f15160cf5307230c8bc4d628adbca2ba399188918891819060a001848480828437600083820152604051601f909101601f19169092018290039550909350505050a350505050565b6002546001600160a01b031681565b60055460ff1661068557600080fd5b6000546001600160a01b0316331461069c57600080fd5b6002546004805460408051635b0fc9c360e01b8152928301919091526001600160a01b0384811660248401529051921691635b0fc9c39160448082019260009290919082900301818387803b1580156106f457600080fd5b505af1158015610708573d6000803e3d6000fd5b50506005805460ff19169055505050565b6001546001600160a01b031681565b600154604080516020601f87018190048102820181019092528581526000926107ac926001600160a01b039091169190889088908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250610c3b92505050565b50809150506000806107f387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610eae92505050565b600254604080516306ab592360e01b815260048101849052602481018590526001600160a01b038881166044830152915194965092945016916306ab59239160648082019260009290919082900301818387803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b50506040805160208082018690528183018790528251808303840181526060830193849052805190820120908352608082018b90526001600160a01b038816945092507fa2e66ce20e6fb2c4f61339c364ad79f15160cf5307230c8bc4d628adbca2ba39918b918b9190819060a001848480828437600083820152604051601f909101601f19169092018290039550909350505050a350505050505050565b600154604080516376a14d1d60e01b8152600481019182528451604482015284516001600160a01b03909316926376a14d1d928692869282916024810191606490910190602087019080838360005b8381101561096d578181015183820152602001610955565b50505050905090810190601f16801561099a5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156109cd5781810151838201526020016109b5565b50505050905090810190601f1680156109fa5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610a1b57600080fd5b505af1158015610a2f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610a5857600080fd5b8101908080516040519392919084600160201b821115610a7757600080fd5b908301906020820185811115610a8c57600080fd5b8251600160201b811182820188101715610aa557600080fd5b82525081516020918201929091019080838360005b83811015610ad2578181015183820152602001610aba565b50505050905090810190601f168015610aff5780820380516001836020036101000a031916815260200191505b506040818152632f89ec8b60e21b825260048201908152885160448301528851959650309563be27b22c955089945087935090918291602482019160640190602087019080838360005b83811015610b61578181015183820152602001610b49565b50505050905090810190601f168015610b8e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610bc1578181015183820152602001610ba9565b50505050905090810190601f168015610bee5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031681565b600080610c466113fa565b8451610c5c90829060050163ffffffff610f6316565b50604080518082019091526005815264045f656e7360d81b6020820152610c8a90829063ffffffff610f9b16565b50610c9b818663ffffffff610f9b16565b5080516040805163021e646f60e21b81526010600482018181526024830193845284516044840152845160009586956001600160a01b038e169563087991bc9594929360649091019060208501908083838c5b83811015610d06578181015183820152602001610cee565b50505050905090810190601f168015610d335780820380516001836020036101000a031916815260200191505b50935050505060606040518083038186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d6060811015610d7b57600080fd5b506020810151604090910151925090506bffffffffffffffffffffffff198216158015610da757508551155b15610dbc575060009350839250610ea6915050565b855160208701206bffffffffffffffffffffffff19838116911614610de057600080fd5b610de8611414565b610df987600063ffffffff610fbc16565b90505b610e0581610fd7565b610e9a5742816080015163ffffffff16830167ffffffffffffffff161015610e5e5760405162461bcd60e51b815260040180806020018281038252603c815260200180611460603c913960400191505060405180910390fd5b600080610e6f898460a00151610fe5565b925090508115610e8a57965060019550610ea6945050505050565b5050610e958161104f565b610dfc565b50600094508493505050505b935093915050565b60008080610ec2848263ffffffff61112216565b60ff1690506000610edc856001840163ffffffff61112216565b60ff169050610ef68560028484010163ffffffff61112216565b60ff1615610f0357600080fd5b610f158560018463ffffffff61114116565b6000610f2b87600286018563ffffffff61114116565b604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120935093505050915091565b610f6b6113fa565b6020820615610f805760208206602003820191505b50602082018190526040805180845260008152909101905290565b610fa36113fa565b610fb58384600001515184855161115d565b9392505050565b610fc4611414565b82815260c081018290526104e38161104f565b805151602090910151101590565b6000805b8351831015611041576000611004858563ffffffff61112216565b60ff16905060018401935060008061101d87878561120d565b92509050811561103557935060019250611048915050565b50509290920191610fe9565b5060009050805b9250929050565b60c081015160208201819052815151116110685761111f565b600061107c82600001518360200151611268565b6020830151835191019150611097908263ffffffff6112af16565b61ffff1660408301528151600291909101906110b9908263ffffffff6112af16565b61ffff1660608301528151600291909101906110db908263ffffffff6112cf16565b63ffffffff9081166080840152825160049290920191600091611101919084906112af16565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b6000825182600101111561113557600080fd5b50016001015160ff1690565b60008351828401111561115357600080fd5b5091016020012090565b6111656113fa565b825182111561117357600080fd5b60208501518551518584010111156111a1576111a18561119987602001518786016112f1565b600202611308565b6000808651805187602083010193508088870111156111c05787860182525b505050602084015b602084106111e75780518252601f1990930192602091820191016111c8565b51815160001960208690036101000a019081169019919091161790525083949350505050565b600080611220858563ffffffff6112cf16565b63ffffffff1663613d30781461123b57506000905080610ea6565b602c83101561124f57506000905080610ea6565b61125c8585600401611325565b91509150935093915050565b6000815b8351811061127657fe5b6000611288858363ffffffff61112216565b60ff169182016001019190508061129f57506112a5565b5061126c565b9190910392915050565b600082518260020111156112c257600080fd5b50016002015161ffff1690565b600082518260040111156112e257600080fd5b50016004015163ffffffff1690565b6000818311156113025750816104e3565b50919050565b81516113148383610f63565b5061131f8382610f9b565b50505050565b600080602883855103101561133f57506000905080611048565b6000835b846028018110156113ee5760049190911b906000611367878363ffffffff61112216565b60ff1690506030811015801561137d5750603a81105b1561138f5760308103831792506113e5565b604181101580156113a05750604781105b156113b25760378103831792506113e5565b606181101580156113c35750606781105b156113d55760578103831792506113e5565b5060009350839250611048915050565b50600101611343565b50946001945092505050565b604051806040016040528060608152602001600081525090565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff1681526020016000815260200160008152509056fe444e53207265636f7264206973207374616c653b2072656672657368206f722064656c657465206974206265666f72652070726f63656564696e672ea265627a7a723158204cc3d9dc2b332d662c4dd687f6f23215084cdbdf341771d1f1f37f78e32ba8ba64736f6c6343000510003200000000000000000000000067933c5314bcfc49a90da721b5a3baf6491cf13800000000000000000000000058a6618b3049c113460ab4ec62f2c68996e9ed7c00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e57137a55874a85f753ba591944179c9d5f5b7be9c94d606506fa34450f09e655000000000000000000000000baf547935ac43004f6926140512fcaefcfd534c5