6080604052603260085534801562000015575f80fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb66001604051806080016040528060418152602001620050466041913962000058816200034260201b60201c565b505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200023d5780156200010e576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620000d992919062000464565b5f604051808303815f87803b158015620000f1575f80fd5b505af115801562000104573d5f803e3d5ffd5b505050506200023c565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620001c2576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200018d92919062000464565b5f604051808303815f87803b158015620001a5575f80fd5b505af1158015620001b8573d5f803e3d5ffd5b505050506200023b565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200020b91906200048f565b5f604051808303815f87803b15801562000223575f80fd5b505af115801562000236573d5f803e3d5ffd5b505050505b5b5b50506200025f620002536200035760201b60201c565b6200035e60201b60201c565b6200026f6200035760201b60201c565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601281526020017f4d61686a6f6e67204d65746120486f6e6f72000000000000000000000000000081525060069081620002f491906200070e565b506040518060400160405280601081526020017f4d61686a6f6e674d657461486f6e6f7200000000000000000000000000000000815250600790816200033b91906200070e565b50620007f2565b80600290816200035391906200070e565b5050565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200044c8262000421565b9050919050565b6200045e8162000440565b82525050565b5f604082019050620004795f83018562000453565b62000488602083018462000453565b9392505050565b5f602082019050620004a45f83018462000453565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200052657607f821691505b6020821081036200053c576200053b620004e1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000563565b620005ac868362000563565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005f6620005f0620005ea84620005c4565b620005cd565b620005c4565b9050919050565b5f819050919050565b6200061183620005d6565b620006296200062082620005fd565b8484546200056f565b825550505050565b5f90565b6200063f62000631565b6200064c81848462000606565b505050565b5b818110156200067357620006675f8262000635565b60018101905062000652565b5050565b601f821115620006c2576200068c8162000542565b620006978462000554565b81016020851015620006a7578190505b620006bf620006b68562000554565b83018262000651565b50505b505050565b5f82821c905092915050565b5f620006e45f1984600802620006c7565b1980831691505092915050565b5f620006fe8383620006d3565b9150826002028217905092915050565b6200071982620004aa565b67ffffffffffffffff811115620007355762000734620004b4565b5b6200074182546200050e565b6200074e82828562000677565b5f60209050601f83116001811462000784575f84156200076f578287015190505b6200077b8582620006f1565b865550620007ea565b601f198416620007948662000542565b5f5b82811015620007bd5784890151825560018201915060208501945060208101905062000796565b86831015620007dd5784890151620007d9601f891682620006d3565b8355505b6001600288020188555050505b505050505050565b61484680620008005f395ff3fe608060405234801561000f575f80fd5b506004361061013f575f3560e01c80634e1273f4116100b65780638dc251e31161007a5780638dc251e31461035c57806395d89b4114610378578063a22cb46514610396578063e985e9c5146103b2578063f242432a146103e2578063f2fde38b146103fe5761013f565b80634e1273f4146102cc57806366ef0919146102fc578063704b6c0214610318578063715018a6146103345780638da5cb5b1461033e5761013f565b8063156e29f611610108578063156e29f61461020d5780632a36c108146102295780632a55205a146102455780632eb2c2d6146102765780633e4086e51461029257806341f43434146102ae5761013f565b8062fdd58e1461014357806301ffc9a71461017357806302fe5305146101a357806306fdde03146101bf5780630e89341c146101dd575b5f80fd5b61015d60048036038101906101589190612b79565b61041a565b60405161016a9190612bc6565b60405180910390f35b61018d60048036038101906101889190612c34565b6104dd565b60405161019a9190612c79565b60405180910390f35b6101bd60048036038101906101b89190612dce565b61051e565b005b6101c7610604565b6040516101d49190612e8f565b60405180910390f35b6101f760048036038101906101f29190612eaf565b610690565b6040516102049190612e8f565b60405180910390f35b61022760048036038101906102229190612eda565b610722565b005b610243600480360381019061023e91906130ae565b61081b565b005b61025f600480360381019061025a9190613152565b610982565b60405161026d92919061319f565b60405180910390f35b610290600480360381019061028b9190613264565b6109cc565b005b6102ac60048036038101906102a79190612eaf565b610a1f565b005b6102b6610b48565b6040516102c3919061338a565b60405180910390f35b6102e660048036038101906102e191906133a3565b610b5a565b6040516102f391906134d0565b60405180910390f35b610316600480360381019061031191906130ae565b610c71565b005b610332600480360381019061032d91906134f0565b610de7565b005b61033c610f72565b005b610346610ff9565b604051610353919061351b565b60405180910390f35b610376600480360381019061037191906134f0565b611021565b005b6103806111ac565b60405161038d9190612e8f565b60405180910390f35b6103b060048036038101906103ab919061355e565b611238565b005b6103cc60048036038101906103c7919061359c565b611251565b6040516103d99190612c79565b60405180910390f35b6103fc60048036038101906103f791906135da565b6112df565b005b610418600480360381019061041391906134f0565b611332565b005b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610489576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610480906136dd565b60405180910390fd5b5f808381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610517575061051682611428565b5b9050919050565b6105266114a1565b73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806105b957506105836114a1565b73ffffffffffffffffffffffffffffffffffffffff166105a1610ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b6105f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ef90613745565b60405180910390fd5b610601816114a8565b50565b6006805461061190613790565b80601f016020809104026020016040519081016040528092919081815260200182805461063d90613790565b80156106885780601f1061065f57610100808354040283529160200191610688565b820191905f5260205f20905b81548152906001019060200180831161066b57829003601f168201915b505050505081565b60606002805461069f90613790565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb90613790565b80156107165780601f106106ed57610100808354040283529160200191610716565b820191905f5260205f20905b8154815290600101906020018083116106f957829003601f168201915b50505050509050919050565b61072a6114a1565b73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806107bd57506107876114a1565b73ffffffffffffffffffffffffffffffffffffffff166107a5610ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b6107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390613745565b60405180910390fd5b61081683838360405180602001604052805f8152506114bb565b505050565b6108236114a1565b73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806108b657506108806114a1565b73ffffffffffffffffffffffffffffffffffffffff1661089e610ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b6108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90613745565b60405180910390fd5b8051825114610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090613830565b60405180910390fd5b5f5b835181101561097c5761096984828151811061095a5761095961384e565b5b6020026020010151848461165e565b8080610974906138a8565b91505061093b565b50505050565b5f8060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166103e8600854856109b791906138ef565b6109c1919061395d565b915091509250929050565b843373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a0a57610a0933611919565b5b610a178686868686611a13565b505050505050565b610a276114a1565b73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610aba5750610a846114a1565b73ffffffffffffffffffffffffffffffffffffffff16610aa2610ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090613745565b60405180910390fd5b6103e8811115610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b35906139d7565b60405180910390fd5b8060088190555050565b6daaeb6d7670e522a718067333cd4e81565b60608151835114610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9790613a65565b60405180910390fd5b5f835167ffffffffffffffff811115610bbc57610bbb612caa565b5b604051908082528060200260200182016040528015610bea5781602001602082028036833780820191505090505b5090505f5b8451811015610c6657610c36858281518110610c0e57610c0d61384e565b5b6020026020010151858381518110610c2957610c2861384e565b5b602002602001015161041a565b828281518110610c4957610c4861384e565b5b60200260200101818152505080610c5f906138a8565b9050610bef565b508091505092915050565b610c796114a1565b73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610d0c5750610cd66114a1565b73ffffffffffffffffffffffffffffffffffffffff16610cf4610ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290613745565b60405180910390fd5b8051825114610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8690613af3565b60405180910390fd5b5f5b8351811015610de157610dce848281518110610db057610daf61384e565b5b6020026020010151848460405180602001604052805f815250611ab4565b8080610dd9906138a8565b915050610d91565b50505050565b610def6114a1565b73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610e825750610e4c6114a1565b73ffffffffffffffffffffffffffffffffffffffff16610e6a610ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890613745565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690613b81565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f7a6114a1565b73ffffffffffffffffffffffffffffffffffffffff16610f98610ff9565b73ffffffffffffffffffffffffffffffffffffffff1614610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe590613be9565b60405180910390fd5b610ff75f611cd4565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110296114a1565b73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110bc57506110866114a1565b73ffffffffffffffffffffffffffffffffffffffff166110a4610ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b6110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f290613745565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090613c77565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600780546111b990613790565b80601f01602080910402602001604051908101604052809291908181526020018280546111e590613790565b80156112305780601f1061120757610100808354040283529160200191611230565b820191905f5260205f20905b81548152906001019060200180831161121357829003601f168201915b505050505081565b8161124281611919565b61124c8383611d97565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b843373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461131d5761131c33611919565b5b61132a8686868686611dad565b505050505050565b61133a6114a1565b73ffffffffffffffffffffffffffffffffffffffff16611358610ff9565b73ffffffffffffffffffffffffffffffffffffffff16146113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a590613be9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613d05565b60405180910390fd5b61142581611cd4565b50565b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061149a575061149982611e4e565b5b9050919050565b5f33905090565b80600290816114b79190613eb7565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090613ff6565b60405180910390fd5b5f6115326114a1565b90505f61153e85611f2f565b90505f61154a85611f2f565b905061155a835f89858589611fa7565b845f808881526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115b49190614014565b925050819055508673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611631929190614047565b60405180910390a4611647835f89858589611faf565b611655835f89898989611fb7565b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c3906140de565b60405180910390fd5b8051825114611710576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117079061416c565b60405180910390fd5b5f6117196114a1565b905061173781855f868660405180602001604052805f815250611fa7565b5f5b8351811015611878575f8482815181106117565761175561384e565b5b602002602001015190505f8483815181106117745761177361384e565b5b602002602001015190505f805f8481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611810576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611807906141fa565b60405180910390fd5b8181035f808581526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050508080611870906138a8565b915050611739565b505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516118ef929190614218565b60405180910390a461191381855f868660405180602001604052805f815250611faf565b50505050565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611a10576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b815260040161198f92919061424d565b602060405180830381865afa1580156119aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ce9190614288565b611a0f57806040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401611a06919061351b565b60405180910390fd5b5b50565b611a1b6114a1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611a615750611a6085611a5b6114a1565b611251565b5b611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790614323565b60405180910390fd5b611aad858585858561218d565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1990613ff6565b60405180910390fd5b8151835114611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d9061416c565b60405180910390fd5b5f611b6f6114a1565b9050611b7f815f87878787611fa7565b5f5b8451811015611c3257838181518110611b9d57611b9c61384e565b5b60200260200101515f80878481518110611bba57611bb961384e565b5b602002602001015181526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611c189190614014565b925050819055508080611c2a906138a8565b915050611b81565b508473ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ca9929190614218565b60405180910390a4611cbf815f87878787611faf565b611ccd815f8787878761249b565b5050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611da9611da26114a1565b8383612671565b5050565b611db56114a1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611dfb5750611dfa85611df56114a1565b611251565b5b611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190614323565b60405180910390fd5b611e4785858585856127d8565b5050505050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f1857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f285750611f2782612a61565b5b9050919050565b60605f600167ffffffffffffffff811115611f4d57611f4c612caa565b5b604051908082528060200260200182016040528015611f7b5781602001602082028036833780820191505090505b50905082815f81518110611f9257611f9161384e565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b611fd68473ffffffffffffffffffffffffffffffffffffffff16612aca565b15612185578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161201c959493929190614393565b6020604051808303815f875af192505050801561205757506040513d601f19601f8201168201806040525081019061205491906143ff565b60015b6120fc57612063614436565b806308c379a0036120bf5750612077614455565b8061208257506120c1565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b69190612e8f565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f390614554565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a906145e2565b60405180910390fd5b505b505050505050565b81518351146121d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c89061416c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361223f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223690614670565b60405180910390fd5b5f6122486114a1565b9050612258818787878787611fa7565b5f5b84518110156123f8575f8582815181106122775761227661384e565b5b602002602001015190505f8583815181106122955761229461384e565b5b602002602001015190505f805f8481526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612328906146fe565b60405180910390fd5b8181035f808581526020019081526020015f205f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123dd9190614014565b92505081905550505050806123f1906138a8565b905061225a565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161246f929190614218565b60405180910390a4612485818787878787611faf565b61249381878787878761249b565b505050505050565b6124ba8473ffffffffffffffffffffffffffffffffffffffff16612aca565b15612669578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161250095949392919061471c565b6020604051808303815f875af192505050801561253b57506040513d601f19601f8201168201806040525081019061253891906143ff565b60015b6125e057612547614436565b806308c379a0036125a3575061255b614455565b8061256657506125a5565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a9190612e8f565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790614554565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265e906145e2565b60405180910390fd5b505b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d6906147f2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516127cb9190612c79565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283d90614670565b60405180910390fd5b5f61284f6114a1565b90505f61285b85611f2f565b90505f61286785611f2f565b9050612877838989858589611fa7565b5f805f8881526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905085811015612909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612900906146fe565b60405180910390fd5b8581035f808981526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550855f808981526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546129b59190614014565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612a32929190614047565b60405180910390a4612a48848a8a86868a611faf565b612a56848a8a8a8a8a611fb7565b505050505050505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f80823b90505f8111915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b1582612aec565b9050919050565b612b2581612b0b565b8114612b2f575f80fd5b50565b5f81359050612b4081612b1c565b92915050565b5f819050919050565b612b5881612b46565b8114612b62575f80fd5b50565b5f81359050612b7381612b4f565b92915050565b5f8060408385031215612b8f57612b8e612ae4565b5b5f612b9c85828601612b32565b9250506020612bad85828601612b65565b9150509250929050565b612bc081612b46565b82525050565b5f602082019050612bd95f830184612bb7565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c1381612bdf565b8114612c1d575f80fd5b50565b5f81359050612c2e81612c0a565b92915050565b5f60208284031215612c4957612c48612ae4565b5b5f612c5684828501612c20565b91505092915050565b5f8115159050919050565b612c7381612c5f565b82525050565b5f602082019050612c8c5f830184612c6a565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ce082612c9a565b810181811067ffffffffffffffff82111715612cff57612cfe612caa565b5b80604052505050565b5f612d11612adb565b9050612d1d8282612cd7565b919050565b5f67ffffffffffffffff821115612d3c57612d3b612caa565b5b612d4582612c9a565b9050602081019050919050565b828183375f83830152505050565b5f612d72612d6d84612d22565b612d08565b905082815260208101848484011115612d8e57612d8d612c96565b5b612d99848285612d52565b509392505050565b5f82601f830112612db557612db4612c92565b5b8135612dc5848260208601612d60565b91505092915050565b5f60208284031215612de357612de2612ae4565b5b5f82013567ffffffffffffffff811115612e0057612dff612ae8565b5b612e0c84828501612da1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e4c578082015181840152602081019050612e31565b5f8484015250505050565b5f612e6182612e15565b612e6b8185612e1f565b9350612e7b818560208601612e2f565b612e8481612c9a565b840191505092915050565b5f6020820190508181035f830152612ea78184612e57565b905092915050565b5f60208284031215612ec457612ec3612ae4565b5b5f612ed184828501612b65565b91505092915050565b5f805f60608486031215612ef157612ef0612ae4565b5b5f612efe86828701612b32565b9350506020612f0f86828701612b65565b9250506040612f2086828701612b65565b9150509250925092565b5f67ffffffffffffffff821115612f4457612f43612caa565b5b602082029050602081019050919050565b5f80fd5b5f612f6b612f6684612f2a565b612d08565b90508083825260208201905060208402830185811115612f8e57612f8d612f55565b5b835b81811015612fb75780612fa38882612b32565b845260208401935050602081019050612f90565b5050509392505050565b5f82601f830112612fd557612fd4612c92565b5b8135612fe5848260208601612f59565b91505092915050565b5f67ffffffffffffffff82111561300857613007612caa565b5b602082029050602081019050919050565b5f61302b61302684612fee565b612d08565b9050808382526020820190506020840283018581111561304e5761304d612f55565b5b835b8181101561307757806130638882612b65565b845260208401935050602081019050613050565b5050509392505050565b5f82601f83011261309557613094612c92565b5b81356130a5848260208601613019565b91505092915050565b5f805f606084860312156130c5576130c4612ae4565b5b5f84013567ffffffffffffffff8111156130e2576130e1612ae8565b5b6130ee86828701612fc1565b935050602084013567ffffffffffffffff81111561310f5761310e612ae8565b5b61311b86828701613081565b925050604084013567ffffffffffffffff81111561313c5761313b612ae8565b5b61314886828701613081565b9150509250925092565b5f806040838503121561316857613167612ae4565b5b5f61317585828601612b65565b925050602061318685828601612b65565b9150509250929050565b61319981612b0b565b82525050565b5f6040820190506131b25f830185613190565b6131bf6020830184612bb7565b9392505050565b5f67ffffffffffffffff8211156131e0576131df612caa565b5b6131e982612c9a565b9050602081019050919050565b5f613208613203846131c6565b612d08565b90508281526020810184848401111561322457613223612c96565b5b61322f848285612d52565b509392505050565b5f82601f83011261324b5761324a612c92565b5b813561325b8482602086016131f6565b91505092915050565b5f805f805f60a0868803121561327d5761327c612ae4565b5b5f61328a88828901612b32565b955050602061329b88828901612b32565b945050604086013567ffffffffffffffff8111156132bc576132bb612ae8565b5b6132c888828901613081565b935050606086013567ffffffffffffffff8111156132e9576132e8612ae8565b5b6132f588828901613081565b925050608086013567ffffffffffffffff81111561331657613315612ae8565b5b61332288828901613237565b9150509295509295909350565b5f819050919050565b5f61335261334d61334884612aec565b61332f565b612aec565b9050919050565b5f61336382613338565b9050919050565b5f61337482613359565b9050919050565b6133848161336a565b82525050565b5f60208201905061339d5f83018461337b565b92915050565b5f80604083850312156133b9576133b8612ae4565b5b5f83013567ffffffffffffffff8111156133d6576133d5612ae8565b5b6133e285828601612fc1565b925050602083013567ffffffffffffffff81111561340357613402612ae8565b5b61340f85828601613081565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61344b81612b46565b82525050565b5f61345c8383613442565b60208301905092915050565b5f602082019050919050565b5f61347e82613419565b6134888185613423565b935061349383613433565b805f5b838110156134c35781516134aa8882613451565b97506134b583613468565b925050600181019050613496565b5085935050505092915050565b5f6020820190508181035f8301526134e88184613474565b905092915050565b5f6020828403121561350557613504612ae4565b5b5f61351284828501612b32565b91505092915050565b5f60208201905061352e5f830184613190565b92915050565b61353d81612c5f565b8114613547575f80fd5b50565b5f8135905061355881613534565b92915050565b5f806040838503121561357457613573612ae4565b5b5f61358185828601612b32565b92505060206135928582860161354a565b9150509250929050565b5f80604083850312156135b2576135b1612ae4565b5b5f6135bf85828601612b32565b92505060206135d085828601612b32565b9150509250929050565b5f805f805f60a086880312156135f3576135f2612ae4565b5b5f61360088828901612b32565b955050602061361188828901612b32565b945050604061362288828901612b65565b935050606061363388828901612b65565b925050608086013567ffffffffffffffff81111561365457613653612ae8565b5b61366088828901613237565b9150509295509295909350565b7f455243313135353a2061646472657373207a65726f206973206e6f74206120765f8201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b5f6136c7602a83612e1f565b91506136d28261366d565b604082019050919050565b5f6020820190508181035f8301526136f4816136bb565b9050919050565b7f41646d696e3a2063616c6c6572206973206e6f74207468652061646d696e00005f82015250565b5f61372f601e83612e1f565b915061373a826136fb565b602082019050919050565b5f6020820190508181035f83015261375c81613723565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806137a757607f821691505b6020821081036137ba576137b9613763565b5b50919050565b7f455243313135353a206275726e2069647320616e6420616d6f756e7473206c655f8201527f6e677468206d69736d6174636800000000000000000000000000000000000000602082015250565b5f61381a602d83612e1f565b9150613825826137c0565b604082019050919050565b5f6020820190508181035f8301526138478161380e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6138b282612b46565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138e4576138e361387b565b5b600182019050919050565b5f6138f982612b46565b915061390483612b46565b925082820261391281612b46565b915082820484148315176139295761392861387b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61396782612b46565b915061397283612b46565b92508261398257613981613930565b5b828204905092915050565b7f455243313135353a20526f79616c74792066656520746f6f20686967682e00005f82015250565b5f6139c1601e83612e1f565b91506139cc8261398d565b602082019050919050565b5f6020820190508181035f8301526139ee816139b5565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e6774685f8201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b5f613a4f602983612e1f565b9150613a5a826139f5565b604082019050919050565b5f6020820190508181035f830152613a7c81613a43565b9050919050565b7f455243313135353a2061697264726f702069647320616e6420616d6f756e74735f8201527f206c656e677468206d69736d6174636800000000000000000000000000000000602082015250565b5f613add603083612e1f565b9150613ae882613a83565b604082019050919050565b5f6020820190508181035f830152613b0a81613ad1565b9050919050565b7f41646d696e3a206e65772061646d696e20697320746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613b6b602483612e1f565b9150613b7682613b11565b604082019050919050565b5f6020820190508181035f830152613b9881613b5f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613bd3602083612e1f565b9150613bde82613b9f565b602082019050919050565b5f6020820190508181035f830152613c0081613bc7565b9050919050565b7f455243313135353a20496e76616c6964207265636569766572206164647265735f8201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c61602283612e1f565b9150613c6c82613c07565b604082019050919050565b5f6020820190508181035f830152613c8e81613c55565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613cef602683612e1f565b9150613cfa82613c95565b604082019050919050565b5f6020820190508181035f830152613d1c81613ce3565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613d7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613d44565b613d898683613d44565b95508019841693508086168417925050509392505050565b5f613dbb613db6613db184612b46565b61332f565b612b46565b9050919050565b5f819050919050565b613dd483613da1565b613de8613de082613dc2565b848454613d50565b825550505050565b5f90565b613dfc613df0565b613e07818484613dcb565b505050565b5b81811015613e2a57613e1f5f82613df4565b600181019050613e0d565b5050565b601f821115613e6f57613e4081613d23565b613e4984613d35565b81016020851015613e58578190505b613e6c613e6485613d35565b830182613e0c565b50505b505050565b5f82821c905092915050565b5f613e8f5f1984600802613e74565b1980831691505092915050565b5f613ea78383613e80565b9150826002028217905092915050565b613ec082612e15565b67ffffffffffffffff811115613ed957613ed8612caa565b5b613ee38254613790565b613eee828285613e2e565b5f60209050601f831160018114613f1f575f8415613f0d578287015190505b613f178582613e9c565b865550613f7e565b601f198416613f2d86613d23565b5f5b82811015613f5457848901518255600182019150602085019450602081019050613f2f565b86831015613f715784890151613f6d601f891682613e80565b8355505b6001600288020188555050505b505050505050565b7f455243313135353a206d696e7420746f20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fe0602183612e1f565b9150613feb82613f86565b604082019050919050565b5f6020820190508181035f83015261400d81613fd4565b9050919050565b5f61401e82612b46565b915061402983612b46565b92508282019050808211156140415761404061387b565b5b92915050565b5f60408201905061405a5f830185612bb7565b6140676020830184612bb7565b9392505050565b7f455243313135353a206275726e2066726f6d20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6140c8602383612e1f565b91506140d38261406e565b604082019050919050565b5f6020820190508181035f8301526140f5816140bc565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e677468205f8201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b5f614156602883612e1f565b9150614161826140fc565b604082019050919050565b5f6020820190508181035f8301526141838161414a565b9050919050565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c5f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f6141e4602483612e1f565b91506141ef8261418a565b604082019050919050565b5f6020820190508181035f830152614211816141d8565b9050919050565b5f6040820190508181035f8301526142308185613474565b905081810360208301526142448184613474565b90509392505050565b5f6040820190506142605f830185613190565b61426d6020830184613190565b9392505050565b5f8151905061428281613534565b92915050565b5f6020828403121561429d5761429c612ae4565b5b5f6142aa84828501614274565b91505092915050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e5f8201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b5f61430d602e83612e1f565b9150614318826142b3565b604082019050919050565b5f6020820190508181035f83015261433a81614301565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f61436582614341565b61436f818561434b565b935061437f818560208601612e2f565b61438881612c9a565b840191505092915050565b5f60a0820190506143a65f830188613190565b6143b36020830187613190565b6143c06040830186612bb7565b6143cd6060830185612bb7565b81810360808301526143df818461435b565b90509695505050505050565b5f815190506143f981612c0a565b92915050565b5f6020828403121561441457614413612ae4565b5b5f614421848285016143eb565b91505092915050565b5f8160e01c9050919050565b5f60033d11156144525760045f803e61444f5f5161442a565b90505b90565b5f60443d106144e157614466612adb565b60043d036004823e80513d602482011167ffffffffffffffff8211171561448e5750506144e1565b808201805167ffffffffffffffff8111156144ac57505050506144e1565b80602083010160043d0385018111156144c95750505050506144e1565b6144d882602001850186612cd7565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d455243313135355f8201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b5f61453e603483612e1f565b9150614549826144e4565b604082019050919050565b5f6020820190508181035f83015261456b81614532565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a656374655f8201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b5f6145cc602883612e1f565b91506145d782614572565b604082019050919050565b5f6020820190508181035f8301526145f9816145c0565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61465a602583612e1f565b915061466582614600565b604082019050919050565b5f6020820190508181035f8301526146878161464e565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f5f8201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b5f6146e8602a83612e1f565b91506146f38261468e565b604082019050919050565b5f6020820190508181035f830152614715816146dc565b9050919050565b5f60a08201905061472f5f830188613190565b61473c6020830187613190565b818103604083015261474e8186613474565b905081810360608301526147628185613474565b90508181036080830152614776818461435b565b90509695505050505050565b7f455243313135353a2073657474696e6720617070726f76616c207374617475735f8201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b5f6147dc602983612e1f565b91506147e782614782565b604082019050919050565b5f6020820190508181035f830152614809816147d0565b905091905056fea26469706673582212208578e8d0c6b5b18c93129e4d9e15eadf3d13abe694e1e17b91f9158a89efd1b564736f6c6343000815003368747470733a2f2f6e66746d6574612e6d6a6d6574612e696f2f6d61686a6f6e672f6d6574612f4d61686a6f6e674d657461486f6e6f722f7b69647d2e6a736f6e