0x60a06040523480156200001157600080fd5b5060405162001cda38038062001cda833981016040819052620000349162000394565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000ec565b5050506001600160601b0319606086901b16608052620000e18484848462000198565b50505050506200048d565b6001600160a01b038116331415620001475760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b620001a262000319565b6003546040805160a081019091526501000000000090910463ffffffff169080866002811115620001d757620001d762000477565b815261ffff8616602082015263ffffffff831660408201526001600160a01b03851660608201526001600160601b038416608090910152805160038054909190829060ff1916600183600281111562000234576200023462000477565b0217905550602082015181546040808501516060860151610100600160481b031990931661010063ffffffff9586160263ffffffff60281b19161765010000000000949091169390930292909217600160481b600160e81b03191669010000000000000000006001600160a01b0390921691909102178255608090920151600190910180546001600160601b0319166001600160601b03909216919091179055517f6293a703ec7145dfa23c5cde2e627d6a02e153fc2e9c03b14d1e22cbb4a7e9cd906200030a90879087908790879062000422565b60405180910390a15050505050565b6000546001600160a01b03163314620003755760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640162000082565b565b80516001600160a01b03811681146200038f57600080fd5b919050565b600080600080600060a08688031215620003ad57600080fd5b620003b88662000377565b9450602086015160038110620003cd57600080fd5b604087015190945061ffff81168114620003e657600080fd5b9250620003f66060870162000377565b60808701519092506001600160601b03811681146200041457600080fd5b809150509295509295909350565b60808101600386106200044557634e487b7160e01b600052602160045260246000fd5b94815261ffff9390931660208401526001600160a01b039190911660408301526001600160601b031660609091015290565b634e487b7160e01b600052602160045260246000fd5b60805160601c611812620004c860003960008181610153015281816103e00152818161081e01528181610cc30152610e9501526118126000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063850af0cb1161008c578063a4c0ed3611610066578063a4c0ed3614610299578063a793ab8b146102ac578063c4d252f5146102bf578063f2fde38b146102d257600080fd5b8063850af0cb146101f757806388b12d55146102105780638da5cb5b1461028857600080fd5b80633659d666116100c85780633659d6661461018d578063367b9b4f146101a057806379ba5097146101b35780637e776f7f146101bb57600080fd5b8063181f5a77146100ef578063183310b3146101395780631b6b6d231461014e575b600080fd5b6101236040518060400160405280601581526020017404b656570657252656769737472617220312e312e3605c1b81525081565b60405161013091906116e7565b60405180910390f35b61014c610147366004611385565b6102e5565b005b6101757f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61014c61019b36600461142a565b6103d5565b61014c6101ae36600461125b565b610636565b61014c61069d565b6101e76101c9366004611239565b6001600160a01b031660009081526005602052604090205460ff1690565b6040519015158152602001610130565b6101ff61074c565b6040516101309594939291906116a4565b61026161021e366004611309565b6000908152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169290910182905291565b604080516001600160a01b0390931683526001600160601b03909116602083015201610130565b6000546001600160a01b0316610175565b61014c6102a7366004611292565b610813565b61014c6102ba366004611322565b610a59565b61014c6102cd366004611309565b610be3565b61014c6102e0366004611239565b610d91565b6102ed610da5565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915261034a57604051632589d98f60e11b815260040160405180910390fd5b600087878787876040516020016103659594939291906115e5565b60405160208183030381529060405280519060200120905080831461039d57604051633f4d605360e01b815260040160405180910390fd5b60008381526002602090815260408220919091558201516103ca908a908a908a908a908a908a908a610dfa565b505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461041d5760405162c6885f60e11b815260040160405180910390fd5b6001600160a01b0386166104445760405163016ed19f60e21b815260040160405180910390fd5b6000888888888860405160200161045f9594939291906115e5565b6040516020818303038152906040528051906020012090508260ff16896001600160a01b0316827fc3f5df4aefec026f610a3fcb08f19476492d69d2cb78b1c2eba259a8820e6a788f8f8f8e8e8e8e8e6040516104c39897969594939291906116fa565b60405180910390a46040805160a08101909152600380546000929190829060ff1660028111156104f5576104f56117cb565b6002811115610506576105066117cb565b8152815463ffffffff610100820481166020840152600160281b82041660408301526001600160a01b03600160481b9091041660608201526001909101546001600160601b0316608090910152905061055f8184610fc7565b156105b057604081015161057490600161176f565b6003805463ffffffff92909216600160281b0268ffffffff0000000000199092169190911790556105ab8d8b8b8b8b8b8b89610dfa565b610627565b6000828152600260205260408120546105da908790600160a01b90046001600160601b0316611797565b6040805180820182526001600160a01b03808d1682526001600160601b039384166020808401918252600089815260029091529390932091519251909316600160a01b0291909216179055505b50505050505050505050505050565b61063e610da5565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f20c6237dac83526a849285a9f79d08a483291bdd3a056a0ef9ae94ecee1ad356910160405180910390a25050565b6001546001600160a01b031633146106f55760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b60448201526064015b60405180910390fd5b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040805160a081019091526003805460009283928392839283928392829060ff16600281111561077e5761077e6117cb565b600281111561078f5761078f6117cb565b81528154610100810463ffffffff908116602080850191909152600160281b8304909116604080850191909152600160481b9092046001600160a01b03166060808501919091526001909401546001600160601b0390811660809485015285519186015192860151948601519590930151909b919a50929850929650169350915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461085b5760405162c6885f60e11b815260040160405180910390fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208101516001600160e01b03198116631b2ceb3360e11b146108c75760405163e3d6792160e01b815260040160405180910390fd5b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060e4810151828114610923576040516355e97b0d60e01b815260040160405180910390fd5b8887878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101248101516001600160a01b038381169082161461098c57604051637c62b1c760e11b815260040160405180910390fd5b6101248910156109af57604051630dfe930960e41b815260040160405180910390fd5b6004546001600160601b03168b10156109db5760405163cd1c886760e01b815260040160405180910390fd5b6000306001600160a01b03168b8b6040516109f79291906115d5565b600060405180830381855af49150503d8060008114610a32576040519150601f19603f3d011682016040523d82523d6000602084013e610a37565b606091505b505090508061062757604051630649bf8160e41b815260040160405180910390fd5b610a61610da5565b6003546040805160a08101909152600160281b90910463ffffffff169080866002811115610a9157610a916117cb565b815261ffff8616602082015263ffffffff831660408201526001600160a01b03851660608201526001600160601b038416608090910152805160038054909190829060ff19166001836002811115610aeb57610aeb6117cb565b021790555060208201518154604080850151606086015168ffffffffffffffff001990931661010063ffffffff9586160268ffffffff0000000000191617600160281b9490911693909302929092177fffffff0000000000000000000000000000000000000000ffffffffffffffffff16600160481b6001600160a01b0390921691909102178255608090920151600190910180546bffffffffffffffffffffffff19166001600160601b03909216919091179055517f6293a703ec7145dfa23c5cde2e627d6a02e153fc2e9c03b14d1e22cbb4a7e9cd90610bd4908790879087908790611665565b60405180910390a15050505050565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b031691830191909152331480610c3a57506000546001600160a01b031633145b610c57576040516361685c2b60e01b815260040160405180910390fd5b80516001600160a01b0316610c7f57604051632589d98f60e11b815260040160405180910390fd5b600082815260026020908152604080832083905590830151905163a9059cbb60e01b81523360048201526001600160601b0390911660248201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f91906112ec565b905080610d615760405163185c9b9d60e31b81523360048201526024016106ec565b60405183907f3663fb28ebc87645eb972c9dad8521bf665c623f287e79f1c56f1eb374b82a2290600090a2505050565b610d99610da5565b610da281611061565b50565b6000546001600160a01b03163314610df85760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b60448201526064016106ec565b565b60035460405163da5c674160e01b8152600160481b9091046001600160a01b031690600090829063da5c674190610e3d908c908c908c908c908c906004016115e5565b602060405180830381600087803b158015610e5757600080fd5b505af1158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190611524565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634000aea0848785604051602001610ed791815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610f0493929190611629565b602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5691906112ec565b905080610f815760405163185c9b9d60e31b81526001600160a01b03841660048201526024016106ec565b81847fb9a292fb7e3edd920cd2d2829a3615a640c43fd7de0a0820aa0668feb4c37d4b8d604051610fb291906116e7565b60405180910390a35050505050505050505050565b60008083516002811115610fdd57610fdd6117cb565b1415610feb5750600061105b565b600183516002811115611000576110006117cb565b14801561102657506001600160a01b03821660009081526005602052604090205460ff16155b156110335750600061105b565b826020015163ffffffff16836040015163ffffffff1610156110575750600161105b565b5060005b92915050565b6001600160a01b0381163314156110ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016106ec565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80356001600160a01b038116811461112257600080fd5b919050565b60008083601f84011261113957600080fd5b50813567ffffffffffffffff81111561115157600080fd5b60208301915083602082850101111561116957600080fd5b9250929050565b600082601f83011261118157600080fd5b813567ffffffffffffffff8082111561119c5761119c6117e1565b604051601f8301601f19908116603f011681019082821181831017156111c4576111c46117e1565b816040528381528660208588010111156111dd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff8116811461112257600080fd5b803560ff8116811461112257600080fd5b80356001600160601b038116811461112257600080fd5b60006020828403121561124b57600080fd5b6112548261110b565b9392505050565b6000806040838503121561126e57600080fd5b6112778361110b565b91506020830135611287816117f7565b809150509250929050565b600080600080606085870312156112a857600080fd5b6112b18561110b565b935060208501359250604085013567ffffffffffffffff8111156112d457600080fd5b6112e087828801611127565b95989497509550505050565b6000602082840312156112fe57600080fd5b8151611254816117f7565b60006020828403121561131b57600080fd5b5035919050565b6000806000806080858703121561133857600080fd5b84356003811061134757600080fd5b9350602085013561ffff8116811461135e57600080fd5b925061136c6040860161110b565b915061137a60608601611222565b905092959194509250565b600080600080600080600060c0888a0312156113a057600080fd5b873567ffffffffffffffff808211156113b857600080fd5b6113c48b838c01611170565b98506113d260208b0161110b565b97506113e060408b016111fd565b96506113ee60608b0161110b565b955060808a013591508082111561140457600080fd5b506114118a828b01611127565b989b979a5095989497959660a090950135949350505050565b60008060008060008060008060008060006101208c8e03121561144c57600080fd5b67ffffffffffffffff808d35111561146357600080fd5b6114708e8e358f01611170565b9b508060208e0135111561148357600080fd5b6114938e60208f01358f01611127565b909b5099506114a460408e0161110b565b98506114b260608e016111fd565b97506114c060808e0161110b565b96508060a08e013511156114d357600080fd5b506114e48d60a08e01358e01611127565b90955093506114f560c08d01611222565b925061150360e08d01611211565b91506115126101008d0161110b565b90509295989b509295989b9093969950565b60006020828403121561153657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b8181101561158c57602081850181015186830182015201611570565b8181111561159e576000602083870101525b50601f01601f19169290920160200192915050565b600381106115d157634e487b7160e01b600052602160045260246000fd5b9052565b8183823760009101908152919050565b6001600160a01b03868116825263ffffffff861660208301528416604082015260806060820181905260009061161e908301848661153d565b979650505050505050565b6001600160a01b03841681526001600160601b038316602082015260606040820181905260009061165c90830184611566565b95945050505050565b6080810161167382876115b3565b61ffff9490941660208201526001600160a01b039290921660408301526001600160601b0316606090910152919050565b60a081016116b282886115b3565b63ffffffff95861660208301529390941660408501526001600160a01b03919091166060840152608090920191909152919050565b6020815260006112546020830184611566565b60c08152600061170d60c083018b611566565b8281036020840152611720818a8c61153d565b63ffffffff891660408501526001600160a01b03881660608501528381036080850152905061175081868861153d565b9150506001600160601b03831660a08301529998505050505050505050565b600063ffffffff80831681851680830382111561178e5761178e6117b5565b01949350505050565b60006001600160601b0380831681851680830382111561178e5761178e5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114610da257600080fdfea164736f6c6343000806000a000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb40000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004563918244f40000
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063850af0cb1161008c578063a4c0ed3611610066578063a4c0ed3614610299578063a793ab8b146102ac578063c4d252f5146102bf578063f2fde38b146102d257600080fd5b8063850af0cb146101f757806388b12d55146102105780638da5cb5b1461028857600080fd5b80633659d666116100c85780633659d6661461018d578063367b9b4f146101a057806379ba5097146101b35780637e776f7f146101bb57600080fd5b8063181f5a77146100ef578063183310b3146101395780631b6b6d231461014e575b600080fd5b6101236040518060400160405280601581526020017404b656570657252656769737472617220312e312e3605c1b81525081565b60405161013091906116e7565b60405180910390f35b61014c610147366004611385565b6102e5565b005b6101757f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb481565b6040516001600160a01b039091168152602001610130565b61014c61019b36600461142a565b6103d5565b61014c6101ae36600461125b565b610636565b61014c61069d565b6101e76101c9366004611239565b6001600160a01b031660009081526005602052604090205460ff1690565b6040519015158152602001610130565b6101ff61074c565b6040516101309594939291906116a4565b61026161021e366004611309565b6000908152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169290910182905291565b604080516001600160a01b0390931683526001600160601b03909116602083015201610130565b6000546001600160a01b0316610175565b61014c6102a7366004611292565b610813565b61014c6102ba366004611322565b610a59565b61014c6102cd366004611309565b610be3565b61014c6102e0366004611239565b610d91565b6102ed610da5565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915261034a57604051632589d98f60e11b815260040160405180910390fd5b600087878787876040516020016103659594939291906115e5565b60405160208183030381529060405280519060200120905080831461039d57604051633f4d605360e01b815260040160405180910390fd5b60008381526002602090815260408220919091558201516103ca908a908a908a908a908a908a908a610dfa565b505050505050505050565b336001600160a01b037f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4161461041d5760405162c6885f60e11b815260040160405180910390fd5b6001600160a01b0386166104445760405163016ed19f60e21b815260040160405180910390fd5b6000888888888860405160200161045f9594939291906115e5565b6040516020818303038152906040528051906020012090508260ff16896001600160a01b0316827fc3f5df4aefec026f610a3fcb08f19476492d69d2cb78b1c2eba259a8820e6a788f8f8f8e8e8e8e8e6040516104c39897969594939291906116fa565b60405180910390a46040805160a08101909152600380546000929190829060ff1660028111156104f5576104f56117cb565b6002811115610506576105066117cb565b8152815463ffffffff610100820481166020840152600160281b82041660408301526001600160a01b03600160481b9091041660608201526001909101546001600160601b0316608090910152905061055f8184610fc7565b156105b057604081015161057490600161176f565b6003805463ffffffff92909216600160281b0268ffffffff0000000000199092169190911790556105ab8d8b8b8b8b8b8b89610dfa565b610627565b6000828152600260205260408120546105da908790600160a01b90046001600160601b0316611797565b6040805180820182526001600160a01b03808d1682526001600160601b039384166020808401918252600089815260029091529390932091519251909316600160a01b0291909216179055505b50505050505050505050505050565b61063e610da5565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f20c6237dac83526a849285a9f79d08a483291bdd3a056a0ef9ae94ecee1ad356910160405180910390a25050565b6001546001600160a01b031633146106f55760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b60448201526064015b60405180910390fd5b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6040805160a081019091526003805460009283928392839283928392829060ff16600281111561077e5761077e6117cb565b600281111561078f5761078f6117cb565b81528154610100810463ffffffff908116602080850191909152600160281b8304909116604080850191909152600160481b9092046001600160a01b03166060808501919091526001909401546001600160601b0390811660809485015285519186015192860151948601519590930151909b919a50929850929650169350915050565b336001600160a01b037f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4161461085b5760405162c6885f60e11b815260040160405180910390fd5b81818080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208101516001600160e01b03198116631b2ceb3360e11b146108c75760405163e3d6792160e01b815260040160405180910390fd5b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060e4810151828114610923576040516355e97b0d60e01b815260040160405180910390fd5b8887878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101248101516001600160a01b038381169082161461098c57604051637c62b1c760e11b815260040160405180910390fd5b6101248910156109af57604051630dfe930960e41b815260040160405180910390fd5b6004546001600160601b03168b10156109db5760405163cd1c886760e01b815260040160405180910390fd5b6000306001600160a01b03168b8b6040516109f79291906115d5565b600060405180830381855af49150503d8060008114610a32576040519150601f19603f3d011682016040523d82523d6000602084013e610a37565b606091505b505090508061062757604051630649bf8160e41b815260040160405180910390fd5b610a61610da5565b6003546040805160a08101909152600160281b90910463ffffffff169080866002811115610a9157610a916117cb565b815261ffff8616602082015263ffffffff831660408201526001600160a01b03851660608201526001600160601b038416608090910152805160038054909190829060ff19166001836002811115610aeb57610aeb6117cb565b021790555060208201518154604080850151606086015168ffffffffffffffff001990931661010063ffffffff9586160268ffffffff0000000000191617600160281b9490911693909302929092177fffffff0000000000000000000000000000000000000000ffffffffffffffffff16600160481b6001600160a01b0390921691909102178255608090920151600190910180546bffffffffffffffffffffffff19166001600160601b03909216919091179055517f6293a703ec7145dfa23c5cde2e627d6a02e153fc2e9c03b14d1e22cbb4a7e9cd90610bd4908790879087908790611665565b60405180910390a15050505050565b6000818152600260209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b031691830191909152331480610c3a57506000546001600160a01b031633145b610c57576040516361685c2b60e01b815260040160405180910390fd5b80516001600160a01b0316610c7f57604051632589d98f60e11b815260040160405180910390fd5b600082815260026020908152604080832083905590830151905163a9059cbb60e01b81523360048201526001600160601b0390911660248201526001600160a01b037f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4169063a9059cbb90604401602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f91906112ec565b905080610d615760405163185c9b9d60e31b81523360048201526024016106ec565b60405183907f3663fb28ebc87645eb972c9dad8521bf665c623f287e79f1c56f1eb374b82a2290600090a2505050565b610d99610da5565b610da281611061565b50565b6000546001600160a01b03163314610df85760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b60448201526064016106ec565b565b60035460405163da5c674160e01b8152600160481b9091046001600160a01b031690600090829063da5c674190610e3d908c908c908c908c908c906004016115e5565b602060405180830381600087803b158015610e5757600080fd5b505af1158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190611524565b905060007f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb46001600160a01b0316634000aea0848785604051602001610ed791815260200190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610f0493929190611629565b602060405180830381600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5691906112ec565b905080610f815760405163185c9b9d60e31b81526001600160a01b03841660048201526024016106ec565b81847fb9a292fb7e3edd920cd2d2829a3615a640c43fd7de0a0820aa0668feb4c37d4b8d604051610fb291906116e7565b60405180910390a35050505050505050505050565b60008083516002811115610fdd57610fdd6117cb565b1415610feb5750600061105b565b600183516002811115611000576110006117cb565b14801561102657506001600160a01b03821660009081526005602052604090205460ff16155b156110335750600061105b565b826020015163ffffffff16836040015163ffffffff1610156110575750600161105b565b5060005b92915050565b6001600160a01b0381163314156110ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016106ec565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80356001600160a01b038116811461112257600080fd5b919050565b60008083601f84011261113957600080fd5b50813567ffffffffffffffff81111561115157600080fd5b60208301915083602082850101111561116957600080fd5b9250929050565b600082601f83011261118157600080fd5b813567ffffffffffffffff8082111561119c5761119c6117e1565b604051601f8301601f19908116603f011681019082821181831017156111c4576111c46117e1565b816040528381528660208588010111156111dd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff8116811461112257600080fd5b803560ff8116811461112257600080fd5b80356001600160601b038116811461112257600080fd5b60006020828403121561124b57600080fd5b6112548261110b565b9392505050565b6000806040838503121561126e57600080fd5b6112778361110b565b91506020830135611287816117f7565b809150509250929050565b600080600080606085870312156112a857600080fd5b6112b18561110b565b935060208501359250604085013567ffffffffffffffff8111156112d457600080fd5b6112e087828801611127565b95989497509550505050565b6000602082840312156112fe57600080fd5b8151611254816117f7565b60006020828403121561131b57600080fd5b5035919050565b6000806000806080858703121561133857600080fd5b84356003811061134757600080fd5b9350602085013561ffff8116811461135e57600080fd5b925061136c6040860161110b565b915061137a60608601611222565b905092959194509250565b600080600080600080600060c0888a0312156113a057600080fd5b873567ffffffffffffffff808211156113b857600080fd5b6113c48b838c01611170565b98506113d260208b0161110b565b97506113e060408b016111fd565b96506113ee60608b0161110b565b955060808a013591508082111561140457600080fd5b506114118a828b01611127565b989b979a5095989497959660a090950135949350505050565b60008060008060008060008060008060006101208c8e03121561144c57600080fd5b67ffffffffffffffff808d35111561146357600080fd5b6114708e8e358f01611170565b9b508060208e0135111561148357600080fd5b6114938e60208f01358f01611127565b909b5099506114a460408e0161110b565b98506114b260608e016111fd565b97506114c060808e0161110b565b96508060a08e013511156114d357600080fd5b506114e48d60a08e01358e01611127565b90955093506114f560c08d01611222565b925061150360e08d01611211565b91506115126101008d0161110b565b90509295989b509295989b9093969950565b60006020828403121561153657600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b8181101561158c57602081850181015186830182015201611570565b8181111561159e576000602083870101525b50601f01601f19169290920160200192915050565b600381106115d157634e487b7160e01b600052602160045260246000fd5b9052565b8183823760009101908152919050565b6001600160a01b03868116825263ffffffff861660208301528416604082015260806060820181905260009061161e908301848661153d565b979650505050505050565b6001600160a01b03841681526001600160601b038316602082015260606040820181905260009061165c90830184611566565b95945050505050565b6080810161167382876115b3565b61ffff9490941660208201526001600160a01b039290921660408301526001600160601b0316606090910152919050565b60a081016116b282886115b3565b63ffffffff95861660208301529390941660408501526001600160a01b03919091166060840152608090920191909152919050565b6020815260006112546020830184611566565b60c08152600061170d60c083018b611566565b8281036020840152611720818a8c61153d565b63ffffffff891660408501526001600160a01b03881660608501528381036080850152905061175081868861153d565b9150506001600160601b03831660a08301529998505050505050505050565b600063ffffffff80831681851680830382111561178e5761178e6117b5565b01949350505050565b60006001600160601b0380831681851680830382111561178e5761178e5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114610da257600080fdfea164736f6c6343000806000a