60c060405234801562000010575f80fd5b506040516200421438038062004214833981810160405281019062000036919062000492565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200009d576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350846001908162000148919062000782565b5083600290816200015a919062000782565b508260ff1660808160ff168152505081600481905550608051600a620001819190620009e3565b826200018e919062000a33565b60a081815250506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060a05160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050505062000a7d565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200029a8262000252565b810181811067ffffffffffffffff82111715620002bc57620002bb62000262565b5b80604052505050565b5f620002d062000239565b9050620002de82826200028f565b919050565b5f67ffffffffffffffff8211156200030057620002ff62000262565b5b6200030b8262000252565b9050602081019050919050565b5f5b83811015620003375780820151818401526020810190506200031a565b5f8484015250505050565b5f620003586200035284620002e3565b620002c5565b9050828152602081018484840111156200037757620003766200024e565b5b6200038484828562000318565b509392505050565b5f82601f830112620003a357620003a26200024a565b5b8151620003b584826020860162000342565b91505092915050565b5f60ff82169050919050565b620003d581620003be565b8114620003e0575f80fd5b50565b5f81519050620003f381620003ca565b92915050565b5f819050919050565b6200040d81620003f9565b811462000418575f80fd5b50565b5f815190506200042b8162000402565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200045c8262000431565b9050919050565b6200046e8162000450565b811462000479575f80fd5b50565b5f815190506200048c8162000463565b92915050565b5f805f805f60a08688031215620004ae57620004ad62000242565b5b5f86015167ffffffffffffffff811115620004ce57620004cd62000246565b5b620004dc888289016200038c565b955050602086015167ffffffffffffffff8111156200050057620004ff62000246565b5b6200050e888289016200038c565b94505060406200052188828901620003e3565b935050606062000534888289016200041b565b925050608062000547888289016200047c565b9150509295509295909350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005a357607f821691505b602082108103620005b957620005b86200055e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200061d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005e0565b620006298683620005e0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200066a620006646200065e84620003f9565b62000641565b620003f9565b9050919050565b5f819050919050565b62000685836200064a565b6200069d620006948262000671565b848454620005ec565b825550505050565b5f90565b620006b3620006a5565b620006c08184846200067a565b505050565b5b81811015620006e757620006db5f82620006a9565b600181019050620006c6565b5050565b601f82111562000736576200070081620005bf565b6200070b84620005d1565b810160208510156200071b578190505b620007336200072a85620005d1565b830182620006c5565b50505b505050565b5f82821c905092915050565b5f620007585f19846008026200073b565b1980831691505092915050565b5f62000772838362000747565b9150826002028217905092915050565b6200078d8262000554565b67ffffffffffffffff811115620007a957620007a862000262565b5b620007b582546200058b565b620007c2828285620006eb565b5f60209050601f831160018114620007f8575f8415620007e3578287015190505b620007ef858262000765565b8655506200085e565b601f1984166200080886620005bf565b5f5b8281101562000831578489015182556001820191506020850194506020810190506200080a565b868310156200085157848901516200084d601f89168262000747565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008f057808604811115620008c857620008c762000866565b5b6001851615620008d85780820291505b8081029050620008e88562000893565b9450620008a8565b94509492505050565b5f826200090a5760019050620009dc565b8162000919575f9050620009dc565b81600181146200093257600281146200093d5762000973565b6001915050620009dc565b60ff84111562000952576200095162000866565b5b8360020a9150848211156200096c576200096b62000866565b5b50620009dc565b5060208310610133831016604e8410600b8410161715620009ad5782820a905083811115620009a757620009a662000866565b5b620009dc565b620009bc84848460016200089f565b92509050818404811115620009d657620009d562000866565b5b81810290505b9392505050565b5f620009ef82620003f9565b9150620009fc83620003be565b925062000a2b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008f9565b905092915050565b5f62000a3f82620003f9565b915062000a4c83620003f9565b925082820262000a5c81620003f9565b9150828204841483151762000a765762000a7562000866565b5b5092915050565b60805160a05161376762000aad5f395f818161094901526119ef01525f81816112890152611df801526137675ff3fe608060405234801561000f575f80fd5b50600436106101c2575f3560e01c80638da5cb5b116100f7578063c87b56dd11610095578063dd62ed3e1161006f578063dd62ed3e14610506578063e0df5b6f14610536578063e985e9c514610552578063f2fde38b14610582576101c2565b8063c87b56dd14610488578063ca4c0e09146104b8578063d547cfb7146104e8576101c2565b8063a22cb465116100d1578063a22cb46514610402578063a9059cbb1461041e578063a9e2880e1461044e578063b88d4fde1461046c576101c2565b80638da5cb5b1461039657806395d89b41146103b45780639b19251a146103d2576101c2565b80632c88797e11610164578063504334c21161013e578063504334c2146102fe57806353d6fd591461031a5780636352211e1461033657806370a0823114610366576101c2565b80632c88797e146102a6578063313ce567146102c457806342842e0e146102e2576101c2565b8063095ea7b3116101a0578063095ea7b31461023257806318160ddd1461026257806323b872dd146102805780632b9689581461029c576101c2565b806306fdde03146101c657806307c56001146101e4578063081812fc14610202575b5f80fd5b6101ce61059e565b6040516101db91906128ad565b60405180910390f35b6101ec61062a565b6040516101f991906128e5565b60405180910390f35b61021c60048036038101906102179190612939565b610630565b60405161022991906129a3565b60405180910390f35b61024c600480360381019061024791906129e6565b610660565b6040516102599190612a3e565b60405180910390f35b61026a610947565b60405161027791906128e5565b60405180910390f35b61029a60048036038101906102959190612a57565b61096b565b005b6102a4611162565b005b6102ae611281565b6040516102bb91906128e5565b60405180910390f35b6102cc611287565b6040516102d99190612ac2565b60405180910390f35b6102fc60048036038101906102f79190612a57565b6112ab565b005b61031860048036038101906103139190612c07565b6113da565b005b610334600480360381019061032f9190612ca7565b611482565b005b610350600480360381019061034b9190612939565b6115d5565b60405161035d91906129a3565b60405180910390f35b610380600480360381019061037b9190612ce5565b611673565b60405161038d91906128e5565b60405180910390f35b61039e611688565b6040516103ab91906129a3565b60405180910390f35b6103bc6116ab565b6040516103c991906128ad565b60405180910390f35b6103ec60048036038101906103e79190612ce5565b611737565b6040516103f99190612a3e565b60405180910390f35b61041c60048036038101906104179190612ca7565b611754565b005b610438600480360381019061043391906129e6565b61184c565b6040516104459190612a3e565b60405180910390f35b610456611860565b6040516104639190612dc7565b60405180910390f35b61048660048036038101906104819190612e44565b6118b6565b005b6104a2600480360381019061049d9190612939565b6119eb565b6040516104af91906128ad565b60405180910390f35b6104d260048036038101906104cd9190612939565b611ae3565b6040516104df91906128e5565b60405180910390f35b6104f0611b03565b6040516104fd91906128ad565b60405180910390f35b610520600480360381019061051b9190612ec8565b611b8f565b60405161052d91906128e5565b60405180910390f35b610550600480360381019061054b9190612f06565b611baf565b005b61056c60048036038101906105679190612ec8565b611c46565b6040516105799190612a3e565b60405180910390f35b61059c60048036038101906105979190612ce5565b611c70565b005b600180546105ab90612f7a565b80601f01602080910402602001604051908101604052809291908181526020018280546105d790612f7a565b80156106225780601f106105f957610100808354040283529160200191610622565b820191905f5260205f20905b81548152906001019060200180831161060557829003601f168201915b505050505081565b60065481565b600a602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600654821115801561067257505f82115b1561085a575f600c5f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156107695750600b5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156107a0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600a5f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161084c91906128e5565b60405180910390a35061093d565b8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161093491906128e5565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600454811161102357600c5f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a09576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a6e576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b2c5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610b945750600a5f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610bcb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd3611df5565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c1e9190612fd7565b92505081905550610c2d611df5565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555081600c5f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610d839190612fd7565b81548110610d9457610d9361300a565b5b905f5260205f200154905080600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600e5f8581526020019081526020015f205481548110610e0057610dff61300a565b5b905f5260205f200181905550600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e5957610e58613037565b5b600190038181905f5260205f20015f90559055600e5f8381526020019081526020015f2054600e5f8381526020019081526020015f2081905550600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f90919091909150556001600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610f419190612fd7565b600e5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487611008611df5565b60405161101591906128e5565b60405180910390a35061115d565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461114f5781816110d29190612fd7565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61115a848484611e28565b50505b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111e6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b60045481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112b683838361096b565b5f8273ffffffffffffffffffffffffffffffffffffffff163b1415801561139e575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161133c93929190613097565b6020604051808303815f875af1158015611358573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137c9190613134565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156113d5576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461145e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001908161146d91906132fc565b50806002908161147d91906132fc565b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611506576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054111561157d576040517f2f57ef6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600c5f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361166e576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6008602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600280546116b890612f7a565b80601f01602080910402602001604051908101604052809291908181526020018280546116e490612f7a565b801561172f5780601f106117065761010080835404028352916020019161172f565b820191905f5260205f20905b81548152906001019060200180831161171257829003601f168201915b505050505081565b600f602052805f5260405f205f915054906101000a900460ff1681565b80600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118409190612a3e565b60405180910390a35050565b5f611858338484611e28565b905092915050565b606060058054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191905f5260205f20905b815481526020019060010190808311611898575b5050505050905090565b6118c185858561096b565b5f8473ffffffffffffffffffffffffffffffffffffffff163b141580156119ad575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b815260040161194b9594939291906133f7565b6020604051808303815f875af1158015611967573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198b9190613134565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156119e4576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60607f000000000000000000000000000000000000000000000000000000000000000082101580611a1c57505f8211155b15611a53576040517fdfa1a40800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038054611a6090612f7a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8c90612f7a565b8015611ad75780601f10611aae57610100808354040283529160200191611ad7565b820191905f5260205f20905b815481529060010190602001808311611aba57829003601f168201915b50505050509050919050565b60058181548110611af2575f80fd5b905f5260205f20015f915090505481565b60038054611b1090612f7a565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3c90612f7a565b8015611b875780601f10611b5e57610100808354040283529160200191611b87565b820191905f5260205f20905b815481529060010190602001808311611b6a57829003601f168201915b505050505081565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060039081611c4291906132fc565b5050565b600b602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a611e239190613572565b905090565b5f80611e32611df5565b90505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460085f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f029190612fd7565b925050819055508460085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612026575f8360085f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611feb91906135e9565b8484611ff791906135e9565b6120019190612fd7565b90505f5b81811015612023576120168961216c565b8080600101915050612005565b50505b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166120f9575f838261208191906135e9565b8460085f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120ca91906135e9565b6120d49190612fd7565b90505f5b818110156120f6576120e9886123ba565b80806001019150506120d8565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e0314878760405161215691906128e5565b60405180910390a3600193505050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121d1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905061225c9190612fd7565b8154811061226d5761226c61300a565b5b905f5260205f200154905061228181612636565b600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806122ce576122cd613037565b5b600190038181905f5260205f20015f90559055600e5f8281526020019081526020015f205f9055600c5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361241f576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60045460065410156124765760065f81548092919061243e90613619565b91905055506006549050600160075f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055506124c5565b5f60058054905011156124925761248b6126db565b90506124c4565b6040517fed4421ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b81600c5f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506125c29190612fd7565b600e5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60075f8281526020019081526020015f205f9054906101000a900460ff1661268a576040517fd7004e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581908060018154018082558091505060019003905f5260205f20015f90919091909150555f60075f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f806005805490500361271a576040517fed4421ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600580549050423360058054905060405160200161273b939291906136c5565b604051602081830303815290604052805190602001205f1c61275d9190613701565b90505f600582815481106127745761277361300a565b5b905f5260205f2001549050600560016005805490506127939190612fd7565b815481106127a4576127a361300a565b5b905f5260205f200154600583815481106127c1576127c061300a565b5b905f5260205f20018190555060058054806127df576127de613037565b5b600190038181905f5260205f20015f90559055600160075f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550809250505090565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561285a57808201518184015260208101905061283f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61287f82612823565b612889818561282d565b935061289981856020860161283d565b6128a281612865565b840191505092915050565b5f6020820190508181035f8301526128c58184612875565b905092915050565b5f819050919050565b6128df816128cd565b82525050565b5f6020820190506128f85f8301846128d6565b92915050565b5f604051905090565b5f80fd5b5f80fd5b612918816128cd565b8114612922575f80fd5b50565b5f813590506129338161290f565b92915050565b5f6020828403121561294e5761294d612907565b5b5f61295b84828501612925565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61298d82612964565b9050919050565b61299d81612983565b82525050565b5f6020820190506129b65f830184612994565b92915050565b6129c581612983565b81146129cf575f80fd5b50565b5f813590506129e0816129bc565b92915050565b5f80604083850312156129fc576129fb612907565b5b5f612a09858286016129d2565b9250506020612a1a85828601612925565b9150509250929050565b5f8115159050919050565b612a3881612a24565b82525050565b5f602082019050612a515f830184612a2f565b92915050565b5f805f60608486031215612a6e57612a6d612907565b5b5f612a7b868287016129d2565b9350506020612a8c868287016129d2565b9250506040612a9d86828701612925565b9150509250925092565b5f60ff82169050919050565b612abc81612aa7565b82525050565b5f602082019050612ad55f830184612ab3565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b1982612865565b810181811067ffffffffffffffff82111715612b3857612b37612ae3565b5b80604052505050565b5f612b4a6128fe565b9050612b568282612b10565b919050565b5f67ffffffffffffffff821115612b7557612b74612ae3565b5b612b7e82612865565b9050602081019050919050565b828183375f83830152505050565b5f612bab612ba684612b5b565b612b41565b905082815260208101848484011115612bc757612bc6612adf565b5b612bd2848285612b8b565b509392505050565b5f82601f830112612bee57612bed612adb565b5b8135612bfe848260208601612b99565b91505092915050565b5f8060408385031215612c1d57612c1c612907565b5b5f83013567ffffffffffffffff811115612c3a57612c3961290b565b5b612c4685828601612bda565b925050602083013567ffffffffffffffff811115612c6757612c6661290b565b5b612c7385828601612bda565b9150509250929050565b612c8681612a24565b8114612c90575f80fd5b50565b5f81359050612ca181612c7d565b92915050565b5f8060408385031215612cbd57612cbc612907565b5b5f612cca858286016129d2565b9250506020612cdb85828601612c93565b9150509250929050565b5f60208284031215612cfa57612cf9612907565b5b5f612d07848285016129d2565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d42816128cd565b82525050565b5f612d538383612d39565b60208301905092915050565b5f602082019050919050565b5f612d7582612d10565b612d7f8185612d1a565b9350612d8a83612d2a565b805f5b83811015612dba578151612da18882612d48565b9750612dac83612d5f565b925050600181019050612d8d565b5085935050505092915050565b5f6020820190508181035f830152612ddf8184612d6b565b905092915050565b5f80fd5b5f80fd5b5f8083601f840112612e0457612e03612adb565b5b8235905067ffffffffffffffff811115612e2157612e20612de7565b5b602083019150836001820283011115612e3d57612e3c612deb565b5b9250929050565b5f805f805f60808688031215612e5d57612e5c612907565b5b5f612e6a888289016129d2565b9550506020612e7b888289016129d2565b9450506040612e8c88828901612925565b935050606086013567ffffffffffffffff811115612ead57612eac61290b565b5b612eb988828901612def565b92509250509295509295909350565b5f8060408385031215612ede57612edd612907565b5b5f612eeb858286016129d2565b9250506020612efc858286016129d2565b9150509250929050565b5f60208284031215612f1b57612f1a612907565b5b5f82013567ffffffffffffffff811115612f3857612f3761290b565b5b612f4484828501612bda565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f9157607f821691505b602082108103612fa457612fa3612f4d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612fe1826128cd565b9150612fec836128cd565b925082820390508181111561300457613003612faa565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f6130825f83613064565b915061308d82613074565b5f82019050919050565b5f6080820190506130aa5f830186612994565b6130b76020830185612994565b6130c460408301846128d6565b81810360608301526130d581613077565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613113816130df565b811461311d575f80fd5b50565b5f8151905061312e8161310a565b92915050565b5f6020828403121561314957613148612907565b5b5f61315684828501613120565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026131bb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613180565b6131c58683613180565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6132006131fb6131f6846128cd565b6131dd565b6128cd565b9050919050565b5f819050919050565b613219836131e6565b61322d61322582613207565b84845461318c565b825550505050565b5f90565b613241613235565b61324c818484613210565b505050565b5b8181101561326f576132645f82613239565b600181019050613252565b5050565b601f8211156132b4576132858161315f565b61328e84613171565b8101602085101561329d578190505b6132b16132a985613171565b830182613251565b50505b505050565b5f82821c905092915050565b5f6132d45f19846008026132b9565b1980831691505092915050565b5f6132ec83836132c5565b9150826002028217905092915050565b61330582612823565b67ffffffffffffffff81111561331e5761331d612ae3565b5b6133288254612f7a565b613333828285613273565b5f60209050601f831160018114613364575f8415613352578287015190505b61335c85826132e1565b8655506133c3565b601f1984166133728661315f565b5f5b8281101561339957848901518255600182019150602085019450602081019050613374565b868310156133b657848901516133b2601f8916826132c5565b8355505b6001600288020188555050505b505050505050565b5f6133d68385613064565b93506133e3838584612b8b565b6133ec83612865565b840190509392505050565b5f60808201905061340a5f830188612994565b6134176020830187612994565b61342460408301866128d6565b81810360608301526134378184866133cb565b90509695505050505050565b5f8160011c9050919050565b5f808291508390505b60018511156134985780860481111561347457613473612faa565b5b60018516156134835780820291505b808102905061349185613443565b9450613458565b94509492505050565b5f826134b0576001905061356b565b816134bd575f905061356b565b81600181146134d357600281146134dd5761350c565b600191505061356b565b60ff8411156134ef576134ee612faa565b5b8360020a91508482111561350657613505612faa565b5b5061356b565b5060208310610133831016604e8410600b84101617156135415782820a90508381111561353c5761353b612faa565b5b61356b565b61354e848484600161344f565b9250905081840481111561356557613564612faa565b5b81810290505b9392505050565b5f61357c826128cd565b915061358783612aa7565b92506135b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134a1565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135f3826128cd565b91506135fe836128cd565b92508261360e5761360d6135bc565b5b828204905092915050565b5f613623826128cd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361365557613654612faa565b5b600182019050919050565b5f819050919050565b61367a613675826128cd565b613660565b82525050565b5f8160601b9050919050565b5f61369682613680565b9050919050565b5f6136a78261368c565b9050919050565b6136bf6136ba82612983565b61369d565b82525050565b5f6136d08286613669565b6020820191506136e082856136ae565b6014820191506136f08284613669565b602082019150819050949350505050565b5f61370b826128cd565b9150613716836128cd565b925082613726576137256135bc565b5b82820690509291505056fea26469706673582212205d1e40dab7f29a9b3fbe922ded3c6a821e45797e6b56f8b19e17f15c85e8b5f364736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000065000000000000000000000000fc7ccf72355fab3ddd0528ea0c5c8b741b42a1fe000000000000000000000000000000000000000000000000000000000000000a50657567656f7434303400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a50657567656f7434303400000000000000000000000000000000000000000000