From dd4cae02605d42d2a08394c42d794000b32a0167 Mon Sep 17 00:00:00 2001 From: Bjarne Stroustrup Date: Mon, 3 Sep 2018 10:04:48 -0400 Subject: [PATCH] Resolve #1241 about returning T&& --- C++ Core Guidelines weekly telecon.eml | 370 +++++++++++++++++++++++++ CppCoreGuidelines.md | 32 ++- call-in number.eml | 323 +++++++++++++++++++++ 3 files changed, 717 insertions(+), 8 deletions(-) create mode 100644 C++ Core Guidelines weekly telecon.eml create mode 100644 call-in number.eml diff --git a/C++ Core Guidelines weekly telecon.eml b/C++ Core Guidelines weekly telecon.eml new file mode 100644 index 0000000..4d18981 --- /dev/null +++ b/C++ Core Guidelines weekly telecon.eml @@ -0,0 +1,370 @@ +Delivered-To: bjarne@stroustrup.com +Received: by 2002:a6b:38c3:0:0:0:0:0 with SMTP id f186-v6csp751542ioa; + Mon, 25 Jun 2018 11:27:25 -0700 (PDT) +X-Google-Smtp-Source: ADUXVKKVJzhTRPFr7p/Bx+l4+2G0ar8o9waIBTDvXC3Y5CJpLuZeuewluIteGe0xYoWEEutBgh// +X-Received: by 2002:a63:4346:: with SMTP id q67-v6mr11601625pga.328.1529951244768; + Mon, 25 Jun 2018 11:27:24 -0700 (PDT) +ARC-Seal: i=1; a=rsa-sha256; t=1529951244; cv=none; + d=google.com; s=arc-20160816; + b=IZpeye/1FUctGXb5fDKdD5yuejF/uNu+enOFdamyYFX3PGMFaAVPBw5LqXkIxfgHbU + SEhB1VOeMDtvEm5+mrl5UVOwekAuNRVI5QGXwpondJ+cX0WvYPPY/xjg3XqggvaDRN+0 + bW8Y1ul7NAtz8dp/+QkMh6XYJcOfU4PawMNJo8By63ZChyzu1zVdBimASkyIY9pLFpM9 + 0r5i+BzLmwXky66mV054TYP3F+GF7Tk0ZpM+f0qjMWRuyqiemk/2rug9x6kerjR5gVUy + r5l3e0KXf458ZE7tl6X45nFUjyz5pqWfSTo4xmP3gTdiZn+d8xaHdmiPE6Gi7mWb84t3 + /Nvw== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; + h=mime-version:spamdiagnosticmetadata:spamdiagnosticoutput + :content-language:accept-language:message-id:deferred-delivery:date + :thread-index:thread-topic:subject:to:from:dkim-signature + :arc-authentication-results; + bh=lArNDIuTQ77kCwIYwcEqAT5RTRD2aYGix8/ZHNGUsi8=; + b=EBgmMfGxOpcigygGmB5tLG5hIu5G8sZOfqGVRFWzLAYZbn02OO0maLmbEI9zMVAcr7 + EPOz3EJJswRkV17qqRFrjMeszyMbsuKpWHO1kXFQkqYuZpsc/6BueuTk/4NXSd8+zQX+ + YMyem+1ixcc+FVxARUc+GcB4r/1uYNerK7g/tjd5B8+CJj5DXeJvOC9SA7mO5sSXPumn + W9/tpoe1Clg/sy8YD5xJHysyK7aq4ctcHdcmU3l6qo9rlD5//a5g850V1idGOK9ecvAT + wCsTEmaAiEzoWGAUjvnM11gNE68NUAeHdmhX8PJzc+/wKQdnw6EcU/wSC2anuW9/4haF + C3IQ== +ARC-Authentication-Results: i=1; mx.google.com; + dkim=pass header.i=@microsoft.com header.s=selector1 header.b=PyeNytNT; + spf=pass (google.com: domain of hsutter@microsoft.com designates 40.107.70.95 as permitted sender) smtp.mailfrom=hsutter@microsoft.com; + dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com +Return-Path: +Received: from NAM04-SN1-obe.outbound.protection.outlook.com (mail-eopbgr700095.outbound.protection.outlook.com. [40.107.70.95]) + by mx.google.com with ESMTPS id p187-v6si14368004pfp.125.2018.06.25.11.27.24 + for + (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); + Mon, 25 Jun 2018 11:27:24 -0700 (PDT) +Received-SPF: pass (google.com: domain of hsutter@microsoft.com designates 40.107.70.95 as permitted sender) client-ip=40.107.70.95; +Authentication-Results: mx.google.com; + dkim=pass header.i=@microsoft.com header.s=selector1 header.b=PyeNytNT; + spf=pass (google.com: domain of hsutter@microsoft.com designates 40.107.70.95 as permitted sender) smtp.mailfrom=hsutter@microsoft.com; + dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; + s=selector1; + h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; + bh=lArNDIuTQ77kCwIYwcEqAT5RTRD2aYGix8/ZHNGUsi8=; + b=PyeNytNTxTaEdXCIKpO+UfjRdDetOKNVr7pISUcOBjN0MMfIiC1D/+aJqdRpc0NHZRLRWs2zQ1zdHBlXrlhBYK0pT7OwM1pYhFSy3ZZZaRS1Z6AL8LCdTgEizGMr6jEvi5VfYf1PBFI2HVEjo6OF6KCu05LQY28b3MlE5C3d2Zg= +Received: from CY4PR21MB0118.namprd21.prod.outlook.com (10.173.189.12) by + CY4PR21MB0501.namprd21.prod.outlook.com (10.172.122.11) with Microsoft SMTP + Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id + 15.20.930.7; Mon, 25 Jun 2018 18:27:23 +0000 +Received: from CY4PR21MB0118.namprd21.prod.outlook.com + ([fe80::703f:a7a4:8da1:9c9c]) by CY4PR21MB0118.namprd21.prod.outlook.com + ([fe80::703f:a7a4:8da1:9c9c%13]) with mapi id 15.20.0930.005; Mon, 25 Jun + 2018 18:27:23 +0000 +From: Herb Sutter +To: Bjarne Stroustrup , Bjarne Stroustrup +Subject: C++ Core Guidelines weekly telecon +Thread-Topic: C++ Core Guidelines weekly telecon +Thread-Index: AdPgE2qws3e/QWcVRYSCBJrdkuXXkQsnpNeg +Date: Mon, 25 Jun 2018 18:27:12 +0000 +Deferred-Delivery: Mon, 25 Jun 2018 18:27:11 +0000 +Message-ID: + +Accept-Language: en-US +Content-Language: en-US +X-MS-Has-Attach: +X-MS-TNEF-Correlator: +x-ms-exchange-calendar-series-instance-id: + BAAAAIIA4AB0xbcQGoLgCAAAAADg4gCu2N/TAQAAAAAAAAAAEAAAABrGbB13Y3JNttga0eniSLA= +x-originating-ip: [66.235.41.24] +x-ms-publictraffictype: Email +x-microsoft-exchange-diagnostics: + 1;CY4PR21MB0501;7:IoZCKHRHo/EThOEPXyHWgHrD4iWZTfapaqi0GXnPaGDpbFjaALs9oyYyaBYFV/d9tC7op/MNWcSFr+gSAB/xl7XN1spnDpYnxfbBoAC+hnRPBndGd5cgT5fQDO9vmKH0fEIEo6ND9iis72w0NIBbgaAtOPzreGe0SCirWHqEMLDHyi4iVQvzT02eVNwEtAqnHHwGFG5j1mhxrNvPlNVr+6NsjbUw2R7Qj+OV3EQZvK+ybFrcgQX+jr85JyzHv58q +x-ms-office365-filtering-correlation-id: 35d56184-cee4-463b-b33a-08d5dac94b74 +x-ms-office365-filtering-ht: Tenant +x-microsoft-antispam: + UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7193020);SRVR:CY4PR21MB0501; +x-ms-traffictypediagnostic: CY4PR21MB0501: +authentication-results: spf=none (sender IP is ) + smtp.mailfrom=hsutter@microsoft.com; +x-microsoft-antispam-prvs: + +x-exchange-antispam-report-test: + UriScan:(28532068793085)(156600954879566)(89312169872907)(209352067349851)(143657141931036)(21748063052155); +x-ms-exchange-senderadcheck: 1 +x-exchange-antispam-report-cfa-test: + BCL:0;PCL:0;RULEID:(8211001083)(2017102700009)(2017102701064)(6040522)(2401047)(8121501046)(5005006)(2017102702064)(20171027021009)(20171027022009)(20171027023009)(20171027024009)(20171027025009)(20171027026009)(2017102703076)(10201501046)(93006095)(93001095)(3002001)(3231254)(2018427008)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016);SRVR:CY4PR21MB0501;BCL:0;PCL:0;RULEID:;SRVR:CY4PR21MB0501; +x-forefront-prvs: 0714841678 +x-forefront-antispam-report: + SFV:NSPM;SFS:(10019020)(376002)(39860400002)(366004)(346002)(136003)(396003)(9763003)(199004)(189003)(97736004)(2906002)(790700001)(99286004)(5660300001)(2900100001)(86362001)(86612001)(6666003)(14444005)(5250100002)(6436002)(3846002)(7736002)(7696005)(7066003)(74316002)(6116002)(316002)(81156014)(8936002)(81166006)(33656002)(8676002)(9686003)(476003)(110136005)(10090500001)(66066001)(22452003)(6506007)(236005)(102836004)(68736007)(55016002)(8990500004)(25786009)(26005)(10290500003)(478600001)(14454004)(186003)(6306002)(106356001)(54896002)(606006)(105586002)(486006)(53936002)(256004);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR21MB0501;H:CY4PR21MB0118.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; +received-spf: None (protection.outlook.com: microsoft.com does not designate + permitted sender hosts) +x-microsoft-antispam-message-info: + O6MmiRTW5cKw6pu2WeKVVg3Kj+NiZAXHIi/MRSQnZO/RXo2kuoxYwQM6VGHpJvVy++5h0g6weTSeqDPHl1SQrMgYOf1Rp/lN5S4i3/IYA/kSthn4ivEBRofWesEpANr2xGlFm6DMXj63i3VqdygmxvUR3x1lpp+mcITS1ciQhrGxmCQgdb1vIvGrFVYcwBRWYYwA4EHD9rJ2eAES+f3S/kPQCSp1XbSwK9pYF4VfVAQi8zoPmFZn3VhUOeXzZRdVIxC/FaNU/XiSpkvsbf9XEdl4Nbzk7KvJG7+c4KBM9yqXdWhcYTlPl7mJZtuMbfopFPC9grx/ot2I3FunskaCAn9RC7zmPFeHyWr35uhk16Q= +spamdiagnosticoutput: 1:99 +spamdiagnosticmetadata: NSPM +Content-Type: multipart/alternative; + boundary="_000_CY4PR21MB01187A2395F446B34B25A53DB84A0CY4PR21MB0118namp_" +MIME-Version: 1.0 +X-OriginatorOrg: microsoft.com +X-MS-Exchange-CrossTenant-Network-Message-Id: 35d56184-cee4-463b-b33a-08d5dac94b74 +X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2018 18:27:22.6129 + (UTC) +X-MS-Exchange-CrossTenant-fromentityheader: Hosted +X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 +X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR21MB0501 + +--_000_CY4PR21MB01187A2395F446B34B25A53DB84A0CY4PR21MB0118namp_ +Content-Type: text/plain; charset="us-ascii" +Content-Transfer-Encoding: quoted-printable + +Replacing Andrew's invite... note that the conference ID number is probably= + different. + + +...........................................................................= +.............................................................. +--> Join Skype Meeting +Trouble Joining? Try Skype Web App +Join by phone + +Toll-free number: +1 (866) 641-7188,,51592241# (Dial-in Number) = + English (United States) +Toll number: +1 (773) 917-4061,,51592241# (Dial-in Number) = + English (United States) + +Find a local number + +Conference ID: 51592241 +Forgot your dial-in PIN? |Hel= +p + + +Welcome to Skype for Business Online Meetings. All participants who use the= + Join by Phone option must dial the full number for call access. +[!OC([1033])!] +...........................................................................= +.............................................................. + + +--_000_CY4PR21MB01187A2395F446B34B25A53DB84A0CY4PR21MB0118namp_ +Content-Type: text/html; charset="us-ascii" +Content-Transfer-Encoding: quoted-printable + + + + + + + + +
+

