0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063893d20e811610097578063a457c2d711610066578063a457c2d71461029f578063a9059cbb146102cf578063dd62ed3e146102ff578063f2fde38b1461032f57610100565b8063893d20e8146102295780638c287cb9146102475780638da5cb5b1461026357806395d89b411461028157610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806370a08231146101ef578063715018a61461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61034b565b60405161011a91906111e3565b60405180910390f35b61013d6004803603810190610138919061129e565b6103dd565b60405161014a91906112f9565b60405180910390f35b61015b6103fb565b6040516101689190611323565b60405180910390f35b61018b6004803603810190610186919061133e565b610405565b60405161019891906112f9565b60405180910390f35b6101a96104de565b6040516101b691906113ad565b60405180910390f35b6101d960048036038101906101d4919061129e565b6104f5565b6040516101e691906112f9565b60405180910390f35b610209600480360381019061020491906113c8565b6105a8565b6040516102169190611323565b60405180910390f35b6102276105f1565b005b61023161072b565b60405161023e9190611404565b60405180910390f35b610261600480360381019061025c919061141f565b61073a565b005b61026b61085f565b6040516102789190611404565b60405180910390f35b610289610888565b60405161029691906111e3565b60405180910390f35b6102b960048036038101906102b4919061129e565b61091a565b6040516102c691906112f9565b60405180910390f35b6102e960048036038101906102e4919061129e565b6109e7565b6040516102f691906112f9565b60405180910390f35b61031960048036038101906103149190611486565b610a05565b6040516103269190611323565b60405180910390f35b610349600480360381019061034491906113c8565b610a8c565b005b60606007805461035a906114f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610386906114f5565b80156103d35780601f106103a8576101008083540402835291602001916103d3565b820191906000526020600020905b8154815290600101906020018083116103b657829003601f168201915b5050505050905090565b60006103f16103ea610c34565b8484610c3c565b6001905092915050565b6000600454905090565b6000610412848484610e05565b6104d38461041e610c34565b6104ce856040518060600160405280602981526020016119ff60299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610484610c34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110919092919063ffffffff16565b610c3c565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061059e610502610c34565b846105998560026000610513610c34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f590919063ffffffff16565b610c3c565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105f9610c34565b73ffffffffffffffffffffffffffffffffffffffff1661061761085f565b73ffffffffffffffffffffffffffffffffffffffff161461066d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066490611572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061073561085f565b905090565b610742610c34565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c890611572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361080a57600080fd5b808261081691906115c1565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610897906114f5565b80601f01602080910402602001604051908101604052809291908181526020018280546108c3906114f5565b80156109105780601f106108e557610100808354040283529160200191610910565b820191906000526020600020905b8154815290600101906020018083116108f357829003601f168201915b5050505050905090565b60006109dd610927610c34565b846109d8856040518060600160405280602681526020016119b26026913960026000610951610c34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110919092919063ffffffff16565b610c3c565b6001905092915050565b60006109fb6109f4610c34565b8484610e05565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a94610c34565b73ffffffffffffffffffffffffffffffffffffffff16610ab261085f565b73ffffffffffffffffffffffffffffffffffffffff1614610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90611572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90611675565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290611707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190611799565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610df89190611323565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b9061182b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda906118bd565b60405180910390fd5b610f4f816040518060600160405280602781526020016119d860279139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110919092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fe481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110849190611323565b60405180910390a3505050565b60008383111582906110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d091906111e3565b60405180910390fd5b50600083856110e891906118dd565b9050809150509392505050565b60008082846111049190611911565b905083811015611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611991565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561118d578082015181840152602081019050611172565b60008484015250505050565b6000601f19601f8301169050919050565b60006111b582611153565b6111bf818561115e565b93506111cf81856020860161116f565b6111d881611199565b840191505092915050565b600060208201905081810360008301526111fd81846111aa565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112358261120a565b9050919050565b6112458161122a565b811461125057600080fd5b50565b6000813590506112628161123c565b92915050565b6000819050919050565b61127b81611268565b811461128657600080fd5b50565b60008135905061129881611272565b92915050565b600080604083850312156112b5576112b4611205565b5b60006112c385828601611253565b92505060206112d485828601611289565b9150509250929050565b60008115159050919050565b6112f3816112de565b82525050565b600060208201905061130e60008301846112ea565b92915050565b61131d81611268565b82525050565b60006020820190506113386000830184611314565b92915050565b60008060006060848603121561135757611356611205565b5b600061136586828701611253565b935050602061137686828701611253565b925050604061138786828701611289565b9150509250925092565b600060ff82169050919050565b6113a781611391565b82525050565b60006020820190506113c2600083018461139e565b92915050565b6000602082840312156113de576113dd611205565b5b60006113ec84828501611253565b91505092915050565b6113fe8161122a565b82525050565b600060208201905061141960008301846113f5565b92915050565b6000806000806080858703121561143957611438611205565b5b600061144787828801611253565b945050602061145887828801611253565b935050604061146987828801611289565b925050606061147a87828801611289565b91505092959194509250565b6000806040838503121561149d5761149c611205565b5b60006114ab85828601611253565b92505060206114bc85828601611253565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061150d57607f821691505b6020821081036115205761151f6114c6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061155c60208361115e565b915061156782611526565b602082019050919050565b6000602082019050818103600083015261158b8161154f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115cc82611268565b91506115d783611268565b92508282026115e581611268565b915082820484148315176115fc576115fb611592565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061165f60268361115e565b915061166a82611603565b604082019050919050565b6000602082019050818103600083015261168e81611652565b9050919050565b7f4945524332303a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006116f160258361115e565b91506116fc82611695565b604082019050919050565b60006020820190508181036000830152611720816116e4565b9050919050565b7f4945524332303a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061178360238361115e565b915061178e82611727565b604082019050919050565b600060208201905081810360008301526117b281611776565b9050919050565b7f4945524332303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061181560268361115e565b9150611820826117b9565b604082019050919050565b6000602082019050818103600083015261184481611808565b9050919050565b7f4945524332303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006118a760248361115e565b91506118b28261184b565b604082019050919050565b600060208201905081810360008301526118d68161189a565b9050919050565b60006118e882611268565b91506118f383611268565b925082820390508181111561190b5761190a611592565b5b92915050565b600061191c82611268565b915061192783611268565b925082820190508082111561193f5761193e611592565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061197b601b8361115e565b915061198682611945565b602082019050919050565b600060208201905081810360008301526119aa8161196e565b905091905056fe4945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4945524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654945524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ad5a04184d00acac81f1d8958e51cf89f8a54594cd4502e0150f11406cf6761964736f6c63430008120033
0x60806040523480156200001157600080fd5b506040516200215638038062002156833981810160405281019062000037919062000328565b600062000049620002b660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600981526020017f5761676d6920322e300000000000000000000000000000000000000000000000815250600790816200012d9190620005d4565b506040518060400160405280600881526020017f5741474d49322e3000000000000000000000000000000000000000000000000081525060069081620001749190620005d4565b506009600560006101000a81548160ff021916908360ff160217905550670de0b6b3a764000060048190555060045460016000620001b7620002b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000246620002b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620002a79190620006cc565b60405180910390a350620006e9565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002f082620002c3565b9050919050565b6200030281620002e3565b81146200030e57600080fd5b50565b6000815190506200032281620002f7565b92915050565b600060208284031215620003415762000340620002be565b5b6000620003518482850162000311565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003dc57607f821691505b602082108103620003f257620003f162000394565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200045c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200041d565b6200046886836200041d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b5620004af620004a98462000480565b6200048a565b62000480565b9050919050565b6000819050919050565b620004d18362000494565b620004e9620004e082620004bc565b8484546200042a565b825550505050565b600090565b62000500620004f1565b6200050d818484620004c6565b505050565b5b81811015620005355762000529600082620004f6565b60018101905062000513565b5050565b601f82111562000584576200054e81620003f8565b62000559846200040d565b8101602085101562000569578190505b6200058162000578856200040d565b83018262000512565b50505b505050565b600082821c905092915050565b6000620005a96000198460080262000589565b1980831691505092915050565b6000620005c4838362000596565b9150826002028217905092915050565b620005df826200035a565b67ffffffffffffffff811115620005fb57620005fa62000365565b5b620006078254620003c3565b6200061482828562000539565b600060209050601f8311600181146200064c576000841562000637578287015190505b620006438582620005b6565b865550620006b3565b601f1984166200065c86620003f8565b60005b8281101562000686578489015182556001820191506020850194506020810190506200065f565b86831015620006a65784890151620006a2601f89168262000596565b8355505b6001600288020188555050505b505050505050565b620006c68162000480565b82525050565b6000602082019050620006e36000830184620006bb565b92915050565b611a5d80620006f96000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063893d20e811610097578063a457c2d711610066578063a457c2d71461029f578063a9059cbb146102cf578063dd62ed3e146102ff578063f2fde38b1461032f57610100565b8063893d20e8146102295780638c287cb9146102475780638da5cb5b1461026357806395d89b411461028157610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806370a08231146101ef578063715018a61461021f57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d61034b565b60405161011a91906111e3565b60405180910390f35b61013d6004803603810190610138919061129e565b6103dd565b60405161014a91906112f9565b60405180910390f35b61015b6103fb565b6040516101689190611323565b60405180910390f35b61018b6004803603810190610186919061133e565b610405565b60405161019891906112f9565b60405180910390f35b6101a96104de565b6040516101b691906113ad565b60405180910390f35b6101d960048036038101906101d4919061129e565b6104f5565b6040516101e691906112f9565b60405180910390f35b610209600480360381019061020491906113c8565b6105a8565b6040516102169190611323565b60405180910390f35b6102276105f1565b005b61023161072b565b60405161023e9190611404565b60405180910390f35b610261600480360381019061025c919061141f565b61073a565b005b61026b61085f565b6040516102789190611404565b60405180910390f35b610289610888565b60405161029691906111e3565b60405180910390f35b6102b960048036038101906102b4919061129e565b61091a565b6040516102c691906112f9565b60405180910390f35b6102e960048036038101906102e4919061129e565b6109e7565b6040516102f691906112f9565b60405180910390f35b61031960048036038101906103149190611486565b610a05565b6040516103269190611323565b60405180910390f35b610349600480360381019061034491906113c8565b610a8c565b005b60606007805461035a906114f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610386906114f5565b80156103d35780601f106103a8576101008083540402835291602001916103d3565b820191906000526020600020905b8154815290600101906020018083116103b657829003601f168201915b5050505050905090565b60006103f16103ea610c34565b8484610c3c565b6001905092915050565b6000600454905090565b6000610412848484610e05565b6104d38461041e610c34565b6104ce856040518060600160405280602981526020016119ff60299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610484610c34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110919092919063ffffffff16565b610c3c565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600061059e610502610c34565b846105998560026000610513610c34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f590919063ffffffff16565b610c3c565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105f9610c34565b73ffffffffffffffffffffffffffffffffffffffff1661061761085f565b73ffffffffffffffffffffffffffffffffffffffff161461066d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066490611572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061073561085f565b905090565b610742610c34565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c890611572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361080a57600080fd5b808261081691906115c1565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610897906114f5565b80601f01602080910402602001604051908101604052809291908181526020018280546108c3906114f5565b80156109105780601f106108e557610100808354040283529160200191610910565b820191906000526020600020905b8154815290600101906020018083116108f357829003601f168201915b5050505050905090565b60006109dd610927610c34565b846109d8856040518060600160405280602681526020016119b26026913960026000610951610c34565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110919092919063ffffffff16565b610c3c565b6001905092915050565b60006109fb6109f4610c34565b8484610e05565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a94610c34565b73ffffffffffffffffffffffffffffffffffffffff16610ab261085f565b73ffffffffffffffffffffffffffffffffffffffff1614610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90611572565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6e90611675565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290611707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190611799565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610df89190611323565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b9061182b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda906118bd565b60405180910390fd5b610f4f816040518060600160405280602781526020016119d860279139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110919092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fe481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110f590919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110849190611323565b60405180910390a3505050565b60008383111582906110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d091906111e3565b60405180910390fd5b50600083856110e891906118dd565b9050809150509392505050565b60008082846111049190611911565b905083811015611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090611991565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561118d578082015181840152602081019050611172565b60008484015250505050565b6000601f19601f8301169050919050565b60006111b582611153565b6111bf818561115e565b93506111cf81856020860161116f565b6111d881611199565b840191505092915050565b600060208201905081810360008301526111fd81846111aa565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112358261120a565b9050919050565b6112458161122a565b811461125057600080fd5b50565b6000813590506112628161123c565b92915050565b6000819050919050565b61127b81611268565b811461128657600080fd5b50565b60008135905061129881611272565b92915050565b600080604083850312156112b5576112b4611205565b5b60006112c385828601611253565b92505060206112d485828601611289565b9150509250929050565b60008115159050919050565b6112f3816112de565b82525050565b600060208201905061130e60008301846112ea565b92915050565b61131d81611268565b82525050565b60006020820190506113386000830184611314565b92915050565b60008060006060848603121561135757611356611205565b5b600061136586828701611253565b935050602061137686828701611253565b925050604061138786828701611289565b9150509250925092565b600060ff82169050919050565b6113a781611391565b82525050565b60006020820190506113c2600083018461139e565b92915050565b6000602082840312156113de576113dd611205565b5b60006113ec84828501611253565b91505092915050565b6113fe8161122a565b82525050565b600060208201905061141960008301846113f5565b92915050565b6000806000806080858703121561143957611438611205565b5b600061144787828801611253565b945050602061145887828801611253565b935050604061146987828801611289565b925050606061147a87828801611289565b91505092959194509250565b6000806040838503121561149d5761149c611205565b5b60006114ab85828601611253565b92505060206114bc85828601611253565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061150d57607f821691505b6020821081036115205761151f6114c6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061155c60208361115e565b915061156782611526565b602082019050919050565b6000602082019050818103600083015261158b8161154f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115cc82611268565b91506115d783611268565b92508282026115e581611268565b915082820484148315176115fc576115fb611592565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061165f60268361115e565b915061166a82611603565b604082019050919050565b6000602082019050818103600083015261168e81611652565b9050919050565b7f4945524332303a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006116f160258361115e565b91506116fc82611695565b604082019050919050565b60006020820190508181036000830152611720816116e4565b9050919050565b7f4945524332303a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061178360238361115e565b915061178e82611727565b604082019050919050565b600060208201905081810360008301526117b281611776565b9050919050565b7f4945524332303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061181560268361115e565b9150611820826117b9565b604082019050919050565b6000602082019050818103600083015261184481611808565b9050919050565b7f4945524332303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006118a760248361115e565b91506118b28261184b565b604082019050919050565b600060208201905081810360008301526118d68161189a565b9050919050565b60006118e882611268565b91506118f383611268565b925082820390508181111561190b5761190a611592565b5b92915050565b600061191c82611268565b915061192783611268565b925082820190508082111561193f5761193e611592565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061197b601b8361115e565b915061198682611945565b602082019050919050565b600060208201905081810360008301526119aa8161196e565b905091905056fe4945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4945524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654945524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ad5a04184d00acac81f1d8958e51cf89f8a54594cd4502e0150f11406cf6761964736f6c63430008120033000000000000000000000000a3f236ce1f5c5d13ae466543f6209171ec9e6c98