608060405234801562000010575f80fd5b5062000022326200002860201b60201c565b620006e8565b62000039816200011a60201b60201c565b6200004c816001620001fb60201b60201c565b6040518060400160405280600a81526020017f50756467792043617473000000000000000000000000000000000000000000008152505f908162000091919062000604565b506040518060400160405280600581526020017f504341545300000000000000000000000000000000000000000000000000000081525060019081620000d8919062000604565b5061c350600360016101000a81548163ffffffff021916908363ffffffff160217905550602360035f6101000a81548160ff021916908360ff16021790555050565b6200012a6200024260201b60201c565b15620001a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156200016657630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350620001f8565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b6200023e82620002328362000216866200024660201b60201c565b6affffffffffffffffffffff16620002b560201b90919060201c565b620002e660201b60201c565b5050565b5f90565b5f620002576200036660201b60201c565b6008015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a90046affffffffffffffffffffff169050919050565b5f811515620002ca846200037660201b60201c565b151514620002dd5760576001901b831892505b82905092915050565b80620002f76200036660201b60201c565b6008015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a8154816affffffffffffffffffffff02191690836affffffffffffffffffffff1602179055505050565b5f68a20d6e21d0e5255308905090565b5f806057836affffffffffffffffffffff16901c6affffffffffffffffffffff1614159050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200041c57607f821691505b602082108103620004325762000431620003d7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000459565b620004a2868362000459565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004ec620004e6620004e084620004ba565b620004c3565b620004ba565b9050919050565b5f819050919050565b6200050783620004cc565b6200051f6200051682620004f3565b84845462000465565b825550505050565b5f90565b6200053562000527565b62000542818484620004fc565b505050565b5b8181101562000569576200055d5f826200052b565b60018101905062000548565b5050565b601f821115620005b857620005828162000438565b6200058d846200044a565b810160208510156200059d578190505b620005b5620005ac856200044a565b83018262000547565b50505b505050565b5f82821c905092915050565b5f620005da5f1984600802620005bd565b1980831691505092915050565b5f620005f48383620005c9565b9150826002028217905092915050565b6200060f82620003a0565b67ffffffffffffffff8111156200062b576200062a620003aa565b5b62000637825462000404565b620006448282856200056d565b5f60209050601f8311600181146200067a575f841562000665578287015190505b620006718582620005e7565b865550620006e0565b601f1984166200068a8662000438565b5f5b82811015620006b3578489015182556001820191506020850194506020810190506200068c565b86831015620006d35784890151620006cf601f891682620005c9565b8355505b6001600288020188555050505b505050505050565b6143f780620006f65f395ff3fe60806040526004361061021d575f3560e01c80634a4ee7b111610122578063762a8801116100aa578063c87b56dd1161006e578063c87b56dd14610ee4578063dd62ed3e14610f20578063f04e283e14610f5c578063f2fde38b14610f78578063fee81cf414610f9457610224565b8063762a880114610e045780638ca7c6f714610e2c5780638da5cb5b14610e5457806395d89b4114610e7e578063a9059cbb14610ea857610224565b806354d1f13d116100f157806354d1f13d14610d625780635a44621514610d6c57806370a0823114610d94578063715018a614610dd057806375b238fc14610dda57610224565b80634a4ee7b114610cb65780634ef41efc14610cd2578063514e62fc14610cfc5780635327bba314610d3857610224565b806323b872dd116101a55780632de94807116101745780632de9480714610bd6578063313ce56714610c125780633af32abf14610c3c5780633ccfd60b14610c7857806346fe2b0614610c8e57610224565b806323b872dd14610b2c5780632569296214610b68578063274e430b14610b725780632a6a935d14610bae57610224565b806318160ddd116101ec57806318160ddd14610a66578063183a4f6e14610a905780631c10893f14610aac5780631cd64df414610ac85780631fa96e7b14610b0457610224565b806304dfe79d146109ae57806305b8c077146109d857806306fdde0314610a00578063095ea7b314610a2a57610224565b3661022457005b5f61022d610fd0565b90505f60e061023b5f610fe0565b901c905063e985e9c5810361039e57816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102d2576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60445f36905010156102e2575f80fd5b5f6102ed6004610fe0565b90505f6102fa6024610fe0565b905061039b846003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610390575f610393565b60015b60ff16610fea565b50505b636352211e810361047757816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610431576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60245f3690501015610441575f80fd5b5f61044c6004610fe0565b905061047561045a82610ff2565b73ffffffffffffffffffffffffffffffffffffffff16610fea565b505b63e5eb36c8810361056957816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461050a576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60845f369050101561051a575f80fd5b5f6105256004610fe0565b90505f6105326024610fe0565b90505f61053f6044610fe0565b90505f61054c6064610fe0565b905061055a84848484611042565b6105646001610fea565b505050505b63813500fc810361064f57816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105fc576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60645f369050101561060c575f80fd5b5f6106176004610fe0565b90505f806106256024610fe0565b141590505f6106346044610fe0565b90506106418383836110a4565b61064b6001610fea565b5050505b63d10b6e0c810361074657816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e2576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60645f36905010156106f2575f80fd5b5f6106fd6004610fe0565b90505f61070a6024610fe0565b90505f6107176044610fe0565b9050610742610727848484611141565b73ffffffffffffffffffffffffffffffffffffffff16610fea565b5050505b63081812fc810361081f57816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d9576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60245f36905010156107e9575f80fd5b5f6107f46004610fe0565b905061081d610802826112f1565b73ffffffffffffffffffffffffffffffffffffffff16610fea565b505b63f5b100ea81036108e257816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b2576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60245f36905010156108c2575f80fd5b5f6108cd6004610fe0565b90506108e06108db82611372565b610fea565b505b63e2c79281810361099657816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610975576040517fce5a776b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f3690501015610985575f80fd5b6109956109906113d9565b610fea565b5b63b7a94eb881036109ac576109ab6001610fea565b5b005b3480156109b9575f80fd5b506109c2611400565b6040516109cf9190613a0c565b60405180910390f35b3480156109e3575f80fd5b506109fe60048036038101906109f99190613a87565b611412565b005b348015610a0b575f80fd5b50610a14611456565b604051610a219190613b3c565b60405180910390f35b348015610a35575f80fd5b50610a506004803603810190610a4b9190613b8f565b6114e5565b604051610a5d9190613be7565b60405180910390f35b348015610a71575f80fd5b50610a7a6115e0565b604051610a879190613c0f565b60405180910390f35b610aaa6004803603810190610aa59190613c28565b611617565b005b610ac66004803603810190610ac19190613b8f565b611624565b005b348015610ad3575f80fd5b50610aee6004803603810190610ae99190613b8f565b61163a565b604051610afb9190613be7565b60405180910390f35b348015610b0f575f80fd5b50610b2a6004803603810190610b259190613cb4565b611650565b005b348015610b37575f80fd5b50610b526004803603810190610b4d9190613cff565b611672565b604051610b5f9190613be7565b60405180910390f35b610b706117f7565b005b348015610b7d575f80fd5b50610b986004803603810190610b939190613a87565b611848565b604051610ba59190613be7565b60405180910390f35b348015610bb9575f80fd5b50610bd46004803603810190610bcf9190613d79565b6118e3565b005b348015610be1575f80fd5b50610bfc6004803603810190610bf79190613a87565b6118f0565b604051610c099190613c0f565b60405180910390f35b348015610c1d575f80fd5b50610c26611909565b604051610c339190613a0c565b60405180910390f35b348015610c47575f80fd5b50610c626004803603810190610c5d9190613a87565b611911565b604051610c6f9190613be7565b60405180910390f35b348015610c83575f80fd5b50610c8c611937565b005b348015610c99575f80fd5b50610cb46004803603810190610caf9190613dce565b61194e565b005b610cd06004803603810190610ccb9190613b8f565b611977565b005b348015610cdd575f80fd5b50610ce661198d565b604051610cf39190613e08565b60405180910390f35b348015610d07575f80fd5b50610d226004803603810190610d1d9190613b8f565b6119be565b604051610d2f9190613be7565b60405180910390f35b348015610d43575f80fd5b50610d4c6119d5565b604051610d599190613e3f565b60405180910390f35b610d6a6119eb565b005b348015610d77575f80fd5b50610d926004803603810190610d8d9190613e58565b611a24565b005b348015610d9f575f80fd5b50610dba6004803603810190610db59190613a87565b611a59565b604051610dc79190613c0f565b60405180910390f35b610dd8611ad0565b005b348015610de5575f80fd5b50610dee611ae3565b604051610dfb9190613c0f565b60405180910390f35b348015610e0f575f80fd5b50610e2a6004803603810190610e259190613f00565b611ae8565b005b348015610e37575f80fd5b50610e526004803603810190610e4d9190613f2b565b611b18565b005b348015610e5f575f80fd5b50610e68611b32565b604051610e759190613e08565b60405180910390f35b348015610e89575f80fd5b50610e92611b5a565b604051610e9f9190613b3c565b60405180910390f35b348015610eb3575f80fd5b50610ece6004803603810190610ec99190613b8f565b611bea565b604051610edb9190613be7565b60405180910390f35b348015610eef575f80fd5b50610f0a6004803603810190610f059190613c28565b611c00565b604051610f179190613b3c565b60405180910390f35b348015610f2b575f80fd5b50610f466004803603810190610f419190613f69565b611d2e565b604051610f539190613c0f565b60405180910390f35b610f766004803603810190610f719190613a87565b611db9565b005b610f926004803603810190610f8d9190613a87565b611df7565b005b348015610f9f575f80fd5b50610fba6004803603810190610fb59190613a87565b611e20565b604051610fc79190613c0f565b60405180910390f35b5f68a20d6e21d0e5255308905090565b5f81359050919050565b805f5260205ff35b5f610ffc82611e39565b611032576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61103b82611e79565b9050919050565b61104e84848484611ee0565b61105884846124bb565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461109e5761109d84670de0b6b3a76400006125b1565b5b50505050565b816110ad610fd0565b6003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f8061114b610fd0565b90505f816002015f6111688460070161116389612649565b612656565b63ffffffff1663ffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461129457816003015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611293576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b85826004015f8781526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925050509392505050565b5f6112fb82611e39565b611331576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611339610fd0565b6004015f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61137b610fd0565b6008015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160109054906101000a900463ffffffff1663ffffffff169050919050565b5f6113e2610fd0565b5f0160089054906101000a900463ffffffff1663ffffffff16905090565b60035f9054906101000a900460ff1681565b600161141d81612680565b5f670de0b6b3a76400006103e86114349190613fd4565b90505f3390506114458282866126b5565b611450816001612980565b50505050565b60605f805461146490614042565b80601f016020809104026020016040519081016040528092919081815260200182805461149090614042565b80156114db5780601f106114b2576101008083540402835291602001916114db565b820191905f5260205f20905b8154815290600101906020018083116114be57829003601f168201915b5050505050905090565b5f806114ef610fd0565b905082816005015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516115cd9190613c0f565b60405180910390a3600191505092915050565b5f6115e9610fd0565b5f01600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905090565b61162133826129b5565b50565b61162c6129c4565b61163682826129fb565b5050565b5f8182611646856118f0565b1614905092915050565b600161165b81612680565b82826002918261166c929190614246565b50505050565b5f8061167c610fd0565b90505f816005015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117df578084111561175d576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838103826005015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6117ea868686612a0b565b6001925050509392505050565b5f611800612a63565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f80611852610fd0565b6008015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6001825f01600b9054906101000a900460ff161660ff16036118c0576118b883612a6d565b9150506118de565b5f6002825f01600b9054906101000a900460ff161660ff1614159150505b919050565b6118ed3382612a77565b50565b5f638b78c6d8600c52815f526020600c20549050919050565b5f6012905090565b5f61193061191e83612b2a565b6affffffffffffffffffffff16612b91565b9050919050565b600161194281612680565b61194b33612bbb565b50565b600161195981612680565b8160035f6101000a81548160ff021916908360ff1602179055505050565b61197f6129c4565b61198982826129b5565b5050565b5f611996610fd0565b6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80826119ca856118f0565b161415905092915050565b600360019054906101000a900463ffffffff1681565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6001611a2f81612680565b84845f9182611a3f929190614246565b50828260019182611a51929190614246565b505050505050565b5f611a62610fd0565b6008015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b611ad86129c4565b611ae15f612bd7565b565b600181565b6001611af381612680565b81600360016101000a81548163ffffffff021916908363ffffffff1602179055505050565b6001611b2381612680565b611b2d8383612980565b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b606060018054611b6990614042565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9590614042565b8015611be05780601f10611bb757610100808354040283529160200191611be0565b820191905f5260205f20905b815481529060010190602001808311611bc357829003601f168201915b5050505050905090565b5f611bf6338484612a0b565b6001905092915050565b6060611c0b82611e39565b611c41576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60028054611c4f90614042565b905014611d2957611d2660028054611c6690614042565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9290614042565b8015611cdd5780601f10611cb457610100808354040283529160200191611cdd565b820191905f5260205f20905b815481529060010190602001808311611cc057829003601f168201915b50505050506040518060400160405280600481526020017f7b69647d00000000000000000000000000000000000000000000000000000000815250611d2185612c9d565b612cec565b90505b919050565b5f611d37610fd0565b6005015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611dc16129c4565b63389a75e1600c52805f526020600c208054421115611de757636f5e88185f526004601cfd5b5f815550611df481612bd7565b50565b611dff6129c4565b8060601b611e1457637448fbae5f526004601cfd5b611e1d81612bd7565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff16611e5a83611e79565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b5f80611e83610fd0565b9050806002015f611e9f83600701611e9a87612649565b612656565b63ffffffff1663ffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f611ee9610fd0565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f50576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816002015f611f6b84600701611f6688612649565b612656565b63ffffffff1663ffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461200b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461216257816003015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661216157816004015f8581526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612160576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5f61216c87612e3f565b90505f61217887612e3f565b9050670de0b6b3a7640000825f0160148282829054906101000a90046bffffffffffffffffffffffff166121ac919061432a565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550670de0b6b3a7640000815f0160148282829054906101000a90046bffffffffffffffffffffffff160192506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506122508460070161224188612649565b61224b848b612ee7565b612fda565b836004015f8781526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f61230a856006015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20845f01601081819054906101000a900463ffffffff166001900391906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff16612656565b63ffffffff169050612375856006015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612369876007016123648b61300c565b612656565b63ffffffff1683612fda565b5f825f01601081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff1690506123e3866007016123c98461300c565b6123de896007016123d98d61300c565b612656565b612fda565b61242c866006015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828a612fda565b6124428660070161243c8a61300c565b83612fda565b50508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516124a99190613c0f565b60405180910390a35050505050505050565b5f60035f9054906101000a900460ff1660ff1690505f81036124dd57506125ad565b80670de0b6b3a7640000026124f183611a59565b116124fc57506125ad565b61251a61250883612b2a565b6affffffffffffffffffffff16612b91565b1561252557506125ad565b61252d611b32565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361256557506125ad565b6125708360016119be565b1561257b57506125ad565b6040517f0f2acbfc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f600360019054906101000a900463ffffffff1663ffffffff1690505f81036125da5750612645565b5f80612604846125e987612b2a565b6affffffffffffffffffffff1661301b90919063ffffffff16565b9150915060028110612637575f838283020290505f6301312d00905080821061262b578091505b612634826130e5565b50505b612641858361311e565b5050505b5050565b5f600182901b9050919050565b5f600560078316901b835f015f600385901c81526020019081526020015f2054901c905092915050565b638b78c6d8195433146126b257638b78c6d8600c52335f52806020600c2054166126b1576382b429005f526004601cfd5b5b50565b5f6126be610fd0565b90505f815f0160049054906101000a900463ffffffff1663ffffffff1614612712576040517fead4d2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612777576040517f39a84a7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61278082613196565b6001815f0160046101000a81548163ffffffff021916908363ffffffff16021790555081816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f84111561297a575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612852576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6b0de0b6b39983494c589bffff841115612898576040517fe5cfe95700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83815f01600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505f6128d484612e3f565b905084815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516129659190613c0f565b60405180910390a3612978846001612a77565b505b50505050565b6129b1826129ac8361299186612b2a565b6affffffffffffffffffffff166131c690919063ffffffff16565b61311e565b5050565b6129c082825f6131ee565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146129f9576382b429005f526004601cfd5b565b612a07828260016131ee565b5050565b612a16838383613246565b612a2083836124bb565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612a5e57612a5d83826125b1565b5b505050565b5f6202a300905090565b5f813b9050919050565b5f612a8183612e3f565b90508115155f6002835f01600b9054906101000a900460ff161660ff161415151514612ad7576002815f01600b8282829054906101000a900460ff161892506101000a81548160ff021916908360ff1602179055505b8273ffffffffffffffffffffffffffffffffffffffff167fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039383604051612b1d9190613be7565b60405180910390a2505050565b5f612b33610fd0565b6008015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a90046affffffffffffffffffffff169050919050565b5f806057836affffffffffffffffffffff16901c6affffffffffffffffffffff1614159050919050565b5f385f3847855af1612bd45763b12d13eb5f526004601cfd5b50565b612bdf6138c5565b15612c44577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550612c9a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b60606080604051019050602081016040525f8152805f19835b600115612cd7578184019350600a81066030018453600a8104905080612cb6575b50828203602084039350808452505050919050565b60608351835183516020870196506020860195506020850194506020604051019350828701838311612dea576001838203015f60208510612d2d5784892090505b601f851660200360031b89515b600115612de5578b51818118831c612dc2578315612d7e5783888e2014612d7d57808a5260018a01995060018d019c50848d10612d775750612de5565b50612de0565b5b5f5b600115612d9d57808c0151818c0152602081019050878110612d80575b50868a019950878d019c508715612dc157848d10612dbb5750612de5565b50612de0565b5b808a5260018a01995060018d019c50848d10612dde5750612de5565b505b612d3a565b505050505b846020604051019550888203868203015b828a1015612e18578951825260208201915060208a019950612dfb565b6020870396508060208801015f815260208101604052818852505050505050509392505050565b5f80612e49610fd0565b9050806008015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2091505f6001835f01600b9054906101000a900460ff161660ff1603612ee1575f60019050612eb784612a6d565b15612ec3576002811790505b80835f01600b6101000a81548160ff021916908360ff160217905550505b50919050565b5f80612ef1610fd0565b9050835f01600c9054906101000a900463ffffffff1691505f8263ffffffff1603612fd357805f015f81819054906101000a900463ffffffff16612f3490614369565b91906101000a81548163ffffffff021916908363ffffffff1602179055915081845f01600c6101000a81548163ffffffff021916908363ffffffff16021790555082816002015f8463ffffffff1663ffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5092915050565b826020528160031c5f5260405f206007831660051b815463ffffffff8482841c188116831b8218845550505050505050565b5f60018083901b019050919050565b5f8061302684612b91565b1561303657835f915091506130de565b5f637fffffff62015180428161304f5761304e614394565b5b041690505f637fffffff6038876affffffffffffffffffffff16901c1690505f66ffffffffffffff876affffffffffffffffffffff16169050828214613096575f90508291505b5f603883901b90505f66ffffffffffffff602889901c168301905066ffffffffffffff811682179150819650620de0b681816130d5576130d4614394565b5b04955050505050505b9250929050565b80600117601052605b810460788211025f5b81811461311057601080206010526001810190506130f7565b5060105161311a57fe5b5050565b80613127610fd0565b6008015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a8154816affffffffffffffffffffff02191690836affffffffffffffffffffff1602179055505050565b630f4599e55f523360205260205f6024601c5f855af160015f5114166131c35763d125259c5f526004601cfd5b50565b5f8115156131d384612b91565b1515146131e55760576001901b831892505b82905092915050565b638b78c6d8600c52825f526020600c2080548381178361321057848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036132ab576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6132b4610fd0565b90505f6132c085612e3f565b90505f6132cc85612e3f565b90506132d66139a8565b825f0160109054906101000a900463ffffffff1663ffffffff16816080018181525050815f0160109054906101000a900463ffffffff1663ffffffff168160a0018181525050825f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16816040018181525050806040015185111561338d576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848160400181815103915081815250508060400151835f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555084825f0160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16018160600181815250825f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506134628160800151670de0b6b3a764000083604001518161345c5761345b614394565b5b046138c9565b815f0181815250505f6002835f01600b9054906101000a900460ff161660ff1603613502578573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036134ce57805f01518160800151038160a00181815250505b6134f8670de0b6b3a76400008260600151816134ed576134ec614394565b5b048260a001516138c9565b8160200181815250505b5f6135158260200151835f0151016138d9565b90505f825f015114613648575f856006015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f836080015190505f845f015182039050845f0151885f0160088282829054906101000a900463ffffffff160392506101000a81548163ffffffff021916908363ffffffff16021790555080875f0160106101000a81548163ffffffff021916908363ffffffff1602179055505b5f6135e3848460019003945084612656565b63ffffffff1690506135fa89600701825f80613906565b886004015f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561363c858d83600161394a565b508082036135d1575050505b5f82602001511461381d575f856006015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f8360a0015190505f8460200151820190505f6136b2878c612ee7565b90505f670de0b6b3a76400008a5f01600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16816136f6576136f5614394565b5b0490505f8a5f0160049054906101000a900463ffffffff1663ffffffff16905087602001518b5f0160088282829054906101000a900463ffffffff160192506101000a81548163ffffffff021916908363ffffffff16021790555083895f0160106101000a81548163ffffffff021916908363ffffffff1602179055505b5b5f61378b8c60070161378684612649565b612656565b63ffffffff16146137ae57818160010191508111156137a957600190505b613775565b6137b9868683612fda565b6137ce8b600701828588806001019950613906565b6137da878e835f61394a565b818160010191508111156137ed57600190505b83850361377457808b5f0160046101000a81548163ffffffff021916908363ffffffff1602179055505050505050505b5f815f015151146138565761385581866001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661396c565b5b508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516138b49190613c0f565b60405180910390a350505050505050565b5f90565b5f81830382841102905092915050565b6138e16139d8565b6040805101828152806020018360051b81016040528183528083602001525050919050565b8163ffffffff168160201b17846020528360021c5f5260405f206003851660061b815467ffffffffffffffff8482841c188116831b82188455505050505050505050565b8360200151818360081b8560601b171781526020810185602001525050505050565b81516040810363263c69d68152602080820152815160051b60440160208282601c85015f885af16001835114166139a1575f82fd5b5050505050565b6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060400160405280606081526020015f81525090565b5f60ff82169050919050565b613a06816139f1565b82525050565b5f602082019050613a1f5f8301846139fd565b92915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a5682613a2d565b9050919050565b613a6681613a4c565b8114613a70575f80fd5b50565b5f81359050613a8181613a5d565b92915050565b5f60208284031215613a9c57613a9b613a25565b5b5f613aa984828501613a73565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613ae9578082015181840152602081019050613ace565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613b0e82613ab2565b613b188185613abc565b9350613b28818560208601613acc565b613b3181613af4565b840191505092915050565b5f6020820190508181035f830152613b548184613b04565b905092915050565b5f819050919050565b613b6e81613b5c565b8114613b78575f80fd5b50565b5f81359050613b8981613b65565b92915050565b5f8060408385031215613ba557613ba4613a25565b5b5f613bb285828601613a73565b9250506020613bc385828601613b7b565b9150509250929050565b5f8115159050919050565b613be181613bcd565b82525050565b5f602082019050613bfa5f830184613bd8565b92915050565b613c0981613b5c565b82525050565b5f602082019050613c225f830184613c00565b92915050565b5f60208284031215613c3d57613c3c613a25565b5b5f613c4a84828501613b7b565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613c7457613c73613c53565b5b8235905067ffffffffffffffff811115613c9157613c90613c57565b5b602083019150836001820283011115613cad57613cac613c5b565b5b9250929050565b5f8060208385031215613cca57613cc9613a25565b5b5f83013567ffffffffffffffff811115613ce757613ce6613a29565b5b613cf385828601613c5f565b92509250509250929050565b5f805f60608486031215613d1657613d15613a25565b5b5f613d2386828701613a73565b9350506020613d3486828701613a73565b9250506040613d4586828701613b7b565b9150509250925092565b613d5881613bcd565b8114613d62575f80fd5b50565b5f81359050613d7381613d4f565b92915050565b5f60208284031215613d8e57613d8d613a25565b5b5f613d9b84828501613d65565b91505092915050565b613dad816139f1565b8114613db7575f80fd5b50565b5f81359050613dc881613da4565b92915050565b5f60208284031215613de357613de2613a25565b5b5f613df084828501613dba565b91505092915050565b613e0281613a4c565b82525050565b5f602082019050613e1b5f830184613df9565b92915050565b5f63ffffffff82169050919050565b613e3981613e21565b82525050565b5f602082019050613e525f830184613e30565b92915050565b5f805f8060408587031215613e7057613e6f613a25565b5b5f85013567ffffffffffffffff811115613e8d57613e8c613a29565b5b613e9987828801613c5f565b9450945050602085013567ffffffffffffffff811115613ebc57613ebb613a29565b5b613ec887828801613c5f565b925092505092959194509250565b613edf81613e21565b8114613ee9575f80fd5b50565b5f81359050613efa81613ed6565b92915050565b5f60208284031215613f1557613f14613a25565b5b5f613f2284828501613eec565b91505092915050565b5f8060408385031215613f4157613f40613a25565b5b5f613f4e85828601613a73565b9250506020613f5f85828601613d65565b9150509250929050565b5f8060408385031215613f7f57613f7e613a25565b5b5f613f8c85828601613a73565b9250506020613f9d85828601613a73565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613fde82613b5c565b9150613fe983613b5c565b9250828202613ff781613b5c565b9150828204841483151761400e5761400d613fa7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061405957607f821691505b60208210810361406c5761406b614015565b5b50919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026141057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826140ca565b61410f86836140ca565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61414a61414561414084613b5c565b614127565b613b5c565b9050919050565b5f819050919050565b61416383614130565b61417761416f82614151565b8484546140d6565b825550505050565b5f90565b61418b61417f565b61419681848461415a565b505050565b5b818110156141b9576141ae5f82614183565b60018101905061419c565b5050565b601f8211156141fe576141cf816140a9565b6141d8846140bb565b810160208510156141e7578190505b6141fb6141f3856140bb565b83018261419b565b50505b505050565b5f82821c905092915050565b5f61421e5f1984600802614203565b1980831691505092915050565b5f614236838361420f565b9150826002028217905092915050565b6142508383614072565b67ffffffffffffffff8111156142695761426861407c565b5b6142738254614042565b61427e8282856141bd565b5f601f8311600181146142ab575f8415614299578287013590505b6142a3858261422b565b86555061430a565b601f1984166142b9866140a9565b5f5b828110156142e0578489013582556001820191506020850194506020810190506142bb565b868310156142fd57848901356142f9601f89168261420f565b8355505b6001600288020188555050505b50505050505050565b5f6bffffffffffffffffffffffff82169050919050565b5f61433482614313565b915061433f83614313565b925082820390506bffffffffffffffffffffffff81111561436357614362613fa7565b5b92915050565b5f61437382613e21565b915063ffffffff820361438957614388613fa7565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea2646970667358221220d8995fa71c46e49fd9e6c218cd8196769de1f55594437346e9f1ae9ba338360364736f6c63430008180033