60806040525f600760146101000a81548160ff0219169083151502179055505f600760156101000a81548160ff0219169083151502179055505f600760166101000a81548160ff021916908315150217905550620000626200049660201b60201c565b600a62000070919062000836565b633b9aca0062000081919062000886565b600855612710600560085462000098919062000886565b620000a49190620008fd565b60095560646003600854620000ba919062000886565b620000c69190620008fd565b600a55731152bcd80e73ab737263ab006e9d1a8f75d5d9b2600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073377b5e8e8fc37e1e638d5e4f845ce0410d851c6c600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600e556004600f5560405180604001604052805f81526020015f81525060105f820151815f015560208201518160010155505060405180604001604052805f81526020015f81525060125f820151815f0155602082015181600101555050348015620001dc575f80fd5b506040518060400160405280600781526020017f5572616e69756d000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f5572616e69756d0000000000000000000000000000000000000000000000000081525081600390816200025a919062000b8f565b5080600490816200026c919062000b8f565b5050506200028f620002836200049e60201b60201c565b620004a560201b60201c565b620002a3336008546200056860201b60201c565b600160145f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000d43565b5f6012905090565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005d09062000cf7565b60405180910390fd5b620005ec5f83836200069f60201b60201c565b80600281905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000693919062000d28565b60405180910390a35050565b505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200072e57808604811115620007065762000705620006a4565b5b6001851615620007165780820291505b80810290506200072685620006d1565b9450620006e6565b94509492505050565b5f826200074857600190506200081a565b8162000757575f90506200081a565b81600181146200077057600281146200077b57620007b1565b60019150506200081a565b60ff84111562000790576200078f620006a4565b5b8360020a915084821115620007aa57620007a9620006a4565b5b506200081a565b5060208310610133831016604e8410600b8410161715620007eb5782820a905083811115620007e557620007e4620006a4565b5b6200081a565b620007fa8484846001620006dd565b92509050818404811115620008145762000813620006a4565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008428262000821565b91506200084f836200082a565b92506200087e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000737565b905092915050565b5f620008928262000821565b91506200089f8362000821565b9250828202620008af8162000821565b91508282048414831517620008c957620008c8620006a4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009098262000821565b9150620009168362000821565b925082620009295762000928620008d0565b5b828204905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009b057607f821691505b602082108103620009c657620009c56200096b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a2a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009ed565b62000a368683620009ed565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000a7762000a7162000a6b8462000821565b62000a4e565b62000821565b9050919050565b5f819050919050565b62000a928362000a57565b62000aaa62000aa18262000a7e565b848454620009f9565b825550505050565b5f90565b62000ac062000ab2565b62000acd81848462000a87565b505050565b5b8181101562000af45762000ae85f8262000ab6565b60018101905062000ad3565b5050565b601f82111562000b435762000b0d81620009cc565b62000b1884620009de565b8101602085101562000b28578190505b62000b4062000b3785620009de565b83018262000ad2565b50505b505050565b5f82821c905092915050565b5f62000b655f198460080262000b48565b1980831691505092915050565b5f62000b7f838362000b54565b9150826002028217905092915050565b62000b9a8262000934565b67ffffffffffffffff81111562000bb65762000bb56200093e565b5b62000bc2825462000998565b62000bcf82828562000af8565b5f60209050601f83116001811462000c05575f841562000bf0578287015190505b62000bfc858262000b72565b86555062000c6b565b601f19841662000c1586620009cc565b5f5b8281101562000c3e5784890151825560018201915060208501945060208101905062000c17565b8683101562000c5e578489015162000c5a601f89168262000b54565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f62000cdf60258362000c73565b915062000cec8262000c83565b604082019050919050565b5f6020820190508181035f83015262000d108162000cd1565b9050919050565b62000d228162000821565b82525050565b5f60208201905062000d3d5f83018462000d17565b92915050565b613e558062000d515f395ff3fe6080604052600436106101c5575f3560e01c8063751039fc116100f6578063a8aa1b3111610094578063dd62ed3e11610063578063dd62ed3e14610619578063f2fde38b14610655578063f66895a31461067d578063f887ea40146106a8576101cc565b8063a8aa1b3114610593578063a9059cbb146105bd578063c9567bf9146105f9578063dae405db1461060f576101cc565b80638da5cb5b116100d05780638da5cb5b146104db57806395d89b41146105055780639e252f001461052f578063a457c2d714610557576101cc565b8063751039fc1461045f57806385141a77146104895780638cd4426d146104b3576101cc565b806342b6fa111161016357806366a88d961161013d57806366a88d96146103b857806370a08231146103e2578063715018a61461041e578063728f8eea14610434576101cc565b806342b6fa111461032a5780634ada218b1461035257806351b6444f1461037c576101cc565b806318160ddd1161019f57806318160ddd1461025e57806323b872dd14610288578063313ce567146102c457806339509351146102ee576101cc565b806306fdde03146101d0578063095ea7b3146101fa5780631340538f14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106d2565b6040516101f19190612c98565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612d49565b610762565b60405161022d9190612da1565b60405180910390f35b348015610241575f80fd5b5061025c60048036038101906102579190612de4565b61077f565b005b348015610269575f80fd5b50610272610818565b60405161027f9190612e1e565b60405180910390f35b348015610293575f80fd5b506102ae60048036038101906102a99190612e37565b610821565b6040516102bb9190612da1565b60405180910390f35b3480156102cf575f80fd5b506102d861091c565b6040516102e59190612ea2565b60405180910390f35b3480156102f9575f80fd5b50610314600480360381019061030f9190612d49565b610924565b6040516103219190612da1565b60405180910390f35b348015610335575f80fd5b50610350600480360381019061034b9190612ebb565b6109cb565b005b34801561035d575f80fd5b50610366610a6f565b6040516103739190612da1565b60405180910390f35b348015610387575f80fd5b506103a2600480360381019061039d9190612ee6565b610a82565b6040516103af9190612da1565b60405180910390f35b3480156103c3575f80fd5b506103cc610a9f565b6040516103d99190612e1e565b60405180910390f35b3480156103ed575f80fd5b5061040860048036038101906104039190612ee6565b610aa5565b6040516104159190612e1e565b60405180910390f35b348015610429575f80fd5b50610432610aea565b005b34801561043f575f80fd5b50610448610b71565b604051610456929190612f11565b60405180910390f35b34801561046a575f80fd5b50610473610b82565b6040516104809190612da1565b60405180910390f35b348015610494575f80fd5b5061049d610c0f565b6040516104aa9190612f47565b60405180910390f35b3480156104be575f80fd5b506104d960048036038101906104d49190612d49565b610c15565b005b3480156104e6575f80fd5b506104ef610d18565b6040516104fc9190612f47565b60405180910390f35b348015610510575f80fd5b50610519610d40565b6040516105269190612c98565b60405180910390f35b34801561053a575f80fd5b5061055560048036038101906105509190612ebb565b610dd0565b005b348015610562575f80fd5b5061057d60048036038101906105789190612d49565b610e9a565b60405161058a9190612da1565b60405180910390f35b34801561059e575f80fd5b506105a7610f89565b6040516105b49190612f47565b60405180910390f35b3480156105c8575f80fd5b506105e360048036038101906105de9190612d49565b610fae565b6040516105f09190612da1565b60405180910390f35b348015610604575f80fd5b5061060d610fc4565b005b6106176110cf565b005b348015610624575f80fd5b5061063f600480360381019061063a9190612f60565b6114ac565b60405161064c9190612e1e565b60405180910390f35b348015610660575f80fd5b5061067b60048036038101906106769190612ee6565b61152e565b005b348015610688575f80fd5b50610691611624565b60405161069f929190612f11565b60405180910390f35b3480156106b3575f80fd5b506106bc611635565b6040516106c99190612ff9565b60405180910390f35b6060600380546106e19061303f565b80601f016020809104026020016040519081016040528092919081815260200182805461070d9061303f565b80156107585780601f1061072f57610100808354040283529160200191610758565b820191905f5260205f20905b81548152906001019060200180831161073b57829003601f168201915b5050505050905090565b5f61077561076e61165a565b8484611661565b6001905092915050565b61078761165a565b73ffffffffffffffffffffffffffffffffffffffff166107a5610d18565b73ffffffffffffffffffffffffffffffffffffffff16146107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f2906130b9565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b5f600254905090565b5f61082d848484611824565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61087461165a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156108f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ea90613147565b60405180910390fd5b610910856108ff61165a565b858461090b9190613192565b611661565b60019150509392505050565b5f6012905090565b5f6109c161093061165a565b848460015f61093d61165a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109bc91906131c5565b611661565b6001905092915050565b6109d361165a565b73ffffffffffffffffffffffffffffffffffffffff166109f1610d18565b73ffffffffffffffffffffffffffffffffffffffff1614610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e906130b9565b60405180910390fd5b610a4f61091c565b600a610a5b9190613327565b81610a669190613371565b60098190555050565b600760169054906101000a900460ff1681565b6014602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610af261165a565b73ffffffffffffffffffffffffffffffffffffffff16610b10610d18565b73ffffffffffffffffffffffffffffffffffffffff1614610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d906130b9565b60405180910390fd5b610b6f5f6120e0565b565b6010805f0154908060010154905082565b5f610b8b61165a565b73ffffffffffffffffffffffffffffffffffffffff16610ba9610d18565b73ffffffffffffffffffffffffffffffffffffffff1614610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf6906130b9565b60405180910390fd5b600854600a819055506001905090565b61dead81565b610c1d61165a565b73ffffffffffffffffffffffffffffffffffffffff16610c3b610d18565b73ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c88906130b9565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610cb5610d18565b836040518363ffffffff1660e01b8152600401610cd39291906133b2565b6020604051808303815f875af1158015610cef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1391906133ed565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d4f9061303f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7b9061303f565b8015610dc65780601f10610d9d57610100808354040283529160200191610dc6565b820191905f5260205f20905b815481529060010190602001808311610da957829003601f168201915b5050505050905090565b610dd861165a565b73ffffffffffffffffffffffffffffffffffffffff16610df6610d18565b73ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906130b9565b60405180910390fd5b610e54610d18565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610e96573d5f803e3d5ffd5b5050565b5f8060015f610ea761165a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890613488565b60405180910390fd5b610f7e610f6c61165a565b858584610f799190613192565b611661565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610fba338484611824565b6001905092915050565b610fcc61165a565b73ffffffffffffffffffffffffffffffffffffffff16610fea610d18565b73ffffffffffffffffffffffffffffffffffffffff1614611040576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611037906130b9565b60405180910390fd5b600760169054906101000a900460ff1615611090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611087906134f0565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600d81905550565b6110d761165a565b73ffffffffffffffffffffffffffffffffffffffff166110f5610d18565b73ffffffffffffffffffffffffffffffffffffffff161461114b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611142906130b9565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d19190613522565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611236573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125a9190613522565b6040518363ffffffff1660e01b815260040161127792919061354d565b6020604051808303815f875af1158015611293573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b79190613522565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061143f30610aa5565b5f8033426040518863ffffffff1660e01b8152600401611464969594939291906135ad565b60606040518083038185885af1158015611480573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114a59190613620565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61153661165a565b73ffffffffffffffffffffffffffffffffffffffff16611554610d18565b73ffffffffffffffffffffffffffffffffffffffff16146115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a1906130b9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f906136e0565b60405180910390fd5b611621816120e0565b50565b6012805f0154908060010154905082565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c69061376e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906137fc565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118179190612e1e565b60405180910390a3505050565b5f8111611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d9061388a565b60405180910390fd5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611904575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561195957600760169054906101000a900460ff16611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f906138f2565b60405180910390fd5b5b611961610d18565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036119a35761199e8383836121a3565b6120db565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a46575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a5f5750600760149054906101000a900460ff16155b15611abd57600a5481611a7184610aa5565b611a7b91906131c5565b1115611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab39061395a565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b61575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bb4575060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bcd5750600760149054906101000a900460ff16155b15611c805760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c7f57600a5481611c3384610aa5565b611c3d91906131c5565b1115611c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c759061395a565b60405180910390fd5b5b5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d1b575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611d965760145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611d7f57611d7a838383612416565b6120db565b633b9aca0043611d8f91906131c5565b600e819055505b5f805f611da1612bf6565b5f60145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e40575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e5a5750600e54600d54611e5791906131c5565b43105b9050600760149054906101000a900460ff1680611ebd575060145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f0e575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f1b575f9250611ff3565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015611f75575080155b15611f995760125f0154601260010154611f8f91906131c5565b9450849350611ff2565b80611fdf5760105f0154601060010154611fb391906131c5565b945084935060106040518060400160405290815f82015481526020016001820154815250509150611ff1565b8015611ff057600f549450600f5493505b5b5b5b606484876120019190613371565b61200b91906139a5565b9250600760159054906101000a900460ff168015612076575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561208657612085858361263b565b5b61209c888885896120979190613192565b6121a3565b5f8311156120d5575f8511156120d4575f606486886120bb9190613371565b6120c591906139a5565b90506120d28930836121a3565b505b5b50505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220890613a45565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361227f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227690613ad3565b60405180910390fd5b61228a8383836127f0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561230d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230490613b61565b60405180910390fd5b81816123199190613192565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123a491906131c5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124089190612e1e565b60405180910390a350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b90613a45565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990613ad3565b60405180910390fd5b6124fd8383836127f0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050805f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125c991906131c5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161262d9190612e1e565b60405180910390a350505050565b600760149054906101000a900460ff166127ec576001600760146101000a81548160ff0219169083151502179055505f8203156127d1575f61267c30610aa5565b905060095481106127cf57600160095411156126985760095490505b5f6002846126a69190613371565b90505f818460200151846126ba9190613371565b6126c491906139a5565b90505f81846126d39190613192565b90505f4790506126e2826127f5565b5f81476126ef9190613192565b90505f8760200151866127029190613192565b8261270d91906139a5565b90505f8860200151826127209190613371565b90505f811115612735576127348682612a2b565b5b5f80600e54436127459190613192565b1190505f81612754575f612770565b8a5f01516002856127659190613371565b61276f9190613371565b5b90505f8111156127c5576127c481600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b0690919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b505050565b5f600267ffffffffffffffff81111561281157612810613b7f565b5b60405190808252806020026020018201604052801561283f5781602001602082028036833780820191505090505b50905030815f8151811061285657612855613bac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061291e9190613522565b8160018151811061293257612931613bac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129983060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611661565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129fa959493929190613c90565b5f604051808303815f87803b158015612a11575f80fd5b505af1158015612a23573d5f803e3d5ffd5b505050505050565b612a573060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611661565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612abe969594939291906135ad565b60606040518083038185885af1158015612ada573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612aff9190613620565b5050505050565b80471015612b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4090613d32565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612b6e90613d7d565b5f6040518083038185875af1925050503d805f8114612ba8576040519150601f19603f3d011682016040523d82523d5f602084013e612bad565b606091505b5050905080612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890613e01565b60405180910390fd5b505050565b60405180604001604052805f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c45578082015181840152602081019050612c2a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c6a82612c0e565b612c748185612c18565b9350612c84818560208601612c28565b612c8d81612c50565b840191505092915050565b5f6020820190508181035f830152612cb08184612c60565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ce582612cbc565b9050919050565b612cf581612cdb565b8114612cff575f80fd5b50565b5f81359050612d1081612cec565b92915050565b5f819050919050565b612d2881612d16565b8114612d32575f80fd5b50565b5f81359050612d4381612d1f565b92915050565b5f8060408385031215612d5f57612d5e612cb8565b5b5f612d6c85828601612d02565b9250506020612d7d85828601612d35565b9150509250929050565b5f8115159050919050565b612d9b81612d87565b82525050565b5f602082019050612db45f830184612d92565b92915050565b612dc381612d87565b8114612dcd575f80fd5b50565b5f81359050612dde81612dba565b92915050565b5f60208284031215612df957612df8612cb8565b5b5f612e0684828501612dd0565b91505092915050565b612e1881612d16565b82525050565b5f602082019050612e315f830184612e0f565b92915050565b5f805f60608486031215612e4e57612e4d612cb8565b5b5f612e5b86828701612d02565b9350506020612e6c86828701612d02565b9250506040612e7d86828701612d35565b9150509250925092565b5f60ff82169050919050565b612e9c81612e87565b82525050565b5f602082019050612eb55f830184612e93565b92915050565b5f60208284031215612ed057612ecf612cb8565b5b5f612edd84828501612d35565b91505092915050565b5f60208284031215612efb57612efa612cb8565b5b5f612f0884828501612d02565b91505092915050565b5f604082019050612f245f830185612e0f565b612f316020830184612e0f565b9392505050565b612f4181612cdb565b82525050565b5f602082019050612f5a5f830184612f38565b92915050565b5f8060408385031215612f7657612f75612cb8565b5b5f612f8385828601612d02565b9250506020612f9485828601612d02565b9150509250929050565b5f819050919050565b5f612fc1612fbc612fb784612cbc565b612f9e565b612cbc565b9050919050565b5f612fd282612fa7565b9050919050565b5f612fe382612fc8565b9050919050565b612ff381612fd9565b82525050565b5f60208201905061300c5f830184612fea565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061305657607f821691505b60208210810361306957613068613012565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130a3602083612c18565b91506130ae8261306f565b602082019050919050565b5f6020820190508181035f8301526130d081613097565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613131602883612c18565b915061313c826130d7565b604082019050919050565b5f6020820190508181035f83015261315e81613125565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61319c82612d16565b91506131a783612d16565b92508282039050818111156131bf576131be613165565b5b92915050565b5f6131cf82612d16565b91506131da83612d16565b92508282019050808211156131f2576131f1613165565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111561324d5780860481111561322957613228613165565b5b60018516156132385780820291505b8081029050613246856131f8565b945061320d565b94509492505050565b5f826132655760019050613320565b81613272575f9050613320565b81600181146132885760028114613292576132c1565b6001915050613320565b60ff8411156132a4576132a3613165565b5b8360020a9150848211156132bb576132ba613165565b5b50613320565b5060208310610133831016604e8410600b84101617156132f65782820a9050838111156132f1576132f0613165565b5b613320565b6133038484846001613204565b9250905081840481111561331a57613319613165565b5b81810290505b9392505050565b5f61333182612d16565b915061333c83612e87565b92506133697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613256565b905092915050565b5f61337b82612d16565b915061338683612d16565b925082820261339481612d16565b915082820484148315176133ab576133aa613165565b5b5092915050565b5f6040820190506133c55f830185612f38565b6133d26020830184612e0f565b9392505050565b5f815190506133e781612dba565b92915050565b5f6020828403121561340257613401612cb8565b5b5f61340f848285016133d9565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613472602583612c18565b915061347d82613418565b604082019050919050565b5f6020820190508181035f83015261349f81613466565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f6134da601a83612c18565b91506134e5826134a6565b602082019050919050565b5f6020820190508181035f830152613507816134ce565b9050919050565b5f8151905061351c81612cec565b92915050565b5f6020828403121561353757613536612cb8565b5b5f6135448482850161350e565b91505092915050565b5f6040820190506135605f830185612f38565b61356d6020830184612f38565b9392505050565b5f819050919050565b5f61359761359261358d84613574565b612f9e565b612d16565b9050919050565b6135a78161357d565b82525050565b5f60c0820190506135c05f830189612f38565b6135cd6020830188612e0f565b6135da604083018761359e565b6135e7606083018661359e565b6135f46080830185612f38565b61360160a0830184612e0f565b979650505050505050565b5f8151905061361a81612d1f565b92915050565b5f805f6060848603121561363757613636612cb8565b5b5f6136448682870161360c565b93505060206136558682870161360c565b92505060406136668682870161360c565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6136ca602683612c18565b91506136d582613670565b604082019050919050565b5f6020820190508181035f8301526136f7816136be565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613758602483612c18565b9150613763826136fe565b604082019050919050565b5f6020820190508181035f8301526137858161374c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137e6602283612c18565b91506137f18261378c565b604082019050919050565b5f6020820190508181035f830152613813816137da565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613874602983612c18565b915061387f8261381a565b604082019050919050565b5f6020820190508181035f8301526138a181613868565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f6138dc601383612c18565b91506138e7826138a8565b602082019050919050565b5f6020820190508181035f830152613909816138d0565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d69745f82015250565b5f613944602083612c18565b915061394f82613910565b602082019050919050565b5f6020820190508181035f83015261397181613938565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139af82612d16565b91506139ba83612d16565b9250826139ca576139c9613978565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613a2f602583612c18565b9150613a3a826139d5565b604082019050919050565b5f6020820190508181035f830152613a5c81613a23565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613abd602383612c18565b9150613ac882613a63565b604082019050919050565b5f6020820190508181035f830152613aea81613ab1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613b4b602683612c18565b9150613b5682613af1565b604082019050919050565b5f6020820190508181035f830152613b7881613b3f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c0b81612cdb565b82525050565b5f613c1c8383613c02565b60208301905092915050565b5f602082019050919050565b5f613c3e82613bd9565b613c488185613be3565b9350613c5383613bf3565b805f5b83811015613c83578151613c6a8882613c11565b9750613c7583613c28565b925050600181019050613c56565b5085935050505092915050565b5f60a082019050613ca35f830188612e0f565b613cb0602083018761359e565b8181036040830152613cc28186613c34565b9050613cd16060830185612f38565b613cde6080830184612e0f565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613d1c601d83612c18565b9150613d2782613ce8565b602082019050919050565b5f6020820190508181035f830152613d4981613d10565b9050919050565b5f81905092915050565b50565b5f613d685f83613d50565b9150613d7382613d5a565b5f82019050919050565b5f613d8782613d5d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f613deb603a83612c18565b9150613df682613d91565b604082019050919050565b5f6020820190508181035f830152613e1881613ddf565b905091905056fea26469706673582212209e2904b83852de4df95a2eda9e94b6aeafb260ff2e10376441827a5eaf52eecb64736f6c63430008140033