Replacing Andrew’s invite… note that the= + conference ID number is probably different.

+

 

+

 

+

...................................................= +...........................................................................= +...........

+

&agr= +ave; += +Join Skype Meeting  +    

+

+Trouble Joining? Try Skype Web App +

+

Join by phone

+

 

+

Toll-free number: +1 (866) 6= +41-7188,,51592241# (Dial-in Number)       &nb= +sp;            = +     English (United States) + 

+

Toll number:   &n= +bsp;     +1 (773) 917-4061,,51592241# (Dial-in Numb= +er)             = +;           English (Unit= +ed States) + = +

+

 

+

Find a local number +

+

 

+

Conference ID: 51592241

+

Forgot your dial-in PIN? +|Help   +

+

 

+

 

+

Welc= +ome to Skype for Business Online Meetings. All participants who use the Joi= +n by Phone option must dial the full number for call access. +

+

[!OC([1033])!]

+

+= +...........................................................................= +..............................................................<= +/p> +

 

+
+ + + +--_000_CY4PR21MB01187A2395F446B34B25A53DB84A0CY4PR21MB0118namp_ +Content-Type: text/calendar; charset="utf-8"; method=REQUEST +Content-Transfer-Encoding: base64 + +QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5n +ZSBTZXJ2ZXIgMjAxMA0KVkVSU0lPTjoyLjANCkJFR0lOOlZUSU1FWk9ORQ0KVFpJRDpQYWNpZmlj +IFN0YW5kYXJkIFRpbWUNCkJFR0lOOlNUQU5EQVJEDQpEVFNUQVJUOjE2MDEwMTAxVDAyMDAwMA0K +VFpPRkZTRVRGUk9NOi0wNzAwDQpUWk9GRlNFVFRPOi0wODAwDQpSUlVMRTpGUkVRPVlFQVJMWTtJ +TlRFUlZBTD0xO0JZREFZPTFTVTtCWU1PTlRIPTExDQpFTkQ6U1RBTkRBUkQNCkJFR0lOOkRBWUxJ +R0hUDQpEVFNUQVJUOjE2MDEwMTAxVDAyMDAwMA0KVFpPRkZTRVRGUk9NOi0wODAwDQpUWk9GRlNF +VFRPOi0wNzAwDQpSUlVMRTpGUkVRPVlFQVJMWTtJTlRFUlZBTD0xO0JZREFZPTJTVTtCWU1PTlRI +PTMNCkVORDpEQVlMSUdIVA0KRU5EOlZUSU1FWk9ORQ0KQkVHSU46VkVWRU5UDQpPUkdBTklaRVI7 +Q049SGVyYiBTdXR0ZXI6TUFJTFRPOmhzdXR0ZXJAbWljcm9zb2Z0LmNvbQ0KQVRURU5ERUU7Uk9M +RT1SRVEtUEFSVElDSVBBTlQ7UEFSVFNUQVQ9TkVFRFMtQUNUSU9OO1JTVlA9VFJVRTtDTj1CamFy +bmUgU3RyDQogb3VzdHJ1cDpNQUlMVE86Ymphcm5lQHN0cm91c3RydXAuY29tDQpBVFRFTkRFRTtS +T0xFPVJFUS1QQVJUSUNJUEFOVDtQQVJUU1RBVD1ORUVEUy1BQ1RJT047UlNWUD1UUlVFO0NOPUJq +YXJuZSBTdHINCiBvdXN0cnVwOk1BSUxUTzpic0Btcy5jb20NCkRFU0NSSVBUSU9OO0xBTkdVQUdF +PWVuLVVTOlJlcGxhY2luZyBBbmRyZXfigJlzIGludml0ZeKApiBub3RlIHRoYXQgdGhlIGNvbg0K +IGZlcmVuY2UgSUQgbnVtYmVyIGlzIHByb2JhYmx5IGRpZmZlcmVudC5cblxuXG4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLi4uLi4uDQogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCiAuLi4uLi4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLi4uLi4uLlxuLS0+IEpvaW4gU2t5cGUgTWVldGluZzxodHRwczovL21lZXQu +bA0KIHluYy5jb20vbWljcm9zb2Z0L2hzdXR0ZXIvS1IxQjdDOEY+XG5Ucm91YmxlIEpvaW5pbmc/ +IFRyeSBTa3lwZSBXZWIgQXBwPGh0DQogdHBzOi8vbWVldC5seW5jLmNvbS9taWNyb3NvZnQvaHN1 +dHRlci9LUjFCN0M4Rj9zbD0xPlxuSm9pbiBieSBwaG9uZVxuXG5Ub2wNCiBsLWZyZWUgbnVtYmVy +OiArMSAoODY2KSA2NDEtNzE4OFwsXCw1MTU5MjI0MSMgKERpYWwtaW4gTnVtYmVyKSAgICAgICAg +ICAgIA0KICAgICAgICAgICAgICBFbmdsaXNoIChVbml0ZWQgU3RhdGVzKVxuVG9sbCBudW1iZXI6 +ICAgICAgICAgKzEgKDc3MykgOTE3LTQwDQogNjFcLFwsNTE1OTIyNDEjIChEaWFsLWluIE51bWJl +cikgICAgICAgICAgICAgICAgICAgICAgICBFbmdsaXNoIChVbml0ZWQgU3QNCiBhdGVzKVxuXG5G +aW5kIGEgbG9jYWwgbnVtYmVyPGh0dHBzOi8vZGlhbGluLmx5bmMuY29tLzQ4YjRjNjEzLWNjNjct +NDgyNS04MQ0KIDc1LTI5NjI4ZDk3MTVlNT9pZD01MTU5MjI0MT5cblxuQ29uZmVyZW5jZSBJRDog +NTE1OTIyNDFcbkZvcmdvdCB5b3VyIGRpYWwtDQogaW4gUElOPzxodHRwczovL215c2V0dGluZ3Mu +bHluYy5jb20vcHN0bmNvbmZlcmVuY2luZz4gfEhlbHA8aHR0cDovL2dvLm1pY3INCiBvc29mdC5j +b20vZndsaW5rLz9MaW5rSWQ9Mzg5NzM3PlxuXG5cbldlbGNvbWUgdG8gU2t5cGUgZm9yIEJ1c2lu +ZXNzIE9ubGluZQ0KICBNZWV0aW5ncy4gQWxsIHBhcnRpY2lwYW50cyB3aG8gdXNlIHRoZSBKb2lu +IGJ5IFBob25lIG9wdGlvbiBtdXN0IGRpYWwgdGhlDQogIGZ1bGwgbnVtYmVyIGZvciBjYWxsIGFj +Y2Vzcy5cblshT0MoWzEwMzNdKSFdXG4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCiAuLi4u +Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLg0KIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLlxuXG4N +ClJSVUxFOkZSRVE9V0VFS0xZO0lOVEVSVkFMPTE7QllEQVk9TU87V0tTVD1TVQ0KRVhEQVRFO1Ra +SUQ9UGFjaWZpYyBTdGFuZGFyZCBUaW1lOjIwMTgwNTA3VDExMDAwMCwyMDE4MDUyOFQxMTAwMDAs +MjAxODA2MDRUDQogMTEwMDAwLDIwMTgwNjExVDExMDAwMCwyMDE4MDcwMlQxMTAwMDANClVJRDow +NDAwMDAwMDgyMDBFMDAwNzRDNUI3MTAxQTgyRTAwODAwMDAwMDAwRTBFMjAwQUVEOERGRDMwMTAw +MDAwMDAwMDAwMDAwMA0KIDAxMDAwMDAwMDFBQzY2QzFENzc2MzcyNERCNkQ4MUFEMUU5RTI0OEIw +DQpTVU1NQVJZO0xBTkdVQUdFPWVuLVVTOkMrKyBDb3JlIEd1aWRlbGluZXMgd2Vla2x5IHRlbGVj +b24NCkRUU1RBUlQ7VFpJRD1QYWNpZmljIFN0YW5kYXJkIFRpbWU6MjAxODA0MzBUMTEwMDAwDQpE +VEVORDtUWklEPVBhY2lmaWMgU3RhbmRhcmQgVGltZToyMDE4MDQzMFQxMjAwMDANCkNMQVNTOlBV +QkxJQw0KUFJJT1JJVFk6NQ0KRFRTVEFNUDoyMDE4MDYyNVQxODI2MTFaDQpUUkFOU1A6T1BBUVVF +DQpTVEFUVVM6Q09ORklSTUVEDQpTRVFVRU5DRTo4DQpMT0NBVElPTjtMQU5HVUFHRT1lbi1VUzpT +a3lwZSBNZWV0aW5nDQpYLU1JQ1JPU09GVC1DRE8tQVBQVC1TRVFVRU5DRTo4DQpYLU1JQ1JPU09G +VC1DRE8tT1dORVJBUFBUSUQ6LTE2NTY5MjgyODYNClgtTUlDUk9TT0ZULUNETy1CVVNZU1RBVFVT +OlRFTlRBVElWRQ0KWC1NSUNST1NPRlQtQ0RPLUlOVEVOREVEU1RBVFVTOkJVU1kNClgtTUlDUk9T +T0ZULUNETy1BTExEQVlFVkVOVDpGQUxTRQ0KWC1NSUNST1NPRlQtQ0RPLUlNUE9SVEFOQ0U6MQ0K +WC1NSUNST1NPRlQtQ0RPLUlOU1RUWVBFOjENClgtTUlDUk9TT0ZULU9OTElORU1FRVRJTkdFWFRF +Uk5BTExJTks6aHR0cHM6Ly9tZWV0Lmx5bmMuY29tL21pY3Jvc29mdC9oc3V0dA0KIGVyL0tSMUI3 +QzhGDQpYLU1JQ1JPU09GVC1PTkxJTkVNRUVUSU5HQ09ORkxJTks6Y29uZjpzaXA6aHN1dHRlckBt +aWNyb3NvZnQuY29tXDtncnV1XDtvcGENCiBxdWU9YXBwOmNvbmY6Zm9jdXM6aWQ6S1IxQjdDOEY/ +Y29udmVyc2F0aW9uLWlkPWxGNjNoNlRNWg0KWC1NSUNST1NPRlQtQ09ORkVSRU5DRVRFTFVSSTp0 +ZWw6KzE3NzM5MTc0MDYxXCxcLDUxNTkyMjQxDQpYLU1JQ1JPU09GVC1ET05PVEZPUldBUkRNRUVU +SU5HOkZBTFNFDQpYLU1JQ1JPU09GVC1ESVNBTExPVy1DT1VOVEVSOkZBTFNFDQpYLU1JQ1JPU09G +VC1MT0NBVElPTlM6W3siRGlzcGxheU5hbWUiOiJTa3lwZSBNZWV0aW5nIlwsIkxvY2F0aW9uQW5u +b3RhdGlvbiINCiA6IiJcLCJMb2NhdGlvblVyaSI6IiJcLCJMb2NhdGlvblN0cmVldCI6IiJcLCJM +b2NhdGlvbkNpdHkiOiIiXCwiTG9jYXRpb25TdA0KIGF0ZSI6IiJcLCJMb2NhdGlvbkNvdW50cnki +OiIiXCwiTG9jYXRpb25Qb3N0YWxDb2RlIjoiIlwsIkxvY2F0aW9uRnVsbEFkZHJlDQogc3MiOiIi +fV0NCkJFR0lOOlZBTEFSTQ0KREVTQ1JJUFRJT046UkVNSU5ERVINClRSSUdHRVI7UkVMQVRFRD1T +VEFSVDotUFQxNU0NCkFDVElPTjpESVNQTEFZDQpFTkQ6VkFMQVJNDQpFTkQ6VkVWRU5UDQpFTkQ6 +VkNBTEVOREFSDQo= + +--_000_CY4PR21MB01187A2395F446B34B25A53DB84A0CY4PR21MB0118namp_-- diff --git a/CppCoreGuidelines.md b/CppCoreGuidelines.md index 97f476a..dae6d18 100644 --- a/CppCoreGuidelines.md +++ b/CppCoreGuidelines.md @@ -3600,32 +3600,48 @@ Flag functions where no `return` expression could yield `nullptr` ##### Reason -It's asking to return a reference to a destroyed temporary object. A `&&` is a magnet for temporary objects. This is fine when the reference to the temporary is being passed "downward" to a callee, because the temporary is guaranteed to outlive the function call (see [F.18](#Rf-consume) and [F.19](#Rf-forward)). However, it's not fine when passing such a reference "upward" to a larger caller scope. See also ???. +It's asking to return a reference to a destroyed temporary object. +A `&&` is a magnet for temporary objects. +##### Example + +A returned rvalue reference goes out of scope at the end of the full expression to which it is returned: + + auto&& x = max(0,1); // OK, so far + foo(x); // Unfefined behavior + +This kind of use is a frequent source of bugs, often incorrectly reported as a compiler bug. +An implementer of a function should avoid setting such traps for users. + +The [lifetipe safety profile](#SS-lifetime) will (when completely implemented) catch such problems + + +##### Example + +Returning an rvalue reference is fine when the reference to the temporary is being passed "downward" to a callee; +then, the temporary is guaranteed to outlive the function call (see [F.18](#Rf-consume) and [F.19](#Rf-forward)). +However, it's not fine when passing such a reference "upward" to a larger caller scope. For passthrough functions that pass in parameters (by ordinary reference or by perfect forwarding) and want to return values, use simple `auto` return type deduction (not `auto&&`). -##### Example, bad - -If `F` returns by value, this function returns a reference to a temporary. +Assume that `F` returns by value: template auto&& wrapper(F f) { log_call(typeid(f)); // or whatever instrumentation - return f(); + return f(); // BAD: eturns a reference to a temporary } -##### Example, good - Better: template auto wrapper(F f) { log_call(typeid(f)); // or whatever instrumentation - return f(); + return f(); // OK } + ##### Exception `std::move` and `std::forward` do return `&&`, but they are just casts -- used by convention only in expression contexts where a reference to a temporary object is passed along within the same expression before the temporary is destroyed. We don't know of any other good examples of returning `&&`. diff --git a/call-in number.eml b/call-in number.eml new file mode 100644 index 0000000..dcbf9d0 --- /dev/null +++ b/call-in number.eml @@ -0,0 +1,323 @@ +Delivered-To: bjarne@stroustrup.com +Received: by 2002:a6b:38c3:0:0:0:0:0 with SMTP id f186-v6csp744011ioa; + Mon, 25 Jun 2018 11:18:54 -0700 (PDT) +X-Google-Smtp-Source: ADUXVKKbqnzCaOMeUPUjE4poSzrQ8ZqDnXcH+hsSep0/BnJOY3LcoL4qfH+djVGZ1Ng6x+V5TXy4 +X-Received: by 2002:a65:4c87:: with SMTP id m7-v6mr4445828pgt.98.1529950734808; + Mon, 25 Jun 2018 11:18:54 -0700 (PDT) +ARC-Seal: i=1; a=rsa-sha256; t=1529950734; cv=none; + d=google.com; s=arc-20160816; + b=cGzT6mOVvURO0XJyKic6miycDYwQ0+3MKEYpdkGBxkU4Lkxl6b0lYApeP6ME2cxdfa + 39ukRP5X9HqCZ7wDB+wVhdb3TQARIOdbYZV043dWGrTMPZ6yuVscNAsnTJ/Eo/6aJWrO + s2U+0voJPfaI6elui8Xbw3cmLeqD9fr2Lc1k76vBeMTX8OEJk4JOiCbuRVyVZ34CAw+8 + OxfACab+A1XXfELQLJFgCQFgkmjPa6uZ541GUwAktc9VC9dLANqvNnk+huNkFcFSg6Bv + sWVEiwB3z/PUL0l8TpFZmFTNG+fgaLnawNWlti5VYotNG/giW9jN5vu1HUSDVd+xMkuU + eM0A== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; + h=mime-version:spamdiagnosticmetadata:spamdiagnosticoutput + :msip_labels:content-language:accept-language:in-reply-to:references + :message-id:deferred-delivery:date:thread-index:thread-topic:subject + :to:from:dkim-signature:arc-authentication-results; + bh=Gbad2gUMDwDI6VLTEuKG/jw03u6C5kHD0frxfvgBU3M=; + b=NuFTJnmOlrmAAE6FUL9wntYebbPcPNshEiKI4c/2jbOh3a+MILxqavRztNby+vzb2j + WPov7BCUA5va75EGNst9qjt75mHiYw7USC4JaXYGnmo/4NE29KTbomaJ75IlBczDMeZB + kvLcbYHZrHRPQqazepqOubz1KOlM2uU/Eeh6TekFC9pIGnIUspRHSiSppGU5YjoWSmhV + CEEtUGETC4FADOFh5FkSoWSzjcMlvoJFu9Kt9vFM+btaLKIur/Wzsxfs8E77sV0D+olc + 0BkPwJC/0h+ZyVykuBr+A4PrBbDdmDVn7aloYiPsoXwGWui6aNIvUXg5RKFDc76H13LQ + d73g== +ARC-Authentication-Results: i=1; mx.google.com; + dkim=pass header.i=@microsoft.com header.s=selector1 header.b=BQJ5waux; + spf=pass (google.com: domain of hsutter@microsoft.com designates 104.47.37.120 as permitted sender) smtp.mailfrom=hsutter@microsoft.com; + dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com +Return-Path: +Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0120.outbound.protection.outlook.com. [104.47.37.120]) + by mx.google.com with ESMTPS id f71-v6si14342702pfc.316.2018.06.25.11.18.54 + for + (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); + Mon, 25 Jun 2018 11:18:54 -0700 (PDT) +Received-SPF: pass (google.com: domain of hsutter@microsoft.com designates 104.47.37.120 as permitted sender) client-ip=104.47.37.120; +Authentication-Results: mx.google.com; + dkim=pass header.i=@microsoft.com header.s=selector1 header.b=BQJ5waux; + spf=pass (google.com: domain of hsutter@microsoft.com designates 104.47.37.120 as permitted sender) smtp.mailfrom=hsutter@microsoft.com; + dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; + s=selector1; + h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; + bh=Gbad2gUMDwDI6VLTEuKG/jw03u6C5kHD0frxfvgBU3M=; + b=BQJ5wauxZhlEvzYZrutmht6Y0zi2wN9tVzLtKFIPUAeuQN9YDWXVtoGTiEk/CErUr8mSKiyVduINKwbzz06T1JgyN2pEXmky5migMg2cm5tvsX4XG0cOa37Sp36gduqSjG8F/rV7BRfZ5KzTUz7v5MA5DzPjS9kJUf5KOGcccqU= +Received: from CY4PR21MB0118.namprd21.prod.outlook.com (10.173.189.12) by + CY4PR21MB0150.namprd21.prod.outlook.com (10.173.189.20) with Microsoft SMTP + Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id + 15.20.930.4; Mon, 25 Jun 2018 18:18:52 +0000 +Received: from CY4PR21MB0118.namprd21.prod.outlook.com + ([fe80::703f:a7a4:8da1:9c9c]) by CY4PR21MB0118.namprd21.prod.outlook.com + ([fe80::703f:a7a4:8da1:9c9c%13]) with mapi id 15.20.0930.005; Mon, 25 Jun + 2018 18:18:52 +0000 +From: Herb Sutter +To: Bjarne Stroustrup , Gabriel Dos Reis + +Subject: RE: GCmeeting today? +Thread-Topic: GCmeeting today? +Thread-Index: AQHUDK3V++RYhtLodk2DquA8j+1htKRxRSBQgAABzYCAAADHsA== +Date: Mon, 25 Jun 2018 18:18:42 +0000 +Deferred-Delivery: Mon, 25 Jun 2018 18:18:05 +0000 +Message-ID: + +References: <1c6f5a91-8866-b330-4099-363d68a010bf@Stroustrup.com> + + +In-Reply-To: +Accept-Language: en-US +Content-Language: en-US +X-MS-Has-Attach: +X-MS-TNEF-Correlator: +msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True; + MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; + MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Owner=hsutter@microsoft.com; + MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2018-06-25T18:17:05.2520931Z; + MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General; + MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Application=Microsoft Azure + Information Protection; + MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Extended_MSFT_Method=Automatic; + Sensitivity=General +x-originating-ip: [66.235.41.24] +x-ms-publictraffictype: Email +x-microsoft-exchange-diagnostics: + 1;CY4PR21MB0150;7:/LUym8P4ehADj3/ohTQfmnUAnhC69+mPjQjR2aODT2nCR2OjzmmOTmanXbflwQVlRvLj67fc5YYGLdXUsab/aU4ICDdTUGvQbAICVgSKBlxgEgSAYBhynqFJyOGXFkU8z7knziAcVbh/RVpL43drTgORp2vpQukEefZZIQq0uaX9Er5e0svvmgeqXJRB5mGqbv6Apjh37Y2EpQe1p0sKrIDNKB1flPGsXjirlJIC9KpKM3qw48UZY9kDEzqmnfqz +x-ms-exchange-antispam-srfa-diagnostics: SOS; +x-ms-office365-filtering-correlation-id: 971f752c-4042-4bcb-8a41-08d5dac81b1f +x-ms-office365-filtering-ht: Tenant +x-microsoft-antispam: + UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7193020);SRVR:CY4PR21MB0150; +x-ms-traffictypediagnostic: CY4PR21MB0150: +x-microsoft-antispam-prvs: + +x-exchange-antispam-report-test: + UriScan:(28532068793085)(156600954879566)(89312169872907)(89211679590171)(143657141931036)(21748063052155); +x-ms-exchange-senderadcheck: 1 +x-exchange-antispam-report-cfa-test: + BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231254)(2018427008)(944501410)(52105095)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016);SRVR:CY4PR21MB0150;BCL:0;PCL:0;RULEID:;SRVR:CY4PR21MB0150; +x-forefront-prvs: 0714841678 +x-forefront-antispam-report: + SFV:NSPM;SFS:(10019020)(39860400002)(376002)(346002)(396003)(136003)(366004)(199004)(189003)(446003)(55016002)(3480700004)(11346002)(229853002)(7736002)(33656002)(486006)(236005)(54896002)(25786009)(2906002)(476003)(74316002)(8990500004)(14454004)(10090500001)(1511001)(66066001)(2900100001)(53936002)(105586002)(6246003)(106356001)(97736004)(6436002)(6306002)(68736007)(9686003)(110136005)(6506007)(316002)(102836004)(86362001)(186003)(7696005)(6636002)(6666003)(606006)(5660300001)(6346003)(53546011)(76176011)(8936002)(7066003)(5250100002)(81156014)(81166006)(8676002)(478600001)(6116002)(3846002)(790700001)(10290500003)(7116003)(26005)(86612001)(99286004)(22452003)(256004);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR21MB0150;H:CY4PR21MB0118.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; +received-spf: None (protection.outlook.com: microsoft.com does not designate + permitted sender hosts) +authentication-results: spf=none (sender IP is ) + smtp.mailfrom=hsutter@microsoft.com; +x-microsoft-antispam-message-info: + 3fJ6uYHmGQRccovfI66QLHAtm/7rT9OegRdB1mEYHsE+K3MTYaDaicoNqN4if5OWd2Yzm0xriWV5m1ES25SIfiQg7MAf9YAF1kFWbtE3RSiaTskii3SVmtG7fPiqGqRZdkZIB0P12vyQnrlt7kVDrEuUwKhzYT927TLJ9PdpBn5XsbEI+pTQNeLKWar4rAxUpWJMpaPwikCOIZTG9Ljcg0/woP/wy/LEWliW3JloQu2e1G3v+GpMGC8OJy1Im5DaWGhAE6tUyFqqQsXk/N9KCiutEAuENG3byHrFn8Nb6bCVTNbiqDxZjdqQ+lVJW81iAhwqAz9ie3cpPn5YFuq0qcTqFtOgDqBz+WXA37vHT9s= +spamdiagnosticoutput: 1:99 +spamdiagnosticmetadata: NSPM +Content-Type: multipart/alternative; + boundary="_000_CY4PR21MB0118D38886044FEE5813DDFBB84A0CY4PR21MB0118namp_" +MIME-Version: 1.0 +X-OriginatorOrg: microsoft.com +X-MS-Exchange-CrossTenant-Network-Message-Id: 971f752c-4042-4bcb-8a41-08d5dac81b1f +X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2018 18:18:52.4908 + (UTC) +X-MS-Exchange-CrossTenant-fromentityheader: Hosted +X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 +X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR21MB0150 + +--_000_CY4PR21MB0118D38886044FEE5813DDFBB84A0CY4PR21MB0118namp_ +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +PiB3aGF0J3MgdGhlIG51bWJlcj8NClBhc3RpbmcgYmVsb3cgZm9yIG5leHQgdGltZeKApiBkbyB5 +b3UgaGF2ZSB0aGUgbWVldGluZyBpbnZpdGUgb24geW91ciBjYWxlbmRhcj8NCg0KRm9yIHRvZGF5 +IEkganVzdCBodW5nIHVwIGF0IDExOjE1LzI6MTUgYmVjYXVzZSBJIHdhcyBzdGlsbCB0aGUgb25s +eSBvbmUgb24gdGhlIGNhbGwuDQoNCg0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCi0tPiBKb2lu +IFNreXBlIE1lZXRpbmc8aHR0cHM6Ly9tZWV0Lmx5bmMuY29tL21pY3Jvc29mdC9oc3V0dGVyL0tS +MUI3QzhGPg0KVHJvdWJsZSBKb2luaW5nPyBUcnkgU2t5cGUgV2ViIEFwcDxodHRwczovL21lZXQu +bHluYy5jb20vbWljcm9zb2Z0L2hzdXR0ZXIvS1IxQjdDOEY/c2w9MT4NCkpvaW4gYnkgcGhvbmUN +Cg0KVG9sbC1mcmVlIG51bWJlcjogKzEgKDg2NikgNjQxLTcxODgsLDUxNTkyMjQxIyAoRGlhbC1p +biBOdW1iZXIpICAgICAgICAgICAgICAgICAgICAgICAgIEVuZ2xpc2ggKFVuaXRlZCBTdGF0ZXMp +DQpUb2xsIG51bWJlcjogICAgICAgICArMSAoNzczKSA5MTctNDA2MSwsNTE1OTIyNDEjIChEaWFs +LWluIE51bWJlcikgICAgICAgICAgICAgICAgICAgICAgICBFbmdsaXNoIChVbml0ZWQgU3RhdGVz +KQ0KDQpGaW5kIGEgbG9jYWwgbnVtYmVyPGh0dHBzOi8vZGlhbGluLmx5bmMuY29tLzQ4YjRjNjEz +LWNjNjctNDgyNS04MTc1LTI5NjI4ZDk3MTVlNT9pZD01MTU5MjI0MT4NCg0KQ29uZmVyZW5jZSBJ +RDogNTE1OTIyNDENCkZvcmdvdCB5b3VyIGRpYWwtaW4gUElOPzxodHRwczovL215c2V0dGluZ3Mu +bHluYy5jb20vcHN0bmNvbmZlcmVuY2luZz4gfEhlbHA8aHR0cDovL2dvLm1pY3Jvc29mdC5jb20v +ZndsaW5rLz9MaW5rSWQ9Mzg5NzM3Pg0KDQoNCkZyb206IEJqYXJuZSBTdHJvdXN0cnVwIDxiamFy +bmVAc3Ryb3VzdHJ1cC5jb20+DQpTZW50OiBNb25kYXksIEp1bmUgMjUsIDIwMTggMTE6MTMgQU0N +ClRvOiBIZXJiIFN1dHRlciA8aHN1dHRlckBtaWNyb3NvZnQuY29tPjsgR2FicmllbCBEb3MgUmVp +cyA8Z2RyQG1pY3Jvc29mdC5jb20+DQpTdWJqZWN0OiBSZTogR0NtZWV0aW5nIHRvZGF5Pw0KDQoN +CndoYXQncyB0aGUgbnVtYmVyPw0KDQpPbiA2LzI1LzIwMTggMjowOCBQTSwgSGVyYiBTdXR0ZXIg +d3JvdGU6DQooWW91IHN0YXJ0bGVkIG1lIGF0IGZpcnN0IHdoZW4geW91IHdyb3RlIOKAnEdD4oCd +IG5vdCDigJxDR+KAnSwg4oCcSSB0aG91Z2h0IGhlIGRpZG7igJl0IGxpa2UgR0M/IeKAnSDimLop +DQoNCknigJltIG9uIHRoZSBjYWxsIGJ1dCBzbyBmYXIgSeKAmW0gdGhlIG9ubHkgb25lLiBJ4oCZ +bGwgd2FpdCBhIGZldyBtb3JlIG1pbnV0ZXMgYW5kIHNlZSBpZiBhbnlvbmUgY29tZXMuDQoNCk5l +eHQgd2VlayAoSnVsIDIpIHRoZSBjYWxsIGlzIGNhbmNlbGxlZCBiZWNhdXNlIG9mIHRoZSBob2xp +ZGF5IHdlZWsuDQoNCg0KRnJvbTogQmphcm5lIFN0cm91c3RydXAgPGJqYXJuZUBzdHJvdXN0cnVw +LmNvbT48bWFpbHRvOmJqYXJuZUBzdHJvdXN0cnVwLmNvbT4NClNlbnQ6IE1vbmRheSwgSnVuZSAy +NSwgMjAxOCAxMDo1NiBBTQ0KVG86IEdhYnJpZWwgRG9zIFJlaXMgPGdkckBtaWNyb3NvZnQuY29t +PjxtYWlsdG86Z2RyQG1pY3Jvc29mdC5jb20+OyBIZXJiIFN1dHRlciA8aHN1dHRlckBtaWNyb3Nv +ZnQuY29tPjxtYWlsdG86aHN1dHRlckBtaWNyb3NvZnQuY29tPg0KU3ViamVjdDogR0NtZWV0aW5n +IHRvZGF5Pw0KDQoNCg0K + +--_000_CY4PR21MB0118D38886044FEE5813DDFBB84A0CY4PR21MB0118namp_ +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy +bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt +YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj +cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv +VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg +Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv +ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl +PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 +V2luZ2RpbmdzOw0KCXBhbm9zZS0xOjUgMCAwIDAgMCAwIDAgMCAwIDA7fQ0KQGZvbnQtZmFjZQ0K +CXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMg +MiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToyIDE1 +IDUgMiAyIDIgNCAzIDIgNDt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3JtYWws +IGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGluOw0KCW1hcmdpbi1ib3R0 +b206LjAwMDFwdDsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixz +YW5zLXNlcmlmOw0KCWNvbG9yOmJsYWNrO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7 +bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOiMwNTYzQzE7DQoJdGV4dC1kZWNvcmF0aW9u +OnVuZGVybGluZTt9DQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQNCgl7bXNv +LXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOiM5NTRGNzI7DQoJdGV4dC1kZWNvcmF0aW9uOnVu +ZGVybGluZTt9DQpwLm1zb25vcm1hbDAsIGxpLm1zb25vcm1hbDAsIGRpdi5tc29ub3JtYWwwDQoJ +e21zby1zdHlsZS1uYW1lOm1zb25vcm1hbDsNCgltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsNCglt +YXJnaW4tcmlnaHQ6MGluOw0KCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOw0KCW1hcmdpbi1s +ZWZ0OjBpbjsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5z +LXNlcmlmOw0KCWNvbG9yOmJsYWNrO30NCnNwYW4uRW1haWxTdHlsZTE5DQoJe21zby1zdHlsZS10 +eXBlOnBlcnNvbmFsOw0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9y +OndpbmRvd3RleHQ7fQ0Kc3Bhbi5FbWFpbFN0eWxlMjANCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29u +YWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJY29sb3I6d2lu +ZG93dGV4dDt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsN +Cglmb250LXNpemU6MTAuMHB0O30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWluIDEx +LjBpbjsNCgltYXJnaW46MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0aW9u +MQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5XT48 +eG1sPg0KPG86c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4NCjwv +eG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVsYXlvdXQg +djpleHQ9ImVkaXQiPg0KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8L286c2hh +cGVsYXlvdXQ+PC94bWw+PCFbZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBiZ2NvbG9yPSJ3aGl0 +ZSIgbGFuZz0iRU4tVVMiIGxpbms9IiMwNTYzQzEiIHZsaW5rPSIjOTU0RjcyIj4NCjxkaXYgY2xh +c3M9IldvcmRTZWN0aW9uMSI+DQo8cD48c3BhbiBzdHlsZT0iY29sb3I6d2luZG93dGV4dCI+Jmd0 +OyA8L3NwYW4+d2hhdCdzIHRoZSBudW1iZXI/PG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNv +Tm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6d2luZG93dGV4dCI+UGFzdGluZyBiZWxvdyBmb3Ig +bmV4dCB0aW1l4oCmIGRvIHlvdSBoYXZlIHRoZSBtZWV0aW5nIGludml0ZSBvbiB5b3VyIGNhbGVu +ZGFyPzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0 +eWxlPSJjb2xvcjp3aW5kb3d0ZXh0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBj +bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6d2luZG93dGV4dCI+Rm9yIHRvZGF5 +IEkganVzdCBodW5nIHVwIGF0IDExOjE1LzI6MTUgYmVjYXVzZSBJIHdhcyBzdGlsbCB0aGUgb25s +eSBvbmUgb24gdGhlIGNhbGwuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v +cm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOndpbmRvd3RleHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9z +cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPHAg +Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIHN0eWxl +PSJmb250LXNpemU6OC4wcHQ7Y29sb3I6IzQwNDA0MCI+Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u +Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi48 +L3NwYW4+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNC4wcHQiPjxvOnA+PC9vOnA+PC9zcGFu +PjwvYj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9u +ZSI+PGEgbmFtZT0iT3V0Sm9pbkxpbmsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTQuMHB0O2Zv +bnQtZmFtaWx5OldpbmdkaW5ncztjb2xvcjojMDA2NkNDIj7DoDwvc3Bhbj48L2E+PHNwYW4gc3R5 +bGU9Im1zby1ib29rbWFyazpPdXRKb2luTGluayI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNC4w +cHQ7Y29sb3I6IzAwNjZDQyI+DQo8L3NwYW4+PC9zcGFuPjxhIGhyZWY9Imh0dHBzOi8vbWVldC5s +eW5jLmNvbS9taWNyb3NvZnQvaHN1dHRlci9LUjFCN0M4RiI+PHNwYW4gc3R5bGU9Im1zby1ib29r +bWFyazpPdXRKb2luTGluayI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNi4wcHQ7Y29sb3I6IzAw +NjZDQyI+Sm9pbiBTa3lwZSBNZWV0aW5nPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0ibXNvLWJv +b2ttYXJrOk91dEpvaW5MaW5rIj48L3NwYW4+PC9hPjxzcGFuIHN0eWxlPSJtc28tYm9va21hcms6 +T3V0Sm9pbkxpbmsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTQuMHB0Ij4mbmJzcDsNCjxhIG5h +bWU9Ik91dFNoYXJlZE5vdGVCb3JkZXIiPiZuYnNwOzwvYT4mbmJzcDsmbmJzcDs8YSBuYW1lPSJP +dXRTaGFyZWROb3RlTGluayI+Jm5ic3A7PC9hPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZv +bnQtc2l6ZToxNC4wcHQiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt +YWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6My4wcHQ7bWFyZ2luLXJpZ2h0OjBpbjttYXJn +aW4tYm90dG9tOjEyLjBwdDttYXJnaW4tbGVmdDoxNi4wcHQ7bGluZS1oZWlnaHQ6MTI1JTt0ZXh0 +LWF1dG9zcGFjZTpub25lIj4NCjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2xpbmUtaGVp +Z2h0OjEyNSUiPlRyb3VibGUgSm9pbmluZz8gPHU+PGEgaHJlZj0iaHR0cHM6Ly9tZWV0Lmx5bmMu +Y29tL21pY3Jvc29mdC9oc3V0dGVyL0tSMUI3QzhGP3NsPTEiPjxzcGFuIHN0eWxlPSJjb2xvcjoj +MDA2NkNDIj5UcnkgU2t5cGUgV2ViIEFwcDwvc3Bhbj48L2E+DQo8L3U+PG86cD48L286cD48L3Nw +YW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5vbmUi +PjxzcGFuIGxhbmc9IkVOIiBzdHlsZT0iZm9udC1zaXplOjEzLjBwdCI+Sm9pbiBieSBwaG9uZTwv +c3Bhbj48c3BhbiBsYW5nPSJFTiIgc3R5bGU9ImZvbnQtc2l6ZTo4LjBwdCI+PG86cD48L286cD48 +L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYXV0b3NwYWNlOm5v +bmUiPjxzcGFuIGxhbmc9IkVOIiBzdHlsZT0iZm9udC1zaXplOjguMHB0O2NvbG9yOndpbmRvd3Rl +eHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 +eWxlPSJtYXJnaW4tYm90dG9tOjIuMHB0O3RleHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIGxhbmc9 +IkVOIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdCI+VG9sbC1mcmVlIG51bWJlcjogJiM0MzsxICg4 +NjYpIDY0MS03MTg4LCw1MTU5MjI0MSMgKERpYWwtaW4gTnVtYmVyKSAmbmJzcDsmbmJzcDsmbmJz +cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm +bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz +cDsmbmJzcDsgRW5nbGlzaCAoVW5pdGVkIFN0YXRlcykNCjwvc3Bhbj48c3BhbiBsYW5nPSJFTiIg +c3R5bGU9ImZvbnQtc2l6ZTozLjBwdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGxhbmc9IkVOIiBzdHls +ZT0iZm9udC1zaXplOjguMHB0Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv +Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToyLjBwdDt0ZXh0LWF1dG9zcGFjZTpub25lIj48 +c3BhbiBsYW5nPSJFTiIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPlRvbGwgbnVtYmVyOiZuYnNw +OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmIzQzOzEgKDc3Mykg +OTE3LTQwNjEsLDUxNTkyMjQxIyAoRGlhbC1pbiBOdW1iZXIpICZuYnNwOyZuYnNwOyZuYnNwOyZu +YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw +OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBF +bmdsaXNoIChVbml0ZWQgU3RhdGVzKQ0KPC9zcGFuPjxzcGFuIGxhbmc9IkVOIiBzdHlsZT0iZm9u +dC1zaXplOjMuMHB0Ij4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNv +Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToyLjBwdDt0ZXh0LWF1dG9zcGFjZTpub25lIj48 +c3BhbiBsYW5nPSJFTiIgc3R5bGU9ImZvbnQtc2l6ZTozLjBwdCI+PG86cD4mbmJzcDs8L286cD48 +L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206Mi4w +cHQ7dGV4dC1hdXRvc3BhY2U6bm9uZSI+PHU+PHNwYW4gbGFuZz0iRU4iIHN0eWxlPSJmb250LXNp +emU6MTAuMHB0O2NvbG9yOiM5NDM2MzQiPjxhIGhyZWY9Imh0dHBzOi8vZGlhbGluLmx5bmMuY29t +LzQ4YjRjNjEzLWNjNjctNDgyNS04MTc1LTI5NjI4ZDk3MTVlNT9pZD01MTU5MjI0MSI+PHNwYW4g +c3R5bGU9ImNvbG9yOiMwMDY2Q0MiPkZpbmQgYSBsb2NhbCBudW1iZXI8L3NwYW4+PC9hPjwvc3Bh +bj48L3U+PHNwYW4gbGFuZz0iRU4iPg0KPC9zcGFuPjxzcGFuIGxhbmc9IkVOIiBzdHlsZT0iZm9u +dC1zaXplOjEwLjVwdCI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h +bCIgc3R5bGU9Im1hcmdpbi1ib3R0b206Mi4wcHQ7dGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4g +bGFuZz0iRU4iIHN0eWxlPSJmb250LXNpemU6OC4wcHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu +PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjIuMHB0O3Rl +eHQtYXV0b3NwYWNlOm5vbmUiPjxzcGFuIGxhbmc9IkVOIiBzdHlsZT0iZm9udC1zaXplOjEwLjBw +dCI+Q29uZmVyZW5jZSBJRDogNTE1OTIyNDE8L3NwYW4+PHNwYW4gbGFuZz0iRU4iIHN0eWxlPSJm +b250LXNpemU6MTAuNXB0Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9y +bWFsIiBzdHlsZT0idGV4dC1hdXRvc3BhY2U6bm9uZSI+PHNwYW4gbGFuZz0iRU4iIHN0eWxlPSJm +b250LXNpemU6MTAuMHB0O2NvbG9yOiMwMDY2Q0MiPjxhIGhyZWY9Imh0dHBzOi8vbXlzZXR0aW5n +cy5seW5jLmNvbS9wc3RuY29uZmVyZW5jaW5nIj48c3BhbiBzdHlsZT0iY29sb3I6IzAwNjZDQyI+ +Rm9yZ290IHlvdXIgZGlhbC1pbiBQSU4/PC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gbGFuZz0iRU4i +IHN0eWxlPSJmb250LXNpemU6My4wcHQiPg0KPC9zcGFuPjxzcGFuIGxhbmc9IkVOIj58PC9zcGFu +PjxzcGFuIGxhbmc9IkVOIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdCI+PGEgaHJlZj0iaHR0cDov +L2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSWQ9Mzg5NzM3Ij48c3BhbiBzdHlsZT0iY29s +b3I6IzAwNjZDQyI+SGVscDwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGxhbmc9IkVOIiBzdHlsZT0i +Zm9udC1zaXplOjMuMHB0Ij4mbmJzcDsmbmJzcDsNCjwvc3Bhbj48c3BhbiBsYW5nPSJFTiIgc3R5 +bGU9ImZvbnQtc2l6ZTo4LjBwdCI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z +b05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOndpbmRvd3RleHQiPjxvOnA+Jm5ic3A7PC9vOnA+ +PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjp3aW5k +b3d0ZXh0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6 +bm9uZTtib3JkZXItbGVmdDpzb2xpZCBibHVlIDEuNXB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNC4w +cHQiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0Ux +RTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3Jt +YWwiPjxiPjxzcGFuIHN0eWxlPSJjb2xvcjp3aW5kb3d0ZXh0Ij5Gcm9tOjwvc3Bhbj48L2I+PHNw +YW4gc3R5bGU9ImNvbG9yOndpbmRvd3RleHQiPiBCamFybmUgU3Ryb3VzdHJ1cCAmbHQ7Ymphcm5l +QHN0cm91c3RydXAuY29tJmd0Ow0KPGJyPg0KPGI+U2VudDo8L2I+IE1vbmRheSwgSnVuZSAyNSwg +MjAxOCAxMToxMyBBTTxicj4NCjxiPlRvOjwvYj4gSGVyYiBTdXR0ZXIgJmx0O2hzdXR0ZXJAbWlj +cm9zb2Z0LmNvbSZndDs7IEdhYnJpZWwgRG9zIFJlaXMgJmx0O2dkckBtaWNyb3NvZnQuY29tJmd0 +Ozxicj4NCjxiPlN1YmplY3Q6PC9iPiBSZTogR0NtZWV0aW5nIHRvZGF5PzxvOnA+PC9vOnA+PC9z +cGFuPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNw +OzwvbzpwPjwvcD4NCjxwPndoYXQncyB0aGUgbnVtYmVyPzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xh +c3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z +b05vcm1hbCI+T24gNi8yNS8yMDE4IDI6MDggUE0sIEhlcmIgU3V0dGVyIHdyb3RlOjxvOnA+PC9v +OnA+PC9wPg0KPC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0ibWFyZ2luLXRvcDo1LjBwdDttYXJn +aW4tYm90dG9tOjUuMHB0Ij4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPihZb3Ugc3RhcnRsZWQgbWUg +YXQgZmlyc3Qgd2hlbiB5b3Ugd3JvdGUg4oCcR0PigJ0gbm90IOKAnENH4oCdLCDigJxJIHRob3Vn +aHQgaGUgZGlkbuKAmXQgbGlrZSBHQz8h4oCdDQo8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6V2lu +Z2RpbmdzIj5KPC9zcGFuPik8bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZu +YnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SeKAmW0gb24gdGhlIGNh +bGwgYnV0IHNvIGZhciBJ4oCZbSB0aGUgb25seSBvbmUuIEnigJlsbCB3YWl0IGEgZmV3IG1vcmUg +bWludXRlcyBhbmQgc2VlIGlmIGFueW9uZSBjb21lcy48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNz +PSJNc29Ob3JtYWwiPiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ +TmV4dCB3ZWVrIChKdWwgMikgdGhlIGNhbGwgaXMgY2FuY2VsbGVkIGJlY2F1c2Ugb2YgdGhlIGhv +bGlkYXkgd2Vlay48bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZuYnNwOzxv +OnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48L286cD48L3A+ +DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCBibHVlIDEuNXB0O3Bh +ZGRpbmc6MGluIDBpbiAwaW4gNC4wcHQiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25l +O2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGlu +Ij4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPkZyb206PC9iPiBCamFybmUgU3Ryb3VzdHJ1cCA8 +YSBocmVmPSJtYWlsdG86Ymphcm5lQHN0cm91c3RydXAuY29tIj4NCiZsdDtiamFybmVAc3Ryb3Vz +dHJ1cC5jb20mZ3Q7PC9hPiA8YnI+DQo8Yj5TZW50OjwvYj4gTW9uZGF5LCBKdW5lIDI1LCAyMDE4 +IDEwOjU2IEFNPGJyPg0KPGI+VG86PC9iPiBHYWJyaWVsIERvcyBSZWlzIDxhIGhyZWY9Im1haWx0 +bzpnZHJAbWljcm9zb2Z0LmNvbSI+Jmx0O2dkckBtaWNyb3NvZnQuY29tJmd0OzwvYT47IEhlcmIg +U3V0dGVyDQo8YSBocmVmPSJtYWlsdG86aHN1dHRlckBtaWNyb3NvZnQuY29tIj4mbHQ7aHN1dHRl +ckBtaWNyb3NvZnQuY29tJmd0OzwvYT48YnI+DQo8Yj5TdWJqZWN0OjwvYj4gR0NtZWV0aW5nIHRv +ZGF5PzxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi +PiZuYnNwOzxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jm5ic3A7PG86cD48 +L286cD48L3A+DQo8L2Rpdj4NCjwvYmxvY2txdW90ZT4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxv +OnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg== + +--_000_CY4PR21MB0118D38886044FEE5813DDFBB84A0CY4PR21MB0118namp_--