Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp292266rdb; Mon, 18 Sep 2023 15:37:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH0+VP/RqiALVMnr3T8A0Pn/vx900iN5YFSo6RVf2A2Kl9c7ai/+2ZhGIIEWEYeJbNgzfwY X-Received: by 2002:a05:6a00:c8d:b0:68f:c6f8:144a with SMTP id a13-20020a056a000c8d00b0068fc6f8144amr10179960pfv.22.1695076672239; Mon, 18 Sep 2023 15:37:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695076672; cv=pass; d=google.com; s=arc-20160816; b=PkAetl013bL7l5HdbM3Lrj43GSgVeftlPQdIZmVhKEQm3JPRCg4ka7CwoW+5ySUIPj 8gzfyEIDXuEhJGA5hzYt6vaY8XU9FRkuTB5p5a297xWmJFhkDooUhk81Zfq9EjtaKPd2 qDs+nt7vlXTCofrP3Yi2H8BZ9slIKVYJGGsVnkj8U/nAF4XDKvxOuK3qkeEUegtuKrPy TJOyBtFZzN8ICRMSmYVAlyf2ZlsjnhbWzGXlv7VdnXICEbqssD0J4CG1nn6qXl8Tta3H WaKD5KCXkxFJmJnNd9w8H4UbN8oau6++urMUuvVVsi7bK5WF5u9Az4FmX8ua2kYeuKjA ltcQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=AWsZBtLO6h8nNhggurK4oZkii5DiHYSCbRp42/V8dQQ=; fh=AIATlJCHmxZohF1aHBQDY/Lo2+Iu2e0ViBkTYkW1uwo=; b=EPpSgWqI8x84WF863y0t0cWEIhKDAhNAX0Y0HjQWr/snlRpGd+8K2PPB3ItIBGJw0a jsZRSh0l3d8JpV+goZu69TI+7YJ396L33js+aDyfZ9xytSY+x2x/2x7bfj6AjmbXrifI QqBdkhw7xkLGOSF9evqjs/RAuplaibFaMlkIcBiYyGut8LPmHqWUEimKE2Ca8YWJyl8a qMrukApAa8TZxdll1AgD4VdZMb+t479nBT71XuzFtbqcj8CYQVP01b8AS9+4hwsKh8NB a3lTKQ4cbi1n3fYbInMc3SPXWPJclnK42vewE4l8W9koU0ueYIeQbPsZ8Q5lshLXMhlT OW9g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=FCktYorM; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id e12-20020a63db0c000000b0056949c3eda8si8360041pgg.119.2023.09.18.15.37.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Sep 2023 15:37:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@Nvidia.com header.s=selector2 header.b=FCktYorM; arc=pass (i=1 spf=pass spfdomain=nvidia.com dkim=pass dkdomain=nvidia.com dmarc=pass fromdomain=nvidia.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=nvidia.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 2ECC880298A0; Mon, 18 Sep 2023 10:18:14 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230006AbjIRRSF (ORCPT + 99 others); Mon, 18 Sep 2023 13:18:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229712AbjIRRSE (ORCPT ); Mon, 18 Sep 2023 13:18:04 -0400 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4707DDB for ; Mon, 18 Sep 2023 10:17:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PuV+3fT/XG1jGcb3Cd2bDc6vyAbxT618bQUvoLbqyr10tHapFtErx0cFyV2OBmC9Eq1UlOZdfiAUocooTv5ha+4eihzlchMY4e34d/BBrozUpI8Mj7+iRQehuhJJwRlT4gEmemdspCtQdJt2YI4Izf4pMIfGSUiwFTjLvMvsb35DG9JXwbVmdvB57xt3kqNi9Q+i9v9rM2P5HKsEv7BCiD7tnCADQVOMpwQYoeZNWc5ZQ6cfwxKWkQY2aJ2WoNbbht/SNHlL6sv6fs0MO65mn+833u7xxWuHVE+CaHt9vrj4SO7E2Vng6v01StUvarHAyBoF1GwyrjQOzDVRyrJjuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AWsZBtLO6h8nNhggurK4oZkii5DiHYSCbRp42/V8dQQ=; b=T1bFVO0+frYDcJilbYX7UM1EmTVpUAOAn48B/+s3LiDfDIK48oIFefNubPMIkJuQJjVuMuOWOsj/ftRqvJDGPAqBrf6OSa1OfzcoGbWS/vjzCh+sW6V5lKmlDUDZy3Zzbk3rs9v6WMssDKYGwDvsoZ5IHF2B7DnMQDVT2TjQ+YXObpUryU+bSINcg1T2SS8RWKb+3fc7KsDeplODgjaBl/tPfcN4FQvIQRzysiWWRIXLuFnAJlzLbJeeVi+0XAYMmKF9jis+4VhWCNbm4w9aCe1zvr0XrYa7G8yI41N/o/Zs3WnI8+cICnvWxwOYkhe1VodeC8SH2vgI5mfSUNegNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AWsZBtLO6h8nNhggurK4oZkii5DiHYSCbRp42/V8dQQ=; b=FCktYorMo1dinhdKWwUt0OsXCGGPthf3VhpokZMrVQ0wvQJyN1RcpiTRzjl3NpRtbepdMGxq32ru1BNSIpIQMKd9DKUYJd22E9ZwuWSZLMV6QmyxPRr5y+xPhgwvXE2PQfGTvRcRbpDK4yqM1J4wAnJ+94TDYTsQmpC3QXgtgCkTHr1tnPkhUkdaciP1kIjIfDqp20UWWzRbwNz3STxnAxpDMYa5EH1PYeySqD3fzD00cvIljwTnCiwa8XdZuTK4Ameurlgq+AyD0kb/+L7W5g1iLDqVkPsIbGzuoCQRohOSefinuzVOvhxB4Xbm20CHbEy2E9rE4JYQJraDXEx4tQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) by CY5PR12MB6228.namprd12.prod.outlook.com (2603:10b6:930:20::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.27; Mon, 18 Sep 2023 17:17:56 +0000 Received: from DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::4b09:197c:609a:1013]) by DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::4b09:197c:609a:1013%7]) with mapi id 15.20.6792.020; Mon, 18 Sep 2023 17:17:56 +0000 From: Zi Yan To: Baolin Wang Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ryan Roberts , Andrew Morton , "\"Matthew Wilcox (Oracle)\"" , David Hildenbrand , "\"Yin, Fengwei\"" , Yu Zhao , Vlastimil Babka , Johannes Weiner , Kemeng Shi , Mel Gorman , Rohan Puri , Mcgrof Chamberlain , Adam Manzanares , John Hubbard Subject: Re: [RFC PATCH 4/4] mm/compaction: enable compacting >0 order folios. Date: Mon, 18 Sep 2023 13:17:52 -0400 X-Mailer: MailMate (1.14r5984) Message-ID: <31320BED-0B77-4962-B155-AA09FA3D1E95@nvidia.com> In-Reply-To: References: <20230912162815.440749-1-zi.yan@sent.com> <20230912162815.440749-5-zi.yan@sent.com> Content-Type: multipart/signed; boundary="=_MailMate_DA6783EB-83AD-4FA1-A3A2-A403DFC46416_="; micalg=pgp-sha512; protocol="application/pgp-signature" X-ClientProxiedBy: BL0PR05CA0008.namprd05.prod.outlook.com (2603:10b6:208:91::18) To DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5744:EE_|CY5PR12MB6228:EE_ X-MS-Office365-Filtering-Correlation-Id: c88c0b60-0b90-465d-674c-08dbb86b3316 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +lI5uZz6DCMeXYXFj6dKf2/cYHnOYJUkBms4AiiQ4ksYFkCFRGGzg2d832Jpzybao8JUM2mcQEh1abNzHZLsU5igoc4HpstAaiDFzLhRlpeIDPg4x4o23DLE6LXVQts74y+l0K86+EipiU+rVhJVpH/P5Mt8havMt8rofpxEAxuBF5ANPpONuoP2ZzBb2JyryocGRKY4eTBn7xLWo31gh760HZg1a24vx22DqiXG7yQEkZ1kTyP+q0hIvHlwJ+cy9u4PkFmwFaAVI+wdaZfb3QRxw71+t7mpDo8PR88LH3Cr7Py8fB9XutMFC3GSbPhr3zunmgwduaSdiFna5cdSEvEprYTwjsqyJgnTcGjopRp+1odtzNBiR053xuHFGpuXU/gK2Agq3ehouLizYu+zPdloslP3k893JU1/zVqlYQj0F1ACcB5iTcS7oTOuu2GQEG/iAPZ+gJ4Vt2EstcviBS75pN85DLItNQwx8Uf5ibLXvjyrjk8Yr21PpwTgCvLujNrdwcwCrnc0TWs2WhqlWrmwx0pQJaI1FPiOQnhh4knjdLL7BlSopxK1Qnx32vScJ8Njg7sDZlM5TH59lXEbb76i4gZT5mi/ZP2mes3ZVUPVUvsUohSesuBxzFtHLPci X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5744.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(376002)(396003)(136003)(366004)(1800799009)(186009)(451199024)(53546011)(6506007)(6486002)(6666004)(6512007)(478600001)(83380400001)(26005)(107886003)(2616005)(2906002)(7416002)(235185007)(66556008)(66476007)(316002)(54906003)(66946007)(6916009)(4326008)(5660300002)(8676002)(8936002)(41300700001)(33656002)(36756003)(38100700002)(86362001)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PEt5Ss4BWOyR8k0/wn6ucHbNgO3sla8hHgGLvTahjpsVrjZeHOFQuKHnwj0C?= =?us-ascii?Q?RSIPWvY28kMvHQTaqfqlnNw0GU1WW/nupyxfUG+SWvkCez9nwdHomsJB4pTq?= =?us-ascii?Q?72jy+FexO3zVCeE52xpK/sIte9w5wsmf2rcpdvrtLKVVd5VN0XdSwztAv14B?= =?us-ascii?Q?mepaRMyfLL3oOuUXkdDcoTYPrGuA9a9RGhGMYmAF3PM70MzsZ8KB9oXt0zky?= =?us-ascii?Q?EZUS7T1HKl63ZzoschblZ/Y/fnLvnG6QmWKMR+/hQZChDpkEdWkWmadEiSnZ?= =?us-ascii?Q?PCGZqOEfA4Fw/tAWGaVeEUaBl0YS7Rxlydpxf8GjUQu99iss3Ek9cy1bK3NQ?= =?us-ascii?Q?agVZ9YQhNCfZfZ6tbA3ukW8y0YhE5X4lExgE3RJIjW4S0rg/VjAVAj7Dqx3L?= =?us-ascii?Q?AUCE0WilZM5Qv33M7NW77TLo+Kan0EhWWl+ltOBrrla99V8qA2dZLKSIRVUd?= =?us-ascii?Q?YKYJw/9lMAYGTzs/o8Q/z/iE9y8ImXr4Km7CjfTyICpf8giS+vCql0GrWgSH?= =?us-ascii?Q?z3xI4jIYL3i3pdxjcmLzWYa8XtgE5udwx1JNYkFrbOBt/NHWaeZAsxwH4z5s?= =?us-ascii?Q?XNvIaM+4+g/1j3y7F+WYI/dqM9EIqVyxvYbeMB7/2QfC73QmIzF03uvJqA0Z?= =?us-ascii?Q?+JgDT/DQ9AfYSK3h9aAAuI23wkQUfwOgYIpycxdZC9zk5BuwpRL+Dd46DUMw?= =?us-ascii?Q?9p+axWM984Jr1YlwE2iFxhxDluu70CGXVsLJtone2C0u1Jhg0zaaXcFrs2se?= =?us-ascii?Q?ypiCt2IrC0XleOgugPnIlPrEZhiZgncrAKKQU1X4tPHNzdl6H4v/utaXxLb+?= =?us-ascii?Q?S90xkgRXyy0oMIX2iJvSyZW5wUVzKJZH/po/3bCM0dAcF1rLGRjehNoSBTXJ?= =?us-ascii?Q?bWNN8uziuGFhhp4WjEs6K6ahSpPgntEZ7S/09s5bwDF2qlRZitv9feq9FGuS?= =?us-ascii?Q?+N0fbMO1uMU5MSZh7B4kYgULQQKMK/sefG+G8XyCTO1wf/wr/ki+9IbYmJJe?= =?us-ascii?Q?B0oo9RCZnqwtRZeyAHPdVzQVaYVUMWkV0hZBDbQVWGLV144KjjWO3QLphiAn?= =?us-ascii?Q?aG0cY7+jCIB7DW4+wT2PDx0LKD+06gxs1lSnoRDEK410jSuh0IQktmy/cauV?= =?us-ascii?Q?M5XqTk2lrSnkGQ7kkakm7rq1b5DopmOxCpRuo0nvRufEaW1tkEouhbbBkuxk?= =?us-ascii?Q?tNeOJO/YWyGMAmrU6Yu/wxEZKIIrmfEMrckDhXoIW/fp58Da2TPUPxGqm0mC?= =?us-ascii?Q?qknnCjh24tDfZZkvVHdVyzv4IYfoFQOe3a3dEt768T4+TtV7QAaLmQS6+pR2?= =?us-ascii?Q?leDBh+jdLlbsNC1j2d37Xby3TgYvdpm9pyODphKU4QwhcT0CUgrxLwrXPdUW?= =?us-ascii?Q?BH7+7Oymylsbz3U8j2JupjSU2Sh1Qc7LexI+eVf0S8feOGzEDgTELwYyjIWJ?= =?us-ascii?Q?lBSm4+HQgzz5Uv5fvcAzTEwnkKmEh2zD4u5m4VlqpqPSqbAsGsvGUhYbFxNW?= =?us-ascii?Q?vBKWUS8iGQoL7L0h2BCJN4OBsYIX7xcvYie65+VdwKSTVngTbQL7TFDHN/3M?= =?us-ascii?Q?6xau053IhMazsa4BVs8=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c88c0b60-0b90-465d-674c-08dbb86b3316 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5744.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2023 17:17:56.2858 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: de8IUNZaGdlE9jpSbJXAMP6ODZGY92ZrQothNEICiboWDn3AIc2Yd/D3WyJ/IFY+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6228 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 18 Sep 2023 10:18:14 -0700 (PDT) --=_MailMate_DA6783EB-83AD-4FA1-A3A2-A403DFC46416_= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On 15 Sep 2023, at 5:41, Baolin Wang wrote: > On 9/13/2023 12:28 AM, Zi Yan wrote: >> From: Zi Yan >> >> Since compaction code can compact >0 order folios, enable it during th= e >> process. >> >> Signed-off-by: Zi Yan >> --- >> mm/compaction.c | 25 ++++++++++--------------- >> 1 file changed, 10 insertions(+), 15 deletions(-) >> >> diff --git a/mm/compaction.c b/mm/compaction.c >> index 4300d877b824..f72af74094de 100644 >> --- a/mm/compaction.c >> +++ b/mm/compaction.c >> @@ -1087,11 +1087,17 @@ isolate_migratepages_block(struct compact_cont= rol *cc, unsigned long low_pfn, >> if (PageCompound(page) && !cc->alloc_contig) { >> const unsigned int order =3D compound_order(page); >> - if (likely(order <=3D MAX_ORDER)) { >> - low_pfn +=3D (1UL << order) - 1; >> - nr_scanned +=3D (1UL << order) - 1; >> + /* >> + * Compacting > pageblock_order pages does not improve >> + * memory fragmentation. Also skip hugetlbfs pages. >> + */ >> + if (likely(order >=3D pageblock_order) || PageHuge(page)) { > > IMO, if the compound page order is larger than the requested cc->order,= we should also fail the isolation, cause it also does not improve fragme= ntation, right? > Probably yes. I think the reasoning should be since compaction is asking = for cc->order, we should not compacting folios with orders larger than or equal to that,= since cc->order tells us the max free page order is smaller than it, otherwise = the allocation would happen already. I will add this condition in the next ve= rsion. >> + if (order <=3D MAX_ORDER) { >> + low_pfn +=3D (1UL << order) - 1; >> + nr_scanned +=3D (1UL << order) - 1; >> + } >> + goto isolate_fail; >> } >> - goto isolate_fail; >> } >> /* >> @@ -1214,17 +1220,6 @@ isolate_migratepages_block(struct compact_contr= ol *cc, unsigned long low_pfn, >> goto isolate_abort; >> } >> } >> - >> - /* >> - * folio become large since the non-locked check, >> - * and it's on LRU. >> - */ >> - if (unlikely(folio_test_large(folio) && !cc->alloc_contig)) > - = low_pfn +=3D folio_nr_pages(folio) - 1; >> - nr_scanned +=3D folio_nr_pages(folio) - 1; >> - folio_set_lru(folio); >> - goto isolate_fail_put; >> - } > > I do not think you can remove this validation, since previous validatio= n is lockless. So under the lock, we need re-check if the compound page o= rder is larger than pageblock_order or cc->order, that need fail to isola= te. This check should go away, but a new order check for large folios should = be added. Will add it. Thanks. -- Best Regards, Yan, Zi --=_MailMate_DA6783EB-83AD-4FA1-A3A2-A403DFC46416_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEE6rR4j8RuQ2XmaZol4n+egRQHKFQFAmUIhkAPHHppeUBudmlk aWEuY29tAAoJEOJ/noEUByhUv20P/iGUaI0Chn3mfJNu0hlrkPX59Ld+0pDWG5bN ZrNFi05Q426Z/QcBAMRFPCu+WMIlQlMOXRZUm07dGPqx9OQE2Qt6My4VtFTLsgae 4pCtpISi5nHde2IzmKwO2PV79UZaMSY7SHd5KI8FcA9fhQZSzSz0/WSSwcl68rgQ XeaATdhBmLb8kRqD9hGjtoa++KojCDllocij3FZl7SZB+QtMMxFvq108IB3eEzHo k0MLbcYqzZqntNko7f6cErG+GXSTxdokf7KUqtcLG6DFErDM7wrvd9oEBwwMCb/3 OeoPTH/lBPMOl072CjQ/goDD+ixSr26q3zSEWi4suj3YqwUmuM+T8FT1NlWEBaSd SJSw2JroiEZ2SOfDMHgqet04xEurV61kS9h79iFVaMn5WYorG8xD12CoOWNZEWs2 ui+n5cLpIEGWWUlAdVOXhvwbP58pOoRMRPWE79uXGs4ReOjkXlJHjM2XkDWybpGh Mef4ScZYuHI5Wdxet0qpFr3HEPvmHKPB+7Fb+EqUe2TdzeNwbz9q2PTKZptVgZe1 CPSuLJmUWenNjqB8RfcwRcWfSA2YnK+hYNNHdcG1FFx8Xk9QpR3dHBBGfaBgvqAl mq5B+qLczhPItSdOkY9nZPRlCjdlDJtwsjwqfEbrrBZIAuFrHMHfQyJ833rZTS9d dBLw8hFC =n+KH -----END PGP SIGNATURE----- --=_MailMate_DA6783EB-83AD-4FA1-A3A2-A403DFC46416_=--