6080604052600960045f6101000a81548160ff021916908360ff1602179055503480156200002b575f80fd5b5060405162001cfe38038062001cfe83398181016040528101906200005191906200048a565b5f62000062620002b160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600590816200010f91906200074f565b5080600690816200012191906200074f565b5062000132620002b860201b60201c565b600a620001409190620009bc565b64174876e7ff62000152919062000a0c565b60035f82825462000164919062000a56565b9250508190555060035460015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620001bb919062000a56565b925050819055508260025f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620002a0919062000aa1565b60405180910390a350505062000abc565b5f33905090565b5f60045f9054906101000a900460ff16905090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b620002f281620002de565b8114620002fd575f80fd5b50565b5f815190506200031081620002e7565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000366826200031e565b810181811067ffffffffffffffff821117156200038857620003876200032e565b5b80604052505050565b5f6200039c620002cd565b9050620003aa82826200035b565b919050565b5f67ffffffffffffffff821115620003cc57620003cb6200032e565b5b620003d7826200031e565b9050602081019050919050565b5f5b8381101562000403578082015181840152602081019050620003e6565b5f8484015250505050565b5f620004246200041e84620003af565b62000391565b9050828152602081018484840111156200044357620004426200031a565b5b62000450848285620003e4565b509392505050565b5f82601f8301126200046f576200046e62000316565b5b8151620004818482602086016200040e565b91505092915050565b5f805f60608486031215620004a457620004a3620002d6565b5b5f620004b38682870162000300565b935050602084015167ffffffffffffffff811115620004d757620004d6620002da565b5b620004e58682870162000458565b925050604084015167ffffffffffffffff811115620005095762000508620002da565b5b620005178682870162000458565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200057057607f821691505b6020821081036200058657620005856200052b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005ad565b620005f68683620005ad565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000637620006316200062b84620002de565b6200060e565b620002de565b9050919050565b5f819050919050565b620006528362000617565b6200066a62000661826200063e565b848454620005b9565b825550505050565b5f90565b6200068062000672565b6200068d81848462000647565b505050565b5b81811015620006b457620006a85f8262000676565b60018101905062000693565b5050565b601f8211156200070357620006cd816200058c565b620006d8846200059e565b81016020851015620006e8578190505b62000700620006f7856200059e565b83018262000692565b50505b505050565b5f82821c905092915050565b5f620007255f198460080262000708565b1980831691505092915050565b5f6200073f838362000714565b9150826002028217905092915050565b6200075a8262000521565b67ffffffffffffffff8111156200077657620007756200032e565b5b62000782825462000558565b6200078f828285620006b8565b5f60209050601f831160018114620007c5575f8415620007b0578287015190505b620007bc858262000732565b8655506200082b565b601f198416620007d5866200058c565b5f5b82811015620007fe57848901518255600182019150602085019450602081019050620007d7565b868310156200081e57848901516200081a601f89168262000714565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008bd5780860481111562000895576200089462000833565b5b6001851615620008a55780820291505b8081029050620008b58562000860565b945062000875565b94509492505050565b5f82620008d75760019050620009a9565b81620008e6575f9050620009a9565b8160018114620008ff57600281146200090a5762000940565b6001915050620009a9565b60ff8411156200091f576200091e62000833565b5b8360020a91508482111562000939576200093862000833565b5b50620009a9565b5060208310610133831016604e8410600b84101617156200097a5782820a90508381111562000974576200097362000833565b5b620009a9565b6200098984848460016200086c565b92509050818404811115620009a357620009a262000833565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620009c882620002de565b9150620009d583620009b0565b925062000a047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008c6565b905092915050565b5f62000a1882620002de565b915062000a2583620002de565b925082820262000a3581620002de565b9150828204841483151762000a4f5762000a4e62000833565b5b5092915050565b5f62000a6282620002de565b915062000a6f83620002de565b925082820190508082111562000a8a5762000a8962000833565b5b92915050565b62000a9b81620002de565b82525050565b5f60208201905062000ab65f83018462000a90565b92915050565b6112348062000aca5f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c806370a082311161006f57806370a0823114610165578063715018a6146101955780638da5cb5b1461019f57806395d89b41146101bd578063a9059cbb146101db578063dd62ed3e1461020b576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f80fd5b6100b361023b565b6040516100c09190610c1a565b60405180910390f35b6100e360048036038101906100de9190610ccb565b6102cb565b6040516100f09190610d23565b60405180910390f35b6101016102e8565b60405161010e9190610d4b565b60405180910390f35b610131600480360381019061012c9190610d64565b6102f1565b60405161013e9190610d23565b60405180910390f35b61014f6103a4565b60405161015c9190610dcf565b60405180910390f35b61017f600480360381019061017a9190610de8565b6103b9565b60405161018c9190610d4b565b60405180910390f35b61019d6103ff565b005b6101a761054d565b6040516101b49190610e22565b60405180910390f35b6101c5610574565b6040516101d29190610c1a565b60405180910390f35b6101f560048036038101906101f09190610ccb565b610604565b6040516102029190610d23565b60405180910390f35b61022560048036038101906102209190610e3b565b610621565b6040516102329190610d4b565b60405180910390f35b60606005805461024a90610ea6565b80601f016020809104026020016040519081016040528092919081815260200182805461027690610ea6565b80156102c15780601f10610298576101008083540402835291602001916102c1565b820191905f5260205f20905b8154815290600101906020018083116102a457829003601f168201915b5050505050905090565b5f6102de6102d76106a3565b84846106aa565b6001905092915050565b5f600354905090565b5f6102fd84848461086d565b610399846103096106a3565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6103506106a3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546103949190610f03565b6106aa565b600190509392505050565b5f60045f9054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104076106a3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048a90610f80565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461058390610ea6565b80601f01602080910402602001604051908101604052809291908181526020018280546105af90610ea6565b80156105fa5780601f106105d1576101008083540402835291602001916105fa565b820191905f5260205f20905b8154815290600101906020018083116105dd57829003601f168201915b5050505050905090565b5f6106176106106106a3565b848461086d565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f9061100e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d9061109c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108609190610d4b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d29061100e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109409061109c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c090611104565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550610a1e838383610ad4565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ac79190610d4b565b60405180910390a3505050565b5f610adf5f80610621565b92508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3757600354620f4240610b259190611122565b82610b309190611163565b9050610b89565b620aeaea610b458486610621565b10610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c906111e0565b60405180910390fd5b8190505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610bc7578082015181840152602081019050610bac565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610bec82610b90565b610bf68185610b9a565b9350610c06818560208601610baa565b610c0f81610bd2565b840191505092915050565b5f6020820190508181035f830152610c328184610be2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c6782610c3e565b9050919050565b610c7781610c5d565b8114610c81575f80fd5b50565b5f81359050610c9281610c6e565b92915050565b5f819050919050565b610caa81610c98565b8114610cb4575f80fd5b50565b5f81359050610cc581610ca1565b92915050565b5f8060408385031215610ce157610ce0610c3a565b5b5f610cee85828601610c84565b9250506020610cff85828601610cb7565b9150509250929050565b5f8115159050919050565b610d1d81610d09565b82525050565b5f602082019050610d365f830184610d14565b92915050565b610d4581610c98565b82525050565b5f602082019050610d5e5f830184610d3c565b92915050565b5f805f60608486031215610d7b57610d7a610c3a565b5b5f610d8886828701610c84565b9350506020610d9986828701610c84565b9250506040610daa86828701610cb7565b9150509250925092565b5f60ff82169050919050565b610dc981610db4565b82525050565b5f602082019050610de25f830184610dc0565b92915050565b5f60208284031215610dfd57610dfc610c3a565b5b5f610e0a84828501610c84565b91505092915050565b610e1c81610c5d565b82525050565b5f602082019050610e355f830184610e13565b92915050565b5f8060408385031215610e5157610e50610c3a565b5b5f610e5e85828601610c84565b9250506020610e6f85828601610c84565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ebd57607f821691505b602082108103610ed057610ecf610e79565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f0d82610c98565b9150610f1883610c98565b9250828203905081811115610f3057610f2f610ed6565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f6a602083610b9a565b9150610f7582610f36565b602082019050919050565b5f6020820190508181035f830152610f9781610f5e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610ff8602483610b9a565b915061100382610f9e565b604082019050919050565b5f6020820190508181035f83015261102581610fec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611086602283610b9a565b91506110918261102c565b604082019050919050565b5f6020820190508181035f8301526110b38161107a565b9050919050565b7f746f6b656e206973207a65726f206164647265737300000000000000000000005f82015250565b5f6110ee601583610b9a565b91506110f9826110ba565b602082019050919050565b5f6020820190508181035f83015261111b816110e2565b9050919050565b5f61112c82610c98565b915061113783610c98565b925082820261114581610c98565b9150828204841483151761115c5761115b610ed6565b5b5092915050565b5f61116d82610c98565b915061117883610c98565b92508282019050808211156111905761118f610ed6565b5b92915050565b7f45524332303a544f4b454e205a65726f000000000000000000000000000000005f82015250565b5f6111ca601083610b9a565b91506111d582611196565b602082019050919050565b5f6020820190508181035f8301526111f7816111be565b905091905056fea2646970667358221220dd36672297aafb0dbde574ccf86a10bb5779d018f12fb568505cb2816381c93b64736f6c63430008180033000000000000000000000000782fc7450d972bcf4443640e6d415f1a2a4ad454000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000446656e6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000446454e4e00000000000000000000000000000000000000000000000000000000