Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp621783rwb; Thu, 12 Jan 2023 10:05:31 -0800 (PST) X-Google-Smtp-Source: AMrXdXvIuOJSY2LWbrExT2PtI8geo4HsT82Pm/dPWmHHZ4M/jMQOTMyXavdVfSCN8d7lIzfGyxTx X-Received: by 2002:a17:907:6292:b0:846:56fe:6c68 with SMTP id nd18-20020a170907629200b0084656fe6c68mr75272071ejc.21.1673546731447; Thu, 12 Jan 2023 10:05:31 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1673546731; cv=pass; d=google.com; s=arc-20160816; b=CHyOXLZMEQ0cmcXC2kZkWNM5UAT5PpfgIydbK6eiSBtj9crDQLsGSdwa52JBkTATrj 9hQXyFlFuX/TW9OKVIhi9df0XGvdoJ0hrR9dREZZIwTWnrCLDXUCgewWLtpQ+YjzHxIx XcEYPYNcuj3DA0wUMo8HHqBhaL2D0kC+i/LolSxR1Tzgbh0FTDpONNWQF86uvsrXzZwC b2Bdv+jCreZHk30LySgKEoEARsTEF8RTvb5PtW8ml3Ec0U+7wiIVmS3k/dOp6S0pR504 /o7OPUnBmrBCuJVgIeD8hjko637n8+d8uAnT9OC5yTdv1/ECowBucHMeZC1p2kbnsBc/ NFfQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature; bh=jlodtgNuvgmW9KORma4t9FDtidUQylMfg/Ni/txWLto=; b=1Fa2eCy39gkCi+na9QMs2hkuekka178s5/ZBAd1x7H9NVFf8BUYLak/AX4ZthCKavA yjbcHHlgDNc9cpwGgCfcIvClCDTMkbel2g6e+fglBLx8zL1kvmPrF3ictGxIu7kOiEbF LhZCax22rEiETZ4QZ8tGhNewFTORK2a/f8dsUH5QnmEfTBVqR9JxIn9bFPDBqEg4Xe/z 344GUe2mMGOdW6lERMPqJ5ntWNe44gA1HvKjQPkN0aYlpZTFigrkCJKBFGxUxGOADM+a OyGBGtj5yxmL7lYFH0T2EfOeF36pcRGKrvL4pnqGZwRCrZas4rivxVTiQgWHCc/ZX3ln Yf7Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@csgroup.eu header.s=selector1 header.b="wS8K/EU8"; arc=pass (i=1 spf=pass spfdomain=csgroup.eu dkim=pass dkdomain=csgroup.eu dmarc=pass fromdomain=csgroup.eu); spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=csgroup.eu Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id xc2-20020a170907074200b0084d1310711fsi19335261ejb.782.2023.01.12.10.05.05; Thu, 12 Jan 2023 10:05:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@csgroup.eu header.s=selector1 header.b="wS8K/EU8"; arc=pass (i=1 spf=pass spfdomain=csgroup.eu dkim=pass dkdomain=csgroup.eu dmarc=pass fromdomain=csgroup.eu); spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=csgroup.eu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240129AbjALSEU (ORCPT + 99 others); Thu, 12 Jan 2023 13:04:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239927AbjALSDX (ORCPT ); Thu, 12 Jan 2023 13:03:23 -0500 Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-pr2fra01on2077.outbound.protection.outlook.com [40.107.12.77]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD78B59D1C; Thu, 12 Jan 2023 09:27:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V+r/86ClVSMVyiFIV7yBjzWVQWhR1CBXOR+V7Oo/IVKmVfQbQ0FU6UBowf1qhbyNV6FlIfHR7cc7Ohgcre5jT1qoY4Ev8BZuMotJGXaIyS2nPZqrBrWXbjQoruI/Ld3Rua7QXE1bIGDyJ+ZCJlXKb4jocfkJn4zGoahySIEZvCZgWW9Xj0En9hSZ3B2HuGgAFeYaRqMXAeUfXMGg4xH/PNpMj3JY3UUctzWE679Wbm6cdhMvO9HgUOhFGdaQWWXGj0Yj9j/ExA0vNjuQg9Rn4s1jtBwvjkVNsL06qkoOWLx2fRIYMDbGpISAhU+OybIOqgYBTHjrkGZ5v1caVPKkAw== 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=jlodtgNuvgmW9KORma4t9FDtidUQylMfg/Ni/txWLto=; b=hw7qJwytV9E+gy1/agr4NMCfoG2AHijw/zRPWXyrifh7Nest1zfDkmjm9XRlD0ZLejSeY5NWDNfqq31MoPuHZ5QLnRuqXy15sxf31iS5bWxeLHNCOHCTS5FPWn9IOYDBGFHK+rlo6VeFfUNwXsjVzJD5v78bpI5TpIluBYIGT8G+Ey2Ztn+Zj3QAOzXurV87SbQ6IwjERyE19o1W02CAIdy9ohfLNOYQoPYsRDLeUfjjOwss7uOn7d2r+Yb+Qm6aWIkjhGXiVSO+PpRfY/qVBJwb0G+Zrun8UHvTjGPVP/BrUapFZklR+f9kJVqosj5iP88gs5Fw0aOUyYU+75wMnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csgroup.eu; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jlodtgNuvgmW9KORma4t9FDtidUQylMfg/Ni/txWLto=; b=wS8K/EU8Na4b69FDnwyapvGDOB5xRY8rL3kvBvoM0VafDng3vbu6wDPv8zLqhh5kZ6De0RPjBE1h9q1IexFKn6SjsFWD6r7H4RdTA58AzFzzk4SJ1IcqHc16Ja8fPOVN/ufT20mM4Wp32e6fH8mtJMQV5UNAmU+Q0Tllubm12t7ImdMoBHXMccI6D5Ma1Od92U2xYJeBTUYa8b9KNH7QRpIB5FcN5bnUkFE3Y1MQVQggjzRBgCkctJJT0rik+cPBSaHUG/AgVg1WD0xNtSRu7S4zqUsZaIYMsJzVKHxZaa7qHRRuo+5qE9GBFc2VkGUPXmI88Y6QF3zQLV/OesVn2Q== Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by PAZP264MB2381.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1e5::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.13; Thu, 12 Jan 2023 17:27:08 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::2cfb:d4c:1932:b097]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::2cfb:d4c:1932:b097%7]) with mapi id 15.20.5986.018; Thu, 12 Jan 2023 17:27:08 +0000 From: Christophe Leroy To: "Jason A. Donenfeld" , "linux-kernel@vger.kernel.org" , "patches@lists.linux.dev" , "tglx@linutronix.de" CC: "linux-crypto@vger.kernel.org" , "linux-api@vger.kernel.org" , "x86@kernel.org" , Greg Kroah-Hartman , Adhemerval Zanella Netto , Carlos O'Donell , Florian Weimer , Arnd Bergmann , Jann Horn , Christian Brauner , Samuel Neves Subject: Re: [PATCH v14 7/7] x86: vdso: Wire up getrandom() vDSO implementation Thread-Topic: [PATCH v14 7/7] x86: vdso: Wire up getrandom() vDSO implementation Thread-Index: AQHZHf5789dPgBSvy02JuGCSaf5Gt66bGjQA Date: Thu, 12 Jan 2023 17:27:08 +0000 Message-ID: <2bee307f-182f-c556-d136-8451b490d74e@csgroup.eu> References: <20230101162910.710293-1-Jason@zx2c4.com> <20230101162910.710293-8-Jason@zx2c4.com> In-Reply-To: <20230101162910.710293-8-Jason@zx2c4.com> Accept-Language: fr-FR, en-US Content-Language: fr-FR X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MRZP264MB2988:EE_|PAZP264MB2381:EE_ x-ms-office365-filtering-correlation-id: 414124fa-2775-4c9b-322f-08daf4c23b83 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VnOLx3xABMrFum9cIcjXcyaS6Y7JtA8JhZ6A/U3V4AeCSYnOh/hLLGS1v5V8KtPF/wnOm87q+KuDmO/WpWy/01/andvWwNMuOpOl7TG+7ZsnsKiYgjwM19Vmkt3Z05AkS6UPrypVVeodWRXI3vy7i8ffnyeH9ST4jk58Si64YYEbKCAa7IECXaJGOqGZfxPbo3JjcQxo7J5Npg0QSdA579BzLf0P7+xbRMQwqr7PGPXyYZCVp4efcISJZSKu0xyIyoMdbmnWxmmJK8esOz8bfZmjarUeKbsEIOYtJz4xBULeeyBybxpdLRBP9O6us8fN347030NOkbCOWiqWVLIt18vIFKLHU900PRMELdK6BGK+iRfzlzat3850KjF8qrxO3oRQTNRawO4NdNeZiMWPlRgaR6YeKFwuIISanjAeh8vjVEpnR6SyerTRIO1PkBvxlTTxQoKx28e4Ym4fsTcptP1dnHKMgbYuQQ+tqyNRiAbHLGpZCb+Z0UYkT4zLeDVgBbWNZzIyyQ6NDmS2S+rDxbx46MlWyFYgpa4D7IDV8/Hsvv6D2VMjDIkkH6323ON/bJNsg3jP/pdcI0UVAEF9SSBmGzF1SDD+JXpZw9EO1E7I9GK50W8RE1qTGcCL74aO0cyVHX4gQq/E/cNDMprwHpHEGbsatBymR4a/QnBQH9EVH3BCLSMd24xK7pH4ahUpN7SvMNUw47dBmyJUMZKb5TcbdUXMcFovU6A+f0Elb92ACtRGSvg7LyJQf9W5Yr8SQYwQwrmvPgbDTTMOIQMzzQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(366004)(396003)(346002)(39860400002)(136003)(451199015)(478600001)(6486002)(66574015)(41300700001)(38070700005)(38100700002)(6512007)(71200400001)(86362001)(31696002)(316002)(54906003)(110136005)(2616005)(66556008)(66946007)(26005)(186003)(76116006)(66476007)(4326008)(36756003)(5660300002)(7416002)(6506007)(2906002)(31686004)(30864003)(83380400001)(44832011)(66446008)(64756008)(8676002)(91956017)(8936002)(122000001)(43740500002)(45980500001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QURsL0lnWVNxSlNxaUEyd1Z5VnRUdEQ4ZzNqN25BdzdLR3drLzRJWjYxMGRV?= =?utf-8?B?OEZOY1VwODZEb0ltTUVValZPL3VFVGhUNlQ1K1JseDNGYkYvbFo1Q2tXam02?= =?utf-8?B?YmJxbnY2L09PNlFOWGdhVmFjbi82WnZpOTQ4TmpjeGVrUU1xdE9zUGdraWd5?= =?utf-8?B?aXZCMHpmdDFMSWFqbU11VnVUSzJFYVF2RVZJTE9oc3NQZjROUVZKSW1ScjBx?= =?utf-8?B?WGxFdlFISHpGYU93bGJsc081bkI1WXZCMEFCZjVQek56WkhYMmRoTmt0bXNl?= =?utf-8?B?MzRicHNKdzhmaUhVQ1Yvb2xqaXQyaEtTcW5oRFZpaUl1QmY2K2p3RlhRQTZ0?= =?utf-8?B?ZityWE8vYlZMbjR0bS9GTEZ3OWRVekc5d2tvQlhJMTR3U1U4UlJ3cU9QQzNr?= =?utf-8?B?UmtROTUrQTAveXFtY0dENmFlaDFxQ1Z0NERIYjlYaHFlK0l6NFJGd3Z6SjF3?= =?utf-8?B?U2phenZXRS9MTEhWOVBocXg0VEk0ckUzMGZRUlkycWg4eFYrQnQ1Rm1NTm9E?= =?utf-8?B?QnNyaC9COFA3dVg1WHZtY0hneXg1c1dFS3lNMXNwTUNNNm9QdXN5NmdiQVN3?= =?utf-8?B?cks0ZExDWit2cXZTeG40Y3pEWkJIVlJtSjRrSkROUDlUd0cya0FGTUZHYU02?= =?utf-8?B?NnZkSkRRVlZ0dmNaYTF4d3M2V1dxRWVwTUxuc2lFaUFwTXZXbFk5bGY2Qnd1?= =?utf-8?B?WGt5UUEyTjFwelBmdFNzTkFDNkx1VHVyUjVrelMzYlZaSlV3MGZGR2NHQWxi?= =?utf-8?B?MFVvNC94b3RueW40OTJPWUMxaVM0ZFE3UmZrZVF4RkxWZ05xMk1NWkQrVGF3?= =?utf-8?B?a0xYNDB5NlJaN1dxMEZMc3hhM1Z3aFhUVU9HazczQUpBODYxOHNVRkdsR01V?= =?utf-8?B?TDdYem5ZMlZWZU1uWDluM0RGQm5qTEtNM2NHelB5ckFnbmJjWmg1MGxKaTgv?= =?utf-8?B?YVYyLzJCOGw2VlJMdUNmUnl3aTlRS21Sb0VCb1lvRWx5RXY4ZmhmRHFTbFRK?= =?utf-8?B?YjJQOVZ4b0U4U3FDZHBYVjhtM3JHb3lTS283MGJQVVZON09PNkpTeWRFd0Yx?= =?utf-8?B?UktRZEJGd0puOUsyTWhCeVJoblIvTGkwc094N2tZNXVGcktLeEdUelVXaWZu?= =?utf-8?B?aUFMWHdZYjJ4K0Y3T1ZkVWp4WDJoZllMUGJJZnlwZm1QRmNVRVpNWnRQWkRC?= =?utf-8?B?ZWkxWEVBekc2L0pkSXdVMHZLR1dyd1Jla0VieENzN2xlYjNzZEdvRkdLRU50?= =?utf-8?B?UVZpMlNwNXZleE1ua0wzMnBBMnk3eXJOaVJyWmgwVmVoZWZObEErY2xwSU1C?= =?utf-8?B?a1YyKzExRWtxNXhETWNsZ3o3ajBuY0Q5RUZvUXByL3VURndiKzl2b1JxSHlI?= =?utf-8?B?d3ZLY0pHL1BlWXpnZnpCYmJUK091Rm8wWlVBNlBLeGluSEViL2lMUXhneTBv?= =?utf-8?B?NHk4WEpqeWNLam5BdmRxcHlSb2M5VngvenZxUS91ZGN0NUtIQm9Vb3Z4M1ZS?= =?utf-8?B?YVVCVnkyd0dQd2V5akZMN0l2YnRJTXozQTNIbStRMDN6OWtmQ3JWQnhWQktK?= =?utf-8?B?UjdSZEZzZnZISHJXK3FIVWVVcFJpNkg2elovekJIUFF5SC9XbVBHd2VSdUZl?= =?utf-8?B?KzNLeWI3azVjN1hvckM0OHRQOUFvZndUc1ExdFYzTkl2a0RyVEZBb0k3SUhU?= =?utf-8?B?OWI0a0ExSlhZdGpxV3lSNFVkMkZIak1URUhNd0xjUW1JZ1VqVWlpQVNBRTR1?= =?utf-8?B?U1JPZGFhM05LZGpnSy8vc0FxZzNBM2pVOGU2SEZqbnFwTkRmZjZwV2lwYlcz?= =?utf-8?B?MUhTWWpXT0xkVWVWRmFtNFlMcGVVajB3Q2dxM0p6T3R0a2dLekd4SDN6K3U4?= =?utf-8?B?ejdRL1VvWG1pTUg1amVpYjdrVURhN05ZdnRvQVZRVG90OU1ORWtRZkYyVG5G?= =?utf-8?B?ckxpVFdjNVBRRkpWekpqZS9BM1l5eE1mMWFWOVQ1d0VoUFFvc0dZUW9nKzc0?= =?utf-8?B?ckxYMkNuUm5uQVJadFd5T05BaVJmTnJHbE1vL3FEMkdXVlJpa0lNTE1wWGw2?= =?utf-8?B?a1FEMEVmR2xucm9hbnJuSUZTRHlKbTlqZzJpWTd6d1o1bWdiRWQvWlpLS2or?= =?utf-8?B?TTAzT3lLQ2t0NDlYQ3lGUk11K21Ea2RLOFRmWWlobWg2VVBCM0NhNjNmVk4w?= =?utf-8?B?amc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <9C19DCD58335914897E12557D9E6724B@FRAP264.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 414124fa-2775-4c9b-322f-08daf4c23b83 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jan 2023 17:27:08.5008 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GPLUu3Wl0a6tzXIe6r+p/1SMfc45gwavVwbbb+d/KsS5VQ3nLuIHnJcByOLlhjAdG8RZnsvIrO6Nh08OOKrs9JtLV1DN/I1doudZSMTb068= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAZP264MB2381 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org DQoNCkxlIDAxLzAxLzIwMjMgw6AgMTc6MjksIEphc29uIEEuIERvbmVuZmVsZCBhIMOpY3JpdMKg Og0KPiBIb29rIHVwIHRoZSBnZW5lcmljIHZEU08gaW1wbGVtZW50YXRpb24gdG8gdGhlIHg4NiB2 RFNPIGRhdGEgcGFnZS4gU2luY2UNCj4gdGhlIGV4aXN0aW5nIHZEU08gaW5mcmFzdHJ1Y3R1cmUg aXMgaGVhdmlseSBiYXNlZCBvbiB0aGUgdGltZWtlZXBpbmcNCj4gZnVuY3Rpb25hbGl0eSwgd2hp Y2ggd29ya3Mgb3ZlciBhcnJheXMgb2YgYmFzZXMsIGEgbmV3IG1hY3JvIGlzDQo+IGludHJvZHVj ZWQgZm9yIHZ2YXJzIHRoYXQgYXJlIG5vdCBhcnJheXMuDQo+IA0KPiBUaGUgdkRTTyBmdW5jdGlv biByZXF1aXJlcyBhIENoYUNoYTIwIGltcGxlbWVudGF0aW9uIHRoYXQgZG9lcyBub3Qgd3JpdGUN Cj4gdG8gdGhlIHN0YWNrLCB5ZXQgY2FuIHN0aWxsIGRvIGFuIGVudGlyZSBDaGFDaGEyMCBwZXJt dXRhdGlvbiwgc28NCj4gcHJvdmlkZSB0aGlzIHVzaW5nIFNTRTIsIHNpbmNlIHRoaXMgaXMgdXNl cmxhbmQgY29kZSB0aGF0IG11c3Qgd29yayBvbg0KPiBhbGwgeDg2LTY0IHByb2Nlc3NvcnMuIFRo ZXJlJ3MgYSBzaW1wbGUgdGVzdCBmb3IgdGhpcyBjb2RlIGFzIHdlbGwuDQoNCkFzIGZhciBhcyBJ IHVuZGVyc3RhbmQgdGhlIHRlc3QgaXMgbm90IGRlcGVuZGVudCBvbiB0aGUgYXJjaGl0ZWN0dXJl LCANCmNhbiBpdCBiZSBhIHNlcGFyYXRlIHBhdGNoID8NCg0KQWxzbywgYXMgdGhlIGNoYWNoYSBp bXBsZW1lbnRhdGlvbiBpcyBzdGFuZGFsb25lIGFuZCBjYW4gYmUgdGVzdGVkIGJ5IA0KdGhlIGFi b3ZlIG1lbnRpb25uZWQgc2ltcGxlIHRlc3QsIGNhbiBpdCBiZSBhIHNlcGFyYXRlIHBhdGNoIGFz IHdlbGwgPw0KDQpUaGVuIHRoZSBsYXN0IHBhdGNoIG9ubHkgaGFzIHRoZSBnbHVlIHRvIHdpcmUt dXAgZ2V0cmFuZG9tIFZEU08gdG8gdGhlIA0KYXJjaGl0ZWN0dXJlLCBhbmQgY2FuIGJlIHVzZWQg YXMgYSByZWZlcmVuY2UgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMuDQoNCj4gDQo+IFJldmlld2Vk LWJ5OiBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+ICMgZm9yIHZnZXRyYW5kb20tY2hh Y2hhLlMNCj4gU2lnbmVkLW9mZi1ieTogSmFzb24gQS4gRG9uZW5mZWxkIDxKYXNvbkB6eDJjNC5j b20+DQo+IC0tLQ0KPiAgIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArDQo+ICAgYXJjaC94ODYvZW50cnkvdmRzby9NYWtlZmlsZSAgICAgICAgICAg ICAgICAgIHwgICAzICstDQo+ICAgYXJjaC94ODYvZW50cnkvdmRzby92ZHNvLmxkcy5TICAgICAg ICAgICAgICAgIHwgICAyICsNCj4gICBhcmNoL3g4Ni9lbnRyeS92ZHNvL3ZnZXRyYW5kb20tY2hh Y2hhLlMgICAgICAgfCAxNzggKysrKysrKysrKysrKysrKysrDQo+ICAgYXJjaC94ODYvZW50cnkv dmRzby92Z2V0cmFuZG9tLmMgICAgICAgICAgICAgIHwgIDE3ICsrDQo+ICAgYXJjaC94ODYvaW5j bHVkZS9hc20vdmRzby9nZXRyYW5kb20uaCAgICAgICAgIHwgIDU1ICsrKysrKw0KPiAgIGFyY2gv eDg2L2luY2x1ZGUvYXNtL3Zkc28vdnN5c2NhbGwuaCAgICAgICAgICB8ICAgMiArDQo+ICAgYXJj aC94ODYvaW5jbHVkZS9hc20vdnZhci5oICAgICAgICAgICAgICAgICAgIHwgIDE2ICsrDQo+ICAg dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdkRTTy8uZ2l0aWdub3JlICAgICAgIHwgICAxICsNCj4g ICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92RFNPL01ha2VmaWxlICAgICAgICAgfCAgIDkgKw0K PiAgIC4uLi90ZXN0aW5nL3NlbGZ0ZXN0cy92RFNPL3Zkc29fdGVzdF9jaGFjaGEuYyB8ICA0MyAr KysrKw0KPiAgIDExIGZpbGVzIGNoYW5nZWQsIDMyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L2VudHJ5L3Zkc28vdmdldHJhbmRv bS1jaGFjaGEuUw0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni9lbnRyeS92ZHNvL3Zn ZXRyYW5kb20uYw0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni9pbmNsdWRlL2FzbS92 ZHNvL2dldHJhbmRvbS5oDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL3ZEU08vdmRzb190ZXN0X2NoYWNoYS5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvYXJjaC94 ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWcNCj4gaW5kZXggMzYwNDA3NGE4NzhiLi5lZDY4 OWQ4MzEzNjIgMTAwNjQ0DQo+IC0tLSBhL2FyY2gveDg2L0tjb25maWcNCj4gKysrIGIvYXJjaC94 ODYvS2NvbmZpZw0KPiBAQCAtMjcyLDYgKzI3Miw3IEBAIGNvbmZpZyBYODYNCj4gICAJc2VsZWN0 IEhBVkVfVU5TVEFCTEVfU0NIRURfQ0xPQ0sNCj4gICAJc2VsZWN0IEhBVkVfVVNFUl9SRVRVUk5f Tk9USUZJRVINCj4gICAJc2VsZWN0IEhBVkVfR0VORVJJQ19WRFNPDQo+ICsJc2VsZWN0IFZEU09f R0VUUkFORE9NCQkJaWYgWDg2XzY0DQo+ICAgCXNlbGVjdCBIT1RQTFVHX1NNVAkJCWlmIFNNUA0K PiAgIAlzZWxlY3QgSVJRX0ZPUkNFRF9USFJFQURJTkcNCj4gICAJc2VsZWN0IE5FRURfUEVSX0NQ VV9FTUJFRF9GSVJTVF9DSFVOSw0KPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvdmRzby9N YWtlZmlsZSBiL2FyY2gveDg2L2VudHJ5L3Zkc28vTWFrZWZpbGUNCj4gaW5kZXggODM4NjEzYWMx NWI4Li4zOTc5YmI0YTYxYWUgMTAwNjQ0DQo+IC0tLSBhL2FyY2gveDg2L2VudHJ5L3Zkc28vTWFr ZWZpbGUNCj4gKysrIGIvYXJjaC94ODYvZW50cnkvdmRzby9NYWtlZmlsZQ0KPiBAQCAtMjcsNyAr MjcsNyBAQCBWRFNPMzItJChDT05GSUdfWDg2XzMyKQkJOj0geQ0KPiAgIFZEU08zMi0kKENPTkZJ R19JQTMyX0VNVUxBVElPTikJOj0geQ0KPiAgIA0KPiAgICMgZmlsZXMgdG8gbGluayBpbnRvIHRo ZSB2ZHNvDQo+IC12b2Jqcy15IDo9IHZkc28tbm90ZS5vIHZjbG9ja19nZXR0aW1lLm8gdmdldGNw dS5vDQo+ICt2b2Jqcy15IDo9IHZkc28tbm90ZS5vIHZjbG9ja19nZXR0aW1lLm8gdmdldGNwdS5v IHZnZXRyYW5kb20ubyB2Z2V0cmFuZG9tLWNoYWNoYS5vDQo+ICAgdm9ianMzMi15IDo9IHZkc28z Mi9ub3RlLm8gdmRzbzMyL3N5c3RlbV9jYWxsLm8gdmRzbzMyL3NpZ3JldHVybi5vDQo+ICAgdm9i anMzMi15ICs9IHZkc28zMi92Y2xvY2tfZ2V0dGltZS5vDQo+ICAgdm9ianMtJChDT05GSUdfWDg2 X1NHWCkJKz0gdnNneC5vDQo+IEBAIC0xMDUsNiArMTA1LDcgQEAgQ0ZMQUdTX1JFTU9WRV92Y2xv Y2tfZ2V0dGltZS5vID0gLXBnDQo+ICAgQ0ZMQUdTX1JFTU9WRV92ZHNvMzIvdmNsb2NrX2dldHRp bWUubyA9IC1wZw0KPiAgIENGTEFHU19SRU1PVkVfdmdldGNwdS5vID0gLXBnDQo+ICAgQ0ZMQUdT X1JFTU9WRV92c2d4Lm8gPSAtcGcNCj4gK0NGTEFHU19SRU1PVkVfdmdldHJhbmRvbS5vID0gLXBn DQo+ICAgDQo+ICAgIw0KPiAgICMgWDMyIHByb2Nlc3NlcyB1c2UgeDMyIHZEU08gdG8gYWNjZXNz IDY0Yml0IGtlcm5lbCBkYXRhLg0KPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvdmRzby92 ZHNvLmxkcy5TIGIvYXJjaC94ODYvZW50cnkvdmRzby92ZHNvLmxkcy5TDQo+IGluZGV4IGU4YzYw YWU3YTdjOC4uMGJhYjVmNGFmNmQxIDEwMDY0NA0KPiAtLS0gYS9hcmNoL3g4Ni9lbnRyeS92ZHNv L3Zkc28ubGRzLlMNCj4gKysrIGIvYXJjaC94ODYvZW50cnkvdmRzby92ZHNvLmxkcy5TDQo+IEBA IC0zMCw2ICszMCw4IEBAIFZFUlNJT04gew0KPiAgICNpZmRlZiBDT05GSUdfWDg2X1NHWA0KPiAg IAkJX192ZHNvX3NneF9lbnRlcl9lbmNsYXZlOw0KPiAgICNlbmRpZg0KPiArCQlnZXRyYW5kb207 DQo+ICsJCV9fdmRzb19nZXRyYW5kb207DQo+ICAgCWxvY2FsOiAqOw0KPiAgIAl9Ow0KPiAgIH0N Cj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2VudHJ5L3Zkc28vdmdldHJhbmRvbS1jaGFjaGEuUyBi L2FyY2gveDg2L2VudHJ5L3Zkc28vdmdldHJhbmRvbS1jaGFjaGEuUw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQ3OWUyYmQ5NzU5OA0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2FyY2gveDg2L2VudHJ5L3Zkc28vdmdldHJhbmRvbS1jaGFjaGEuUw0KPiBA QCAtMCwwICsxLDE3OCBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAN Cj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgSmFzb24gQS4gRG9uZW5mZWxkIDxKYXNv bkB6eDJjNC5jb20+LiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KPiArICovDQo+ICsNCj4gKyNpbmNs dWRlIDxsaW51eC9saW5rYWdlLmg+DQo+ICsjaW5jbHVkZSA8YXNtL2ZyYW1lLmg+DQo+ICsNCj4g Ky5zZWN0aW9uCS5yb2RhdGEsICJhIg0KPiArLmFsaWduIDE2DQo+ICtDT05TVEFOVFM6CS5vY3Rh IDB4NmIyMDY1NzQ3OTYyMmQzMjMzMjA2NDZlNjE3MDc4NjUNCj4gKy50ZXh0DQo+ICsNCj4gKy8q DQo+ICsgKiBWZXJ5IGJhc2ljIFNTRTIgaW1wbGVtZW50YXRpb24gb2YgQ2hhQ2hhMjAuIFByb2R1 Y2VzIGEgZ2l2ZW4gcG9zaXRpdmUgbnVtYmVyDQo+ICsgKiBvZiBibG9ja3Mgb2Ygb3V0cHV0IHdp dGggYSBub25jZSBvZiAwLCB0YWtpbmcgYW4gaW5wdXQga2V5IGFuZCA4LWJ5dGUNCj4gKyAqIGNv dW50ZXIuIEltcG9ydGFudGx5IGRvZXMgbm90IHNwaWxsIHRvIHRoZSBzdGFjay4gSXRzIGFyZ3Vt ZW50cyBhcmU6DQo+ICsgKg0KPiArICoJcmRpOiBvdXRwdXQgYnl0ZXMNCj4gKyAqCXJzaTogMzIt Ynl0ZSBrZXkgaW5wdXQNCj4gKyAqCXJkeDogOC1ieXRlIGNvdW50ZXIgaW5wdXQvb3V0cHV0DQoN CldoeSBhIDgtYnl0ZSBjb3VudGVyID8gQWNjb3JkaW5nIHRvIFJGQyA3NTM5LCBjaGFjaGEyMCB0 YWtlczoNCg0KICAgIFRoZSBpbnB1dHMgdG8gQ2hhQ2hhMjAgYXJlOg0KDQogICAgbyAgQSAyNTYt Yml0IGtleSwgdHJlYXRlZCBhcyBhIGNvbmNhdGVuYXRpb24gb2YgZWlnaHQgMzItYml0IGxpdHRs ZS0NCiAgICAgICBlbmRpYW4gaW50ZWdlcnMuDQoNCiAgICBvICBBIDk2LWJpdCBub25jZSwgdHJl YXRlZCBhcyBhIGNvbmNhdGVuYXRpb24gb2YgdGhyZWUgMzItYml0IGxpdHRsZS0NCiAgICAgICBl bmRpYW4gaW50ZWdlcnMuDQoNCiAgICBvICBBIDMyLWJpdCBibG9jayBjb3VudCBwYXJhbWV0ZXIs IHRyZWF0ZWQgYXMgYSAzMi1iaXQgbGl0dGxlLWVuZGlhbg0KICAgICAgIGludGVnZXIuDQoNCg0K QXJlIHlvdSBtaXhpbmcgdXAgdGhlIHVwcGVyIHBhcnQgb2YgdGhlIGNvdW50ZXIgd2l0aCB0aGUg bm9uY2UgPyBJbiB0aGF0IA0KY2FzZSB5b3UgY2FuJ3Qgc2F5IHlvdSB1c2UgYSAwIG5vbmNlLCBj YW4geW91ID8NCg0KDQo+ICsgKglyY3g6IG51bWJlciBvZiA2NC1ieXRlIGJsb2NrcyB0byB3cml0 ZSB0byBvdXRwdXQNCj4gKyAqLw0KPiArU1lNX0ZVTkNfU1RBUlQoX19hcmNoX2NoYWNoYTIwX2Js b2Nrc19ub3N0YWNrKQ0KPiArDQo+ICsuc2V0CW91dHB1dCwJCSVyZGkNCj4gKy5zZXQJa2V5LAkJ JXJzaQ0KPiArLnNldAljb3VudGVyLAklcmR4DQo+ICsuc2V0CW5ibG9ja3MsCSVyY3gNCj4gKy5z ZXQJaSwJCSVhbA0KPiArLyogeG1tIHJlZ2lzdGVycyBhcmUgKm5vdCogY2FsbGVlLXNhdmUuICov DQo+ICsuc2V0CXN0YXRlMCwJCSV4bW0wDQo+ICsuc2V0CXN0YXRlMSwJCSV4bW0xDQo+ICsuc2V0 CXN0YXRlMiwJCSV4bW0yDQo+ICsuc2V0CXN0YXRlMywJCSV4bW0zDQo+ICsuc2V0CWNvcHkwLAkJ JXhtbTQNCj4gKy5zZXQJY29weTEsCQkleG1tNQ0KPiArLnNldAljb3B5MiwJCSV4bW02DQo+ICsu c2V0CWNvcHkzLAkJJXhtbTcNCj4gKy5zZXQJdGVtcCwJCSV4bW04DQo+ICsuc2V0CW9uZSwJCSV4 bW05DQo+ICsNCj4gKwkvKiBjb3B5MCA9ICJleHBhbmQgMzItYnl0ZSBrIiAqLw0KPiArCW1vdmFw cwkJQ09OU1RBTlRTKCVyaXApLGNvcHkwDQo+ICsJLyogY29weTEsY29weTIgPSBrZXkgKi8NCj4g Kwltb3Z1cHMJCTB4MDAoa2V5KSxjb3B5MQ0KPiArCW1vdnVwcwkJMHgxMChrZXkpLGNvcHkyDQo+ ICsJLyogY29weTMgPSBjb3VudGVyIHx8IHplcm8gbm9uY2UgKi8NCj4gKwltb3ZxCQkweDAwKGNv dW50ZXIpLGNvcHkzDQo+ICsJLyogb25lID0gMSB8fCAwICovDQo+ICsJbW92cQkJJDEsJXJheA0K PiArCW1vdnEJCSVyYXgsb25lDQo+ICsNCj4gKy5MYmxvY2s6DQo+ICsJLyogc3RhdGUwLHN0YXRl MSxzdGF0ZTIsc3RhdGUzID0gY29weTAsY29weTEsY29weTIsY29weTMgKi8NCj4gKwltb3ZkcWEJ CWNvcHkwLHN0YXRlMA0KPiArCW1vdmRxYQkJY29weTEsc3RhdGUxDQo+ICsJbW92ZHFhCQljb3B5 MixzdGF0ZTINCj4gKwltb3ZkcWEJCWNvcHkzLHN0YXRlMw0KPiArDQo+ICsJbW92YgkJJDEwLGkN Cj4gKy5McGVybXV0ZToNCj4gKwkvKiBzdGF0ZTAgKz0gc3RhdGUxLCBzdGF0ZTMgPSByb3RsMzIo c3RhdGUzIF4gc3RhdGUwLCAxNikgKi8NCj4gKwlwYWRkZAkJc3RhdGUxLHN0YXRlMA0KPiArCXB4 b3IJCXN0YXRlMCxzdGF0ZTMNCj4gKwltb3ZkcWEJCXN0YXRlMyx0ZW1wDQo+ICsJcHNsbGQJCSQx Nix0ZW1wDQo+ICsJcHNybGQJCSQxNixzdGF0ZTMNCj4gKwlwb3IJCXRlbXAsc3RhdGUzDQoNClRo ZXJlIGlzIGEgbG90IG9mIHNpbWlsYXJpdGllcyBiZXR3ZWVuIGFsbCB0aGUgYmxvY2tzLCBjYW4g eW91IHVzZSBHQVMgDQptYWNyb3MgdG8gYXZvaWQgcmVwZXRpdGlvbnMgPw0KDQoNCj4gKw0KPiAr CS8qIHN0YXRlMiArPSBzdGF0ZTMsIHN0YXRlMSA9IHJvdGwzMihzdGF0ZTEgXiBzdGF0ZTIsIDEy KSAqLw0KPiArCXBhZGRkCQlzdGF0ZTMsc3RhdGUyDQo+ICsJcHhvcgkJc3RhdGUyLHN0YXRlMQ0K PiArCW1vdmRxYQkJc3RhdGUxLHRlbXANCj4gKwlwc2xsZAkJJDEyLHRlbXANCj4gKwlwc3JsZAkJ JDIwLHN0YXRlMQ0KPiArCXBvcgkJdGVtcCxzdGF0ZTENCj4gKw0KPiArCS8qIHN0YXRlMCArPSBz dGF0ZTEsIHN0YXRlMyA9IHJvdGwzMihzdGF0ZTMgXiBzdGF0ZTAsIDgpICovDQo+ICsJcGFkZGQJ CXN0YXRlMSxzdGF0ZTANCj4gKwlweG9yCQlzdGF0ZTAsc3RhdGUzDQo+ICsJbW92ZHFhCQlzdGF0 ZTMsdGVtcA0KPiArCXBzbGxkCQkkOCx0ZW1wDQo+ICsJcHNybGQJCSQyNCxzdGF0ZTMNCj4gKwlw b3IJCXRlbXAsc3RhdGUzDQo+ICsNCj4gKwkvKiBzdGF0ZTIgKz0gc3RhdGUzLCBzdGF0ZTEgPSBy b3RsMzIoc3RhdGUxIF4gc3RhdGUyLCA3KSAqLw0KPiArCXBhZGRkCQlzdGF0ZTMsc3RhdGUyDQo+ ICsJcHhvcgkJc3RhdGUyLHN0YXRlMQ0KPiArCW1vdmRxYQkJc3RhdGUxLHRlbXANCj4gKwlwc2xs ZAkJJDcsdGVtcA0KPiArCXBzcmxkCQkkMjUsc3RhdGUxDQo+ICsJcG9yCQl0ZW1wLHN0YXRlMQ0K PiArDQo+ICsJLyogc3RhdGUxWzAsMSwyLDNdID0gc3RhdGUxWzEsMiwzLDBdICovDQo+ICsJcHNo dWZkCQkkMHgzOSxzdGF0ZTEsc3RhdGUxDQo+ICsJLyogc3RhdGUyWzAsMSwyLDNdID0gc3RhdGUy WzIsMywwLDFdICovDQo+ICsJcHNodWZkCQkkMHg0ZSxzdGF0ZTIsc3RhdGUyDQo+ICsJLyogc3Rh dGUzWzAsMSwyLDNdID0gc3RhdGUzWzMsMCwxLDJdICovDQo+ICsJcHNodWZkCQkkMHg5MyxzdGF0 ZTMsc3RhdGUzDQo+ICsNCj4gKwkvKiBzdGF0ZTAgKz0gc3RhdGUxLCBzdGF0ZTMgPSByb3RsMzIo c3RhdGUzIF4gc3RhdGUwLCAxNikgKi8NCj4gKwlwYWRkZAkJc3RhdGUxLHN0YXRlMA0KPiArCXB4 b3IJCXN0YXRlMCxzdGF0ZTMNCj4gKwltb3ZkcWEJCXN0YXRlMyx0ZW1wDQo+ICsJcHNsbGQJCSQx Nix0ZW1wDQo+ICsJcHNybGQJCSQxNixzdGF0ZTMNCj4gKwlwb3IJCXRlbXAsc3RhdGUzDQo+ICsN Cj4gKwkvKiBzdGF0ZTIgKz0gc3RhdGUzLCBzdGF0ZTEgPSByb3RsMzIoc3RhdGUxIF4gc3RhdGUy LCAxMikgKi8NCj4gKwlwYWRkZAkJc3RhdGUzLHN0YXRlMg0KPiArCXB4b3IJCXN0YXRlMixzdGF0 ZTENCj4gKwltb3ZkcWEJCXN0YXRlMSx0ZW1wDQo+ICsJcHNsbGQJCSQxMix0ZW1wDQo+ICsJcHNy bGQJCSQyMCxzdGF0ZTENCj4gKwlwb3IJCXRlbXAsc3RhdGUxDQo+ICsNCj4gKwkvKiBzdGF0ZTAg Kz0gc3RhdGUxLCBzdGF0ZTMgPSByb3RsMzIoc3RhdGUzIF4gc3RhdGUwLCA4KSAqLw0KPiArCXBh ZGRkCQlzdGF0ZTEsc3RhdGUwDQo+ICsJcHhvcgkJc3RhdGUwLHN0YXRlMw0KPiArCW1vdmRxYQkJ c3RhdGUzLHRlbXANCj4gKwlwc2xsZAkJJDgsdGVtcA0KPiArCXBzcmxkCQkkMjQsc3RhdGUzDQo+ ICsJcG9yCQl0ZW1wLHN0YXRlMw0KPiArDQo+ICsJLyogc3RhdGUyICs9IHN0YXRlMywgc3RhdGUx ID0gcm90bDMyKHN0YXRlMSBeIHN0YXRlMiwgNykgKi8NCj4gKwlwYWRkZAkJc3RhdGUzLHN0YXRl Mg0KPiArCXB4b3IJCXN0YXRlMixzdGF0ZTENCj4gKwltb3ZkcWEJCXN0YXRlMSx0ZW1wDQo+ICsJ cHNsbGQJCSQ3LHRlbXANCj4gKwlwc3JsZAkJJDI1LHN0YXRlMQ0KPiArCXBvcgkJdGVtcCxzdGF0 ZTENCj4gKw0KPiArCS8qIHN0YXRlMVswLDEsMiwzXSA9IHN0YXRlMVszLDAsMSwyXSAqLw0KPiAr CXBzaHVmZAkJJDB4OTMsc3RhdGUxLHN0YXRlMQ0KPiArCS8qIHN0YXRlMlswLDEsMiwzXSA9IHN0 YXRlMlsyLDMsMCwxXSAqLw0KPiArCXBzaHVmZAkJJDB4NGUsc3RhdGUyLHN0YXRlMg0KPiArCS8q IHN0YXRlM1swLDEsMiwzXSA9IHN0YXRlM1sxLDIsMywwXSAqLw0KPiArCXBzaHVmZAkJJDB4Mzks c3RhdGUzLHN0YXRlMw0KPiArDQo+ICsJZGVjYgkJaQ0KPiArCWpuegkJLkxwZXJtdXRlDQo+ICsN Cj4gKwkvKiBvdXRwdXQwID0gc3RhdGUwICsgY29weTAgKi8NCj4gKwlwYWRkZAkJY29weTAsc3Rh dGUwDQo+ICsJbW92dXBzCQlzdGF0ZTAsMHgwMChvdXRwdXQpDQo+ICsJLyogb3V0cHV0MSA9IHN0 YXRlMSArIGNvcHkxICovDQo+ICsJcGFkZGQJCWNvcHkxLHN0YXRlMQ0KPiArCW1vdnVwcwkJc3Rh dGUxLDB4MTAob3V0cHV0KQ0KPiArCS8qIG91dHB1dDIgPSBzdGF0ZTIgKyBjb3B5MiAqLw0KPiAr CXBhZGRkCQljb3B5MixzdGF0ZTINCj4gKwltb3Z1cHMJCXN0YXRlMiwweDIwKG91dHB1dCkNCj4g KwkvKiBvdXRwdXQzID0gc3RhdGUzICsgY29weTMgKi8NCj4gKwlwYWRkZAkJY29weTMsc3RhdGUz DQo+ICsJbW92dXBzCQlzdGF0ZTMsMHgzMChvdXRwdXQpDQo+ICsNCj4gKwkvKiArK2NvcHkzLmNv dW50ZXIgKi8NCj4gKwlwYWRkcQkJb25lLGNvcHkzDQo+ICsNCj4gKwkvKiBvdXRwdXQgKz0gNjQs IC0tbmJsb2NrcyAqLw0KPiArCWFkZHEJCSQ2NCxvdXRwdXQNCj4gKwlkZWNxCQluYmxvY2tzDQo+ ICsJam56CQkuTGJsb2NrDQo+ICsNCj4gKwkvKiBjb3VudGVyID0gY29weTMuY291bnRlciAqLw0K PiArCW1vdnEJCWNvcHkzLDB4MDAoY291bnRlcikNCj4gKw0KPiArCS8qIFplcm8gb3V0IHRoZSBw b3RlbnRpYWxseSBzZW5zaXRpdmUgcmVncywgaW4gY2FzZSBub3RoaW5nIHVzZXMgdGhlc2UgYWdh aW4uICovDQo+ICsJcHhvcgkJc3RhdGUwLHN0YXRlMA0KPiArCXB4b3IJCXN0YXRlMSxzdGF0ZTEN Cj4gKwlweG9yCQlzdGF0ZTIsc3RhdGUyDQo+ICsJcHhvcgkJc3RhdGUzLHN0YXRlMw0KPiArCXB4 b3IJCWNvcHkxLGNvcHkxDQo+ICsJcHhvcgkJY29weTIsY29weTINCj4gKwlweG9yCQl0ZW1wLHRl bXANCj4gKw0KPiArCXJldA0KPiArU1lNX0ZVTkNfRU5EKF9fYXJjaF9jaGFjaGEyMF9ibG9ja3Nf bm9zdGFjaykNCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2VudHJ5L3Zkc28vdmdldHJhbmRvbS5j IGIvYXJjaC94ODYvZW50cnkvdmRzby92Z2V0cmFuZG9tLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi42MDQ1ZGVkNWRhOTANCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9hcmNoL3g4Ni9lbnRyeS92ZHNvL3ZnZXRyYW5kb20uYw0KPiBAQCAtMCwwICsxLDE3 IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ICsvKg0K PiArICogQ29weXJpZ2h0IChDKSAyMDIyIEphc29uIEEuIERvbmVuZmVsZCA8SmFzb25AengyYzQu Y29tPi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCj4gKyAqLw0KPiArI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+DQo+ICsNCj4gKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9saWIvdmRzby9nZXRyYW5kb20u YyINCj4gKw0KPiArc3NpemVfdCBfX3Zkc29fZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgc2l6ZV90 IGxlbiwgdW5zaWduZWQgaW50IGZsYWdzLCB2b2lkICpzdGF0ZSk7DQo+ICsNCj4gK3NzaXplX3Qg X192ZHNvX2dldHJhbmRvbSh2b2lkICpidWZmZXIsIHNpemVfdCBsZW4sIHVuc2lnbmVkIGludCBm bGFncywgdm9pZCAqc3RhdGUpDQo+ICt7DQo+ICsJcmV0dXJuIF9fY3Zkc29fZ2V0cmFuZG9tKGJ1 ZmZlciwgbGVuLCBmbGFncywgc3RhdGUpOw0KPiArfQ0KPiArDQo+ICtzc2l6ZV90IGdldHJhbmRv bSh2b2lkICosIHNpemVfdCwgdW5zaWduZWQgaW50LCB2b2lkICopDQo+ICsJX19hdHRyaWJ1dGVf Xygod2VhaywgYWxpYXMoIl9fdmRzb19nZXRyYW5kb20iKSkpOw0KPiBkaWZmIC0tZ2l0IGEvYXJj aC94ODYvaW5jbHVkZS9hc20vdmRzby9nZXRyYW5kb20uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNt L3Zkc28vZ2V0cmFuZG9tLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwLi40NmY5OWQ3MzVhZTYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS92ZHNvL2dldHJhbmRvbS5oDQo+IEBAIC0wLDAgKzEsNTUgQEANCj4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ICsvKg0KPiArICogQ29weXJpZ2h0 IChDKSAyMDIyIEphc29uIEEuIERvbmVuZmVsZCA8SmFzb25AengyYzQuY29tPi4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4NCj4gKyAqLw0KPiArI2lmbmRlZiBfX0FTTV9WRFNPX0dFVFJBTkRPTV9IDQo+ ICsjZGVmaW5lIF9fQVNNX1ZEU09fR0VUUkFORE9NX0gNCj4gKw0KPiArI2lmbmRlZiBfX0FTU0VN QkxZX18NCj4gKw0KPiArI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4NCj4gKyNpbmNsdWRlIDxhc20v dnZhci5oPg0KPiArDQo+ICsvKioNCj4gKyAqIGdldHJhbmRvbV9zeXNjYWxsIC0gSW52b2tlIHRo ZSBnZXRyYW5kb20oKSBzeXNjYWxsLg0KPiArICogQGJ1ZmZlcjoJRGVzdGluYXRpb24gYnVmZmVy IHRvIGZpbGwgd2l0aCByYW5kb20gYnl0ZXMuDQo+ICsgKiBAbGVuOglTaXplIG9mIEBidWZmZXIg aW4gYnl0ZXMuDQo+ICsgKiBAZmxhZ3M6CVplcm8gb3IgbW9yZSBHUk5EXyogZmxhZ3MuDQo+ICsg KiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHdyaXR0ZW4gdG8gQGJ1ZmZlciwg b3IgYSBuZWdhdGl2ZSB2YWx1ZSBpbmRpY2F0aW5nIGFuIGVycm9yLg0KPiArICovDQo+ICtzdGF0 aWMgX19hbHdheXNfaW5saW5lIHNzaXplX3QgZ2V0cmFuZG9tX3N5c2NhbGwodm9pZCAqYnVmZmVy LCBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQo+ICt7DQo+ICsJbG9uZyByZXQ7DQo+ ICsNCj4gKwlhc20gKCJzeXNjYWxsIiA6ICI9YSIgKHJldCkgOg0KPiArCSAgICAgIjAiIChfX05S X2dldHJhbmRvbSksICJEIiAoYnVmZmVyKSwgIlMiIChsZW4pLCAiZCIgKGZsYWdzKSA6DQo+ICsJ ICAgICAicmN4IiwgInIxMSIsICJtZW1vcnkiKTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9 DQo+ICsNCj4gKyNkZWZpbmUgX192ZHNvX3JuZ19kYXRhIChWVkFSKF92ZHNvX3JuZ19kYXRhKSkN Cj4gKw0KPiArc3RhdGljIF9fYWx3YXlzX2lubGluZSBjb25zdCBzdHJ1Y3QgdmRzb19ybmdfZGF0 YSAqX19hcmNoX2dldF92ZHNvX3JuZ19kYXRhKHZvaWQpDQo+ICt7DQo+ICsJaWYgKF9fdmRzb19k YXRhLT5jbG9ja19tb2RlID09IFZEU09fQ0xPQ0tNT0RFX1RJTUVOUykNCj4gKwkJcmV0dXJuICh2 b2lkICopJl9fdmRzb19ybmdfZGF0YSArICgodm9pZCAqKSZfX3RpbWVuc192ZHNvX2RhdGEgLSAo dm9pZCAqKSZfX3Zkc29fZGF0YSk7DQo+ICsJcmV0dXJuICZfX3Zkc29fcm5nX2RhdGE7DQo+ICt9 DQo+ICsNCj4gKy8qKg0KPiArICogX19hcmNoX2NoYWNoYTIwX2Jsb2Nrc19ub3N0YWNrIC0gR2Vu ZXJhdGUgQ2hhQ2hhMjAgc3RyZWFtIHdpdGhvdXQgdXNpbmcgdGhlIHN0YWNrLg0KPiArICogQGRz dF9ieXRlczoJRGVzdGluYXRpb24gYnVmZmVyIHRvIGhvbGQgQG5ibG9ja3MgKiA2NCBieXRlcyBv ZiBvdXRwdXQuDQo+ICsgKiBAa2V5OgkzMi1ieXRlIGlucHV0IGtleS4NCj4gKyAqIEBjb3VudGVy Ogk4LWJ5dGUgY291bnRlciwgcmVhZCBvbiBpbnB1dCBhbmQgdXBkYXRlZCBvbiByZXR1cm4uDQo+ ICsgKiBAbmJsb2NrczoJTnVtYmVyIG9mIGJsb2NrcyB0byBnZW5lcmF0ZS4NCj4gKyAqDQo+ICsg KiBHZW5lcmF0ZXMgYSBnaXZlbiBwb3NpdGl2ZSBudW1iZXIgb2YgYmxvY2tzIG9mIENoYUNoYTIw IG91dHB1dCB3aXRoIG5vbmNlPTAsIGFuZCBkb2VzIG5vdCB3cml0ZQ0KPiArICogdG8gYW55IHN0 YWNrIG9yIG1lbW9yeSBvdXRzaWRlIG9mIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBpdCwgaW4g b3JkZXIgdG8gbWl0aWdhdGUgc3RhY2sgZGF0YQ0KPiArICogbGVha2luZyBpbnRvIGZvcmtlZCBj aGlsZCBwcm9jZXNzZXMuDQo+ICsgKi8NCj4gK2V4dGVybiB2b2lkIF9fYXJjaF9jaGFjaGEyMF9i bG9ja3Nfbm9zdGFjayh1OCAqZHN0X2J5dGVzLCBjb25zdCB1MzIgKmtleSwgdTMyICpjb3VudGVy LCBzaXplX3QgbmJsb2Nrcyk7DQo+ICsNCj4gKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovDQo+ ICsNCj4gKyNlbmRpZiAvKiBfX0FTTV9WRFNPX0dFVFJBTkRPTV9IICovDQo+IGRpZmYgLS1naXQg YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS92ZHNvL3ZzeXNjYWxsLmggYi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS92ZHNvL3ZzeXNjYWxsLmgNCj4gaW5kZXggYmUxOTlhOWIyNjc2Li43MWM1NjU4NmEyMmYg MTAwNjQ0DQo+IC0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Zkc28vdnN5c2NhbGwuaA0KPiAr KysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS92ZHNvL3ZzeXNjYWxsLmgNCj4gQEAgLTExLDYgKzEx LDggQEANCj4gICAjaW5jbHVkZSA8YXNtL3Z2YXIuaD4NCj4gICANCj4gICBERUZJTkVfVlZBUihz dHJ1Y3QgdmRzb19kYXRhLCBfdmRzb19kYXRhKTsNCj4gK0RFRklORV9WVkFSX1NJTkdMRShzdHJ1 Y3QgdmRzb19ybmdfZGF0YSwgX3Zkc29fcm5nX2RhdGEpOw0KPiArDQo+ICAgLyoNCj4gICAgKiBV cGRhdGUgdGhlIHZEU08gZGF0YSBwYWdlIHRvIGtlZXAgaW4gc3luYyB3aXRoIGtlcm5lbCB0aW1l a2VlcGluZy4NCj4gICAgKi8NCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Z2 YXIuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Z2YXIuaA0KPiBpbmRleCAxODNlOThlNDlhYjku LjlkOWFmMzdmN2NhYiAxMDA2NDQNCj4gLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdnZhci5o DQo+ICsrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Z2YXIuaA0KPiBAQCAtMjYsNiArMjYsOCBA QA0KPiAgICAqLw0KPiAgICNkZWZpbmUgREVDTEFSRV9WVkFSKG9mZnNldCwgdHlwZSwgbmFtZSkg XA0KPiAgIAlFTUlUX1ZWQVIobmFtZSwgb2Zmc2V0KQ0KPiArI2RlZmluZSBERUNMQVJFX1ZWQVJf U0lOR0xFKG9mZnNldCwgdHlwZSwgbmFtZSkgXA0KPiArCUVNSVRfVlZBUihuYW1lLCBvZmZzZXQp DQo+ICAgDQo+ICAgI2Vsc2UNCj4gICANCj4gQEAgLTM3LDYgKzM5LDEwIEBAIGV4dGVybiBjaGFy IF9fdnZhcl9wYWdlOw0KPiAgIAlleHRlcm4gdHlwZSB0aW1lbnNfICMjIG5hbWVbQ1NfQkFTRVNd CQkJCVwNCj4gICAJX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsJCQkJXA0K PiAgIA0KPiArI2RlZmluZSBERUNMQVJFX1ZWQVJfU0lOR0xFKG9mZnNldCwgdHlwZSwgbmFtZSkJ CQkJXA0KPiArCWV4dGVybiB0eXBlIHZ2YXJfICMjIG5hbWUJCQkJCVwNCj4gKwlfX2F0dHJpYnV0 ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpOwkJCQlcDQo+ICsNCj4gICAjZGVmaW5lIFZWQVIo bmFtZSkgKHZ2YXJfICMjIG5hbWUpDQo+ICAgI2RlZmluZSBUSU1FTlMobmFtZSkgKHRpbWVuc18g IyMgbmFtZSkNCj4gICANCj4gQEAgLTQ0LDEyICs1MCwyMiBAQCBleHRlcm4gY2hhciBfX3Z2YXJf cGFnZTsNCj4gICAJdHlwZSBuYW1lW0NTX0JBU0VTXQkJCQkJCVwNCj4gICAJX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLnZ2YXJfIiAjbmFtZSksIGFsaWduZWQoMTYpKSkgX192aXNpYmxlDQo+ICAg DQo+ICsjZGVmaW5lIERFRklORV9WVkFSX1NJTkdMRSh0eXBlLCBuYW1lKQkJCQkJXA0KPiArCXR5 cGUgbmFtZQkJCQkJCQlcDQo+ICsJX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnZ2YXJfIiAjbmFt ZSksIGFsaWduZWQoMTYpKSkgX192aXNpYmxlDQo+ICsNCj4gICAjZW5kaWYNCj4gICANCj4gICAv KiBERUNMQVJFX1ZWQVIob2Zmc2V0LCB0eXBlLCBuYW1lKSAqLw0KPiAgIA0KPiAgIERFQ0xBUkVf VlZBUigxMjgsIHN0cnVjdCB2ZHNvX2RhdGEsIF92ZHNvX2RhdGEpDQo+ICAgDQo+ICsjaWYgIWRl ZmluZWQoX1NJTkdMRV9EQVRBKQ0KPiArI2RlZmluZSBfU0lOR0xFX0RBVEENCj4gK0RFQ0xBUkVf VlZBUl9TSU5HTEUoNjQwLCBzdHJ1Y3QgdmRzb19ybmdfZGF0YSwgX3Zkc29fcm5nX2RhdGEpDQo+ ICsjZW5kaWYNCj4gKw0KPiAgICN1bmRlZiBERUNMQVJFX1ZWQVINCj4gKyN1bmRlZiBERUNMQVJF X1ZWQVJfU0lOR0xFDQo+ICAgDQo+ICAgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS90b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy92RFNPLy5naXRpZ25vcmUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92 RFNPLy5naXRpZ25vcmUNCj4gaW5kZXggN2RiZmRlYzUzZjNkLi4zMGQ1YzhmMGU1YzcgMTAwNjQ0 DQo+IC0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZEU08vLmdpdGlnbm9yZQ0KPiArKysg Yi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92RFNPLy5naXRpZ25vcmUNCj4gQEAgLTcsMyArNyw0 IEBAIHZkc29fdGVzdF9nZXR0aW1lb2ZkYXkNCj4gICB2ZHNvX3Rlc3RfZ2V0Y3B1DQo+ICAgdmRz b19zdGFuZGFsb25lX3Rlc3RfeDg2DQo+ICAgdmRzb190ZXN0X2dldHJhbmRvbQ0KPiArdmRzb190 ZXN0X2NoYWNoYQ0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdkRTTy9N YWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZEU08vTWFrZWZpbGUNCj4gaW5kZXgg YTMzYjRkMjAwYTMyLi41NGEwMTVhZmU2MGMgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL3ZEU08vTWFrZWZpbGUNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv dkRTTy9NYWtlZmlsZQ0KPiBAQCAtMyw2ICszLDcgQEAgaW5jbHVkZSAuLi9saWIubWsNCj4gICAN Cj4gICB1bmFtZV9NIDo9ICQoc2hlbGwgdW5hbWUgLW0gMj4vZGV2L251bGwgfHwgZWNobyBub3Qp DQo+ICAgQVJDSCA/PSAkKHNoZWxsIGVjaG8gJCh1bmFtZV9NKSB8IHNlZCAtZSBzL2kuODYveDg2 LyAtZSBzL3g4Nl82NC94ODYvKQ0KPiArU09ESVVNIDo9ICQoc2hlbGwgcGtnLWNvbmZpZyAtLWxp YnMgbGlic29kaXVtIDI+L2Rldi9udWxsKQ0KPiAgIA0KPiAgIFRFU1RfR0VOX1BST0dTIDo9ICQo T1VUUFVUKS92ZHNvX3Rlc3RfZ2V0dGltZW9mZGF5ICQoT1VUUFVUKS92ZHNvX3Rlc3RfZ2V0Y3B1 DQo+ICAgVEVTVF9HRU5fUFJPR1MgKz0gJChPVVRQVVQpL3Zkc29fdGVzdF9hYmkNCj4gQEAgLTEy LDkgKzEzLDE1IEBAIFRFU1RfR0VOX1BST0dTICs9ICQoT1VUUFVUKS92ZHNvX3N0YW5kYWxvbmVf dGVzdF94ODYNCj4gICBlbmRpZg0KPiAgIFRFU1RfR0VOX1BST0dTICs9ICQoT1VUUFVUKS92ZHNv X3Rlc3RfY29ycmVjdG5lc3MNCj4gICBURVNUX0dFTl9QUk9HUyArPSAkKE9VVFBVVCkvdmRzb190 ZXN0X2dldHJhbmRvbQ0KPiAraWZlcSAoJCh1bmFtZV9NKSx4ODZfNjQpDQo+ICtpZm5lcSAoJChT T0RJVU0pLCkNCj4gK1RFU1RfR0VOX1BST0dTICs9ICQoT1VUUFVUKS92ZHNvX3Rlc3RfY2hhY2hh DQo+ICtlbmRpZg0KPiArZW5kaWYNCj4gICANCj4gICBDRkxBR1MgOj0gLXN0ZD1nbnU5OQ0KPiAg IENGTEFHU192ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODYgOj0gLW5vc3RkbGliIC1mbm8tYXN5bmNo cm9ub3VzLXVud2luZC10YWJsZXMgLWZuby1zdGFjay1wcm90ZWN0b3INCj4gK0NGTEFHU192ZHNv X3Rlc3RfY2hhY2hhIDo9ICQoU09ESVVNKSAtaWRpcmFmdGVyICQodG9wX3NyY2RpcikvaW5jbHVk ZSAtaWRpcmFmdGVyICQodG9wX3NyY2RpcikvYXJjaC8kKEFSQ0gpL2luY2x1ZGUgLURfX0FTU0VN QkxZX18gLURCVUxJRF9WRFNPIC1EQ09ORklHX0ZVTkNUSU9OX0FMSUdOTUVOVD0wIC1XYSwtLW5v ZXhlY3N0YWNrDQo+ICAgTERGTEFHU192ZHNvX3Rlc3RfY29ycmVjdG5lc3MgOj0gLWxkbA0KPiAg IGlmZXEgKCQoQ09ORklHX1g4Nl8zMikseSkNCj4gICBMRExJQlMgKz0gLWxnY2Nfcw0KPiBAQCAt MzUsMyArNDIsNSBAQCAkKE9VVFBVVCkvdmRzb190ZXN0X2NvcnJlY3RuZXNzOiB2ZHNvX3Rlc3Rf Y29ycmVjdG5lc3MuYw0KPiAgIAkJLW8gJEAgXA0KPiAgIAkJJChMREZMQUdTX3Zkc29fdGVzdF9j b3JyZWN0bmVzcykNCj4gICAkKE9VVFBVVCkvdmRzb190ZXN0X2dldHJhbmRvbTogcGFyc2VfdmRz by5jDQo+ICskKE9VVFBVVCkvdmRzb190ZXN0X2NoYWNoYTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX3Zk c29fdGVzdF9jaGFjaGEpDQo+ICskKE9VVFBVVCkvdmRzb190ZXN0X2NoYWNoYTogJCh0b3Bfc3Jj ZGlyKS9hcmNoLyQoQVJDSCkvZW50cnkvdmRzby92Z2V0cmFuZG9tLWNoYWNoYS5TDQo+IGRpZmYg LS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92RFNPL3Zkc29fdGVzdF9jaGFjaGEuYyBi L3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZEU08vdmRzb190ZXN0X2NoYWNoYS5jDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYmNlN2E3NzUyYjExDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdkRTTy92ZHNvX3Rl c3RfY2hhY2hhLmMNCj4gQEAgLTAsMCArMSw0MyBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgSmFzb24gQS4g RG9uZW5mZWxkIDxKYXNvbkB6eDJjNC5jb20+LiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KPiArICov DQo+ICsNCj4gKyNpbmNsdWRlIDxzb2RpdW0vY3J5cHRvX3N0cmVhbV9jaGFjaGEyMC5oPg0KDQpJ cyB0aGF0IHN0YW5kYXJkID8gRXZlcnkgZGlzdHJpYnV0aW9uIGhhcyBzb2RpdW0gPw0KDQo+ICsj aW5jbHVkZSA8c3lzL3JhbmRvbS5oPg0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2luY2x1 ZGUgPHN0ZGludC5oPg0KPiArI2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIg0KPiArDQo+ICtleHRl cm4gdm9pZCBfX2FyY2hfY2hhY2hhMjBfYmxvY2tzX25vc3RhY2sodWludDhfdCAqZHN0X2J5dGVz LCBjb25zdCB1aW50OF90ICprZXksIHVpbnQzMl90ICpjb3VudGVyLCBzaXplX3QgbmJsb2Nrcyk7 DQo+ICsNCj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+ICt7DQo+ICsJZW51 bSB7IFRSSUFMUyA9IDEwMDAsIEJMT0NLUyA9IDEyOCwgQkxPQ0tfU0laRSA9IDY0IH07DQo+ICsJ c3RhdGljIGNvbnN0IHVpbnQ4X3Qgbm9uY2VbOF0gPSB7IDAgfTsNCj4gKwl1aW50MzJfdCBjb3Vu dGVyWzJdOw0KPiArCXVpbnQ4X3Qga2V5WzMyXTsNCj4gKwl1aW50OF90IG91dHB1dDFbQkxPQ0tf U0laRSAqIEJMT0NLU10sIG91dHB1dDJbQkxPQ0tfU0laRSAqIEJMT0NLU107DQo+ICsNCj4gKwlr c2Z0X3ByaW50X2hlYWRlcigpOw0KPiArCWtzZnRfc2V0X3BsYW4oMSk7DQo+ICsNCj4gKwlmb3Ig KHVuc2lnbmVkIGludCB0cmlhbCA9IDA7IHRyaWFsIDwgVFJJQUxTOyArK3RyaWFsKSB7DQo+ICsJ CWlmIChnZXRyYW5kb20oa2V5LCBzaXplb2Yoa2V5KSwgMCkgIT0gc2l6ZW9mKGtleSkpIHsNCj4g KwkJCXByaW50ZigiZ2V0cmFuZG9tKCkgZmFpbGVkIVxuIik7DQo+ICsJCQlyZXR1cm4gS1NGVF9T S0lQOw0KPiArCQl9DQo+ICsJCWNyeXB0b19zdHJlYW1fY2hhY2hhMjAob3V0cHV0MSwgc2l6ZW9m KG91dHB1dDEpLCBub25jZSwga2V5KTsNCj4gKwkJZm9yICh1bnNpZ25lZCBpbnQgc3BsaXQgPSAw OyBzcGxpdCA8IEJMT0NLUzsgKytzcGxpdCkgew0KPiArCQkJbWVtc2V0KG91dHB1dDIsICdYJywg c2l6ZW9mKG91dHB1dDIpKTsNCj4gKwkJCW1lbXNldChjb3VudGVyLCAwLCBzaXplb2YoY291bnRl cikpOw0KPiArCQkJaWYgKHNwbGl0KQ0KPiArCQkJCV9fYXJjaF9jaGFjaGEyMF9ibG9ja3Nfbm9z dGFjayhvdXRwdXQyLCBrZXksIGNvdW50ZXIsIHNwbGl0KTsNCj4gKwkJCV9fYXJjaF9jaGFjaGEy MF9ibG9ja3Nfbm9zdGFjayhvdXRwdXQyICsgc3BsaXQgKiBCTE9DS19TSVpFLCBrZXksIGNvdW50 ZXIsIEJMT0NLUyAtIHNwbGl0KTsNCj4gKwkJCWlmIChtZW1jbXAob3V0cHV0MSwgb3V0cHV0Miwg c2l6ZW9mKG91dHB1dDEpKSkNCj4gKwkJCQlyZXR1cm4gS1NGVF9GQUlMOw0KPiArCQl9DQo+ICsJ fQ0KPiArCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygiY2hhY2hhOiBQQVNTXG4iKTsNCj4gKwlyZXR1 cm4gS1NGVF9QQVNTOw0KPiArfQ0KDQpDaHJpc3RvcGhlDQo=