60806040526040518060400160405280600781526020017f4272616e64414900000000000000000000000000000000000000000000000000815250600890816200004a9190620014de565b506040518060400160405280600581526020017f4252414e4400000000000000000000000000000000000000000000000000000081525060099081620000919190620014de565b506445d964b8006014556005601555348015620000ac575f80fd5b5060405162004e4938038062004e498339818101604052810190620000d2919062001690565b3360088054620000e290620012de565b80601f01602080910402602001604051908101604052809291908181526020018280546200011090620012de565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b5050505050600980546200017390620012de565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a190620012de565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b505050505033868360039081620002089190620014de565b5082600490816200021a9190620014de565b508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000312575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000309919062001725565b60405180910390fd5b62000323816200052c60201b60201c565b50600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156200039857620003923385620005ef60201b60201c565b620003ab565b620003aa3085620005ef60201b60201c565b5b620003ca338587620003be91906200176d565b620005ef60201b60201c565b81600d81905550620003e16200067960201b60201c565b5f620003f26200087460201b60201c565b90505f8060115f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303620004ab578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200047d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004a39190620017a7565b91506200051e565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200051b9190620017a7565b91505b505050505050505062001921565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000662575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000659919062001725565b60405180910390fd5b620006755f83836200088060201b60201c565b5050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a60115f600181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad2460115f61210581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507360ae616a2155ee3d9a68541ba4544862310933d460115f61a86a81526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398994a9a7a2570367554589189dc9772241650f660115f62013e3181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad2460115f61a4b181526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f804690508091505090565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615620008e957620008e383838362000b5160201b60201c565b62000b4c565b600f5f9054906101000a900460ff166200093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009319062001835565b60405180910390fd5b5f6200094b62000f3d60201b60201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200099b576200099484848462000b5160201b60201c565b5062000b4c565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801562000a225750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000a20919062001855565b115b1562000a535762000a3984620011c760201b60201c565b62000a4c84848462000b5160201b60201c565b5062000b4c565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801562000adb5750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000ad8919062001855565b11155b1562000b37578160125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000b2f919062001855565b925050819055505b62000b4a84848462000b5160201b60201c565b505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ba5578060025f82825462000b98919062001855565b9250508190555062000c76565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000c31578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000c2893929190620018a0565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cbf578060025f828254039250508190555062000d09565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000dec5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000dde9190620018db565b60405180910390a362000f38565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ecf578173ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ec19190620018db565b60405180910390a362000f37565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000f2e9190620018db565b60405180910390a35b5b505050565b5f805f62000f506200087460201b60201c565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a820362001008578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620010009190620017a7565b92506200107b565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001052573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620010789190620017a7565b92505b5f3090505f808273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610620010bd578286620010c0565b85835b915091505f8473ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200110f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620011359190620017a7565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663e6a4390585856040518363ffffffff1660e01b815260040162001175929190620018f6565b602060405180830381865afa15801562001191573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620011b79190620017a7565b9050809850505050505050505090565b5f620011d9826200122560201b60201c565b11156200122257600f5f9054906101000a900460ff166200120d57620012076014546200126a60201b60201c565b62001221565b620012206015546200126a60201b60201c565b5b5b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b803a111562001277575f80fd5b50565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620012f657607f821691505b6020821081036200130c576200130b620012b1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620013707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001333565b6200137c868362001333565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620013c6620013c0620013ba8462001394565b6200139d565b62001394565b9050919050565b5f819050919050565b620013e183620013a6565b620013f9620013f082620013cd565b8484546200133f565b825550505050565b5f90565b6200140f62001401565b6200141c818484620013d6565b505050565b5b818110156200144357620014375f8262001405565b60018101905062001422565b5050565b601f82111562001492576200145c8162001312565b620014678462001324565b8101602085101562001477578190505b6200148f620014868562001324565b83018262001421565b50505b505050565b5f82821c905092915050565b5f620014b45f198460080262001497565b1980831691505092915050565b5f620014ce8383620014a3565b9150826002028217905092915050565b620014e9826200127a565b67ffffffffffffffff81111562001505576200150462001284565b5b620015118254620012de565b6200151e82828562001447565b5f60209050601f83116001811462001554575f84156200153f578287015190505b6200154b8582620014c1565b865550620015ba565b601f198416620015648662001312565b5f5b828110156200158d5784890151825560018201915060208501945060208101905062001566565b86831015620015ad5784890151620015a9601f891682620014a3565b8355505b6001600288020188555050505b505050505050565b5f80fd5b620015d18162001394565b8114620015dc575f80fd5b50565b5f81519050620015ef81620015c6565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200162082620015f5565b9050919050565b620016328162001614565b81146200163d575f80fd5b50565b5f81519050620016508162001627565b92915050565b5f8115159050919050565b6200166c8162001656565b811462001677575f80fd5b50565b5f815190506200168a8162001661565b92915050565b5f805f805f60a08688031215620016ac57620016ab620015c2565b5b5f620016bb88828901620015df565b9550506020620016ce88828901620015df565b9450506040620016e18882890162001640565b9350506060620016f488828901620015df565b925050608062001707888289016200167a565b9150509295509295909350565b6200171f8162001614565b82525050565b5f6020820190506200173a5f83018462001714565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620017798262001394565b9150620017868362001394565b9250828203905081811115620017a157620017a062001740565b5b92915050565b5f60208284031215620017bf57620017be620015c2565b5b5f620017ce8482850162001640565b91505092915050565b5f82825260208201905092915050565b7f547261646520686173206e6f74206265656e206f70656e6564207965740000005f82015250565b5f6200181d601d83620017d7565b91506200182a82620017e7565b602082019050919050565b5f6020820190508181035f8301526200184e816200180f565b9050919050565b5f620018618262001394565b91506200186e8362001394565b925082820190508082111562001889576200188862001740565b5b92915050565b6200189a8162001394565b82525050565b5f606082019050620018b55f83018662001714565b620018c460208301856200188f565b620018d360408301846200188f565b949350505050565b5f602082019050620018f05f8301846200188f565b92915050565b5f6040820190506200190b5f83018562001714565b6200191a602083018462001714565b9392505050565b61351a806200192f5f395ff3fe608060405260043610610266575f3560e01c806370a0823111610143578063a9059cbb116100b5578063e086e5ec11610079578063e086e5ec14610915578063e0e2b08b1461092b578063e1ad418e14610953578063efc21e3f1461098f578063f2fde38b146109b9578063f305d719146109e157610266565b8063a9059cbb14610821578063b95999cd1461085d578063cc1776d314610885578063cc2b7858146108af578063dd62ed3e146108d957610266565b80638da5cb5b116101075780638da5cb5b1461071757806395d89b41146107415780639b19251a1461076b5780639b6fbf8a146107a75780639f5fa028146107cf578063a11223da146107f957610266565b806370a0823114610649578063715018a6146106855780637b61c3201461069b5780638b339069146106c55780638d5f81e2146106ed57610266565b80633c9f5ed6116101dc578063564b81ef116101a0578063564b81ef1461054f57806357e871e714610579578063593ed58c146105a3578063594ef0d9146105df5780636b05abd6146106095780636c02a9311461061f57610266565b80633c9f5ed61461047f5780633de4b85c146104a95780634c97f472146104d35780634f7041a5146104fb5780635408d42d1461052557610266565b806315aac2271161022e57806315aac2271461035f57806318160ddd146103895780631e9d48cf146103b357806323b872dd146103ef5780632711b8a51461042b578063313ce5671461045557610266565b806302751cec1461026a578063068acf6c146102a757806306fdde03146102cf578063095ea7b3146102f95780631189478014610335575b5f80fd5b348015610275575f80fd5b50610290600480360381019061028b919061276d565b610a13565b60405161029e929190612805565b60405180910390f35b3480156102b2575f80fd5b506102cd60048036038101906102c8919061282c565b610d2c565b005b3480156102da575f80fd5b506102e3610e2f565b6040516102f091906128e1565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a9190612901565b610ebf565b60405161032c9190612959565b60405180910390f35b348015610340575f80fd5b50610349610ee1565b6040516103569190612972565b60405180910390f35b34801561036a575f80fd5b50610373610ee8565b6040516103809190612972565b60405180910390f35b348015610394575f80fd5b5061039d610eee565b6040516103aa9190612972565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d4919061282c565b610ef7565b6040516103e69190612959565b60405180910390f35b3480156103fa575f80fd5b506104156004803603810190610410919061298b565b610f14565b6040516104229190612959565b60405180910390f35b348015610436575f80fd5b5061043f610f42565b60405161044c9190612972565b60405180910390f35b348015610460575f80fd5b50610469610f4c565b60405161047691906129f6565b60405180910390f35b34801561048a575f80fd5b50610493610f54565b6040516104a09190612959565b60405180910390f35b3480156104b4575f80fd5b506104bd610f69565b6040516104ca9190612972565b60405180910390f35b3480156104de575f80fd5b506104f960048036038101906104f49190612b3b565b610f6f565b005b348015610506575f80fd5b5061050f610f9b565b60405161051c9190612972565b60405180910390f35b348015610530575f80fd5b50610539610fa1565b6040516105469190612959565b60405180910390f35b34801561055a575f80fd5b50610563610fb3565b6040516105709190612972565b60405180910390f35b348015610584575f80fd5b5061058d610fbf565b60405161059a9190612972565b60405180910390f35b3480156105ae575f80fd5b506105c960048036038101906105c49190612bb1565b610fc5565b6040516105d69190612beb565b60405180910390f35b3480156105ea575f80fd5b506105f3610ff5565b6040516106009190612972565b60405180910390f35b348015610614575f80fd5b5061061d610ffb565b005b34801561062a575f80fd5b5061063361102d565b60405161064091906128e1565b60405180910390f35b348015610654575f80fd5b5061066f600480360381019061066a919061282c565b6110b9565b60405161067c9190612972565b60405180910390f35b348015610690575f80fd5b506106996110fe565b005b3480156106a6575f80fd5b506106af611111565b6040516106bc91906128e1565b60405180910390f35b3480156106d0575f80fd5b506106eb60048036038101906106e69190612bb1565b61119d565b005b3480156106f8575f80fd5b506107016111af565b60405161070e9190612beb565b60405180910390f35b348015610722575f80fd5b5061072b61141f565b6040516107389190612beb565b60405180910390f35b34801561074c575f80fd5b50610755611447565b60405161076291906128e1565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c919061282c565b6114d7565b60405161079e9190612959565b60405180910390f35b3480156107b2575f80fd5b506107cd60048036038101906107c89190612cc8565b6114f4565b005b3480156107da575f80fd5b506107e361158d565b6040516107f09190612972565b60405180910390f35b348015610804575f80fd5b5061081f600480360381019061081a9190612d0f565b611592565b005b34801561082c575f80fd5b5061084760048036038101906108429190612901565b611643565b6040516108549190612959565b60405180910390f35b348015610868575f80fd5b50610883600480360381019061087e9190612901565b611665565b005b348015610890575f80fd5b506108996116c0565b6040516108a69190612972565b60405180910390f35b3480156108ba575f80fd5b506108c36116c6565b6040516108d09190612972565b60405180910390f35b3480156108e4575f80fd5b506108ff60048036038101906108fa9190612d69565b6116cc565b60405161090c9190612972565b60405180910390f35b348015610920575f80fd5b5061092961174e565b005b348015610936575f80fd5b50610951600480360381019061094c9190612dd1565b61179c565b005b34801561095e575f80fd5b506109796004803603810190610974919061282c565b6117fc565b6040516109869190612972565b60405180910390f35b34801561099a575f80fd5b506109a3611811565b6040516109b09190612972565b60405180910390f35b3480156109c4575f80fd5b506109df60048036038101906109da919061282c565b611817565b005b6109fb60048036038101906109f6919061276d565b61189b565b604051610a0a93929190612e0f565b60405180910390f35b5f80610a1d6119fd565b5f610a266111af565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a629190612beb565b602060405180830381865afa158015610a7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa19190612e58565b90508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401610ae093929190612e83565b6020604051808303815f875af1158015610afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b209190612ecc565b505f610b2a610fb3565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b382856040518363ffffffff1660e01b8152600401610b9b929190612ef7565b6020604051808303815f875af1158015610bb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdb9190612ecc565b5061a86a8203610c83578073ffffffffffffffffffffffffffffffffffffffff166333c6b72530855f803369d3c21bcecceda0ffffff43610c1c9190612f4b565b6040518763ffffffff1660e01b8152600401610c3d96959493929190612fc0565b60408051808303815f875af1158015610c58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7c919061301f565b5050610d1d565b8073ffffffffffffffffffffffffffffffffffffffff166302751cec30855f803369d3c21bcecceda0ffffff43610cba9190612f4b565b6040518763ffffffff1660e01b8152600401610cdb96959493929190612fc0565b60408051808303815f875af1158015610cf6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1a919061301f565b50505b50505050965096945050505050565b610d346119fd565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d6e9190612beb565b602060405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dad9190612e58565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610dea929190612ef7565b6020604051808303815f875af1158015610e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2a9190612ecc565b505050565b606060088054610e3e9061308a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6a9061308a565b8015610eb55780601f10610e8c57610100808354040283529160200191610eb5565b820191905f5260205f20905b815481529060010190602001808311610e9857829003601f168201915b5050505050905090565b5f80610ec9611a84565b9050610ed6818585611a8b565b600191505092915050565b62013e3181565b600e5481565b5f600254905090565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f80610f1e611a84565b9050610f2b858285611a9d565b610f36858585611b2f565b60019150509392505050565b5f620d414e905090565b5f6012905090565b5f600f5f9054906101000a900460ff16905090565b61a86a81565b610f776119fd565b8160089081610f86919061324e565b508060099081610f96919061324e565b505050565b600b5481565b600f5f9054906101000a900460ff1681565b5f804690508091505090565b600a5481565b6011602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6110036119fd565b600f5f9054906101000a900460ff1615600f5f6101000a81548160ff021916908315150217905550565b6008805461103a9061308a565b80601f01602080910402602001604051908101604052809291908181526020018280546110669061308a565b80156110b15780601f10611088576101008083540402835291602001916110b1565b820191905f5260205f20905b81548152906001019060200180831161109457829003601f168201915b505050505081565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111066119fd565b61110f5f611c1f565b565b6009805461111e9061308a565b80601f016020809104026020016040519081016040528092919081815260200182805461114a9061308a565b80156111955780601f1061116c57610100808354040283529160200191611195565b820191905f5260205f20905b81548152906001019060200180831161117857829003601f168201915b505050505081565b6111a56119fd565b80600d8190555050565b5f805f6111ba610fb3565b90505f60115f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a820361126d578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611242573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112669190613331565b92506112dd565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112da9190613331565b92505b5f3090505f808273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161061131d578286611320565b85835b915091505f8473ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113929190613331565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663e6a4390585856040518363ffffffff1660e01b81526004016113d092919061335c565b602060405180830381865afa1580156113eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140f9190613331565b9050809850505050505050505090565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546114569061308a565b80601f01602080910402602001604051908101604052809291908181526020018280546114829061308a565b80156114cd5780601f106114a4576101008083540402835291602001916114cd565b820191905f5260205f20905b8154815290600101906020018083116114b057829003601f168201915b5050505050905090565b6013602052805f5260405f205f915054906101000a900460ff1681565b6114fc6119fd565b5f5b815181101561158957600160135f84848151811061151f5761151e613383565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611581906133b0565b9150506114fe565b5050565b600181565b61159a6119fd565b5f5b825181101561163e578281815181106115b8576115b7613383565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166115de61141f565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116239190612972565b60405180910390a38080611636906133b0565b91505061159c565b505050565b5f8061164d611a84565b905061165a818585611b2f565b600191505092915050565b61166d6119fd565b8160115f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c5481565b61a4b181565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117566119fd565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611799573d5f803e3d5ffd5b50565b6117a46119fd565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6012602052805f5260405f205f915090505481565b61210581565b61181f6119fd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361188f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016118869190612beb565b60405180910390fd5b61189881611c1f565b50565b5f805f6118a66119fd565b5f3490505f6118b3610fb3565b90505f8060115f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303611972576118fe818d86611ce2565b8073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196b9190613331565b91506119ed565b61197d818d86611d94565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ea9190613331565b91505b5050505096509650969350505050565b611a05611a84565b73ffffffffffffffffffffffffffffffffffffffff16611a2361141f565b73ffffffffffffffffffffffffffffffffffffffff1614611a8257611a46611a84565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611a799190612beb565b60405180910390fd5b565b5f33905090565b611a988383836001611e46565b505050565b5f611aa884846116cc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b295781811015611b1a578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611b11939291906133f7565b60405180910390fd5b611b2884848484035f611e46565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b9f575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611b969190612beb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c0f575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611c069190612beb565b60405180910390fd5b611c1a838383612015565b505050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f69d3c21bcecceda100000043611cf99190612f4b565b9050611d06308585611a8b565b8373ffffffffffffffffffffffffffffffffffffffff1663f91b3f728330865f8033886040518863ffffffff1660e01b8152600401611d4a96959493929190612fc0565b60606040518083038185885af1158015611d66573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d8b919061342c565b50505050505050565b5f69d3c21bcecceda100000043611dab9190612f4b565b9050611db8308585611a8b565b8373ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f8033886040518863ffffffff1660e01b8152600401611dfc96959493929190612fc0565b60606040518083038185885af1158015611e18573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e3d919061342c565b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611eb6575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611ead9190612beb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f26575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611f1d9190612beb565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561200f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516120069190612972565b60405180910390a35b50505050565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156120745761206f8383836122a4565b61229f565b600f5f9054906101000a900460ff166120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b9906134c6565b60405180910390fd5b5f6120cb6111af565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121115761210b8484846122a4565b5061229f565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121955750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121939190612f4b565b115b156121b4576121a38461267d565b6121ae8484846122a4565b5061229f565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122395750600d548260125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122369190612f4b565b11155b15612292578160125f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461228a9190612f4b565b925050819055505b61229d8484846122a4565b505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122f4578060025f8282546122e89190612f4b565b925050819055506123c2565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561237d578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401612374939291906133f7565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612409578060025f8282540392505081905550612453565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125325760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125259190612972565b60405180910390a3612678565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612611578173ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126049190612972565b60405180910390a3612677565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161266e9190612972565b60405180910390a35b5b505050565b5f612687826110b9565b11156126bd57600f5f9054906101000a900460ff166126b0576126ab6014546126c0565b6126bc565b6126bb6015546126c0565b5b5b50565b803a11156126cc575f80fd5b50565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612709826126e0565b9050919050565b612719816126ff565b8114612723575f80fd5b50565b5f8135905061273481612710565b92915050565b5f819050919050565b61274c8161273a565b8114612756575f80fd5b50565b5f8135905061276781612743565b92915050565b5f805f805f8060c08789031215612787576127866126d8565b5b5f61279489828a01612726565b96505060206127a589828a01612759565b95505060406127b689828a01612759565b94505060606127c789828a01612759565b93505060806127d889828a01612726565b92505060a06127e989828a01612759565b9150509295509295509295565b6127ff8161273a565b82525050565b5f6040820190506128185f8301856127f6565b61282560208301846127f6565b9392505050565b5f60208284031215612841576128406126d8565b5b5f61284e84828501612726565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561288e578082015181840152602081019050612873565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128b382612857565b6128bd8185612861565b93506128cd818560208601612871565b6128d681612899565b840191505092915050565b5f6020820190508181035f8301526128f981846128a9565b905092915050565b5f8060408385031215612917576129166126d8565b5b5f61292485828601612726565b925050602061293585828601612759565b9150509250929050565b5f8115159050919050565b6129538161293f565b82525050565b5f60208201905061296c5f83018461294a565b92915050565b5f6020820190506129855f8301846127f6565b92915050565b5f805f606084860312156129a2576129a16126d8565b5b5f6129af86828701612726565b93505060206129c086828701612726565b92505060406129d186828701612759565b9150509250925092565b5f60ff82169050919050565b6129f0816129db565b82525050565b5f602082019050612a095f8301846129e7565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a4d82612899565b810181811067ffffffffffffffff82111715612a6c57612a6b612a17565b5b80604052505050565b5f612a7e6126cf565b9050612a8a8282612a44565b919050565b5f67ffffffffffffffff821115612aa957612aa8612a17565b5b612ab282612899565b9050602081019050919050565b828183375f83830152505050565b5f612adf612ada84612a8f565b612a75565b905082815260208101848484011115612afb57612afa612a13565b5b612b06848285612abf565b509392505050565b5f82601f830112612b2257612b21612a0f565b5b8135612b32848260208601612acd565b91505092915050565b5f8060408385031215612b5157612b506126d8565b5b5f83013567ffffffffffffffff811115612b6e57612b6d6126dc565b5b612b7a85828601612b0e565b925050602083013567ffffffffffffffff811115612b9b57612b9a6126dc565b5b612ba785828601612b0e565b9150509250929050565b5f60208284031215612bc657612bc56126d8565b5b5f612bd384828501612759565b91505092915050565b612be5816126ff565b82525050565b5f602082019050612bfe5f830184612bdc565b92915050565b5f67ffffffffffffffff821115612c1e57612c1d612a17565b5b602082029050602081019050919050565b5f80fd5b5f612c45612c4084612c04565b612a75565b90508083825260208201905060208402830185811115612c6857612c67612c2f565b5b835b81811015612c915780612c7d8882612726565b845260208401935050602081019050612c6a565b5050509392505050565b5f82601f830112612caf57612cae612a0f565b5b8135612cbf848260208601612c33565b91505092915050565b5f60208284031215612cdd57612cdc6126d8565b5b5f82013567ffffffffffffffff811115612cfa57612cf96126dc565b5b612d0684828501612c9b565b91505092915050565b5f8060408385031215612d2557612d246126d8565b5b5f83013567ffffffffffffffff811115612d4257612d416126dc565b5b612d4e85828601612c9b565b9250506020612d5f85828601612759565b9150509250929050565b5f8060408385031215612d7f57612d7e6126d8565b5b5f612d8c85828601612726565b9250506020612d9d85828601612726565b9150509250929050565b612db08161293f565b8114612dba575f80fd5b50565b5f81359050612dcb81612da7565b92915050565b5f8060408385031215612de757612de66126d8565b5b5f612df485828601612726565b9250506020612e0585828601612dbd565b9150509250929050565b5f606082019050612e225f8301866127f6565b612e2f60208301856127f6565b612e3c60408301846127f6565b949350505050565b5f81519050612e5281612743565b92915050565b5f60208284031215612e6d57612e6c6126d8565b5b5f612e7a84828501612e44565b91505092915050565b5f606082019050612e965f830186612bdc565b612ea36020830185612bdc565b612eb060408301846127f6565b949350505050565b5f81519050612ec681612da7565b92915050565b5f60208284031215612ee157612ee06126d8565b5b5f612eee84828501612eb8565b91505092915050565b5f604082019050612f0a5f830185612bdc565b612f1760208301846127f6565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f558261273a565b9150612f608361273a565b9250828201905080821115612f7857612f77612f1e565b5b92915050565b5f819050919050565b5f819050919050565b5f612faa612fa5612fa084612f7e565b612f87565b61273a565b9050919050565b612fba81612f90565b82525050565b5f60c082019050612fd35f830189612bdc565b612fe060208301886127f6565b612fed6040830187612fb1565b612ffa6060830186612fb1565b6130076080830185612bdc565b61301460a08301846127f6565b979650505050505050565b5f8060408385031215613035576130346126d8565b5b5f61304285828601612e44565b925050602061305385828601612e44565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130a157607f821691505b6020821081036130b4576130b361305d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026131167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826130db565b61312086836130db565b95508019841693508086168417925050509392505050565b5f61315261314d6131488461273a565b612f87565b61273a565b9050919050565b5f819050919050565b61316b83613138565b61317f61317782613159565b8484546130e7565b825550505050565b5f90565b613193613187565b61319e818484613162565b505050565b5b818110156131c1576131b65f8261318b565b6001810190506131a4565b5050565b601f821115613206576131d7816130ba565b6131e0846130cc565b810160208510156131ef578190505b6132036131fb856130cc565b8301826131a3565b50505b505050565b5f82821c905092915050565b5f6132265f198460080261320b565b1980831691505092915050565b5f61323e8383613217565b9150826002028217905092915050565b61325782612857565b67ffffffffffffffff8111156132705761326f612a17565b5b61327a825461308a565b6132858282856131c5565b5f60209050601f8311600181146132b6575f84156132a4578287015190505b6132ae8582613233565b865550613315565b601f1984166132c4866130ba565b5f5b828110156132eb578489015182556001820191506020850194506020810190506132c6565b868310156133085784890151613304601f891682613217565b8355505b6001600288020188555050505b505050505050565b5f8151905061332b81612710565b92915050565b5f60208284031215613346576133456126d8565b5b5f6133538482850161331d565b91505092915050565b5f60408201905061336f5f830185612bdc565b61337c6020830184612bdc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6133ba8261273a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ec576133eb612f1e565b5b600182019050919050565b5f60608201905061340a5f830186612bdc565b61341760208301856127f6565b61342460408301846127f6565b949350505050565b5f805f60608486031215613443576134426126d8565b5b5f61345086828701612e44565b935050602061346186828701612e44565b925050604061347286828701612e44565b9150509250925092565b7f547261646520686173206e6f74206265656e206f70656e6564207965740000005f82015250565b5f6134b0601d83612861565b91506134bb8261347c565b602082019050919050565b5f6020820190508181035f8301526134dd816134a4565b905091905056fea2646970667358221220e7114212ebc066f67a335343c2549d2602007ac0cf26c75d154b6ebdf266b4cd64736f6c6343000814003300000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000d3c21bcecceda1000000000000000000000000000000e4a0764796ebed4c9197af5e8c9de5c8f98d266d0000000000000000000000000000000000000000000000120d4da7b0bd1400000000000000000000000000000000000000000000000000000000000000000001