6080604052739ddfaca8183c41ad55329bdeed9f6a8d53168b1b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f787d74caea10b2b357790d5b5247c2f63d1d91572a9846f780606e4d953677ae5f1b601255622625a060135f6101000a81548163ffffffff021916908363ffffffff1602179055506003601360046101000a81548161ffff021916908361ffff1602179055506001601360066101000a81548163ffffffff021916908363ffffffff1602179055503480156100ec575f80fd5b50604051614112380380614112833981810160405281019061010e9190610508565b6040518060400160405280600681526020017f4d79446f677300000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d544b000000000000000000000000000000000000000000000000000000000081525060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633805f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102049061058d565b60405180910390fd5b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461028f5761028e816103a760201b60201c565b5b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102f7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050816003908161034791906107dc565b50806004908161035791906107dc565b5050503360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f8190555050610913565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040c906108f5565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b5f80fd5b5f819050919050565b6104e7816104d5565b81146104f1575f80fd5b50565b5f81519050610502816104de565b92915050565b5f6020828403121561051d5761051c6104d1565b5b5f61052a848285016104f4565b91505092915050565b5f82825260208201905092915050565b7f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000005f82015250565b5f610577601883610533565b915061058282610543565b602082019050919050565b5f6020820190508181035f8301526105a48161056b565b9050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061062657607f821691505b602082108103610639576106386105e2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261069b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610660565b6106a58683610660565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6106e06106db6106d6846104d5565b6106bd565b6104d5565b9050919050565b5f819050919050565b6106f9836106c6565b61070d610705826106e7565b84845461066c565b825550505050565b5f90565b610721610715565b61072c8184846106f0565b505050565b5b8181101561074f576107445f82610719565b600181019050610732565b5050565b601f821115610794576107658161063f565b61076e84610651565b8101602085101561077d578190505b61079161078985610651565b830182610731565b50505b505050565b5f82821c905092915050565b5f6107b45f1984600802610799565b1980831691505092915050565b5f6107cc83836107a5565b9150826002028217905092915050565b6107e5826105ab565b67ffffffffffffffff8111156107fe576107fd6105b5565b5b610808825461060f565b610813828285610753565b5f60209050601f831160018114610844575f8415610832578287015190505b61083c85826107c1565b8655506108a3565b601f1984166108528661063f565b5f5b8281101561087957848901518255600182019150602085019450602081019050610854565b868310156108965784890151610892601f8916826107a5565b8355505b6001600288020188555050505b505050505050565b7f43616e6e6f74207472616e7366657220746f2073656c660000000000000000005f82015250565b5f6108df601783610533565b91506108ea826108ab565b602082019050919050565b5f6020820190508181035f83015261090c816108d3565b9050919050565b6137f2806109205f395ff3fe608060405234801561000f575f80fd5b506004361061014b575f3560e01c80636871ee40116100c15780639eccacf61161007a5780639eccacf614610387578063a22cb465146103a5578063b88d4fde146103c1578063c87b56dd146103dd578063e985e9c51461040d578063f2fde38b1461043d5761014b565b80636871ee40146102eb57806370a08231146102f557806379ba5097146103255780638da5cb5b1461032f5780638ea981171461034d57806395d89b41146103695761014b565b80631fe543e3116101135780631fe543e31461020757806323b872dd146102235780632f745c591461023f57806342842e0e1461026f5780634f6ccce71461028b5780636352211e146102bb5761014b565b806301ffc9a71461014f57806306fdde031461017f578063081812fc1461019d578063095ea7b3146101cd57806318160ddd146101e9575b5f80fd5b610169600480360381019061016491906127d8565b610459565b604051610176919061281d565b60405180910390f35b61018761046a565b60405161019491906128a6565b60405180910390f35b6101b760048036038101906101b291906128f9565b6104fa565b6040516101c49190612963565b60405180910390f35b6101e760048036038101906101e291906129a6565b610515565b005b6101f161052b565b6040516101fe91906129f3565b60405180910390f35b610221600480360381019061021c9190612a6d565b610537565b005b61023d60048036038101906102389190612aca565b6105fb565b005b610259600480360381019061025491906129a6565b6106fa565b60405161026691906129f3565b60405180910390f35b61028960048036038101906102849190612aca565b61079e565b005b6102a560048036038101906102a091906128f9565b6107bd565b6040516102b291906129f3565b60405180910390f35b6102d560048036038101906102d091906128f9565b61082f565b6040516102e29190612963565b60405180910390f35b6102f3610840565b005b61030f600480360381019061030a9190612b1a565b6109a5565b60405161031c91906129f3565b60405180910390f35b61032d610a5b565b005b610337610bea565b6040516103449190612963565b60405180910390f35b61036760048036038101906103629190612b1a565b610c11565b005b610371610dee565b60405161037e91906128a6565b60405180910390f35b61038f610e7e565b60405161039c9190612ba0565b60405180910390f35b6103bf60048036038101906103ba9190612be3565b610ea3565b005b6103db60048036038101906103d69190612d49565b610eb9565b005b6103f760048036038101906103f291906128f9565b610ed6565b60405161040491906128a6565b60405180910390f35b61042760048036038101906104229190612dc9565b610ee8565b604051610434919061281d565b60405180910390f35b61045760048036038101906104529190612b1a565b610f76565b005b5f61046382610f8a565b9050919050565b60606003805461047990612e34565b80601f01602080910402602001604051908101604052809291908181526020018280546104a590612e34565b80156104f05780601f106104c7576101008083540402835291602001916104f0565b820191905f5260205f20905b8154815290600101906020018083116104d357829003601f168201915b5050505050905090565b5f61050482610fea565b5061050e82611070565b9050919050565b61052782826105226110a9565b6110b0565b5050565b5f600b80549050905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105eb573360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f1cf993f40000000000000000000000000000000000000000000000000000000081526004016105e2929190612e64565b60405180910390fd5b6105f68383836110c2565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361066b575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016106629190612963565b60405180910390fd5b5f61067e83836106796110a9565b611195565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106f4578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016106eb93929190612e8b565b60405180910390fd5b50505050565b5f610704836109a5565b82106107495782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610740929190612ec0565b60405180910390fd5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b6107b883838360405180602001604052805f815250610eb9565b505050565b5f6107c661052b565b821061080b575f826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610802929190612ec0565b60405180910390fd5b600b828154811061081f5761081e612ee7565b5b905f5260205f2001549050919050565b5f61083982610fea565b9050919050565b5f600e5f81548092919061085390612f41565b91905055905061086333826111aa565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b1c385e6040518060c001604052806012548152602001600f548152602001601360049054906101000a900461ffff1661ffff16815260200160135f9054906101000a900463ffffffff1663ffffffff168152602001601360069054906101000a900463ffffffff1663ffffffff16815260200161092a60405180602001604052805f15158152506111c7565b8152506040518263ffffffff1660e01b815260040161094991906130c1565b6020604051808303815f875af1158015610965573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098991906130f5565b90508160145f8381526020019081526020015f20819055505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a16575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610a0d9190612963565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae19061316a565b60405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c19610bea565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610ca1575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610d0f5733610caf610bea565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f061db9c1000000000000000000000000000000000000000000000000000000008152600401610d0693929190613188565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d74576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be681604051610de39190612963565b60405180910390a150565b606060048054610dfd90612e34565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2990612e34565b8015610e745780601f10610e4b57610100808354040283529160200191610e74565b820191905f5260205f20905b815481529060010190602001808311610e5757829003601f168201915b5050505050905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eb5610eae6110a9565b838361125f565b5050565b610ec48484846105fb565b610ed0848484846113c8565b50505050565b6060610ee18261157a565b9050919050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610f7e611685565b610f8781611714565b50565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610fe35750610fe28261183e565b5b9050919050565b5f80610ff5836118b7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361106757826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161105e91906129f3565b60405180910390fd5b80915050919050565b5f60075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6110bd83838360016118f0565b505050565b5f828260018181106110d7576110d6612ee7565b5b9050602002013590505f60145f8681526020019081526020015f205490505f60038361110391906131ea565b0361112f5761112a8160405180606001604052806035815260200161375360359139611aaf565b61118e565b600160038361113e91906131ea565b0361116a576111658160405180606001604052806035815260200161378860359139611aaf565b61118d565b61118c8160405180606001604052806035815260200161371e60359139611aaf565b5b5b5050505050565b5f6111a1848484611b09565b90509392505050565b6111c3828260405180602001604052805f815250611c23565b5050565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa826040516024016111fb9190613243565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112cf57816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016112c69190612963565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113bb919061281d565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611574578273ffffffffffffffffffffffffffffffffffffffff1663150b7a0261140b6110a9565b8685856040518563ffffffff1660e01b815260040161142d94939291906132a4565b6020604051808303815f875af192505050801561146857506040513d601f19601f820116820180604052508101906114659190613302565b60015b6114e9573d805f8114611496576040519150601f19603f3d011682016040523d82523d5f602084013e61149b565b606091505b505f8151036114e157836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114d89190612963565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461157257836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016115699190612963565b60405180910390fd5b505b50505050565b606061158582610fea565b505f600d5f8481526020019081526020015f2080546115a390612e34565b80601f01602080910402602001604051908101604052809291908181526020018280546115cf90612e34565b801561161a5780601f106115f15761010080835404028352916020019161161a565b820191905f5260205f20905b8154815290600101906020018083116115fd57829003601f168201915b505050505090505f61162a611c3e565b90505f81510361163e578192505050611680565b5f8251111561167257808260405160200161165a929190613367565b60405160208183030381529060405292505050611680565b61167b84611c54565b925050505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906133d4565b60405180910390fd5b565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611782576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117799061343c565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118b057506118af82611cba565b5b9050919050565b5f60055f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061192857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a5a575f61193784610fea565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119a157508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156119b457506119b28184610ee8565b155b156119f657826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016119ed9190612963565b60405180910390fd5b8115611a5857838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360075f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b80600d5f8481526020019081526020015f209081611acd91906135ee565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051611afd91906129f3565b60405180910390a15050565b5f80611b16858585611d9b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b5957611b5484611fa6565b611b98565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b9757611b968185611fea565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611bd957611bd484612134565b611c18565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c1757611c1685856121f4565b5b5b809150509392505050565b611c2d8383612278565b611c395f8484846113c8565b505050565b606060405180602001604052805f815250905090565b6060611c5f82610fea565b505f611c69611c3e565b90505f815111611c875760405180602001604052805f815250611cb2565b80611c918461236b565b604051602001611ca2929190613367565b6040516020818303038152906040525b915050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611d945750611d9382612435565b5b9050919050565b5f80611da6846118b7565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611de757611de681848661249e565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611e7257611e265f855f806118f0565b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611ef157600160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460055f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600b80549050600c5f8381526020019081526020015f2081905550600b81908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f611ff4836109a5565b90505f600a5f8481526020019081526020015f205490508181146120cb575f60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f208190555081600a5f8381526020019081526020015f2081905550505b600a5f8481526020019081526020015f205f905560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f6001600b8054905061214791906136bd565b90505f600c5f8481526020019081526020015f205490505f600b838154811061217357612172612ee7565b5b905f5260205f200154905080600b838154811061219357612192612ee7565b5b905f5260205f20018190555081600c5f8381526020019081526020015f2081905550600c5f8581526020019081526020015f205f9055600b8054806121db576121da6136f0565b5b600190038181905f5260205f20015f9055905550505050565b5f6001612200846109a5565b61220a91906136bd565b90508160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f208190555080600a5f8481526020019081526020015f2081905550505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122e8575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016122df9190612963565b60405180910390fd5b5f6122f483835f611195565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612366575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161235d9190612963565b60405180910390fd5b505050565b60605f600161237984612561565b0190505f8167ffffffffffffffff81111561239757612396612c25565b5b6040519080825280601f01601f1916602001820160405280156123c95781602001600182028036833780820191505090505b5090505f82602001820190505b60011561242a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161241f5761241e6131bd565b5b0494505f85036123d6575b819350505050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6124a98383836126b2565b61255c575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361251d57806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161251491906129f3565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612553929190612ec0565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106125bd577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816125b3576125b26131bd565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106125fa576d04ee2d6d415b85acef810000000083816125f0576125ef6131bd565b5b0492506020810190505b662386f26fc10000831061262957662386f26fc10000838161261f5761261e6131bd565b5b0492506010810190505b6305f5e1008310612652576305f5e1008381612648576126476131bd565b5b0492506008810190505b612710831061267757612710838161266d5761266c6131bd565b5b0492506004810190505b6064831061269a57606483816126905761268f6131bd565b5b0492506002810190505b600a83106126a9576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561276957508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061272a57506127298484610ee8565b5b8061276857508273ffffffffffffffffffffffffffffffffffffffff1661275083611070565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127b781612783565b81146127c1575f80fd5b50565b5f813590506127d2816127ae565b92915050565b5f602082840312156127ed576127ec61277b565b5b5f6127fa848285016127c4565b91505092915050565b5f8115159050919050565b61281781612803565b82525050565b5f6020820190506128305f83018461280e565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61287882612836565b6128828185612840565b9350612892818560208601612850565b61289b8161285e565b840191505092915050565b5f6020820190508181035f8301526128be818461286e565b905092915050565b5f819050919050565b6128d8816128c6565b81146128e2575f80fd5b50565b5f813590506128f3816128cf565b92915050565b5f6020828403121561290e5761290d61277b565b5b5f61291b848285016128e5565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294d82612924565b9050919050565b61295d81612943565b82525050565b5f6020820190506129765f830184612954565b92915050565b61298581612943565b811461298f575f80fd5b50565b5f813590506129a08161297c565b92915050565b5f80604083850312156129bc576129bb61277b565b5b5f6129c985828601612992565b92505060206129da858286016128e5565b9150509250929050565b6129ed816128c6565b82525050565b5f602082019050612a065f8301846129e4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612a2d57612a2c612a0c565b5b8235905067ffffffffffffffff811115612a4a57612a49612a10565b5b602083019150836020820283011115612a6657612a65612a14565b5b9250929050565b5f805f60408486031215612a8457612a8361277b565b5b5f612a91868287016128e5565b935050602084013567ffffffffffffffff811115612ab257612ab161277f565b5b612abe86828701612a18565b92509250509250925092565b5f805f60608486031215612ae157612ae061277b565b5b5f612aee86828701612992565b9350506020612aff86828701612992565b9250506040612b10868287016128e5565b9150509250925092565b5f60208284031215612b2f57612b2e61277b565b5b5f612b3c84828501612992565b91505092915050565b5f819050919050565b5f612b68612b63612b5e84612924565b612b45565b612924565b9050919050565b5f612b7982612b4e565b9050919050565b5f612b8a82612b6f565b9050919050565b612b9a81612b80565b82525050565b5f602082019050612bb35f830184612b91565b92915050565b612bc281612803565b8114612bcc575f80fd5b50565b5f81359050612bdd81612bb9565b92915050565b5f8060408385031215612bf957612bf861277b565b5b5f612c0685828601612992565b9250506020612c1785828601612bcf565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c5b8261285e565b810181811067ffffffffffffffff82111715612c7a57612c79612c25565b5b80604052505050565b5f612c8c612772565b9050612c988282612c52565b919050565b5f67ffffffffffffffff821115612cb757612cb6612c25565b5b612cc08261285e565b9050602081019050919050565b828183375f83830152505050565b5f612ced612ce884612c9d565b612c83565b905082815260208101848484011115612d0957612d08612c21565b5b612d14848285612ccd565b509392505050565b5f82601f830112612d3057612d2f612a0c565b5b8135612d40848260208601612cdb565b91505092915050565b5f805f8060808587031215612d6157612d6061277b565b5b5f612d6e87828801612992565b9450506020612d7f87828801612992565b9350506040612d90878288016128e5565b925050606085013567ffffffffffffffff811115612db157612db061277f565b5b612dbd87828801612d1c565b91505092959194509250565b5f8060408385031215612ddf57612dde61277b565b5b5f612dec85828601612992565b9250506020612dfd85828601612992565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e4b57607f821691505b602082108103612e5e57612e5d612e07565b5b50919050565b5f604082019050612e775f830185612954565b612e846020830184612954565b9392505050565b5f606082019050612e9e5f830186612954565b612eab60208301856129e4565b612eb86040830184612954565b949350505050565b5f604082019050612ed35f830185612954565b612ee060208301846129e4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f4b826128c6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7d57612f7c612f14565b5b600182019050919050565b5f819050919050565b612f9a81612f88565b82525050565b612fa9816128c6565b82525050565b5f61ffff82169050919050565b612fc581612faf565b82525050565b5f63ffffffff82169050919050565b612fe381612fcb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f61300d82612fe9565b6130178185612ff3565b9350613027818560208601612850565b6130308161285e565b840191505092915050565b5f60c083015f8301516130505f860182612f91565b5060208301516130636020860182612fa0565b5060408301516130766040860182612fbc565b5060608301516130896060860182612fda565b50608083015161309c6080860182612fda565b5060a083015184820360a08601526130b48282613003565b9150508091505092915050565b5f6020820190508181035f8301526130d9818461303b565b905092915050565b5f815190506130ef816128cf565b92915050565b5f6020828403121561310a5761310961277b565b5b5f613117848285016130e1565b91505092915050565b7f4d7573742062652070726f706f736564206f776e6572000000000000000000005f82015250565b5f613154601683612840565b915061315f82613120565b602082019050919050565b5f6020820190508181035f83015261318181613148565b9050919050565b5f60608201905061319b5f830186612954565b6131a86020830185612954565b6131b56040830184612954565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131f4826128c6565b91506131ff836128c6565b92508261320f5761320e6131bd565b5b828206905092915050565b61322381612803565b82525050565b602082015f82015161323d5f85018261321a565b50505050565b5f6020820190506132565f830184613229565b92915050565b5f82825260208201905092915050565b5f61327682612fe9565b613280818561325c565b9350613290818560208601612850565b6132998161285e565b840191505092915050565b5f6080820190506132b75f830187612954565b6132c46020830186612954565b6132d160408301856129e4565b81810360608301526132e3818461326c565b905095945050505050565b5f815190506132fc816127ae565b92915050565b5f602082840312156133175761331661277b565b5b5f613324848285016132ee565b91505092915050565b5f81905092915050565b5f61334182612836565b61334b818561332d565b935061335b818560208601612850565b80840191505092915050565b5f6133728285613337565b915061337e8284613337565b91508190509392505050565b7f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000005f82015250565b5f6133be601683612840565b91506133c98261338a565b602082019050919050565b5f6020820190508181035f8301526133eb816133b2565b9050919050565b7f43616e6e6f74207472616e7366657220746f2073656c660000000000000000005f82015250565b5f613426601783612840565b9150613431826133f2565b602082019050919050565b5f6020820190508181035f8301526134538161341a565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026134b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261347b565b6134c0868361347b565b95508019841693508086168417925050509392505050565b5f6134f26134ed6134e8846128c6565b612b45565b6128c6565b9050919050565b5f819050919050565b61350b836134d8565b61351f613517826134f9565b848454613487565b825550505050565b5f90565b613533613527565b61353e818484613502565b505050565b5b81811015613561576135565f8261352b565b600181019050613544565b5050565b601f8211156135a6576135778161345a565b6135808461346c565b8101602085101561358f578190505b6135a361359b8561346c565b830182613543565b50505b505050565b5f82821c905092915050565b5f6135c65f19846008026135ab565b1980831691505092915050565b5f6135de83836135b7565b9150826002028217905092915050565b6135f782612836565b67ffffffffffffffff8111156136105761360f612c25565b5b61361a8254612e34565b613625828285613565565b5f60209050601f831160018114613656575f8415613644578287015190505b61364e85826135d3565b8655506136b5565b601f1984166136648661345a565b5f5b8281101561368b57848901518255600182019150602085019450602081019050613666565b868310156136a857848901516136a4601f8916826135b7565b8355505b6001600288020188555050505b505050505050565b5f6136c7826128c6565b91506136d2836128c6565b92508282039050818111156136ea576136e9612f14565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe697066733a2f2f516d534d356834577365515741544e68465765436271435441474a435a63313153613150356761586b3338796254697066733a2f2f516d5877375445414a574b6a4b6966764c4532355a39796a766f77576b324e57593357676e5a5055746f39586f41697066733a2f2f516d5446585a426d6d6e53414e4752476852566f6168545456504a79476157756d3844335969634a516d4739376da264697066735822122013c3e4e517ce08e4760ebacee46c09a086126a0be91a81cae7c2b137c3b5b76664736f6c634300081a0033152ac490dcfca62367b8eb961d4ecc523442a29084c3bc7fb4ccd1145982bae1