608060405234801562000010575f80fd5b506040518060400160405280600681526020017f455243424f5400000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f455243424f54000000000000000000000000000000000000000000000000000081525081600390816200008e919062000ad0565b508060049081620000a0919062000ad0565b505050620000c3620000b76200038d60201b60201c565b6200039460201b60201c565b7379db86788c3a0071e036d8ecf20bdbba468be799600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073906e7ae5ee75fa79dea2403060b5c1feffccefc5600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6200017c6200045760201b60201c565b600a6200018a919062000d3d565b629896806200019a919062000d8d565b9050620001cf600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826200045f60201b60201c565b620002045f801b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620005c460201b60201c565b620002577f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620005c460201b60201c565b620002897f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0830620005c460201b60201c565b6001600e5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000386600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006b060201b60201c565b5062000fbd565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6009905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c79062000e35565b60405180910390fd5b620004e35f83836200074560201b60201c565b8060025f828254620004f6919062000e55565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005a5919062000ea0565b60405180910390a3620005c05f83836200074a60201b60201c565b5050565b620005d682826200074f60201b60201c565b620006ac57600160065f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006516200038d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b620006c0620007b360201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007289062000f2f565b60405180910390fd5b62000742816200039460201b60201c565b50565b505050565b505050565b5f60065f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b620007c36200038d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007e96200084460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008399062000f9d565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008e857607f821691505b602082108103620008fe57620008fd620008a3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000925565b6200096e868362000925565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009b8620009b2620009ac8462000986565b6200098f565b62000986565b9050919050565b5f819050919050565b620009d38362000998565b620009eb620009e282620009bf565b84845462000931565b825550505050565b5f90565b62000a01620009f3565b62000a0e818484620009c8565b505050565b5b8181101562000a355762000a295f82620009f7565b60018101905062000a14565b5050565b601f82111562000a845762000a4e8162000904565b62000a598462000916565b8101602085101562000a69578190505b62000a8162000a788562000916565b83018262000a13565b50505b505050565b5f82821c905092915050565b5f62000aa65f198460080262000a89565b1980831691505092915050565b5f62000ac0838362000a95565b9150826002028217905092915050565b62000adb826200086c565b67ffffffffffffffff81111562000af75762000af662000876565b5b62000b038254620008d0565b62000b1082828562000a39565b5f60209050601f83116001811462000b46575f841562000b31578287015190505b62000b3d858262000ab3565b86555062000bac565b601f19841662000b568662000904565b5f5b8281101562000b7f5784890151825560018201915060208501945060208101905062000b58565b8683101562000b9f578489015162000b9b601f89168262000a95565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c3e5780860481111562000c165762000c1562000bb4565b5b600185161562000c265780820291505b808102905062000c368562000be1565b945062000bf6565b94509492505050565b5f8262000c58576001905062000d2a565b8162000c67575f905062000d2a565b816001811462000c80576002811462000c8b5762000cc1565b600191505062000d2a565b60ff84111562000ca05762000c9f62000bb4565b5b8360020a91508482111562000cba5762000cb962000bb4565b5b5062000d2a565b5060208310610133831016604e8410600b841016171562000cfb5782820a90508381111562000cf55762000cf462000bb4565b5b62000d2a565b62000d0a848484600162000bed565b9250905081840481111562000d245762000d2362000bb4565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000d498262000986565b915062000d568362000d31565b925062000d857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c47565b905092915050565b5f62000d998262000986565b915062000da68362000986565b925082820262000db68162000986565b9150828204841483151762000dd05762000dcf62000bb4565b5b5092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e1d601f8362000dd7565b915062000e2a8262000de7565b602082019050919050565b5f6020820190508181035f83015262000e4e8162000e0f565b9050919050565b5f62000e618262000986565b915062000e6e8362000986565b925082820190508082111562000e895762000e8862000bb4565b5b92915050565b62000e9a8162000986565b82525050565b5f60208201905062000eb55f83018462000e8f565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000f1760268362000dd7565b915062000f248262000ebb565b604082019050919050565b5f6020820190508181035f83015262000f488162000f09565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f8560208362000dd7565b915062000f928262000f4f565b602082019050919050565b5f6020820190508181035f83015262000fb68162000f77565b9050919050565b61409a8062000fcb5f395ff3fe608060405260043610620001fe575f3560e01c806370a08231116200010e578063a217fddf11620000a2578063d482e95a116200006c578063d482e95a1462000764578063d547741f1462000791578063dd62ed3e14620007be578063f2fde38b14620008015762000206565b8063a217fddf1462000682578063a457c2d714620006b1578063a5fd053a14620006f4578063a9059cbb14620007215762000206565b80638718b24f11620000e45780638718b24f14620005b25780638da5cb5b14620005e157806391d14854146200061057806395d89b4114620006535762000206565b806370a082311462000529578063715018a6146200056c578063800f5aaa14620005855762000206565b80632f2ff15d116200019257806339509351116200015c5780633950935114620004595780633f936ff5146200049c57806349bd5a5e14620004cb578063553193ca14620004fa5762000206565b80632f2ff15d14620003a15780632f48ab7d14620003ce578063313ce56714620003fd57806336568abe146200042c5762000206565b806318160ddd11620001d457806318160ddd14620002bf5780631c6a0c4c14620002ee57806323b872dd146200031b578063248a9ca3146200035e5762000206565b806301ffc9a7146200020a57806306fdde03146200024d578063095ea7b3146200027c5762000206565b366200020657005b5f80fd5b34801562000216575f80fd5b506200023560048036038101906200022f919062002ace565b6200082e565b60405162000244919062002b1a565b60405180910390f35b34801562000259575f80fd5b5062000264620008aa565b60405162000273919062002bc9565b60405180910390f35b34801562000288575f80fd5b50620002a76004803603810190620002a1919062002c84565b62000942565b604051620002b6919062002b1a565b60405180910390f35b348015620002cb575f80fd5b50620002d662000968565b604051620002e5919062002cda565b60405180910390f35b348015620002fa575f80fd5b5062000319600480360381019062000313919062002cf5565b62000971565b005b34801562000327575f80fd5b5062000346600480360381019062000340919062002d25565b620009e6565b60405162000355919062002b1a565b60405180910390f35b3480156200036a575f80fd5b5062000389600480360381019062000383919062002db6565b62000a1a565b60405162000398919062002df7565b60405180910390f35b348015620003ad575f80fd5b50620003cc6004803603810190620003c6919062002e12565b62000a37565b005b348015620003da575f80fd5b50620003e562000a5e565b604051620003f4919062002e68565b60405180910390f35b34801562000409575f80fd5b506200041462000a83565b60405162000423919062002ea0565b60405180910390f35b34801562000438575f80fd5b5062000457600480360381019062000451919062002e12565b62000a8b565b005b34801562000465575f80fd5b506200048460048036038101906200047e919062002c84565b62000b15565b60405162000493919062002b1a565b60405180910390f35b348015620004a8575f80fd5b50620004b362000b53565b604051620004c2919062002cda565b60405180910390f35b348015620004d7575f80fd5b50620004e262000b59565b604051620004f1919062002e68565b60405180910390f35b34801562000506575f80fd5b506200051162000b7e565b60405162000520919062002cda565b60405180910390f35b34801562000535575f80fd5b506200055460048036038101906200054e919062002ebb565b62000b84565b60405162000563919062002cda565b60405180910390f35b34801562000578575f80fd5b506200058362000bc9565b005b34801562000591575f80fd5b50620005b06004803603810190620005aa919062002ebb565b62000be0565b005b348015620005be575f80fd5b50620005c962000d0d565b604051620005d8919062002f52565b60405180910390f35b348015620005ed575f80fd5b50620005f862000d32565b60405162000607919062002e68565b60405180910390f35b3480156200061c575f80fd5b506200063b600480360381019062000635919062002e12565b62000d5a565b6040516200064a919062002b1a565b60405180910390f35b3480156200065f575f80fd5b506200066a62000dbe565b60405162000679919062002bc9565b60405180910390f35b3480156200068e575f80fd5b506200069962000e56565b604051620006a8919062002df7565b60405180910390f35b348015620006bd575f80fd5b50620006dc6004803603810190620006d6919062002c84565b62000e5c565b604051620006eb919062002b1a565b60405180910390f35b34801562000700575f80fd5b506200071f600480360381019062000719919062002fd7565b62000eda565b005b3480156200072d575f80fd5b506200074c600480360381019062000746919062002c84565b62000fdd565b6040516200075b919062002b1a565b60405180910390f35b34801562000770575f80fd5b506200078f60048036038101906200078991906200302a565b62001003565b005b3480156200079d575f80fd5b50620007bc6004803603810190620007b6919062002e12565b6200146b565b005b348015620007ca575f80fd5b50620007e96004803603810190620007e391906200302a565b62001492565b604051620007f8919062002cda565b60405180910390f35b3480156200080d575f80fd5b506200082c600480360381019062000826919062002ebb565b62001514565b005b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480620008a35750620008a2826200159d565b5b9050919050565b606060038054620008bb906200309c565b80601f0160208091040260200160405190810160405280929190818152602001828054620008e9906200309c565b8015620009385780601f106200090e5761010080835404028352916020019162000938565b820191905f5260205f20905b8154815290600101906020018083116200091a57829003601f168201915b5050505050905090565b5f806200094e62001606565b90506200095d8185856200160d565b600191505092915050565b5f600254905090565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086200099d81620017d8565b3373ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015620009e1573d5f803e3d5ffd5b505050565b5f80620009f262001606565b905062000a01858285620017f0565b62000a0e85858562001883565b60019150509392505050565b5f60065f8381526020019081526020015f20600101549050919050565b62000a428262000a1a565b62000a4d81620017d8565b62000a59838362001c99565b505050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009905090565b62000a9562001606565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000afc9062003144565b60405180910390fd5b62000b11828262001d79565b5050565b5f8062000b2162001606565b905062000b4881858562000b36858962001492565b62000b42919062003191565b6200160d565b600191505092915050565b600d5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b62000bd362001e59565b62000bde5f62001ede565b565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0862000c0c81620017d8565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040162000c64919062002e68565b602060405180830381865afa15801562000c80573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000ca69190620031e1565b6040518363ffffffff1660e01b815260040162000cc592919062003211565b6020604051808303815f875af115801562000ce2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000d0891906200326b565b505050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60606004805462000dcf906200309c565b80601f016020809104026020016040519081016040528092919081815260200182805462000dfd906200309c565b801562000e4c5780601f1062000e225761010080835404028352916020019162000e4c565b820191905f5260205f20905b81548152906001019060200180831162000e2e57829003601f168201915b5050505050905090565b5f801b81565b5f8062000e6862001606565b90505f62000e77828662001492565b90508381101562000ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000eb6906200330f565b60405180910390fd5b62000ece82868684036200160d565b60019250505092915050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0862000f0681620017d8565b43600a819055505f5b8383905081101562000fd75762000fc166f8b0a10e470000662386f26fc10000600162000f6a600589898881811062000f4d5762000f4c6200332f565b5b905060200201602081019062000f64919062002ebb565b62001fa1565b62000f76919062003191565b62000f8291906200335c565b62000f8e919062003191565b85858481811062000fa45762000fa36200332f565b5b905060200201602081019062000fbb919062002ebb565b62001fe6565b808062000fce90620033a6565b91505062000f0f565b50505050565b5f8062000fe962001606565b905062000ff881858562001883565b600191505092915050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086200102f81620017d8565b8260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8290508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200111e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001144919062003408565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620011a192919062003438565b6020604051808303815f875af1158015620011be573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620011e4919062003408565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620012c292919062003211565b6020604051808303815f875af1158015620012df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200130591906200326b565b50620013543060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200160d565b6200138130307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200160d565b620013f0600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200160d565b30604051620013ff9062002a5e565b6200140b919062002e68565b604051809103905ff08015801562001425573d5f803e3d5ffd5b50600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b620014768262000a1a565b6200148181620017d8565b6200148d838362001d79565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6200151e62001e59565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200158f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200158690620034d7565b60405180910390fd5b6200159a8162001ede565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001675906200356b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620016ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620016e690620035ff565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620017cb919062002cda565b60405180910390a3505050565b620017ed81620017e762001606565b6200227f565b50565b5f620017fd848462001492565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146200187d57818110156200186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001864906200366d565b60405180910390fd5b6200187c84848484036200160d565b5b50505050565b5f8111620018c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018bf90620036db565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562001973575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156200198c57620019868383836200230e565b62001c94565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362001ae0575f600a541162001a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001a1f9062003749565b60405180910390fd5b62001a5f833062001a59606462001a4a6001876200232090919063ffffffff16565b6200233790919063ffffffff16565b6200234e565b62001a8a606462001a7b6001846200232090919063ffffffff16565b6200233790919063ffffffff16565b600d5f82825462001a9c919062003191565b9250508190555062001ada838362001ad4606462001ac56063876200232090919063ffffffff16565b6200233790919063ffffffff16565b6200234e565b62001c94565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362001c9357600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161562001b985762001b928383836200234e565b62001c94565b62001bcf833062001bc9606462001bba6001876200232090919063ffffffff16565b6200233790919063ffffffff16565b6200234e565b62001bfa606462001beb6001846200232090919063ffffffff16565b6200233790919063ffffffff16565b600d5f82825462001c0c919062003191565b9250508190555062001c4f81600d5462001c27919062003191565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620025c9565b5f600d8190555062001c8d838362001c87606462001c786063876200232090919063ffffffff16565b6200233790919063ffffffff16565b6200234e565b62001c94565b5b505050565b62001ca5828262000d5a565b62001d7557600160065f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062001d1a62001606565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b62001d85828262000d5a565b1562001e55575f60065f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062001dfa62001606565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b62001e6362001606565b73ffffffffffffffffffffffffffffffffffffffff1662001e8362000d32565b73ffffffffffffffffffffffffffffffffffffffff161462001edc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001ed390620037b7565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8242448460405160200162001fba9392919062003848565b604051602081830303815290604052805190602001205f1c62001fde9190620038b7565b905092915050565b6001600f60146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111562002020576200201f620038ee565b5b6040519080825280602002602001820160405280156200204f5781602001602082028036833780820191505090505b50905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815f815181106200208a57620020896200332f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110620020dc57620020db6200332f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040162002173919062002e68565b602060405180830381865afa1580156200218f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620021b59190620031e1565b90505f8403620021c3578093505b8084116200225f5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795855f8587426040518663ffffffff1660e01b81526004016200222f95949392919062003a23565b5f604051808303815f87803b15801562002247575f80fd5b505af11580156200225a573d5f803e3d5ffd5b505050505b50505f600f60146101000a81548160ff0219169083151502179055505050565b6200228b828262000d5a565b6200230a576200229b81620027d1565b620022aa835f1c602062002800565b604051602001620022bd92919062003b61565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002301919062002bc9565b60405180910390fd5b5050565b6200231b8383836200234e565b505050565b5f81836200232f91906200335c565b905092915050565b5f818362002346919062003ba2565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620023bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023b69062003c4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362002430576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024279062003ce1565b60405180910390fd5b6200243d83838362002a54565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620024c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024ba9062003d75565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620025ae919062002cda565b60405180910390a3620025c384848462002a59565b50505050565b6001600f60146101000a81548160ff0219169083151502179055505f620025f03062000b84565b90505f600267ffffffffffffffff811115620026115762002610620038ee565b5b604051908082528060200260200182016040528015620026405781602001602082028036833780820191505090505b5090508382101562002650578193505b5f841115620027b15730815f8151811062002670576200266f6200332f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110620026e357620026e26200332f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795855f8487426040518663ffffffff1660e01b81526004016200278195949392919062003a23565b5f604051808303815f87803b15801562002799575f80fd5b505af1158015620027ac573d5f803e3d5ffd5b505050505b50505f600f60146101000a81548160ff0219169083151502179055505050565b6060620027f98273ffffffffffffffffffffffffffffffffffffffff16601460ff1662002800565b9050919050565b60605f60028360026200281491906200335c565b62002820919062003191565b67ffffffffffffffff8111156200283c576200283b620038ee565b5b6040519080825280601f01601f1916602001820160405280156200286f5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110620028a957620028a86200332f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106200290f576200290e6200332f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60018460026200294f91906200335c565b6200295b919062003191565b90505b600181111562002a04577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110620029a157620029a06200332f565b5b1a60f81b828281518110620029bb57620029ba6200332f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c945080620029fc9062003d95565b90506200295e565b505f841462002a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162002a419062003e0f565b60405180910390fd5b8091505092915050565b505050565b505050565b6102358062003e3083390190565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62002aaa8162002a74565b811462002ab5575f80fd5b50565b5f8135905062002ac88162002a9f565b92915050565b5f6020828403121562002ae65762002ae562002a6c565b5b5f62002af58482850162002ab8565b91505092915050565b5f8115159050919050565b62002b148162002afe565b82525050565b5f60208201905062002b2f5f83018462002b09565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101562002b6e57808201518184015260208101905062002b51565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62002b958262002b35565b62002ba1818562002b3f565b935062002bb381856020860162002b4f565b62002bbe8162002b79565b840191505092915050565b5f6020820190508181035f83015262002be3818462002b89565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62002c168262002beb565b9050919050565b62002c288162002c0a565b811462002c33575f80fd5b50565b5f8135905062002c468162002c1d565b92915050565b5f819050919050565b62002c608162002c4c565b811462002c6b575f80fd5b50565b5f8135905062002c7e8162002c55565b92915050565b5f806040838503121562002c9d5762002c9c62002a6c565b5b5f62002cac8582860162002c36565b925050602062002cbf8582860162002c6e565b9150509250929050565b62002cd48162002c4c565b82525050565b5f60208201905062002cef5f83018462002cc9565b92915050565b5f6020828403121562002d0d5762002d0c62002a6c565b5b5f62002d1c8482850162002c6e565b91505092915050565b5f805f6060848603121562002d3f5762002d3e62002a6c565b5b5f62002d4e8682870162002c36565b935050602062002d618682870162002c36565b925050604062002d748682870162002c6e565b9150509250925092565b5f819050919050565b62002d928162002d7e565b811462002d9d575f80fd5b50565b5f8135905062002db08162002d87565b92915050565b5f6020828403121562002dce5762002dcd62002a6c565b5b5f62002ddd8482850162002da0565b91505092915050565b62002df18162002d7e565b82525050565b5f60208201905062002e0c5f83018462002de6565b92915050565b5f806040838503121562002e2b5762002e2a62002a6c565b5b5f62002e3a8582860162002da0565b925050602062002e4d8582860162002c36565b9150509250929050565b62002e628162002c0a565b82525050565b5f60208201905062002e7d5f83018462002e57565b92915050565b5f60ff82169050919050565b62002e9a8162002e83565b82525050565b5f60208201905062002eb55f83018462002e8f565b92915050565b5f6020828403121562002ed35762002ed262002a6c565b5b5f62002ee28482850162002c36565b91505092915050565b5f819050919050565b5f62002f1462002f0e62002f088462002beb565b62002eeb565b62002beb565b9050919050565b5f62002f278262002ef4565b9050919050565b5f62002f3a8262002f1b565b9050919050565b62002f4c8162002f2e565b82525050565b5f60208201905062002f675f83018462002f41565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011262002f915762002f9062002f6d565b5b8235905067ffffffffffffffff81111562002fb15762002fb062002f71565b5b60208301915083602082028301111562002fd05762002fcf62002f75565b5b9250929050565b5f806020838503121562002ff05762002fef62002a6c565b5b5f83013567ffffffffffffffff81111562003010576200300f62002a70565b5b6200301e8582860162002f79565b92509250509250929050565b5f806040838503121562003043576200304262002a6c565b5b5f620030528582860162002c36565b9250506020620030658582860162002c36565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620030b457607f821691505b602082108103620030ca57620030c96200306f565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e63655f8201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b5f6200312c602f8362002b3f565b91506200313982620030d0565b604082019050919050565b5f6020820190508181035f8301526200315d816200311e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200319d8262002c4c565b9150620031aa8362002c4c565b9250828201905080821115620031c557620031c462003164565b5b92915050565b5f81519050620031db8162002c55565b92915050565b5f60208284031215620031f957620031f862002a6c565b5b5f6200320884828501620031cb565b91505092915050565b5f604082019050620032265f83018562002e57565b62003235602083018462002cc9565b9392505050565b620032478162002afe565b811462003252575f80fd5b50565b5f8151905062003265816200323c565b92915050565b5f6020828403121562003283576200328262002a6c565b5b5f620032928482850162003255565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f620032f760258362002b3f565b915062003304826200329b565b604082019050919050565b5f6020820190508181035f8301526200332881620032e9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f620033688262002c4c565b9150620033758362002c4c565b9250828202620033858162002c4c565b915082820484148315176200339f576200339e62003164565b5b5092915050565b5f620033b28262002c4c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620033e757620033e662003164565b5b600182019050919050565b5f81519050620034028162002c1d565b92915050565b5f6020828403121562003420576200341f62002a6c565b5b5f6200342f84828501620033f2565b91505092915050565b5f6040820190506200344d5f83018562002e57565b6200345c602083018462002e57565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f620034bf60268362002b3f565b9150620034cc8262003463565b604082019050919050565b5f6020820190508181035f830152620034f081620034b1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6200355360248362002b3f565b91506200356082620034f7565b604082019050919050565b5f6020820190508181035f830152620035848162003545565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f620035e760228362002b3f565b9150620035f4826200358b565b604082019050919050565b5f6020820190508181035f8301526200361881620035d9565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f62003655601d8362002b3f565b915062003662826200361f565b602082019050919050565b5f6020820190508181035f830152620036868162003647565b9050919050565b7f616d6f756e74206d7573742067742030000000000000000000000000000000005f82015250565b5f620036c360108362002b3f565b9150620036d0826200368d565b602082019050919050565b5f6020820190508181035f830152620036f481620036b5565b9050919050565b7f6e6f7420474f00000000000000000000000000000000000000000000000000005f82015250565b5f6200373160068362002b3f565b91506200373e82620036fb565b602082019050919050565b5f6020820190508181035f830152620037628162003723565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200379f60208362002b3f565b9150620037ac8262003769565b602082019050919050565b5f6020820190508181035f830152620037d08162003791565b9050919050565b5f819050919050565b620037f5620037ef8262002c4c565b620037d7565b82525050565b5f8160601b9050919050565b5f6200381382620037fb565b9050919050565b5f620038268262003807565b9050919050565b620038426200383c8262002c0a565b6200381a565b82525050565b5f620038558286620037e0565b602082019150620038678285620037e0565b6020820191506200387982846200382d565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620038c38262002c4c565b9150620038d08362002c4c565b925082620038e357620038e26200388a565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f620039446200393e62003938846200391b565b62002eeb565b62002c4c565b9050919050565b620039568162003924565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b620039908162002c0a565b82525050565b5f620039a3838362003985565b60208301905092915050565b5f602082019050919050565b5f620039c7826200395c565b620039d3818562003966565b9350620039e08362003976565b805f5b8381101562003a16578151620039fa888262003996565b975062003a0783620039af565b925050600181019050620039e3565b5085935050505092915050565b5f60a08201905062003a385f83018862002cc9565b62003a4760208301876200394b565b818103604083015262003a5b8186620039bb565b905062003a6c606083018562002e57565b62003a7b608083018462002cc9565b9695505050505050565b5f81905092915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000005f82015250565b5f62003ac560178362003a85565b915062003ad28262003a8f565b601782019050919050565b5f62003ae98262002b35565b62003af5818562003a85565b935062003b0781856020860162002b4f565b80840191505092915050565b7f206973206d697373696e6720726f6c65200000000000000000000000000000005f82015250565b5f62003b4960118362003a85565b915062003b568262003b13565b601182019050919050565b5f62003b6d8262003ab7565b915062003b7b828562003add565b915062003b888262003b3b565b915062003b96828462003add565b91508190509392505050565b5f62003bae8262002c4c565b915062003bbb8362002c4c565b92508262003bce5762003bcd6200388a565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f62003c3560258362002b3f565b915062003c428262003bd9565b604082019050919050565b5f6020820190508181035f83015262003c668162003c27565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f62003cc960238362002b3f565b915062003cd68262003c6d565b604082019050919050565b5f6020820190508181035f83015262003cfa8162003cbb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f62003d5d60268362002b3f565b915062003d6a8262003d01565b604082019050919050565b5f6020820190508181035f83015262003d8e8162003d4f565b9050919050565b5f62003da18262002c4c565b91505f820362003db65762003db562003164565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f62003df760208362002b3f565b915062003e048262003dc1565b602082019050919050565b5f6020820190508181035f83015262003e288162003de9565b905091905056fe608060405234801561000f575f80fd5b5060405161023538038061023583398181016040528101906100319190610112565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3335f196040518363ffffffff1660e01b815260040161006d929190610164565b6020604051808303815f875af1158015610089573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ad91906101c0565b50506101eb565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100e1826100b8565b9050919050565b6100f1816100d7565b81146100fb575f80fd5b50565b5f8151905061010c816100e8565b92915050565b5f60208284031215610127576101266100b4565b5b5f610134848285016100fe565b91505092915050565b610146816100d7565b82525050565b5f819050919050565b61015e8161014c565b82525050565b5f6040820190506101775f83018561013d565b6101846020830184610155565b9392505050565b5f8115159050919050565b61019f8161018b565b81146101a9575f80fd5b50565b5f815190506101ba81610196565b92915050565b5f602082840312156101d5576101d46100b4565b5b5f6101e2848285016101ac565b91505092915050565b603e806101f75f395ff3fe60806040525f80fdfea2646970667358221220c6da1a158c9008da620f255546e05bc9d67bee0fb4e6c5c4e030ec6a8768f81a64736f6c63430008150033a2646970667358221220022d308bfdaff7898eb67f2f29fef0e05b6778694fff15e31e50a30f5763013164736f6c63430008150033