60806040526a084595161401484a0000006006556040518060400160405280600881526020017f322e30204d6f6f6e0000000000000000000000000000000000000000000000008152506007908162000059919062000961565b506040518060400160405280600881526020017f322e30204d6f6f6e00000000000000000000000000000000000000000000000081525060089081620000a0919062000961565b506012600960006101000a81548160ff021916908360ff160217905550640d09dc3000600a556001600b556001600c556001601055348015620000e257600080fd5b5060405162003f7b38038062003f7b833981810160405281019062000108919062000ab2565b6200011933620005fa60201b60201c565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000ab2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029e919062000ab2565b6040518363ffffffff1660e01b8152600401620002bd92919062000af5565b6020604051808303816000875af1158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000ab2565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600460006200035a620006be60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620003a8620006be60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000409919062000b33565b60405180910390a36001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200076957607f821691505b6020821081036200077f576200077e62000721565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007e97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007aa565b620007f58683620007aa565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008426200083c62000836846200080d565b62000817565b6200080d565b9050919050565b6000819050919050565b6200085e8362000821565b620008766200086d8262000849565b848454620007b7565b825550505050565b600090565b6200088d6200087e565b6200089a81848462000853565b505050565b5b81811015620008c257620008b660008262000883565b600181019050620008a0565b5050565b601f8211156200091157620008db8162000785565b620008e6846200079a565b81016020851015620008f6578190505b6200090e62000905856200079a565b8301826200089f565b50505b505050565b600082821c905092915050565b6000620009366000198460080262000916565b1980831691505092915050565b600062000951838362000923565b9150826002028217905092915050565b6200096c82620006e7565b67ffffffffffffffff811115620009885762000987620006f2565b5b62000994825462000750565b620009a1828285620008c6565b600060209050601f831160018114620009d95760008415620009c4578287015190505b620009d0858262000943565b86555062000a40565b601f198416620009e98662000785565b60005b8281101562000a1357848901518255600182019150602085019450602081019050620009ec565b8683101562000a33578489015162000a2f601f89168262000923565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a7a8262000a4d565b9050919050565b62000a8c8162000a6d565b811462000a9857600080fd5b50565b60008151905062000aac8162000a81565b92915050565b60006020828403121562000acb5762000aca62000a48565b5b600062000adb8482850162000a9b565b91505092915050565b62000aef8162000a6d565b82525050565b600060408201905062000b0c600083018562000ae4565b62000b1b602083018462000ae4565b9392505050565b62000b2d816200080d565b82525050565b600060208201905062000b4a600083018462000b22565b92915050565b61341b8062000b606000396000f3fe6080604052600436106102045760003560e01c806370a0823111610118578063a7e90f41116100a0578063e3bbb4f11161006f578063e3bbb4f1146107a0578063e4440a86146107cb578063edd8b64a146107f6578063f2fde38b1461081f578063f53d9d581461084857610204565b8063a7e90f41146106ac578063a9059cbb146106e9578063d1a039f014610726578063dd62ed3e1461076357610204565b80638da5cb5b116100e75780638da5cb5b146105c757806395d89b41146105f25780639e568dbc1461061d5780639f38a0d714610646578063a457c2d71461066f57610204565b806370a082311461051f578063715018a61461055c5780638229c2e51461057357806385ecafd71461058a57610204565b80633816377e1161019b5780634feeade41161016a5780634feeade41461043c5780635337cc99146104535780635342acb41461047c5780636994ee73146104b95780636db79437146104f657610204565b80633816377e1461038257806339509351146103ab5780633975cae9146103e85780634d474d421461041357610204565b806323b872dd116101d757806323b872dd146102c55780632df8bca914610302578063313ce5671461032e578063344d9e791461035957610204565b806306fdde0314610209578063095ea7b3146102345780631342be9b1461027157806318160ddd1461029a575b600080fd5b34801561021557600080fd5b5061021e610864565b60405161022b919061251b565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906125db565b6108f6565b6040516102689190612636565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612651565b610912565b005b3480156102a657600080fd5b506102af6109c4565b6040516102bc91906126a0565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e791906126bb565b6109ce565b6040516102f99190612636565b60405180910390f35b34801561030e57600080fd5b506103176109f6565b60405161032592919061270e565b60405180910390f35b34801561033a57600080fd5b50610343610a07565b6040516103509190612753565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061276e565b610a1e565b005b34801561038e57600080fd5b506103a960048036038101906103a4919061276e565b610a54565b005b3480156103b757600080fd5b506103d260048036038101906103cd91906125db565b610a8a565b6040516103df9190612636565b60405180910390f35b3480156103f457600080fd5b506103fd610aba565b60405161040a9190612636565b60405180910390f35b34801561041f57600080fd5b5061043a6004803603810190610435919061279b565b610ad1565b005b34801561044857600080fd5b50610451610b41565b005b34801561045f57600080fd5b5061047a600480360381019061047591906127f4565b610bd3565b005b34801561048857600080fd5b506104a3600480360381019061049e919061279b565b610cec565b6040516104b09190612636565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db919061279b565b610d42565b6040516104ed91906126a0565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612834565b610d8b565b005b34801561052b57600080fd5b506105466004803603810190610541919061279b565b610e1a565b60405161055391906126a0565b60405180910390f35b34801561056857600080fd5b50610571610e63565b005b34801561057f57600080fd5b50610588610e77565b005b34801561059657600080fd5b506105b160048036038101906105ac919061279b565b610ecf565b6040516105be9190612636565b60405180910390f35b3480156105d357600080fd5b506105dc610eef565b6040516105e99190612883565b60405180910390f35b3480156105fe57600080fd5b50610607610f18565b604051610614919061251b565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f919061276e565b610faa565b005b34801561065257600080fd5b5061066d60048036038101906106689190612903565b610ff2565b005b34801561067b57600080fd5b50610696600480360381019061069191906125db565b6110c3565b6040516106a39190612636565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce919061279b565b611133565b6040516106e09190612636565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b91906125db565b611189565b60405161071d9190612636565b60405180910390f35b34801561073257600080fd5b5061074d6004803603810190610748919061279b565b6111a5565b60405161075a91906126a0565b60405180910390f35b34801561076f57600080fd5b5061078a60048036038101906107859190612651565b6111ee565b60405161079791906126a0565b60405180910390f35b3480156107ac57600080fd5b506107b5611275565b6040516107c291906126a0565b60405180910390f35b3480156107d757600080fd5b506107e061127b565b6040516107ed9190612883565b60405180910390f35b34801561080257600080fd5b5061081d6004803603810190610818919061279b565b6112a1565b005b34801561082b57600080fd5b506108466004803603810190610841919061279b565b611311565b005b610862600480360381019061085d919061276e565b611394565b005b60606007805461087390612992565b80601f016020809104026020016040519081016040528092919081815260200182805461089f90612992565b80156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b5050505050905090565b6000803390506109078185856114b5565b600191505092915050565b61093e33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600654905090565b6000803390506109df8582856116f0565b6109ea85858561177c565b60019150509392505050565b600080600b54600c54915091509091565b6000600960009054906101000a900460ff16905090565b610a4a33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b8060108190555050565b610a8033600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b80600a8190555050565b600080339050610aaf818585610aa085896111ee565b610aaa91906129f2565b6114b5565b600191505092915050565b6000601460009054906101000a900460ff16905090565b610afd33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b6d33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b6d629b8c891b267182b61400000000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bca91906129f2565b92505081905550565b610bff33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890612a72565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db733600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b60648211158015610dc9575060648111155b610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90612b04565b60405180910390fd5b81600b8190555080600c819055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e6b611fc0565b610e756000612037565b565b610ea333600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b601460009054906101000a900460ff1615601460006101000a81548160ff021916908315150217905550565b60136020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610f2790612992565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5390612992565b8015610fa05780601f10610f7557610100808354040283529160200191610fa0565b820191906000526020600020905b815481529060010190602001808311610f8357829003601f168201915b5050505050905090565b610fd633600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b8060066000828254610fe891906129f2565b9250508190555050565b61101e33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b60005b838390508110156110bd57816011600086868581811061104457611043612b24565b5b9050602002016020810190611059919061279b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b590612b53565b915050611021565b50505050565b60008033905060006110d582866111ee565b90508381101561111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612c0d565b60405180910390fd5b61112782868684036114b5565b60019250505092915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008033905061119a81858561177c565b600191505092915050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112cd33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611319611fc0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90612c9f565b60405180910390fd5b61139181612037565b50565b6113c033600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661167e565b6113ed30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836114b5565b6113f73082611189565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343084600080336104b04261144b91906129f2565b6040518863ffffffff1660e01b815260040161146c96959493929190612d04565b60606040518083038185885af115801561148a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114af9190612d7a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90612e3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90612ed1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161167191906126a0565b60405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e390612f63565b60405180910390fd5b5050565b60006116fc84846111ee565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117765781811015611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90612fcf565b60405180910390fd5b61177584848484036114b5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290613061565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361185a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611851906130f3565b60405180910390fd5b6118658383836120fb565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e390613185565b60405180910390fd5b6118f584610cec565b158015611908575061190683610cec565b155b15611ea4576119168461238c565b15611b5057600061192983600b5461243e565b9050828261193791906131a5565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808361198691906131a5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119d491906129f2565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611a3691906131a5565b604051611a4391906126a0565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611abc91906129f2565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4291906126a0565b60405180910390a350611e9f565b611b598361238c565b15611d93576000611b6c83600c5461243e565b90508282611b7a91906131a5565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083611bc991906131a5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c1791906129f2565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611c7991906131a5565b604051611c8691906126a0565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cff91906129f2565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d8591906126a0565b60405180910390a350611e9e565b8181611d9f91906131a5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3191906129f2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e9591906126a0565b60405180910390a35b5b611faf565b8181611eb091906131a5565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f4291906129f2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fa691906126a0565b60405180910390a35b611fba848484612460565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16611fdf610eef565b73ffffffffffffffffffffffffffffffffffffffff1614612035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202c90613225565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6121048361238c565b156121a45780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461215891906129f2565b9250508190555042600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6121ad8261238c565b1561238757601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123865780600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c906132b7565b60405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122d491906131a5565b925050819055506122e3610aba565b1561237357612333600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601054612465565b612372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236990613323565b60405180910390fd5b5b61237b61247e565b1561238557600080fd5b5b5b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806124375750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b60006064828461244e9190613343565b61245891906133b4565b905092915050565b505050565b600042828461247491906129f2565b1015905092915050565b6000600a543a1015905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156124c55780820151818401526020810190506124aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006124ed8261248b565b6124f78185612496565b93506125078185602086016124a7565b612510816124d1565b840191505092915050565b6000602082019050818103600083015261253581846124e2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061257282612547565b9050919050565b61258281612567565b811461258d57600080fd5b50565b60008135905061259f81612579565b92915050565b6000819050919050565b6125b8816125a5565b81146125c357600080fd5b50565b6000813590506125d5816125af565b92915050565b600080604083850312156125f2576125f161253d565b5b600061260085828601612590565b9250506020612611858286016125c6565b9150509250929050565b60008115159050919050565b6126308161261b565b82525050565b600060208201905061264b6000830184612627565b92915050565b600080604083850312156126685761266761253d565b5b600061267685828601612590565b925050602061268785828601612590565b9150509250929050565b61269a816125a5565b82525050565b60006020820190506126b56000830184612691565b92915050565b6000806000606084860312156126d4576126d361253d565b5b60006126e286828701612590565b93505060206126f386828701612590565b9250506040612704868287016125c6565b9150509250925092565b60006040820190506127236000830185612691565b6127306020830184612691565b9392505050565b600060ff82169050919050565b61274d81612737565b82525050565b60006020820190506127686000830184612744565b92915050565b6000602082840312156127845761278361253d565b5b6000612792848285016125c6565b91505092915050565b6000602082840312156127b1576127b061253d565b5b60006127bf84828501612590565b91505092915050565b6127d18161261b565b81146127dc57600080fd5b50565b6000813590506127ee816127c8565b92915050565b6000806040838503121561280b5761280a61253d565b5b600061281985828601612590565b925050602061282a858286016127df565b9150509250929050565b6000806040838503121561284b5761284a61253d565b5b6000612859858286016125c6565b925050602061286a858286016125c6565b9150509250929050565b61287d81612567565b82525050565b60006020820190506128986000830184612874565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128c3576128c261289e565b5b8235905067ffffffffffffffff8111156128e0576128df6128a3565b5b6020830191508360208202830111156128fc576128fb6128a8565b5b9250929050565b60008060006040848603121561291c5761291b61253d565b5b600084013567ffffffffffffffff81111561293a57612939612542565b5b612946868287016128ad565b93509350506020612959868287016127df565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129aa57607f821691505b6020821081036129bd576129bc612963565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129fd826125a5565b9150612a08836125a5565b9250828201905080821115612a2057612a1f6129c3565b5b92915050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b6000612a5c601d83612496565b9150612a6782612a26565b602082019050919050565b60006020820190508181036000830152612a8b81612a4f565b9050919050565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b6000612aee602483612496565b9150612af982612a92565b604082019050919050565b60006020820190508181036000830152612b1d81612ae1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612b5e826125a5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b9057612b8f6129c3565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612bf7602583612496565b9150612c0282612b9b565b604082019050919050565b60006020820190508181036000830152612c2681612bea565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c89602683612496565b9150612c9482612c2d565b604082019050919050565b60006020820190508181036000830152612cb881612c7c565b9050919050565b6000819050919050565b6000819050919050565b6000612cee612ce9612ce484612cbf565b612cc9565b6125a5565b9050919050565b612cfe81612cd3565b82525050565b600060c082019050612d196000830189612874565b612d266020830188612691565b612d336040830187612cf5565b612d406060830186612cf5565b612d4d6080830185612874565b612d5a60a0830184612691565b979650505050505050565b600081519050612d74816125af565b92915050565b600080600060608486031215612d9357612d9261253d565b5b6000612da186828701612d65565b9350506020612db286828701612d65565b9250506040612dc386828701612d65565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e29602483612496565b9150612e3482612dcd565b604082019050919050565b60006020820190508181036000830152612e5881612e1c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ebb602283612496565b9150612ec682612e5f565b604082019050919050565b60006020820190508181036000830152612eea81612eae565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f4d602183612496565b9150612f5882612ef1565b604082019050919050565b60006020820190508181036000830152612f7c81612f40565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612fb9601d83612496565b9150612fc482612f83565b602082019050919050565b60006020820190508181036000830152612fe881612fac565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061304b602583612496565b915061305682612fef565b604082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130dd602383612496565b91506130e882613081565b604082019050919050565b6000602082019050818103600083015261310c816130d0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061316f602683612496565b915061317a82613113565b604082019050919050565b6000602082019050818103600083015261319e81613162565b9050919050565b60006131b0826125a5565b91506131bb836125a5565b92508282039050818111156131d3576131d26129c3565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061320f602083612496565b915061321a826131d9565b602082019050919050565b6000602082019050818103600083015261323e81613202565b9050919050565b7f596f752061726520747279696e6720746f2073656c6c206d6f7265207468616e60008201527f20626f7567687421000000000000000000000000000000000000000000000000602082015250565b60006132a1602883612496565b91506132ac82613245565b604082019050919050565b600060208201905081810360008301526132d081613294565b9050919050565b7f4c696272654d6f756e743a20457863656564732054786e20446f776e74696d65600082015250565b600061330d602083612496565b9150613318826132d7565b602082019050919050565b6000602082019050818103600083015261333c81613300565b9050919050565b600061334e826125a5565b9150613359836125a5565b9250828202613367816125a5565b9150828204841483151761337e5761337d6129c3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133bf826125a5565b91506133ca836125a5565b9250826133da576133d9613385565b5b82820490509291505056fea26469706673582212200fab6736b918736f4e983068b0a986a821aa4c974d1573a81ed41f824461456764736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d