608060405260405180606001604052806037815260200162004aa360379139600c90816200002e9190620006df565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600d9081620000759190620006df565b506032600e5534801562000087575f80fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280601181526020017f4d61686a6f6e67204d6574612054616d610000000000000000000000000000008152506040518060400160405280600f81526020017f4d61686a6f6e674d65746154616d61000000000000000000000000000000000081525081600290816200011c9190620006df565b5080600390816200012e9190620006df565b506200013f620003a960201b60201c565b5f8190555050505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200032a578015620001fb576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001c692919062000806565b5f604051808303815f87803b158015620001de575f80fd5b505af1158015620001f1573d5f803e3d5ffd5b5050505062000329565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620002af576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200027a92919062000806565b5f604051808303815f87803b15801562000292575f80fd5b505af1158015620002a5573d5f803e3d5ffd5b5050505062000328565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401620002f8919062000831565b5f604051808303815f87803b15801562000310575f80fd5b505af115801562000323573d5f803e3d5ffd5b505050505b5b5b50506001600a819055506200035462000348620003b160201b60201c565b620003b860201b60201c565b62000364620003b160201b60201c565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200084c565b5f6001905090565b5f33905090565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620004f757607f821691505b6020821081036200050d576200050c620004b2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000534565b6200057d868362000534565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005c7620005c1620005bb8462000595565b6200059e565b62000595565b9050919050565b5f819050919050565b620005e283620005a7565b620005fa620005f182620005ce565b84845462000540565b825550505050565b5f90565b6200061062000602565b6200061d818484620005d7565b505050565b5b818110156200064457620006385f8262000606565b60018101905062000623565b5050565b601f82111562000693576200065d8162000513565b620006688462000525565b8101602085101562000678578190505b62000690620006878562000525565b83018262000622565b50505b505050565b5f82821c905092915050565b5f620006b55f198460080262000698565b1980831691505092915050565b5f620006cf8383620006a4565b9150826002028217905092915050565b620006ea826200047b565b67ffffffffffffffff81111562000706576200070562000485565b5b620007128254620004df565b6200071f82828562000648565b5f60209050601f83116001811462000755575f841562000740578287015190505b6200074c8582620006c2565b865550620007bb565b601f198416620007658662000513565b5f5b828110156200078e5784890151825560018201915060208501945060208101905062000767565b86831015620007ae5784890151620007aa601f891682620006a4565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007ee82620007c3565b9050919050565b6200080081620007e2565b82525050565b5f6040820190506200081b5f830185620007f5565b6200082a6020830184620007f5565b9392505050565b5f602082019050620008465f830184620007f5565b92915050565b614249806200085a5f395ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c8063704b6c02116100f7578063a22cb46511610095578063c87b56dd1161006f578063c87b56dd146104a0578063e985e9c5146104d0578063f2fde38b14610500578063f851a4401461051c576101a7565b8063a22cb46514610438578063b80f55c914610454578063b88d4fde14610484576101a7565b80637ec4a659116100d15780637ec4a659146103c45780638da5cb5b146103e05780638dc251e3146103fe57806395d89b411461041a576101a7565b8063704b6c021461036e57806370a082311461038a578063715018a6146103ba576101a7565b806323b872dd1161016457806340c10f191161013e57806340c10f19146102e857806341f434341461030457806342842e0e146103225780636352211e1461033e576101a7565b806323b872dd1461027f5780632a55205a1461029b5780633e4086e5146102cc576101a7565b806301ffc9a7146101ab57806306fdde03146101db578063081812fc146101f9578063095ea7b31461022957806316ba10e01461024557806318160ddd14610261575b5f80fd5b6101c560048036038101906101c09190612f97565b61053a565b6040516101d29190612fdc565b60405180910390f35b6101e361057b565b6040516101f0919061307f565b60405180910390f35b610213600480360381019061020e91906130d2565b61060b565b604051610220919061313c565b60405180910390f35b610243600480360381019061023e919061317f565b610683565b005b61025f600480360381019061025a91906132e9565b61069c565b005b610269610789565b604051610276919061333f565b60405180910390f35b61029960048036038101906102949190613358565b61079e565b005b6102b560048036038101906102b091906133a8565b6107ed565b6040516102c39291906133e6565b60405180910390f35b6102e660048036038101906102e191906130d2565b610837565b005b61030260048036038101906102fd919061317f565b610960565b005b61030c610a8c565b6040516103199190613468565b60405180910390f35b61033c60048036038101906103379190613358565b610a9e565b005b610358600480360381019061035391906130d2565b610aed565b604051610365919061313c565b60405180910390f35b61038860048036038101906103839190613481565b610b01565b005b6103a4600480360381019061039f9190613481565b610c8c565b6040516103b1919061333f565b60405180910390f35b6103c2610d56565b005b6103de60048036038101906103d991906132e9565b610ddd565b005b6103e8610eca565b6040516103f5919061313c565b60405180910390f35b61041860048036038101906104139190613481565b610ef2565b005b61042261107d565b60405161042f919061307f565b60405180910390f35b610452600480360381019061044d91906134d6565b61110d565b005b61046e600480360381019061046991906135d8565b611126565b60405161047b919061333f565b60405180910390f35b61049e600480360381019061049991906136bd565b611284565b005b6104ba60048036038101906104b591906130d2565b6112d5565b6040516104c7919061307f565b60405180910390f35b6104ea60048036038101906104e5919061373d565b61137c565b6040516104f79190612fdc565b60405180910390f35b61051a60048036038101906105159190613481565b61140a565b005b610524611500565b604051610531919061313c565b60405180910390f35b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610574575061057382611528565b5b9050919050565b60606002805461058a906137a8565b80601f01602080910402602001604051908101604052809291908181526020018280546105b6906137a8565b80156106015780601f106105d857610100808354040283529160200191610601565b820191905f5260205f20905b8154815290600101906020018083116105e457829003601f168201915b5050505050905090565b5f610615826115a1565b61064b576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8161068d816115ea565b61069783836116e4565b505050565b6106a46117ed565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061073757506107016117ed565b73ffffffffffffffffffffffffffffffffffffffff1661071f610eca565b73ffffffffffffffffffffffffffffffffffffffff16145b610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076d90613822565b60405180910390fd5b80600d908161078591906139d4565b5050565b5f6107926117f4565b6001545f540303905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107dc576107db336115ea565b5b6107e78484846117fc565b50505050565b5f80600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166103e8600e54856108229190613ad0565b61082c9190613b3e565b915091509250929050565b61083f6117ed565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806108d2575061089c6117ed565b73ffffffffffffffffffffffffffffffffffffffff166108ba610eca565b73ffffffffffffffffffffffffffffffffffffffff16145b610911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090890613822565b60405180910390fd5b6103e8811115610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d90613bb8565b60405180910390fd5b80600e8190555050565b6109686117ed565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806109fb57506109c56117ed565b73ffffffffffffffffffffffffffffffffffffffff166109e3610eca565b73ffffffffffffffffffffffffffffffffffffffff16145b610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190613822565b60405180910390fd5b600a811115610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7590613c20565b60405180910390fd5b610a88828261180c565b5050565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610adc57610adb336115ea565b5b610ae7848484611829565b50505050565b5f610af782611848565b5f01519050919050565b610b096117ed565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b9c5750610b666117ed565b73ffffffffffffffffffffffffffffffffffffffff16610b84610eca565b73ffffffffffffffffffffffffffffffffffffffff16145b610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290613822565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090613cae565b60405180910390fd5b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf2576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610d5e6117ed565b73ffffffffffffffffffffffffffffffffffffffff16610d7c610eca565b73ffffffffffffffffffffffffffffffffffffffff1614610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990613d16565b60405180910390fd5b610ddb5f611ac4565b565b610de56117ed565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610e785750610e426117ed565b73ffffffffffffffffffffffffffffffffffffffff16610e60610eca565b73ffffffffffffffffffffffffffffffffffffffff16145b610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90613822565b60405180910390fd5b80600c9081610ec691906139d4565b5050565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610efa6117ed565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f8d5750610f576117ed565b73ffffffffffffffffffffffffffffffffffffffff16610f75610eca565b73ffffffffffffffffffffffffffffffffffffffff16145b610fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc390613822565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361103a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103190613da4565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461108c906137a8565b80601f01602080910402602001604051908101604052809291908181526020018280546110b8906137a8565b80156111035780601f106110da57610100808354040283529160200191611103565b820191905f5260205f20905b8154815290600101906020018083116110e657829003601f168201915b5050505050905090565b81611117816115ea565b6111218383611b87565b505050565b5f61112f6117ed565b73ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806111c2575061118c6117ed565b73ffffffffffffffffffffffffffffffffffffffff166111aa610eca565b73ffffffffffffffffffffffffffffffffffffffff16145b611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f890613822565b60405180910390fd5b5f805b835181101561127a5761123084828151811061122357611222613dc2565b5b60200260200101516115a1565b156112675761125884828151811061124b5761124a613dc2565b5b6020026020010151611cf9565b818061126390613def565b9250505b808061127290613def565b915050611204565b5080915050919050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112c2576112c1336115ea565b5b6112ce85858585611d06565b5050505050565b60606112e0826115a1565b61131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131690613ea6565b60405180910390fd5b5f611328611d82565b90505f8151116113465760405180602001604052805f815250611374565b8061135084611e12565b600d60405160200161136493929190613f7e565b6040516020818303038152906040525b915050919050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6114126117ed565b73ffffffffffffffffffffffffffffffffffffffff16611430610eca565b73ffffffffffffffffffffffffffffffffffffffff1614611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90613d16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061401e565b60405180910390fd5b6114fd81611ac4565b50565b5f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061159a575061159982611f6b565b5b9050919050565b5f816115ab6117f4565b111580156115b957505f5482105b80156115e3575060045f8381526020019081526020015f205f01601c9054906101000a900460ff16155b9050919050565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156116e1576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b815260040161166092919061403c565b602060405180830381865afa15801561167b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169f9190614077565b6116e057806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016116d7919061313c565b60405180910390fd5b5b50565b5f6116ee82610aed565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611755576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166117746117ed565b73ffffffffffffffffffffffffffffffffffffffff16141580156117a657506117a48161179f6117ed565b61137c565b155b156117dd576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117e883838361204c565b505050565b5f33905090565b5f6001905090565b6118078383836120fb565b505050565b611825828260405180602001604052805f815250612591565b5050565b61184383838360405180602001604052805f815250611284565b505050565b611850612ef1565b5f8290508061185d6117f4565b1115801561186b57505f5481105b15611a8d575f60045f8381526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201601c9054906101000a900460ff16151515158152505090508060400151611a8b575f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1614611977578092505050611abf565b5b600115611a8a5781806001900392505060045f8381526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201601c9054906101000a900460ff16151515158152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1614611a85578092505050611abf565b611978565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611b8f6117ed565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf3576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f611bff6117ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611ca86117ed565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ced9190612fdc565b60405180910390a35050565b611d03815f6125a3565b50565b611d118484846120fb565b611d308373ffffffffffffffffffffffffffffffffffffffff16612971565b8015611d455750611d4384848484612982565b155b15611d7c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060600c8054611d91906137a8565b80601f0160208091040260200160405190810160405280929190818152602001828054611dbd906137a8565b8015611e085780601f10611ddf57610100808354040283529160200191611e08565b820191905f5260205f20905b815481529060010190602001808311611deb57829003601f168201915b5050505050905090565b60605f8203611e58576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f66565b5f8290505f5b5f8214611e87578080611e7090613def565b915050600a82611e809190613b3e565b9150611e5e565b5f8167ffffffffffffffff811115611ea257611ea16131c5565b5b6040519080825280601f01601f191660200182016040528015611ed45781602001600182028036833780820191505090505b5090505b5f8514611f5f57600182611eec91906140a2565b9150600a85611efb91906140d5565b6030611f079190614105565b60f81b818381518110611f1d57611f1c613dc2565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a85611f589190613b3e565b9450611ed8565b8093505050505b919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061203557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612045575061204482612acd565b5b9050919050565b8260065f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b5f61210582611848565b90508373ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff161461216f576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8473ffffffffffffffffffffffffffffffffffffffff1661218f6117ed565b73ffffffffffffffffffffffffffffffffffffffff1614806121be57506121bd856121b86117ed565b61137c565b5b8061220357506121cc6117ed565b73ffffffffffffffffffffffffffffffffffffffff166121eb8461060b565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061223c576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122a1576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ae8585856001612b36565b6122b95f848761204c565b600160055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f60045f8581526020019081526020015f20905084815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042815f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f6001850190505f60045f8381526020019081526020015f2090505f73ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361251f575f54821461251e5787815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460200151815f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461258a8585856001612b3c565b5050505050565b61259e8383836001612b42565b505050565b5f6125ad83611848565b90505f815f01519050821561268b575f8173ffffffffffffffffffffffffffffffffffffffff166125dc6117ed565b73ffffffffffffffffffffffffffffffffffffffff16148061260b575061260a826126056117ed565b61137c565b5b8061265057506126196117ed565b73ffffffffffffffffffffffffffffffffffffffff166126388661060b565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612689576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b612698815f866001612b36565b6126a35f858361204c565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090506001815f015f8282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001815f0160108282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f60045f8781526020019081526020015f20905082815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042815f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001815f01601c6101000a81548160ff0219169083151502179055505f6001870190505f60045f8381526020019081526020015f2090505f73ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036128ee575f5482146128ed5784815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560200151815f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50505050835f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461295a815f866001612b3c565b60015f815480929190600101919050555050505050565b5f80823b90505f8111915050919050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129a76117ed565b8786866040518563ffffffff1660e01b81526004016129c9949392919061418a565b6020604051808303815f875af1925050508015612a0457506040513d601f19601f82011682018060405250810190612a0191906141e8565b60015b612a7a573d805f8114612a32576040519150601f19603f3d011682016040523d82523d5f602084013e612a37565b606091505b505f815103612a72576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b50505050565b5f805490505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612bac576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8403612be5576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bf15f868387612b36565b8360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508460045f8381526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260045f8381526020019081526020015f205f0160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505f8190505f8582019050838015612dab5750612daa8773ffffffffffffffffffffffffffffffffffffffff16612971565b5b15612e6c575b818773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e1e5f888480600101955088612982565b612e54576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612db157825f5414612e67575f80fd5b612ed6565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612e6d575b815f819055505050612eea5f868387612b3c565b5050505050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612f7681612f42565b8114612f80575f80fd5b50565b5f81359050612f9181612f6d565b92915050565b5f60208284031215612fac57612fab612f3a565b5b5f612fb984828501612f83565b91505092915050565b5f8115159050919050565b612fd681612fc2565b82525050565b5f602082019050612fef5f830184612fcd565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561302c578082015181840152602081019050613011565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61305182612ff5565b61305b8185612fff565b935061306b81856020860161300f565b61307481613037565b840191505092915050565b5f6020820190508181035f8301526130978184613047565b905092915050565b5f819050919050565b6130b18161309f565b81146130bb575f80fd5b50565b5f813590506130cc816130a8565b92915050565b5f602082840312156130e7576130e6612f3a565b5b5f6130f4848285016130be565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613126826130fd565b9050919050565b6131368161311c565b82525050565b5f60208201905061314f5f83018461312d565b92915050565b61315e8161311c565b8114613168575f80fd5b50565b5f8135905061317981613155565b92915050565b5f806040838503121561319557613194612f3a565b5b5f6131a28582860161316b565b92505060206131b3858286016130be565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6131fb82613037565b810181811067ffffffffffffffff8211171561321a576132196131c5565b5b80604052505050565b5f61322c612f31565b905061323882826131f2565b919050565b5f67ffffffffffffffff821115613257576132566131c5565b5b61326082613037565b9050602081019050919050565b828183375f83830152505050565b5f61328d6132888461323d565b613223565b9050828152602081018484840111156132a9576132a86131c1565b5b6132b484828561326d565b509392505050565b5f82601f8301126132d0576132cf6131bd565b5b81356132e084826020860161327b565b91505092915050565b5f602082840312156132fe576132fd612f3a565b5b5f82013567ffffffffffffffff81111561331b5761331a612f3e565b5b613327848285016132bc565b91505092915050565b6133398161309f565b82525050565b5f6020820190506133525f830184613330565b92915050565b5f805f6060848603121561336f5761336e612f3a565b5b5f61337c8682870161316b565b935050602061338d8682870161316b565b925050604061339e868287016130be565b9150509250925092565b5f80604083850312156133be576133bd612f3a565b5b5f6133cb858286016130be565b92505060206133dc858286016130be565b9150509250929050565b5f6040820190506133f95f83018561312d565b6134066020830184613330565b9392505050565b5f819050919050565b5f61343061342b613426846130fd565b61340d565b6130fd565b9050919050565b5f61344182613416565b9050919050565b5f61345282613437565b9050919050565b61346281613448565b82525050565b5f60208201905061347b5f830184613459565b92915050565b5f6020828403121561349657613495612f3a565b5b5f6134a38482850161316b565b91505092915050565b6134b581612fc2565b81146134bf575f80fd5b50565b5f813590506134d0816134ac565b92915050565b5f80604083850312156134ec576134eb612f3a565b5b5f6134f98582860161316b565b925050602061350a858286016134c2565b9150509250929050565b5f67ffffffffffffffff82111561352e5761352d6131c5565b5b602082029050602081019050919050565b5f80fd5b5f61355561355084613514565b613223565b905080838252602082019050602084028301858111156135785761357761353f565b5b835b818110156135a1578061358d88826130be565b84526020840193505060208101905061357a565b5050509392505050565b5f82601f8301126135bf576135be6131bd565b5b81356135cf848260208601613543565b91505092915050565b5f602082840312156135ed576135ec612f3a565b5b5f82013567ffffffffffffffff81111561360a57613609612f3e565b5b613616848285016135ab565b91505092915050565b5f67ffffffffffffffff821115613639576136386131c5565b5b61364282613037565b9050602081019050919050565b5f61366161365c8461361f565b613223565b90508281526020810184848401111561367d5761367c6131c1565b5b61368884828561326d565b509392505050565b5f82601f8301126136a4576136a36131bd565b5b81356136b484826020860161364f565b91505092915050565b5f805f80608085870312156136d5576136d4612f3a565b5b5f6136e28782880161316b565b94505060206136f38782880161316b565b9350506040613704878288016130be565b925050606085013567ffffffffffffffff81111561372557613724612f3e565b5b61373187828801613690565b91505092959194509250565b5f806040838503121561375357613752612f3a565b5b5f6137608582860161316b565b92505060206137718582860161316b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806137bf57607f821691505b6020821081036137d2576137d161377b565b5b50919050565b7f41646d696e3a2063616c6c6572206973206e6f74207468652061646d696e00005f82015250565b5f61380c601e83612fff565b9150613817826137d8565b602082019050919050565b5f6020820190508181035f83015261383981613800565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261389c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613861565b6138a68683613861565b95508019841693508086168417925050509392505050565b5f6138d86138d36138ce8461309f565b61340d565b61309f565b9050919050565b5f819050919050565b6138f1836138be565b6139056138fd826138df565b84845461386d565b825550505050565b5f90565b61391961390d565b6139248184846138e8565b505050565b5b818110156139475761393c5f82613911565b60018101905061392a565b5050565b601f82111561398c5761395d81613840565b61396684613852565b81016020851015613975578190505b61398961398185613852565b830182613929565b50505b505050565b5f82821c905092915050565b5f6139ac5f1984600802613991565b1980831691505092915050565b5f6139c4838361399d565b9150826002028217905092915050565b6139dd82612ff5565b67ffffffffffffffff8111156139f6576139f56131c5565b5b613a0082546137a8565b613a0b82828561394b565b5f60209050601f831160018114613a3c575f8415613a2a578287015190505b613a3485826139b9565b865550613a9b565b601f198416613a4a86613840565b5f5b82811015613a7157848901518255600182019150602085019450602081019050613a4c565b86831015613a8e5784890151613a8a601f89168261399d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ada8261309f565b9150613ae58361309f565b9250828202613af38161309f565b91508282048414831517613b0a57613b09613aa3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b488261309f565b9150613b538361309f565b925082613b6357613b62613b11565b5b828204905092915050565b7f4552433732313a20526f79616c74792066656520746f6f20686967682e0000005f82015250565b5f613ba2601d83612fff565b9150613bad82613b6e565b602082019050919050565b5f6020820190508181035f830152613bcf81613b96565b9050919050565b7f4552433732313a206d696e74206f766572206c696d69740000000000000000005f82015250565b5f613c0a601783612fff565b9150613c1582613bd6565b602082019050919050565b5f6020820190508181035f830152613c3781613bfe565b9050919050565b7f41646d696e3a206e65772061646d696e20697320746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c98602483612fff565b9150613ca382613c3e565b604082019050919050565b5f6020820190508181035f830152613cc581613c8c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613d00602083612fff565b9150613d0b82613ccc565b602082019050919050565b5f6020820190508181035f830152613d2d81613cf4565b9050919050565b7f4552433732313a20496e76616c696420726563656976657220616464726573735f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d8e602183612fff565b9150613d9982613d34565b604082019050919050565b5f6020820190508181035f830152613dbb81613d82565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613df98261309f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e2b57613e2a613aa3565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f613e90602f83612fff565b9150613e9b82613e36565b604082019050919050565b5f6020820190508181035f830152613ebd81613e84565b9050919050565b5f81905092915050565b5f613ed882612ff5565b613ee28185613ec4565b9350613ef281856020860161300f565b80840191505092915050565b5f8154613f0a816137a8565b613f148186613ec4565b9450600182165f8114613f2e5760018114613f4357613f75565b60ff1983168652811515820286019350613f75565b613f4c85613840565b5f5b83811015613f6d57815481890152600182019150602081019050613f4e565b838801955050505b50505092915050565b5f613f898286613ece565b9150613f958285613ece565b9150613fa18284613efe565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614008602683612fff565b915061401382613fae565b604082019050919050565b5f6020820190508181035f83015261403581613ffc565b9050919050565b5f60408201905061404f5f83018561312d565b61405c602083018461312d565b9392505050565b5f81519050614071816134ac565b92915050565b5f6020828403121561408c5761408b612f3a565b5b5f61409984828501614063565b91505092915050565b5f6140ac8261309f565b91506140b78361309f565b92508282039050818111156140cf576140ce613aa3565b5b92915050565b5f6140df8261309f565b91506140ea8361309f565b9250826140fa576140f9613b11565b5b828206905092915050565b5f61410f8261309f565b915061411a8361309f565b925082820190508082111561413257614131613aa3565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f61415c82614138565b6141668185614142565b935061417681856020860161300f565b61417f81613037565b840191505092915050565b5f60808201905061419d5f83018761312d565b6141aa602083018661312d565b6141b76040830185613330565b81810360608301526141c98184614152565b905095945050505050565b5f815190506141e281612f6d565b92915050565b5f602082840312156141fd576141fc612f3a565b5b5f61420a848285016141d4565b9150509291505056fea26469706673582212205bb105474226ee23ab9cadc2c8a617c9067ca17d68cbc35035ea03b13e22b02264736f6c6343000814003368747470733a2f2f6e66746d6574612e6d6a6d6574612e696f2f6d61686a6f6e672f6d6574612f4d61686a6f6e674d65746154616d612f