60806040526012600a620000149190620007e7565b620186a062000024919062000837565b600555620000376200055e60201b60201c565b600a620000459190620007e7565b621e848062000055919062000837565b6006556019600755601960085560026009556002600a556002600b556002600c55730e1e0bfd849925f2aee293c5fc51f99db2a5851c600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601060146101000a81548160ff0219169083151502179055506001601060156101000a81548160ff0219169083151502179055503480156200010b575f80fd5b506200012c620001206200056660201b60201c565b6200056d60201b60201c565b5f73c532a74256d3db42d0bf7a0400fefdbad769400890508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b49190620008e6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002409190620008e6565b6040518363ffffffff1660e01b81526004016200025f92919062000927565b6020604051808303815f875af11580156200027c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a29190620008e6565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620003319190620007e7565b6305f5e10062000342919062000837565b60015f620003556200056660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003a76200062e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004d16200056660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200052f9190620007e7565b6305f5e10062000540919062000837565b6040516200054f919062000963565b60405180910390a3506200097e565b5f6012905090565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006df57808604811115620006b757620006b662000655565b5b6001851615620006c75780820291505b8081029050620006d78562000682565b945062000697565b94509492505050565b5f82620006f95760019050620007cb565b8162000708575f9050620007cb565b81600181146200072157600281146200072c5762000762565b6001915050620007cb565b60ff84111562000741576200074062000655565b5b8360020a9150848211156200075b576200075a62000655565b5b50620007cb565b5060208310610133831016604e8410600b84101617156200079c5782820a90508381111562000796576200079562000655565b5b620007cb565b620007ab84848460016200068e565b92509050818404811115620007c557620007c462000655565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620007f382620007d2565b91506200080083620007db565b92506200082f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006e8565b905092915050565b5f6200084382620007d2565b91506200085083620007d2565b92508282026200086081620007d2565b915082820484148315176200087a576200087962000655565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008b08262000885565b9050919050565b620008c281620008a4565b8114620008cd575f80fd5b50565b5f81519050620008e081620008b7565b92915050565b5f60208284031215620008fe57620008fd62000881565b5b5f6200090d84828501620008d0565b91505092915050565b6200092181620008a4565b82525050565b5f6040820190506200093c5f83018562000916565b6200094b602083018462000916565b9392505050565b6200095d81620007d2565b82525050565b5f602082019050620009785f83018462000952565b92915050565b613ac1806200098c5f395ff3fe6080604052600436106101fc575f3560e01c806389daf7991161010c578063a3cdf0231161009f578063bf474bed1161006e578063bf474bed146106fd578063cafdc37b14610727578063dd62ed3e1461074f578063ea049f641461078b578063f2fde38b146107b557610203565b8063a3cdf02314610633578063a9059cbb1461065b578063ae86ed8914610697578063bbde5b25146106c157610203565b8063935eb35f116100db578063935eb35f1461058f57806393d89a0c146105b757806394ff4122146105df57806395d89b411461060957610203565b806389daf799146104ed5780638da5cb5b146105155780639013ae081461053f57806393114b1d1461056757610203565b80633df9a8d21161018f57806351bc3c851161015e57806351bc3c851461041f578063590f897e1461043557806370a082311461045f578063715018a61461049b578063768dc710146104b157610203565b80633df9a8d21461037957806340b9a54b146103a3578063437823ec146103cd578063506dc692146103f557610203565b80631e0117bd116101cb5780631e0117bd146102c15780631fafa8bc146102e957806323b872dd14610313578063313ce5671461034f57610203565b806306fdde0314610207578063095ea7b3146102315780631234f8681461026d57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107dd565b604051610228919061282e565b60405180910390f35b34801561023c575f80fd5b50610257600480360381019061025291906128ec565b61081a565b6040516102649190612944565b60405180910390f35b348015610278575f80fd5b50610281610837565b60405161028e919061296c565b60405180910390f35b3480156102a2575f80fd5b506102ab61083d565b6040516102b8919061296c565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612985565b610860565b005b3480156102f4575f80fd5b506102fd6108bf565b60405161030a91906129d0565b60405180910390f35b34801561031e575f80fd5b50610339600480360381019061033491906129e9565b6108e4565b6040516103469190612944565b60405180910390f35b34801561035a575f80fd5b506103636109b8565b6040516103709190612a54565b60405180910390f35b348015610384575f80fd5b5061038d6109c0565b60405161039a919061296c565b60405180910390f35b3480156103ae575f80fd5b506103b76109c6565b6040516103c4919061296c565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee9190612985565b6109cc565b005b348015610400575f80fd5b50610409610a2c565b604051610416919061296c565b60405180910390f35b34801561042a575f80fd5b50610433610a32565b005b348015610440575f80fd5b50610449610ac9565b604051610456919061296c565b60405180910390f35b34801561046a575f80fd5b5061048560048036038101906104809190612985565b610acf565b604051610492919061296c565b60405180910390f35b3480156104a6575f80fd5b506104af610b15565b005b3480156104bc575f80fd5b506104d760048036038101906104d29190612985565b610b28565b6040516104e49190612944565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e9190612bad565b610b45565b005b348015610520575f80fd5b50610529610bd7565b6040516105369190612c03565b60405180910390f35b34801561054a575f80fd5b5061056560048036038101906105609190612985565b610bfe565b005b348015610572575f80fd5b5061058d60048036038101906105889190612c1c565b610c49565b005b34801561059a575f80fd5b506105b560048036038101906105b09190612bad565b610cb7565b005b3480156105c2575f80fd5b506105dd60048036038101906105d89190612c1c565b610d4a565b005b3480156105ea575f80fd5b506105f3610d5c565b604051610600919061296c565b60405180910390f35b348015610614575f80fd5b5061061d610d62565b60405161062a919061282e565b60405180910390f35b34801561063e575f80fd5b5061065960048036038101906106549190612c1c565b610d9f565b005b348015610666575f80fd5b50610681600480360381019061067c91906128ec565b610db1565b60405161068e9190612944565b60405180910390f35b3480156106a2575f80fd5b506106ab610dce565b6040516106b89190612c03565b60405180910390f35b3480156106cc575f80fd5b506106e760048036038101906106e29190612985565b610df3565b6040516106f49190612944565b60405180910390f35b348015610708575f80fd5b50610711610e10565b60405161071e919061296c565b60405180910390f35b348015610732575f80fd5b5061074d60048036038101906107489190612c47565b610e16565b005b34801561075a575f80fd5b5061077560048036038101906107709190612c97565b610e38565b604051610782919061296c565b60405180910390f35b348015610796575f80fd5b5061079f610eba565b6040516107ac919061296c565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d69190612985565b610ec0565b005b60606040518060400160405280600d81526020017f536b6970746963205479736f6e00000000000000000000000000000000000000815250905090565b5f61082d610826610f42565b8484610f49565b6001905092915050565b60065481565b5f6012600a61084c9190612e31565b6305f5e10061085b9190612e7b565b905090565b61086861110c565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6108f084848461118a565b6109ad846108fc610f42565b6109a885604051806060016040528060288152602001613a646028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61095f610f42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b799092919063ffffffff16565b610f49565b600190509392505050565b5f6012905090565b60095481565b60075481565b6109d461110c565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600a5481565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a72610f42565b73ffffffffffffffffffffffffffffffffffffffff1614610a91575f80fd5b5f610a9b30610acf565b90505f811115610aaf57610aae81611bdb565b5b5f4790505f811115610ac557610ac481611e4f565b5b5050565b60085481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b1d61110c565b610b265f611f1c565b565b6003602052805f5260405f205f915054906101000a900460ff1681565b610b4d61110c565b5f5b8151811015610bd3575f60045f848481518110610b6f57610b6e612ebc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610b4f565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c0661110c565b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c5161110c565b610c6c60c8610c5e61083d565b611fdd90919063ffffffff16565b8111610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca490612f33565b60405180910390fd5b8060068190555050565b610cbf61110c565b5f5b8151811015610d4657600160045f848481518110610ce257610ce1612ebc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610cc1565b5050565b610d5261110c565b8060088190555050565b600c5481565b60606040518060400160405280600781526020017f534b495054494300000000000000000000000000000000000000000000000000815250905090565b610da761110c565b8060078190555050565b5f610dc4610dbd610f42565b848461118a565b6001905092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b60055481565b610e1e61110c565b82600a8190555081600b8190555080600c81905550505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b610ec861110c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90612fc1565b60405180910390fd5b610f3f81611f1c565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061304f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906130dd565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110ff919061296c565b60405180910390a3505050565b611114610f42565b73ffffffffffffffffffffffffffffffffffffffff16611132610bd7565b73ffffffffffffffffffffffffffffffffffffffff1614611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90613145565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef906131d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90613261565b60405180910390fd5b5f81116112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f906132ef565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611346575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90613357565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611424575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118c95760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146114d6576006548261148a85610acf565b6114949190613375565b11156114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc906133f2565b60405180910390fd5b5b5f60095411156115bb5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561158a575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115ba576115b760646115a96009548561202690919063ffffffff16565b611fdd90919063ffffffff16565b90505b5b5f600754111561169f5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561166e5750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561169e5761169b606461168d6007548561202690919063ffffffff16565b611fdd90919063ffffffff16565b90505b5b5f60085411156117295760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117285761172560646117176008548561202690919063ffffffff16565b611fdd90919063ffffffff16565b90505b5b5f61173330610acf565b9050601060149054906101000a900460ff1615801561179e575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156117b65750601060159054906101000a900460ff165b80156117c3575060055481115b156118c7575f600c54600a54600b546117dc9190613375565b6117e69190613375565b90505f600282600a54856117fa9190612e7b565b611804919061343d565b61180e919061343d565b90505f82600b54856118209190612e7b565b61182a919061343d565b90505f83600c548661183c9190612e7b565b611846919061343d565b90505f8183856118569190613375565b6118609190613375565b905061186b81611bdb565b5f84111561188b575f61187d8561209d565b905061188985826122db565b505b5f8211156118aa575f61189d8361209d565b90506118a881612413565b505b5f4790505f8111156118c0576118bf47611e4f565b5b5050505050505b505b5f8111156119c8576119218160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461269d90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119bf919061296c565b60405180910390a35b611a188260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611abb611a6f82846126fa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461269d90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b5e84866126fa90919063ffffffff16565b604051611b6b919061296c565b60405180910390a350505050565b5f838311158290611bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb7919061282e565b60405180910390fd5b505f8385611bce919061346d565b9050809150509392505050565b6001601060146101000a81548160ff0219169083151502179055505f810315611e32575f600267ffffffffffffffff811115611c1a57611c19612a71565b5b604051908082528060200260200182016040528015611c485781602001602082028036833780820191505090505b50905030815f81518110611c5f57611c5e612ebc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2791906134b4565b81600181518110611d3b57611d3a612ebc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611da130600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f49565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e039594939291906135d8565b5f604051808303815f87803b158015611e1a575f80fd5b505af1158015611e2c573d5f803e3d5ffd5b50505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e959061365d565b5f6040518083038185875af1925050503d805f8114611ecf576040519150601f19603f3d011682016040523d82523d5f602084013e611ed4565b606091505b5050905080611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f906136bb565b60405180910390fd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f61201e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612743565b905092915050565b5f808303612036575f9050612097565b5f82846120439190612e7b565b9050828482612052919061343d565b14612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613749565b60405180910390fd5b809150505b92915050565b5f80600267ffffffffffffffff8111156120ba576120b9612a71565b5b6040519080825280602002602001820160405280156120e85781602001602082028036833780820191505090505b50905030815f815181106120ff576120fe612ebc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c791906134b4565b816001815181106121db576121da612ebc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85846040518363ffffffff1660e01b8152600401612272929190613767565b5f60405180830381865afa15801561228c573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906122b49190613869565b9050806001815181106122ca576122c9612ebc565b5b602002602001015192505050919050565b6001601060146101000a81548160ff0219169083151502179055505f8203156123f55761232a30600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f49565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016123b096959493929190613902565b60606040518083038185885af11580156123cc573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906123f19190613961565b5050505b5f601060146101000a81548160ff0219169083151502179055505050565b6001601060146101000a81548160ff0219169083151502179055505f810315612680575f600267ffffffffffffffff81111561245257612451612a71565b5b6040519080825280602002602001820160405280156124805781602001602082028036833780820191505090505b509050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ed573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251191906134b4565b815f8151811061252457612523612ebc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061259457612593612ebc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95835f84600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161265094939291906139b1565b5f604051808303818588803b158015612667575f80fd5b505af1158015612679573d5f803e3d5ffd5b5050505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f8082846126ab9190613375565b9050838110156126f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e790613a45565b60405180910390fd5b8091505092915050565b5f61273b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b79565b905092915050565b5f8083118290612789576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612780919061282e565b60405180910390fd5b505f8385612797919061343d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127db5780820151818401526020810190506127c0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612800826127a4565b61280a81856127ae565b935061281a8185602086016127be565b612823816127e6565b840191505092915050565b5f6020820190508181035f83015261284681846127f6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128888261285f565b9050919050565b6128988161287e565b81146128a2575f80fd5b50565b5f813590506128b38161288f565b92915050565b5f819050919050565b6128cb816128b9565b81146128d5575f80fd5b50565b5f813590506128e6816128c2565b92915050565b5f806040838503121561290257612901612857565b5b5f61290f858286016128a5565b9250506020612920858286016128d8565b9150509250929050565b5f8115159050919050565b61293e8161292a565b82525050565b5f6020820190506129575f830184612935565b92915050565b612966816128b9565b82525050565b5f60208201905061297f5f83018461295d565b92915050565b5f6020828403121561299a57612999612857565b5b5f6129a7848285016128a5565b91505092915050565b5f6129ba8261285f565b9050919050565b6129ca816129b0565b82525050565b5f6020820190506129e35f8301846129c1565b92915050565b5f805f60608486031215612a00576129ff612857565b5b5f612a0d868287016128a5565b9350506020612a1e868287016128a5565b9250506040612a2f868287016128d8565b9150509250925092565b5f60ff82169050919050565b612a4e81612a39565b82525050565b5f602082019050612a675f830184612a45565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612aa7826127e6565b810181811067ffffffffffffffff82111715612ac657612ac5612a71565b5b80604052505050565b5f612ad861284e565b9050612ae48282612a9e565b919050565b5f67ffffffffffffffff821115612b0357612b02612a71565b5b602082029050602081019050919050565b5f80fd5b5f612b2a612b2584612ae9565b612acf565b90508083825260208201905060208402830185811115612b4d57612b4c612b14565b5b835b81811015612b765780612b6288826128a5565b845260208401935050602081019050612b4f565b5050509392505050565b5f82601f830112612b9457612b93612a6d565b5b8135612ba4848260208601612b18565b91505092915050565b5f60208284031215612bc257612bc1612857565b5b5f82013567ffffffffffffffff811115612bdf57612bde61285b565b5b612beb84828501612b80565b91505092915050565b612bfd8161287e565b82525050565b5f602082019050612c165f830184612bf4565b92915050565b5f60208284031215612c3157612c30612857565b5b5f612c3e848285016128d8565b91505092915050565b5f805f60608486031215612c5e57612c5d612857565b5b5f612c6b868287016128d8565b9350506020612c7c868287016128d8565b9250506040612c8d868287016128d8565b9150509250925092565b5f8060408385031215612cad57612cac612857565b5b5f612cba858286016128a5565b9250506020612ccb858286016128a5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d5757808604811115612d3357612d32612cd5565b5b6001851615612d425780820291505b8081029050612d5085612d02565b9450612d17565b94509492505050565b5f82612d6f5760019050612e2a565b81612d7c575f9050612e2a565b8160018114612d925760028114612d9c57612dcb565b6001915050612e2a565b60ff841115612dae57612dad612cd5565b5b8360020a915084821115612dc557612dc4612cd5565b5b50612e2a565b5060208310610133831016604e8410600b8410161715612e005782820a905083811115612dfb57612dfa612cd5565b5b612e2a565b612e0d8484846001612d0e565b92509050818404811115612e2457612e23612cd5565b5b81810290505b9392505050565b5f612e3b826128b9565b9150612e4683612a39565b9250612e737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d60565b905092915050565b5f612e85826128b9565b9150612e90836128b9565b9250828202612e9e816128b9565b91508282048414831517612eb557612eb4612cd5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4c696d697420746f6f206c6573730000000000000000000000000000000000005f82015250565b5f612f1d600e836127ae565b9150612f2882612ee9565b602082019050919050565b5f6020820190508181035f830152612f4a81612f11565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612fab6026836127ae565b9150612fb682612f51565b604082019050919050565b5f6020820190508181035f830152612fd881612f9f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130396024836127ae565b915061304482612fdf565b604082019050919050565b5f6020820190508181035f8301526130668161302d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130c76022836127ae565b91506130d28261306d565b604082019050919050565b5f6020820190508181035f8301526130f4816130bb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61312f6020836127ae565b915061313a826130fb565b602082019050919050565b5f6020820190508181035f83015261315c81613123565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131bd6025836127ae565b91506131c882613163565b604082019050919050565b5f6020820190508181035f8301526131ea816131b1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61324b6023836127ae565b9150613256826131f1565b604082019050919050565b5f6020820190508181035f8301526132788161323f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132d96029836127ae565b91506132e48261327f565b604082019050919050565b5f6020820190508181035f830152613306816132cd565b9050919050565b7f53656e646572206f7220526563697069656e7420426c61636b6c6973746564005f82015250565b5f613341601f836127ae565b915061334c8261330d565b602082019050919050565b5f6020820190508181035f83015261336e81613335565b9050919050565b5f61337f826128b9565b915061338a836128b9565b92508282019050808211156133a2576133a1612cd5565b5b92915050565b7f457863656564732074686520616e74695768616c654c696d69742e00000000005f82015250565b5f6133dc601b836127ae565b91506133e7826133a8565b602082019050919050565b5f6020820190508181035f830152613409816133d0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613447826128b9565b9150613452836128b9565b92508261346257613461613410565b5b828204905092915050565b5f613477826128b9565b9150613482836128b9565b925082820390508181111561349a57613499612cd5565b5b92915050565b5f815190506134ae8161288f565b92915050565b5f602082840312156134c9576134c8612857565b5b5f6134d6848285016134a0565b91505092915050565b5f819050919050565b5f819050919050565b5f61350b613506613501846134df565b6134e8565b6128b9565b9050919050565b61351b816134f1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6135538161287e565b82525050565b5f613564838361354a565b60208301905092915050565b5f602082019050919050565b5f61358682613521565b613590818561352b565b935061359b8361353b565b805f5b838110156135cb5781516135b28882613559565b97506135bd83613570565b92505060018101905061359e565b5085935050505092915050565b5f60a0820190506135eb5f83018861295d565b6135f86020830187613512565b818103604083015261360a818661357c565b90506136196060830185612bf4565b613626608083018461295d565b9695505050505050565b5f81905092915050565b50565b5f6136485f83613630565b91506136538261363a565b5f82019050919050565b5f6136678261363d565b9150819050919050565b7f43616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f6136a5600b836127ae565b91506136b082613671565b602082019050919050565b5f6020820190508181035f8301526136d281613699565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137336021836127ae565b915061373e826136d9565b604082019050919050565b5f6020820190508181035f83015261376081613727565b9050919050565b5f60408201905061377a5f83018561295d565b818103602083015261378c818461357c565b90509392505050565b5f67ffffffffffffffff8211156137af576137ae612a71565b5b602082029050602081019050919050565b5f815190506137ce816128c2565b92915050565b5f6137e66137e184613795565b612acf565b9050808382526020820190506020840283018581111561380957613808612b14565b5b835b81811015613832578061381e88826137c0565b84526020840193505060208101905061380b565b5050509392505050565b5f82601f8301126138505761384f612a6d565b5b81516138608482602086016137d4565b91505092915050565b5f6020828403121561387e5761387d612857565b5b5f82015167ffffffffffffffff81111561389b5761389a61285b565b5b6138a78482850161383c565b91505092915050565b5f6138ca6138c56138c08461285f565b6134e8565b61285f565b9050919050565b5f6138db826138b0565b9050919050565b5f6138ec826138d1565b9050919050565b6138fc816138e2565b82525050565b5f60c0820190506139155f830189612bf4565b613922602083018861295d565b61392f6040830187613512565b61393c6060830186613512565b61394960808301856138f3565b61395660a083018461295d565b979650505050505050565b5f805f6060848603121561397857613977612857565b5b5f613985868287016137c0565b9350506020613996868287016137c0565b92505060406139a7868287016137c0565b9150509250925092565b5f6080820190506139c45f830187613512565b81810360208301526139d6818661357c565b90506139e560408301856138f3565b6139f2606083018461295d565b95945050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a2f601b836127ae565b9150613a3a826139fb565b602082019050919050565b5f6020820190508181035f830152613a5c81613a23565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d8e38d70d18c4e1fb02d33311fab4431dac24ba85dab00d2589d6a360dee194c64736f6c63430008180033