//
0x60a06040523060805234801561001457600080fd5b506080516118f861004c600039600081816104730152818161050901528181610644015281816106da015261080901526118f86000f3fe6080604052600436106100c75760003560e01c80638129fc1c11610074578063c375c2ef1161004e578063c375c2ef14610283578063d7e5fbf3146102a3578063f2fde38b146102c357600080fd5b80638129fc1c146102195780638da5cb5b1461022e578063a0ee93181461026357600080fd5b80634f1ef286116100a55780634f1ef286146101ce57806352d1902d146101e1578063715018a61461020457600080fd5b806307f7aafb146100cc5780630ad1c2fa146100ee5780633659cfe6146101ae575b600080fd5b3480156100d857600080fd5b506100ec6100e736600461168c565b6102e3565b005b3480156100fa57600080fd5b5061017661010936600461168c565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff938416815260c9825282902082518084019093525492831682527401000000000000000000000000000000000000000090920460ff1615159181019190915290565b60408051825173ffffffffffffffffffffffffffffffffffffffff168152602092830151151592810192909252015b60405180910390f35b3480156101ba57600080fd5b506100ec6101c936600461168c565b61045c565b6100ec6101dc3660046116d6565b61062d565b3480156101ed57600080fd5b506101f66107ef565b6040519081526020016101a5565b34801561021057600080fd5b506100ec6108c1565b34801561022557600080fd5b506100ec6108d5565b34801561023a57600080fd5b5060335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a5565b34801561026f57600080fd5b506100ec61027e36600461168c565b610a54565b34801561028f57600080fd5b506100ec61029e36600461168c565b610ba8565b3480156102af57600080fd5b506100ec6102be3660046117b6565b610ca3565b3480156102cf57600080fd5b506100ec6102de36600461168c565b610eb4565b6102eb610f4e565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260c96020526040902080549091166103675760405162461bcd60e51b815260206004820152601a60248201527f436f6e7472616374206973206e6f74207265676973746572656400000000000060448201526064015b60405180910390fd5b805474010000000000000000000000000000000000000000900460ff16156103d15760405162461bcd60e51b815260206004820152601c60248201527f436f6e747261637420697320616c726561647920617070726f76656400000000604482015260640161035e565b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405173ffffffffffffffffffffffffffffffffffffffff831681527faf42961ad755cade79794d4122cb0afedc32bf55a0c716dd085fbee2afc6ac55906020015b60405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036105075760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161035e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661057c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146106055760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f78790000000000000000000000000000000000000000606482015260840161035e565b61060e81610fb5565b6040805160008082526020820190925261062a91839190610fbd565b50565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106d85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c0000000000000000000000000000000000000000606482015260840161035e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661074d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146107d65760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f78790000000000000000000000000000000000000000606482015260840161035e565b6107df82610fb5565b6107eb82826001610fbd565b5050565b60003073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461089c5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161035e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6108c9610f4e565b6108d3600061118d565b565b600054610100900460ff16158080156108f55750600054600160ff909116105b8061090f5750303b15801561090f575060005460ff166001145b6109815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161035e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109e7611204565b6109ef611289565b801561062a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b610a5c610f4e565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260c9602052604090208054909116610ad35760405162461bcd60e51b815260206004820152601a60248201527f436f6e7472616374206973206e6f742072656769737465726564000000000000604482015260640161035e565b805474010000000000000000000000000000000000000000900460ff16610b3c5760405162461bcd60e51b815260206004820152601860248201527f436f6e7472616374206973206e6f7420617070726f7665640000000000000000604482015260640161035e565b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405173ffffffffffffffffffffffffffffffffffffffff831681527f50132537991c16a2d6bbd27114ed077fb8c757768dcbb2c3c5736f1b1ed3cc3e90602001610450565b610bb0610f4e565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260c9602052604090208054909116610c275760405162461bcd60e51b815260206004820152601a60248201527f436f6e7472616374206973206e6f742072656769737465726564000000000000604482015260640161035e565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260c9602090815260409182902080547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590519182527f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b5659101610450565b73ffffffffffffffffffffffffffffffffffffffff8216610d065760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420616464726573732063616e6e6f74206265207a65726f00604482015260640161035e565b73ffffffffffffffffffffffffffffffffffffffff8116610d695760405162461bcd60e51b815260206004820181905260248201527f526563697069656e7420616464726573732063616e6e6f74206265207a65726f604482015260640161035e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260c9602052604090205474010000000000000000000000000000000000000000900460ff1615610df75760405162461bcd60e51b815260206004820152601c60248201527f436f6e747261637420697320616c726561647920617070726f76656400000000604482015260640161035e565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff8381168083526000602080850182815288851680845260c9835292879020955186549151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff000000000000000000000000000000000000000000909216951694909417939093179093558351928352908201527f768fb430a0d4b201cb764ab221c316dd14d8babf2e4b2348e05964c6565318b69101610450565b610ebc610f4e565b73ffffffffffffffffffffffffffffffffffffffff8116610f455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161035e565b61062a8161118d565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108d35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161035e565b61062a610f4e565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ff557610ff083611306565b505050565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561107a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611077918101906117e9565b60015b6110ec5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f742055555053000000000000000000000000000000000000606482015260840161035e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146111815760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c65555549440000000000000000000000000000000000000000000000606482015260840161035e565b50610ff08383836113f6565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166112815760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161035e565b6108d3611421565b600054610100900460ff166108d35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161035e565b73ffffffffffffffffffffffffffffffffffffffff81163b6113905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6113ff836114a7565b60008251118061140c5750805b15610ff05761141b83836114f4565b50505050565b600054610100900460ff1661149e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161035e565b6108d33361118d565b6114b081611306565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606073ffffffffffffffffffffffffffffffffffffffff83163b6115805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161035e565b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516115a8919061182e565b600060405180830381855af49150503d80600081146115e3576040519150601f19603f3d011682016040523d82523d6000602084013e6115e8565b606091505b5091509150611610828260405180606001604052806027815260200161189c60279139611619565b95945050505050565b60608315611628575081611632565b6116328383611639565b9392505050565b8151156116495781518083602001fd5b8060405162461bcd60e51b815260040161035e919061184a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461168757600080fd5b919050565b60006020828403121561169e57600080fd5b61163282611663565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156116e957600080fd5b6116f283611663565b9150602083013567ffffffffffffffff8082111561170f57600080fd5b818501915085601f83011261172357600080fd5b813581811115611735576117356116a7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561177b5761177b6116a7565b8160405282815288602084870101111561179457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080604083850312156117c957600080fd5b6117d283611663565b91506117e060208401611663565b90509250929050565b6000602082840312156117fb57600080fd5b5051919050565b60005b8381101561181d578181015183820152602001611805565b8381111561141b5750506000910152565b60008251611840818460208701611802565b9190910192915050565b6020815260008251806020840152611869816040850160208701611802565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205c6554746bc14e1c4e1b045140ba7f674341b7aad37a1fbd7372f8ead0a8430264736f6c634300080f0033