From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 26 Jun 2024 10:41:46 +0200 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1sMODq-00CU8a-1m for lore@lore.pengutronix.de; Wed, 26 Jun 2024 10:41:46 +0200 Received: from localhost ([127.0.0.1] helo=metis.whiteo.stw.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1sMODh-0007q3-EM; Wed, 26 Jun 2024 10:41:37 +0200 Received: from mail-db8eur05on20600.outbound.protection.outlook.com ([2a01:111:f400:7e1a::600] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sLLlP-0008EW-Bz; Sun, 23 Jun 2024 13:52:08 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a5gErtGSX4PePwUTv3lNAk14qciRTyALxgI4DCy9P4GU5JdzqiEY/XK+6AEYIfSFEm1n979s+T/T+TaA0bHfzkogbg3mtJVFyQCieC+VoqbAIqQ88tkPVKFEeNk6UY4vDgZaXBoFi5kg+r9oEmW5VcvuH3xQ2sfEhQu1r1AvLNWXOQNhFDgPJwO1hpPlsIKzjHmiyXuR0L9hJ4fNklCs57N4KE/8U7NXYyv7dTD7wnS5356NMLRvXaopEYutVtx2cw85i9LJmehjPUie4OpEec0ltyzzlT0O/9w1Tc/vm2D/8QucLOanOCmkg/GBxN57TcPYwgBTUbbFcmkOFa80Ng== 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=bylNKLuctgrYYxiybCsZy5v+HK6WOBx3sVH2Qtop5Qo=; b=SSIhgfNc7M32pbMmtMkvdXv+kgDJ5VwIEhPOUKY29G6iAfPwR/L7mnga8Re6+vwMJbe9k9iM4lTgVx++01w4DyRa49lTbBNFWUzAK3IaUrVXZzkSQv3X3rXZrG434kOyxItgbaPISajq/SSseg2hJAzti+Hxx4JuCkoWC5aB/wh4Xq55wBx/9B8qNDRPUqB8pzVJNPrwt6v5KsSwit+8515QOAd//YS8SnpoW8aN2kJV5aGEXbGMSYBs3ZmDq9GNwlTfuEv5fzuBWwSC7nQdfOwHivv5HukKcRvacqFHEmkxFcRZhoVyAOnchDtaMPE6vq8sNpiv3c8scnBwqvyZFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=leica-geosystems.com.cn; dmarc=pass action=none header.from=leica-geosystems.com.cn; dkim=pass header.d=leica-geosystems.com.cn; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leica-geosystems.com.cn; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bylNKLuctgrYYxiybCsZy5v+HK6WOBx3sVH2Qtop5Qo=; b=ofIwuMjcLMD4djGD1hJnVnop3fP+dG5tbAB2DvfGv7YDzouoe7epTAAOjPnThBrqno89yoDU90vBQoHO9WPe2MDYhcjFc/hIF1gSvqd2uov3w15lb2Z1botFs4GQNODlpdBjohVHlluq1E45T1u3U9mcuIBwnOycPKsGvFrD0sU= Received: from AS8PR06MB7432.eurprd06.prod.outlook.com (2603:10a6:20b:319::19) by DU2PR06MB8398.eurprd06.prod.outlook.com (2603:10a6:10:2f1::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.28; Sun, 23 Jun 2024 11:52:05 +0000 Received: from AS8PR06MB7432.eurprd06.prod.outlook.com ([fe80::6e12:7988:eb22:7e30]) by AS8PR06MB7432.eurprd06.prod.outlook.com ([fe80::6e12:7988:eb22:7e30%6]) with mapi id 15.20.7698.025; Sun, 23 Jun 2024 11:52:05 +0000 From: LI Qingwu To: Philipp Zabel , "oss-tools@pengutronix.de" , "m.felsch@pengutronix.de" Thread-Topic: [OSS-Tools] [PATCH platsch V5 5/5] Add spinner executable for boot animation and text show Thread-Index: AQHawjKanlY4o8G1JESNkrDMpnpNXbHQm3SAgASmLWA= Date: Sun, 23 Jun 2024 11:52:04 +0000 Message-ID: References: <20240619102227.2013556-1-Qing-wu.Li@leica-geosystems.com.cn> <20240619102227.2013556-5-Qing-wu.Li@leica-geosystems.com.cn> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=leica-geosystems.com.cn; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS8PR06MB7432:EE_|DU2PR06MB8398:EE_ x-ms-office365-filtering-correlation-id: 6666dae2-f739-4355-70b2-08dc937ae6f3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230037|376011|1800799021|366013|38070700015; x-microsoft-antispam-message-info: =?utf-8?B?Ulk2LzhzaG5FQS9lc3lKZzluLzMvQzNIcktKY2VBY3dWdy9LdEhPSk8rQVRm?= =?utf-8?B?aDJGb3BRYWp3Qmo0K29aRC85TGhRY0dwYmF6L016dmJCbVVFOHhiUkJnRUsy?= =?utf-8?B?UTE0WGkrSU03NkpQbWZNVUpDL0dOQ1p5WlZXSUNJK2lZN2hKZVo4eG54Tk5m?= =?utf-8?B?M082VmR3eHJMczByQktqM2I1NDZtRUNkTU5CTEFkVUdqM1RaemRadG1Tbjcx?= =?utf-8?B?WHpETGg3OVAvZEgrTmtodTdMS3ZtQi9vV3U1Vy9lSzgxTVlNNEl0WkpZU0ZU?= =?utf-8?B?Q2ZzQ0dFUVpXdXcyRktpS3RkWG5tVGVwMWZteEcyZFVtczZLQVF5Z2NtcXRt?= =?utf-8?B?VTV4SG9VZE50dEdiU2hzV3pNQmNJRkpReTNYbEVKcnlTbC9FK21wWnFPL28x?= =?utf-8?B?cjlaM1dRZy8xOGhBbGZheFhwZjB0MGxmN01LUWU2N0FETHBYSEdKNE5jRDhr?= =?utf-8?B?VDNJVFF0UHE2Zzh4ZndDT0hqQnZDOEthcm9NWTRVZmpadU04SzFQdTFJYjdJ?= =?utf-8?B?alBNNDhQVnNiS09qMjdseUNlVlFzSHV2QUYwMGRhVXBsLzIvbjFBYm5LM1Z0?= =?utf-8?B?Z2xtV0o4TXJDazBoYWFINU5qM3FMci82TEJwQnZwWFJTcmx1eXdjdks1dzVv?= =?utf-8?B?b3gwQnM3blMvSE5kNXVMOURVYVEyT1N1N3JvYlUyMnFPK090dnZ6U2xrbnB1?= =?utf-8?B?dVRLeVBhYW42NS9ZMDl6Y05mNXhwdkRlVzdXM09tOFNGcitLemNuN1BoQVJP?= =?utf-8?B?cEo2d09MajVBOEdYWVhJWkZKdUNOQm1FdTRLdHZUSGRtWEV4WGVoOWxGZUtq?= =?utf-8?B?Z1ljWmNyeCtsTTMwLzBqUStoV202blJFdXppd2ZuUlNNbWlmQWJLSHFYMDgy?= =?utf-8?B?WmJDNFFIeEtGbnpLQm9tam4xTHorV2JnNmxYVUhLcENQbkJUSnlqcWtDQ3Jr?= =?utf-8?B?ZEJqSjh4ZGhjVWdvSC9URXpyOThwUDhjTEtsaVNzbytKb3VmR2FQQkJyV0Ju?= =?utf-8?B?elFJdGJsdThBL0hsTWVHZU42OXpGeVVwM2NzQVNlelBEVXBWdm9YQ1BxbnJ1?= =?utf-8?B?N2NpalNRc1l1N2x5R1pZS09DV0w2MzcwKzFSSzlYSnlkN3hOTFpVYjZRMFB4?= =?utf-8?B?TlQrc1ZCbDBEQ3FFTjIxMk0wSThISWVicXFoSUJMeWNLRlkvOW5ocE1keUxH?= =?utf-8?B?eWp3bjV3Z0RzVVRuSWFZWFFrd0p2Ujl5eFBWU0d2dThwSExxaDQ2RjRhQkN4?= =?utf-8?B?Nm9EMklqT25ZZnVWM1dZOWJYdmkrK1FJUFg0d2lzS0tPckJpUWFGMHFvYXpi?= =?utf-8?B?SzhJRmJpUUZOMWYzL0IyYklqb2pxZ0IzTGdZSmZKaW94L2F3TVg3ZWJUWk11?= =?utf-8?B?dVU0bUdMOHN3N0NzbWdBTWVsR2trUk9OZVZoa1FRTVRaTmpnR0ttM3VCWUF4?= =?utf-8?B?Vnd2MUlGc08xWHBxZktJeFp2NThGY3MyQ3RLcGVQR2xoZnM2TVpHT2wxL2U1?= =?utf-8?B?M2VMa0J2R09CNVM4L3UvK0ZlQ28wcXZEck9wZE9QOUhOT3M4dHBweXlaM0d1?= =?utf-8?B?bEhzeisrOFpQQ3dJQVo0WU9HRnVHQ2htRHRVMmJrZEg5UGtVbzdFcCtiRk4w?= =?utf-8?B?cjJrSk44UDIyY1RtR2UraEhKcDRnbEd4dmlDb1hGRzk1TkYrTkRLa3hMYlNz?= =?utf-8?B?Mk1tNWZYQTI0UkF6aE55bk5wNXlxWXRKbDA2RFowKzRkQXMyU0VURS8yTS9x?= =?utf-8?B?MFRWMVRjV2lZNHJYSHViV2pJTWxOSTBWYTBPVkZCVEZhK2JJUnU5c3NETUFo?= =?utf-8?Q?N3BVevyl5ekefM8G5Lk60K/wKMyPcXl1IyAKI=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:zh-cn; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR06MB7432.eurprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230037)(376011)(1800799021)(366013)(38070700015); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TUM3TUNXS2FZRFMyUUVGMVNNWjNLbEpxT1BpcXZtZ3VyS2g1dklUNFM0N2Rt?= =?utf-8?B?bEtKRUJSMzJoVVBXd2lhYkJmSjZnSHpONEtzTGY1cEVidStmZ3VLZ0lHMDR2?= =?utf-8?B?THZkdnBDdWdGWkFTdHJCZnlid0U3ZXRyUUd6bTV4c1VvOGFEU3c3YXdMbDRn?= =?utf-8?B?Z2hxUHhXeXBHVjRHaHRnaFNNQU5pUjJDK0FEcGxYTTRyZUp2MU5ma2dJeTRJ?= =?utf-8?B?R09RSmJBb1FFaXR3N2RiVHFrUy8rZTVPYTFFQnBNNnQrdzROeU1qcW9KYXN3?= =?utf-8?B?dHAzNXVOa0tJY3hPemxMNGRURU1KQzhrdW1KcUFRWmdGQlR0ZFBtTzgwZFJk?= =?utf-8?B?RVhPcEN6WGM2K3c0UElSSmFuKzNUYWpTRTVqZ01rVnhLbm80SkFWVDV3elhq?= =?utf-8?B?dlRoYzFlam1oVWpxaEtqeEFUNkdTZVF3VUJTL3FzNXhsN1FUb0p0YTIxNlow?= =?utf-8?B?UUNPaWZ6aFVrUU5iUW1sbEhyLy9VUE1xcWJ6T0xHL0lVa0I4aXo3L2QxdlVk?= =?utf-8?B?ajB4UjlmbDIybC85V1BGTm53bGVFakl2cFl1YUFpN25reTVVelpocExpcHA5?= =?utf-8?B?OWVpQ0pmQVJNV0U3R3BJQlBKU0xEbkV2N2E0dmxDWS9jdHFHV1pCR1B4MnZ5?= =?utf-8?B?UGpPbXByRkFVWVhEZ1Zmd2xwRkxZbFFiTDducDBaNUE1SXhudFBkdjVqalBR?= =?utf-8?B?dGRhK3cxWUN5UEVXSllpMFpYK2hhbzdqR21vNGxkNWhCTmRuTmJRa0diUlh1?= =?utf-8?B?ditaTllGQm9PRnhyY2JPRmM5dTNpcWkzNlk1RmxBWnZ3NEk0YTg5b3RoUEt3?= =?utf-8?B?Q3Zqc1pvVDNuNmVTbFg1RndXeW85MkplbkFKb1UwdDdyOWU0UDRJVFV3dGFC?= =?utf-8?B?cHgyZ2pWeXBFbHQ0b05HVkh2cTdKaE5UY3g5dXAxZ0JWSkZMcTQrSnpLZlBD?= =?utf-8?B?K0JMZlZtbWY5MEd1K0xNQmMzSXVGSlVHQ3VscEJEWjJ6SnJuKzloNmlLUzFl?= =?utf-8?B?WDd1S0JENkxvUCtReENYQUM5K01KczFVYTBLdGltSDJiWi8wYzY4UXhHUG84?= =?utf-8?B?QzdvN1RjSnBLdUJtbndReU45cEZIaTFBUkxPNWFHZ1lNd1VmMDJYcTd0bnE3?= =?utf-8?B?dDRxVndaOXRhblZ1UnY1S3diUld2NDQ2U0U4VEdZUVVkZ3BzVFlpWUhNd21y?= =?utf-8?B?SnFMYkNhTkVKUjYwSUZsVlNwOGpBZEpCSmNtU3lvVFJDWE1ZWnY4Q0JvOW45?= =?utf-8?B?ajl2MjdaTHJmUllFNEJkYTVoV2pMeWF4WGZYbWxzSXBzNHRtaEhWaUpIOGda?= =?utf-8?B?VG5wN1R3VjFXQXV0aW5xNjUxUmhITnNxTCsxdU5oRlRVZ05IS3krOUx6dlVu?= =?utf-8?B?SXBHMzhrdm16aEZ3WExDRmNRS1NHcnBQTEV6TmxVYmlDQjA5YTM5T0ZuTFR4?= =?utf-8?B?RHRJdTlRK2hBelA4cHVGcFZxQ09xMGJJV1Qxdkc3TkRSakpsb3ZGM29IQzVH?= =?utf-8?B?Zk9BWWxQZGR3QmxXZ01xMlh1REhnYVEwZUFDYUNycjVhb1ArQ2FHUkR0ZzZQ?= =?utf-8?B?azdwbkxkVkd5dXRpZXM4QkNyMUtNVWhDM1hhREJXMjZueVVSVlZaU0NMN2xL?= =?utf-8?B?Tndwa2JFN1FtNnRrNVhvS3VIRHBEWDk3Z0pkdW9INjhkUVJ6NUg1d3Z1TDJV?= =?utf-8?B?UEkwY1JqOHRjcFVWYmtnYUxDa0cvTCtXM3ZhaXR4T0Q4amtiN1V4SlEwZWpj?= =?utf-8?B?ZE1jb1VaajZHNDFSNk1BNTBOVlgvdVEwdS8xbUVRb3RXWlF0SG4vSTQ1Yklp?= =?utf-8?B?OGlaYWEzaS9qaEZReUlKb2NaT3lIWWZhUjJXV2NERUtQc3NabzQ5K0oxbTNC?= =?utf-8?B?d2Z4Nmk5cG9GQmtOSUdidDEya3NFYU1HdWdFc1FBTkRlWWhISi9pT3JweVlv?= =?utf-8?B?Y1hVS3N5a211bFBFcEdLR0FqaS9wcklld0lmbVRSelk1V2dIRjZmOUVjeUlt?= =?utf-8?B?OVRiM0NDZzdXWkFYcUJWYVdERDcxMXFaNkVhcTRiQlZ4cWxyQmhMdFRiTGZK?= =?utf-8?B?Um5SalVwSEJxTlJzZ1VGdDBEem9zencyYjFBWVJBVHpRRElaTmFheVgvcFRp?= =?utf-8?B?SjBJcFI1UmNKVkQrcXA1RDRFRkJjTUI5V2dsQ0puVUdRRlEvZzR1aWVkRXZr?= =?utf-8?Q?WxwwGJW+5DEYDczslcvG5Ek=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: leica-geosystems.com.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR06MB7432.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6666dae2-f739-4355-70b2-08dc937ae6f3 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2024 11:52:04.9288 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 1b16ab3e-b8f6-4fe3-9f3e-2db7fe549f6a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vp4p79QwWcQ2Xh9/kdwPwy1gmw8DEh3xWrwsHt/cA9w/mPXPEQWaaPemEoj1JWhJ3lnUItvNgnHtqHwy+VGO97ze45SNt8Mulgp1OMblyFBDvQIPPCb/IKG3H6nJPOzP X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR06MB8398 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.whiteo.stw.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-2.8 required=4.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 X-Mailman-Approved-At: Wed, 26 Jun 2024 10:41:34 +0200 Subject: Re: [OSS-Tools] [PATCH platsch V5 5/5] Add spinner executable for boot animation and text show X-BeenThere: oss-tools@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: Pengutronix Public Open-Source-Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: GEO-CHHER-bsp-development Sender: "OSS-Tools" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: oss-tools-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGhpbGlwcCBaYWJlbCA8 cC56YWJlbEBwZW5ndXRyb25peC5kZT4NCj4gU2VudDogVGh1cnNkYXksIEp1bmUgMjAsIDIwMjQg ODo0NyBQTQ0KPiBUbzogTEkgUWluZ3d1IDxRaW5nLXd1LkxpQGxlaWNhLWdlb3N5c3RlbXMuY29t LmNuPjsNCj4gb3NzLXRvb2xzQHBlbmd1dHJvbml4LmRlOyBtLmZlbHNjaEBwZW5ndXRyb25peC5k ZQ0KPiBDYzogR0VPLUNISEVSLWJzcC1kZXZlbG9wbWVudA0KPiA8YnNwLWRldmVsb3BtZW50Lmdl b0BsZWljYS1nZW9zeXN0ZW1zLmNvbT4NCj4gU3ViamVjdDogUmU6IFtPU1MtVG9vbHNdIFtQQVRD SCBwbGF0c2NoIFY1IDUvNV0gQWRkIHNwaW5uZXIgZXhlY3V0YWJsZSBmb3IgYm9vdA0KPiBhbmlt YXRpb24gYW5kIHRleHQgc2hvdw0KPiANCj4gW+S9oOmAmuW4uOS4jeS8muaUtuWIsOadpeiHqiBw LnphYmVsQHBlbmd1dHJvbml4LmRlIOeahOeUteWtkOmCruS7tuOAguivt+iuv+mXrg0KPiBodHRw czovL2FrYS5tcy9MZWFybkFib3V0U2VuZGVySWRlbnRpZmljYXRpb27vvIzku6Xkuobop6Pov5nk uIDngrnkuLrku4DkuYjlvojph43opoFdDQo+IA0KPiBUaGlzIGVtYWlsIGlzIG5vdCBmcm9tIEhl eGFnb27igJlzIE9mZmljZSAzNjUgaW5zdGFuY2UuIFBsZWFzZSBiZSBjYXJlZnVsIHdoaWxlDQo+ IGNsaWNraW5nIGxpbmtzLCBvcGVuaW5nIGF0dGFjaG1lbnRzLCBvciByZXBseWluZyB0byB0aGlz IGVtYWlsLg0KPiANCj4gDQo+IE9uIE1pLCAyMDI0LTA2LTE5IGF0IDEyOjIyICswMjAwLCBMSSBR aW5nd3Ugd3JvdGU6DQo+ID4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIG5ldyBleGVjdXRhYmxl LCBzcGlubmVyLA0KPiA+ICAgICB3aGljaCBzdXBwb3J0cyB0d28gdHlwZXMgb2YgYW5pbWF0aW9u cyBmb3IgYm9vdCBzZXF1ZW5jZXM6DQo+ID4gICAgIDEgc3RhdGljIFBORyBhbmQgdGV4dCBzdXBw b3J0Lg0KPiA+ICAgICAyIHJvdGF0ZXMgc3F1YXJlIFBORyBpbWFnZXMgcGVyIGZyYW1lDQo+ID4g ICAgIDMgc2hvd3MgYSBzZXF1ZW5jZSBvZiBzcXVhcmUgaW1hZ2VzIGZyb20gYSBzdHJpcCBvZiBQ TkcgaW1hZ2VzLg0KPiANCj4gSSd2ZSB0cmllZCB0aGlzIGFuZCB0aGUgQ1BVIGxvYWQgd2FzIGEg Yml0IHVuZXhwZWN0ZWQuDQo+IA0KPiBJIHN1Z2dlc3QgY2xpcHBpbmcgdGhlIGJhY2tncm91bmRf c3VyZmFjZS0+Y3IgYmxpdHMgaW4NCj4gb25fZHJhd18uLi5fYW5pbWF0aW9uKCkgYW5kIGFuZCB0 aGUgZHJhd2luZ19zdXJmYWNlLT5kaXNwX2NyIGJsaXQgaW4gdGhlDQo+IGRyYXdpbmcgbG9vcCB0 byB0aGUgbWluaW11bSByZWN0YW5nbGUgbmVjZXNzYXJ5LCBjb21tZW50ZWQgYmVsb3cuDQoNCkkg anVzdCBjcmVhdGUgYSBkcmF3aW5nX3N1cmZhY2Ugc2FtZSBzaXplIGFzIHRoZSBhbmltYXRpb24g c3ltYm9sIGluc3RlYWQgb2YgZGlzcGxheSwNCkFuZCAyMGZwcyB3aXRoIDgwMCo2MDAgZGlzcGxh eSwgQ1BVIGxvYWQgb2Ygcm90YXRlIGFuaW1hdGlvbiBnb2VzIGZyb20gMTYuNiUgdG8gNC4zJQ0K QW5kIHNlcXVlbmNlIGFuaW1hdGlvbiBnb2VzIGZyb20gMTIuMyUgdG8gMC43JQ0KDQo+IA0KPiBB bHNvIHNldHRpbmcgc3Bpbm5lciA9ICIiIHNob3VsZCBza2lwIHRoZSBkcmF3aW5nIGxvb3Agc29t ZWhvdy4gVGhlcmUgc2hvdWxkIGJlDQo+IG1pbmltYWwgQ1BVIGxvYWQgYWZ0ZXIgZGlzYWJsaW5n IHRoZSBhbmltYXRpb24gYXMgZG9jdW1lbnRlZC4NCj4gDQo+IEFyZSB5b3Ugc3RvcHBpbmcgdGhl IHNwaW5uZXIgcHJvY2VzcyBhdCBzb21lIHBvaW50IGFmdGVyIHRoZSBzeXN0ZW0gaGFzIGJvb3Rl ZD8NCj4gVGhhdCB3b3VsZCBiZSBuaWNlIHRvIHN1Z2dlc3QgaW4gdGhlIGRvY3VtZW50YXRpb24s IG90aGVyd2lzZSBpdCBrZWVwcyBjYXVzaW5nDQo+IHVubmVjZXNzYXJ5IENQVSBsb2FkLg0KDQpZ ZXMsIEkgc3RvcCB0aGUgc3Bpbm5lciBwcm9jZXNzIGFmdGVyIGJvb3RlZCBhbmQgSSB1cGRhdGUg dGhlIGRvY3VtZW50IGluIFY2Lg0KDQo+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IExJIFFpbmd3dSA8 UWluZy13dS5MaUBsZWljYS1nZW9zeXN0ZW1zLmNvbS5jbj4NCj4gPiAtLS0NCj4gPiAgUkVBRE1F LnJzdCAgICAgICAgfCAgMzcgKysrKysrDQo+ID4gIG1lc29uLmJ1aWxkICAgICAgIHwgIDIxICsr KysNCj4gPiAgbWVzb25fb3B0aW9ucy50eHQgfCAgIDEgKw0KPiA+ICBzcGlubmVyLmMgICAgICAg ICB8IDI5OQ0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr DQo+ID4gIHNwaW5uZXJfY29uZi5jICAgIHwgIDY3ICsrKysrKysrKysrDQo+ID4gIHNwaW5uZXJf Y29uZi5oICAgIHwgIDMzICsrKysrDQo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgNDU4IGluc2VydGlv bnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IG1lc29uX29wdGlvbnMudHh0DQo+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcGlubmVyLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNwaW5u ZXJfY29uZi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcGlubmVyX2NvbmYuaA0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL1JFQURNRS5yc3QgYi9SRUFETUUucnN0DQo+ID4gaW5kZXggZjFjMDgx Mi4uYTBmN2Y3ZSAxMDA2NDQNCj4gPiAtLS0gYS9SRUFETUUucnN0DQo+ID4gKysrIGIvUkVBRE1F LnJzdA0KPiA+IEBAIC0xNDksMyArMTQ5LDQwIEBAIENvbXBpbGluZyBJbnN0cnVjdGlvbnMNCj4g Pg0KPiA+ICAgICAgbWVzb24gc2V0dXAgYnVpbGQNCj4gPiAgICAgIG1lc29uIGNvbXBpbGUgLUMg YnVpbGQNCj4gPiArDQo+ID4gKw0KPiA+ICtTcGlubmVyIC0gU3BsYXNoIFNjcmVlbiB3aXRoIEFu aW1hdGlvbg0KPiA+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ ICsNCj4gPiArVGhlIGBzcGlubmVyYCBleGVjdXRhYmxlIGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUg Ym9vdCBhbmltYXRpb25zLiBJdCBzdXBwb3J0cw0KPiB0d28gdHlwZXMgb2YgYW5pbWF0aW9uczoN Cj4gPiArDQo+ID4gKzEuICoqc3RhdGljIFBORyBhbmQgdGV4dCBzdXBwb3J0Kio6IFNob3cgYSBz dGF0aWMgcG5nIGltYWdlIGFuZCB0ZXh0Lg0KPiA+ICsxLiAqKlNxdWFyZSBQTkcgUm90YXRpb24g QW5pbWF0aW9uKio6IFJvdGF0ZXMgYSBzcXVhcmUgUE5HIGltYWdlLg0KPiA+ICsyLiAqKlNlcXVl bmNlIE1vdmUgUmVjdGFuZ2xlIEFuaW1hdGlvbioqOiBEaXNwbGF5cyBhIHNlcXVlbmNlIG9mIHNx dWFyZQ0KPiBpbWFnZXMgZnJvbSBhIHN0cmlwIG9mIFBORyBpbWFnZXMuDQo+ID4gKw0KPiA+ICtz cGlubmVyIENvbmZpZ3VyYXRpb24NCj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKw0K PiA+ICtUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGBzcGlubmVyYCBleGVjdXRhYmxlIGlzIHJl YWQgZnJvbSBhDQo+ID4gK2NvbmZpZ3VyYXRpb24gZmlsZSwgd2l0aCBhIGRlZmF1bHQgcGF0aCBv ZiBgL3Vzci9zaGFyZS9wbGF0c2NoL3NwaW5uZXIuY29uZmAuDQo+ID4gK1RoZSBkaXJlY3Rvcnkg b2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjYW4gYmUgc2V0IHZpYSB0aGUgYHBsYXRzY2hfZGly ZWN0b3J5YA0KPiBlbnZpcm9ubWVudCB2YXJpYWJsZS4NCj4gPiArDQo+ID4gKw0KPiA+ICtzcGlu bmVyIENvbmZpZ3VyYXRpb24NCj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKw0KPiA+ ICtIZXJlIGlzIGEgc2FtcGxlICBvZiBhIGNvbmZpZ3VyYXRpb24gZmlsZSAoYHNwaW5uZXIuY29u ZmApOg0KPiA+ICsNCj4gPiArLi4gY29kZS1ibG9jazo6IGluaQ0KPiA+ICsNCj4gPiArICAgIHN5 bWJvbD0iL3Vzci9zaGFyZS9wbGF0c2NoL1NwaW5uZXIucG5nIg0KPiA+ICsgICAgZnBzPTIwDQo+ ID4gKyAgICB0ZXh0PSIiDQo+ID4gKyAgICB0ZXh0X3g9MzUwDQo+ID4gKyAgICB0ZXh0X3k9NDAw DQo+ID4gKyAgICB0ZXh0X2ZvbnQ9IlNhbnMiDQo+ID4gKyAgICB0ZXh0X3NpemU9MzANCj4gPiAr DQo+ID4gK1NldCB0ZXh0IHRvIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRvIGRpc3BsYXkgYW55 IHRleHQuDQo+ID4gK1NldCB0aGUgc3ltYm9sIHRvIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRv IGRpc3BsYXkgYW55IGFuaW1hdGlvbi4NCj4gPiArVGhlIGJhY2tncm91bmQgaW1hZ2UgaXMgaW5k aWNhdGVkIGJ5IGBgLS1kaXJlY3RvcnlgYCBhbmQgYGAtLWJhc2VuYW1lYGAuDQo+ID4gZGlmZiAt LWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQgaW5kZXggY2NjN2E2Ni4uOTM2ZTdjYSAx MDA2NDQNCj4gPiAtLS0gYS9tZXNvbi5idWlsZA0KPiA+ICsrKyBiL21lc29uLmJ1aWxkDQo+ID4g QEAgLTIyLDMgKzIyLDI0IEBAIGV4ZWN1dGFibGUoJ3BsYXRzY2gnLA0KPiA+ICAgICAgaW5zdGFs bDogdHJ1ZSwNCj4gPiAgICAgIGluc3RhbGxfZGlyIDogJ3NiaW4nDQo+ID4gICkNCj4gPiArDQo+ ID4gKw0KPiA+ICtpZiBnZXRfb3B0aW9uKCdTUElOTkVSJykNCj4gPiArICAgIHNwaW5uZXJfZGVw ID0gWw0KPiA+ICsgICAgICAgIGRlcGVuZGVuY3koJ2NhaXJvJywgdmVyc2lvbjogJz49IDEuMCcs IHN0YXRpYzogdHJ1ZSksDQo+IA0KPiBJIHRoaW5rIGl0IHdvdWxkIGJlIGJlc3QgdG8ganVzdCBk cm9wIHRoZSAic3RhdGljOiB0cnVlIiBmb3Igbm93LiBUaGUgc3Bpbm5lcg0KPiBleGVjdXRhYmxl IGlzbid0IGxpbmtlZCBzdGF0aWNhbGx5IGFueXdheS4NCj4gDQo+ID4gKyAgICAgICAgZGVwX2xp YmRybSwNCj4gPiArICAgIF0NCj4gPiArDQo+ID4gKyAgICBzcGlubmVyX3NyYyA9IFsNCj4gPiAr ICAgICAgICAnc3Bpbm5lci5jJywNCj4gPiArICAgICAgICAnc3Bpbm5lcl9jb25mLmMnDQo+ID4g KyAgICBdDQo+ID4gKw0KPiA+ICsgICAgZXhlY3V0YWJsZSgnc3Bpbm5lcicsDQo+ID4gKyAgICAg ICAgc3Bpbm5lcl9zcmMsDQo+ID4gKyAgICAgICAgZGVwZW5kZW5jaWVzOiBzcGlubmVyX2RlcCwN Cj4gPiArICAgICAgICBsaW5rX3dpdGg6IGxpYnBsYXRzY2gsDQo+ID4gKyAgICAgICAgaW5zdGFs bDogdHJ1ZSwNCj4gPiArICAgICAgICBpbnN0YWxsX2RpciA6ICdzYmluJw0KPiA+ICsgICAgKQ0K PiA+ICtlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29w dGlvbnMudHh0IG5ldyBmaWxlIG1vZGUNCj4gPiAxMDA2NDQgaW5kZXggMDAwMDAwMC4uZDExNDlm ZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9tZXNvbl9vcHRpb25zLnR4dA0KPiA+IEBA IC0wLDAgKzEgQEANCj4gPiArb3B0aW9uKCdTUElOTkVSJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1 ZTogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRW5hYmxlDQo+ID4gK3NwaW5uZXIgYnVpbGQnKQ0KPiAN Cj4gUGxlYXNlIG1ha2UgdGhpcyBsb3dlcmNhc2UsIGFzIGlzIGNvbW1vbiBwcmFjdGljZSBmb3Ig TWVzb24gb3B0aW9ucy4NCj4gDQo+ID4gZGlmZiAtLWdpdCBhL3NwaW5uZXIuYyBiL3NwaW5uZXIu Yw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uZGJmOGE0Yg0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9zcGlubmVyLmMNCj4gPiBAQCAtMCwwICsxLDI5 OSBAQA0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGNhaXJvLmg+DQo+ID4gKyNpbmNsdWRlIDxtYXRo Lmg+DQo+ID4gKyNpbmNsdWRlIDxzeXMvdGltZS5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImxp YnBsYXRzY2guaCINCj4gPiArI2luY2x1ZGUgInNwaW5uZXJfY29uZi5oIg0KPiA+ICsNCj4gPiAr dHlwZWRlZiBzdHJ1Y3Qgc3Bpbm5lciB7DQo+ID4gKyAgICAgY2Fpcm9fZm9ybWF0X3QgZm10Ow0K PiA+ICsgICAgIGNhaXJvX3N1cmZhY2VfdCAqYmFja2dyb3VuZF9zdXJmYWNlOw0KPiA+ICsgICAg IGNhaXJvX3N1cmZhY2VfdCAqc3ltYm9sX3N1cmZhY2U7DQo+ID4gKyAgICAgY2Fpcm9fc3VyZmFj ZV90ICpkcmF3aW5nX3N1cmZhY2U7DQo+ID4gKyAgICAgY2Fpcm9fdCAqY3JfYmFja2dyb3VuZDsN Cj4gPiArICAgICBjYWlyb190ICpjcl9kcmF3aW5nOw0KPiA+ICsgICAgIGNhaXJvX3QgKmRpc3Bf Y3I7DQo+ID4gKyAgICAgaW50IGJhY2tncm91bmRfaGVpZ2h0Ow0KPiA+ICsgICAgIGludCBiYWNr Z3JvdW5kX3dpZHRoOw0KPiA+ICsgICAgIGludCBkaXNwbGF5X2hlaWdodDsNCj4gPiArICAgICBp bnQgZGlzcGxheV93aWR0aDsNCj4gPiArICAgICBpbnQgc3ltYm9sX2hlaWdodDsNCj4gPiArICAg ICBpbnQgc3ltYm9sX3dpZHRoOw0KPiA+ICsgICAgIHN0cnVjdCBtb2Rlc2V0X2RldiAqZGV2Ow0K PiA+ICsgICAgIHN0cnVjdCBzcGlubmVyICpuZXh0Ow0KPiA+ICt9IHNwaW5uZXJfdDsNCj4gPiAr DQo+ID4gK3ZvaWQgb25fZHJhd19TZXF1ZW5jZV9hbmltYXRpb24oY2Fpcm9fdCAqY3IsIHNwaW5u ZXJfdCAqZGF0YSkgew0KPiA+ICsgICAgIHN0YXRpYyBpbnQgY3VycmVudF9mcmFtZTsNCj4gPiAr ICAgICBpbnQgbnVtX2ZyYW1lcyA9IGRhdGEtPnN5bWJvbF93aWR0aCAvIGRhdGEtPnN5bWJvbF9o ZWlnaHQ7DQo+ID4gKyAgICAgaW50IGZyYW1lX3dpZHRoID0gZGF0YS0+c3ltYm9sX2hlaWdodDsN Cj4gPiArDQo+ID4gKyAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBkYXRhLT5iYWNr Z3JvdW5kX3N1cmZhY2UsIDAsIDApOw0KPiA+ICsgICAgIGNhaXJvX3BhaW50KGNyKTsNCj4gDQo+ IFRoaXMgcGFpbnQgaXMgbGlrZWx5IHdhc3RlZnVsIGFuZCBzaG91bGQgYmUgY2xpcHBlZCB0byB0 aGUgcmVjdGFuZ2xlIHRoYXQgaXMNCj4gb3ZlcndyaXR0ZW4gYnkgdGhlIGFuaW1hdGlvbiBmcmFt ZS4NCj4gDQo+ID4gKw0KPiA+ICsgICAgIGNhaXJvX3NhdmUoY3IpOw0KPiA+ICsNCj4gPiArICAg ICBjYWlyb190cmFuc2xhdGUoY3IsIGRhdGEtPmRpc3BsYXlfd2lkdGggLyAyLA0KPiA+ICsgZGF0 YS0+ZGlzcGxheV9oZWlnaHQgLyAyKTsNCj4gPiArDQo+ID4gKyAgICAgY2Fpcm9fc2V0X3NvdXJj ZV9zdXJmYWNlKGNyLCBkYXRhLT5zeW1ib2xfc3VyZmFjZSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLWZyYW1lX3dpZHRoIC8gMiAtIGN1cnJlbnRfZnJhbWUgKg0KPiA+ICsg ZnJhbWVfd2lkdGgsIC1mcmFtZV93aWR0aCAvIDIpOw0KPiA+ICsNCj4gPiArICAgICBjYWlyb19y ZWN0YW5nbGUoY3IsIC1mcmFtZV93aWR0aCAvIDIsIC1mcmFtZV93aWR0aCAvIDIsIGZyYW1lX3dp ZHRoLA0KPiBmcmFtZV93aWR0aCk7DQo+ID4gKyAgICAgY2Fpcm9fY2xpcChjcik7DQo+ID4gKyAg ICAgY2Fpcm9fcGFpbnQoY3IpOw0KPiA+ICsNCj4gPiArICAgICBjYWlyb19yZXN0b3JlKGNyKTsN Cj4gPiArDQo+ID4gKyAgICAgY3VycmVudF9mcmFtZSA9IChjdXJyZW50X2ZyYW1lICsgMSkgJSBu dW1fZnJhbWVzOyB9DQo+ID4gKw0KPiA+ICt2b2lkIG9uX2RyYXdfcm90YXRpb25fYW5pbWF0aW9u KGNhaXJvX3QgKmNyLCBzcGlubmVyX3QgKmRhdGEpIHsNCj4gPiArICAgICBzdGF0aWMgZmxvYXQg YW5nbGUgPSAwLjA7DQo+ID4gKw0KPiA+ICsgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShj ciwgZGF0YS0+YmFja2dyb3VuZF9zdXJmYWNlLCAwLCAwKTsNCj4gPiArICAgICBjYWlyb19wYWlu dChjcik7DQo+IA0KPiBUaGlzIHBhaW50IGxpa2VseSBpcyB3YXN0ZWZ1bCBhbmQgc2hvdWxkIGJl IGNsaXBwZWQgdG8gdGhlIHJlY3RhbmdsZSB0aGF0IHdhcw0KPiBvdmVyd3JpdHRlbiBieSB0aGUg cHJldmlvdXMgYW5pbWF0aW9uIGZyYW1lLCBvciBhdCBsZWFzdCB0byBhIHNxdWFyZSB0aGUgc2l6 ZSBvZg0KPiB0aGUgZGlhZ29uYWwgb2YgdGhlIHN5bWJvbCBzdXJmYWNlLg0KPiANCj4gPiArICAg ICBjYWlyb19zYXZlKGNyKTsNCj4gPiArICAgICBjYWlyb190cmFuc2xhdGUoY3IsIGRhdGEtPmJh Y2tncm91bmRfd2lkdGggLyAyLA0KPiBkYXRhLT5iYWNrZ3JvdW5kX2hlaWdodCAvIDIpOw0KPiA+ ICsgICAgIGNhaXJvX3JvdGF0ZShjciwgYW5nbGUpOw0KPiA+ICsgICAgIGNhaXJvX3RyYW5zbGF0 ZShjciwgLWRhdGEtPnN5bWJvbF93aWR0aCAvIDIsIC1kYXRhLT5zeW1ib2xfaGVpZ2h0IC8NCj4g Mik7DQo+ID4gKyAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBkYXRhLT5zeW1ib2xf c3VyZmFjZSwgMCwgMCk7DQo+ID4gKyAgICAgY2Fpcm9fcGFpbnQoY3IpOw0KPiA+ICsgICAgIGNh aXJvX3Jlc3RvcmUoY3IpOw0KPiA+ICsgICAgIGFuZ2xlICs9IDAuMTsNCj4gPiArICAgICBpZiAo YW5nbGUgPiAyICogTV9QSSkNCj4gPiArICAgICAgICAgICAgIGFuZ2xlID0gMC4wOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgdWludDMyX3QgY29udmVydF90b19jYWlyb19mb3JtYXQodWlu dDMyX3QgZm9ybWF0KSB7DQo+ID4gKyAgICAgc3dpdGNoIChmb3JtYXQpIHsNCj4gPiArICAgICBj YXNlIERSTV9GT1JNQVRfUkdCNTY1Og0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIENBSVJPX0ZP Uk1BVF9SR0IxNl81NjU7DQo+ID4gKyAgICAgY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Og0KPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIENBSVJPX0ZPUk1BVF9BUkdCMzI7DQo+ID4gKyAgICAgfQ0K PiA+ICsgICAgIHJldHVybiBDQUlST19GT1JNQVRfSU5WQUxJRDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIHZvaWQgY2Fpcm9fZHJhd190ZXh0KGNhaXJvX3QgKmNyLCBDb25maWcgY29uZmln KSB7DQo+ID4gKyAgICAgaWYgKHN0cmxlbihjb25maWcudGV4dCkgPiAwKSB7DQo+ID4gKyAgICAg ICAgICAgICBjYWlyb19zZWxlY3RfZm9udF9mYWNlKGNyLCBjb25maWcudGV4dF9mb250LA0KPiBD QUlST19GT05UX1NMQU5UX05PUk1BTCwNCj4gPiArDQo+IENBSVJPX0ZPTlRfV0VJR0hUX05PUk1B TCk7DQo+ID4gKyAgICAgICAgICAgICBjYWlyb19zZXRfZm9udF9zaXplKGNyLCAoZG91YmxlKWNv bmZpZy50ZXh0X3NpemUpOw0KPiA+ICsgICAgICAgICAgICAgY2Fpcm9fbW92ZV90byhjciwgY29u ZmlnLnRleHRfeCwgY29uZmlnLnRleHRfeSk7DQo+ID4gKyAgICAgICAgICAgICBjYWlyb19zZXRf c291cmNlX3JnYihjciwgMCwgMCwgMCk7DQo+ID4gKyAgICAgICAgICAgICBjYWlyb19zaG93X3Rl eHQoY3IsIGNvbmZpZy50ZXh0KTsNCj4gPiArICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgY2Fpcm9fY3JlYXRlX2Rpc3BsYXlfc3VyZmFjZShzdHJ1Y3QgbW9kZXNldF9kZXYg KmRldiwNCj4gPiArc3Bpbm5lcl90ICpzcGlubmVyX25vZGUpIHsNCj4gPiArICAgICBjYWlyb19z dXJmYWNlX3QgKmRpc3Bfc3VyZmFjZSA9DQo+IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zv cl9kYXRhKA0KPiA+ICsgICAgICAgICBkZXYtPm1hcCwgY29udmVydF90b19jYWlyb19mb3JtYXQo ZGV2LT5mb3JtYXQtPmZvcm1hdCksDQo+IGRldi0+d2lkdGgsIGRldi0+aGVpZ2h0LA0KPiA+ICsg ICAgICAgICBkZXYtPnN0cmlkZSk7DQo+ID4gKyAgICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVz KGRpc3Bfc3VyZmFjZSkpIHsNCj4gPiArICAgICAgICAgICAgIHBsYXRzY2hfZXJyb3IoIkZhaWxl ZCB0byBjcmVhdGUgY2Fpcm8gc3VyZmFjZVxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g RVhJVF9GQUlMVVJFOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBzcGlubmVyX25vZGUtPmRpc3Bs YXlfd2lkdGggPQ0KPiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChkaXNwX3N1cmZhY2Up Ow0KPiA+ICsgICAgIHNwaW5uZXJfbm9kZS0+ZGlzcGxheV9oZWlnaHQgPQ0KPiBjYWlyb19pbWFn ZV9zdXJmYWNlX2dldF9oZWlnaHQoZGlzcF9zdXJmYWNlKTsNCj4gPiArICAgICBzcGlubmVyX25v ZGUtPmZtdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChkaXNwX3N1cmZhY2UpOw0K PiA+ICsgICAgIHNwaW5uZXJfbm9kZS0+ZGlzcF9jciA9IGNhaXJvX2NyZWF0ZShkaXNwX3N1cmZh Y2UpOw0KPiA+ICsgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8vIGNyZWF0ZSBhIHN1cmZhY2UgYW5kIHBhaW50IGJhY2tncm91bmQgaW1hZ2Ugc3RhdGljIGlu dA0KPiA+ICtjYWlyb19jcmVhdGVfYmFja2dyb3VuZF9zdXJmYWNlKHNwaW5uZXJfdCAqc3Bpbm5l cl9ub2RlLCBDb25maWcgY29uZmlnLA0KPiBjb25zdCBjaGFyICpkaXIsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiYXNlKSB7DQo+ID4g KyAgICAgY2hhciBmaWxlbmFtZVsxMjhdOw0KPiA+ICsgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ ICsgICAgIHJldCA9IHNucHJpbnRmKGZpbGVuYW1lLCBzaXplb2YoZmlsZW5hbWUpLCAiJXMvJXMu cG5nIiwgZGlyLCBiYXNlKTsNCj4gPiArICAgICBpZiAocmV0ID49IHNpemVvZihmaWxlbmFtZSkp IHsNCj4gPiArICAgICAgICAgICAgIHBsYXRzY2hfZXJyb3IoIkZhaWxlZCB0byBmaXQgZmlsZW5h bWUgaW50byBidWZmZXJcbiIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVS RTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHNwaW5uZXJfbm9kZS0+YmFja2dyb3Vu ZF9zdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoDQo+ID4gKyAgICAgICAgIHNw aW5uZXJfbm9kZS0+Zm10LCBzcGlubmVyX25vZGUtPmRpc3BsYXlfd2lkdGgsDQo+IHNwaW5uZXJf bm9kZS0+ZGlzcGxheV9oZWlnaHQpOw0KPiA+ICsgICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1 cyhzcGlubmVyX25vZGUtPmJhY2tncm91bmRfc3VyZmFjZSkpIHsNCj4gPiArICAgICAgICAgICAg IHBsYXRzY2hfZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgYmFja2dyb3VuZCBzdXJmYWNlXG4iKTsN Cj4gPiArICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7DQo+ID4gKyAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICBjYWlyb19zdXJmYWNlX3QgKmJrX2ltZ19zdXJmYWNlID0NCj4gPiArIGNh aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zyb21fcG5nKGZpbGVuYW1lKTsNCj4gPiArDQo+ID4g KyAgICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKGJrX2ltZ19zdXJmYWNlKSkgew0KPiA+ICsg ICAgICAgICAgICAgcGxhdHNjaF9lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBjYWlybyBzdXJmYWNl IGZyb20gJXNcbiIsDQo+IGZpbGVuYW1lKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBFWElU X0ZBSUxVUkU7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBpbnQgaW1hZ2Vfd2lkdGgg PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChia19pbWdfc3VyZmFjZSk7DQo+ID4gKyAg ICAgaW50IGltYWdlX2hlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChia19p bWdfc3VyZmFjZSk7DQo+ID4gKyAgICAgZG91YmxlIHNjYWxlX3ggPSAoZG91YmxlKXNwaW5uZXJf bm9kZS0+ZGlzcGxheV93aWR0aCAvIGltYWdlX3dpZHRoOw0KPiA+ICsgICAgIGRvdWJsZSBzY2Fs ZV95ID0gKGRvdWJsZSlzcGlubmVyX25vZGUtPmRpc3BsYXlfaGVpZ2h0IC8NCj4gPiArIGltYWdl X2hlaWdodDsNCj4gPiArDQo+ID4gKyAgICAgc3Bpbm5lcl9ub2RlLT5jcl9iYWNrZ3JvdW5kID0N Cj4gY2Fpcm9fY3JlYXRlKHNwaW5uZXJfbm9kZS0+YmFja2dyb3VuZF9zdXJmYWNlKTsNCj4gPiAr ICAgICBjYWlyb19zY2FsZShzcGlubmVyX25vZGUtPmNyX2JhY2tncm91bmQsIHNjYWxlX3gsIHNj YWxlX3kpOw0KPiA+ICsgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShzcGlubmVyX25vZGUt PmNyX2JhY2tncm91bmQsDQo+ID4gKyBia19pbWdfc3VyZmFjZSwgMCwgMCk7DQo+ID4gKw0KPiA+ ICsgICAgIHNwaW5uZXJfbm9kZS0+YmFja2dyb3VuZF93aWR0aCA9DQo+ID4gKw0KPiBjYWlyb19p bWFnZV9zdXJmYWNlX2dldF93aWR0aChzcGlubmVyX25vZGUtPmJhY2tncm91bmRfc3VyZmFjZSk7 DQo+ID4gKyAgICAgc3Bpbm5lcl9ub2RlLT5iYWNrZ3JvdW5kX2hlaWdodCA9DQo+ID4gKw0KPiA+ ICsgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHNwaW5uZXJfbm9kZS0+YmFja2dyb3Vu ZF9zdXJmYWNlKTsNCj4gPiArDQo+ID4gKyAgICAgY2Fpcm9fcGFpbnQoc3Bpbm5lcl9ub2RlLT5j cl9iYWNrZ3JvdW5kKTsNCj4gPiArICAgICBjYWlyb19kcmF3X3RleHQoc3Bpbm5lcl9ub2RlLT5j cl9iYWNrZ3JvdW5kLCBjb25maWcpOw0KPiA+ICsgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY2Fpcm9fY3JlYXRlX3N5bWJvbF9zdXJmYWNl KHNwaW5uZXJfdCAqc3Bpbm5lcl9ub2RlLA0KPiA+ICtDb25maWcgY29uZmlnKSB7DQo+ID4gKyAg ICAgaWYgKHN0cmxlbihjb25maWcuc3ltYm9sKSA9PSAwKQ0KPiA+ICsgICAgICAgICAgICAgcmV0 dXJuIEVYSVRfRkFJTFVSRTsNCj4gPiArDQo+ID4gKyAgICAgc3Bpbm5lcl9ub2RlLT5zeW1ib2xf c3VyZmFjZSA9DQo+IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zyb21fcG5nKGNvbmZpZy5z eW1ib2wpOw0KPiA+ICsgICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzcGlubmVyX25vZGUt PnN5bWJvbF9zdXJmYWNlKSkgew0KPiA+ICsgICAgICAgICAgICAgcGxhdHNjaF9lcnJvcigiRmFp bGVkIGxvYWRpbmcgJXNcbiIsIGNvbmZpZy5zeW1ib2wpOw0KPiA+ICsgICAgICAgICAgICAgc3Bp bm5lcl9ub2RlLT5zeW1ib2xfc3VyZmFjZSA9IE5VTEw7DQo+ID4gKyAgICAgICAgICAgICByZXR1 cm4gRVhJVF9GQUlMVVJFOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBzcGlubmVyX25vZGUtPnN5 bWJvbF93aWR0aCA9DQo+IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHNwaW5uZXJfbm9k ZS0+c3ltYm9sX3N1cmZhY2UpOw0KPiA+ICsgICAgIHNwaW5uZXJfbm9kZS0+c3ltYm9sX2hlaWdo dCA9DQo+IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzcGlubmVyX25vZGUtPnN5bWJv bF9zdXJmYWNlKTsNCj4gPiArICAgICByZXR1cm4gRVhJVF9TVUNDRVNTOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPiA+ICt7DQo+ID4gKyAg ICAgYm9vbCBwaWQxID0gZ2V0cGlkKCkgPT0gMTsNCj4gPiArICAgICBjaGFyICoqaW5pdHNhcmd2 Ow0KPiA+ICsgICAgIGNoYXIgZmlsZW5hbWVbMTI4XTsNCj4gPiArICAgICBDb25maWcgY29uZmln ID0gREVGQVVMVF9DT05GSUc7DQo+ID4gKyAgICAgY29uc3QgY2hhciAqYmFzZSA9ICJzcGxhc2gi Ow0KPiA+ICsgICAgIGNvbnN0IGNoYXIgKmRpciA9ICIvdXNyL3NoYXJlL3BsYXRzY2giOw0KPiA+ ICsgICAgIGNvbnN0IGNoYXIgKmVudjsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgIGxv bmcgZWxhcHNlZF90aW1lOw0KPiA+ICsNCj4gPiArICAgICBzcGlubmVyX3QgKnNwaW5uZXJfbGlz dCA9IE5VTEwsICpzcGlubmVyX25vZGUgPSBOVUxMLCAqc3Bpbm5lcl9pdGVyID0NCj4gTlVMTDsN Cj4gPiArICAgICBzdHJ1Y3QgbW9kZXNldF9kZXYgKml0ZXI7DQo+ID4gKyAgICAgc3RydWN0IHRp bWV2YWwgc3RhcnQsIGVuZDsNCj4gPiArDQo+ID4gKyAgICAgZW52ID0gZ2V0ZW52KCJwbGF0c2No X2RpcmVjdG9yeSIpOw0KPiA+ICsgICAgIGlmIChlbnYpDQo+ID4gKyAgICAgICAgICAgICBkaXIg PSBlbnY7DQo+ID4gKw0KPiA+ICsgICAgIGVudiA9IGdldGVudigicGxhdHNjaF9iYXNlbmFtZSIp Ow0KPiA+ICsgICAgIGlmIChlbnYpDQo+ID4gKyAgICAgICAgICAgICBiYXNlID0gZW52Ow0KPiA+ ICsNCj4gPiArICAgICByZXQgPSBzbnByaW50ZihmaWxlbmFtZSwgc2l6ZW9mKGZpbGVuYW1lKSwg IiVzL3NwaW5uZXIuY29uZiIsIGRpcik7DQo+ID4gKyAgICAgaWYgKHJldCA+PSBzaXplb2YoZmls ZW5hbWUpKSB7DQo+ID4gKyAgICAgICAgICAgICBwbGF0c2NoX2Vycm9yKCJGYWlsZWQgdG8gZml0 IGZpbGVuYW1lXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7DQo+ ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBwYXJzZUNvbmZpZyhmaWxlbmFtZSwgJmNvbmZp Zyk7DQo+ID4gKw0KPiA+ICsgICAgIHN0cnVjdCBtb2Rlc2V0X2RldiAqbW9kZXNldF9saXN0ID0g cGxhdHNjaF9pbml0KCk7DQo+ID4gKw0KPiA+ICsgICAgIGlmICghbW9kZXNldF9saXN0KSB7DQo+ ID4gKyAgICAgICAgICAgICBwbGF0c2NoX2Vycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBtb2Rl c2V0XG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7DQo+ID4gKyAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICBmb3IgKGl0ZXIgPSBtb2Rlc2V0X2xpc3Q7IGl0ZXI7IGl0 ZXIgPSBpdGVyLT5uZXh0KSB7DQo+ID4gKyAgICAgICAgICAgICBzcGlubmVyX25vZGUgPSAoc3Bp bm5lcl90ICopbWFsbG9jKHNpemVvZihzcGlubmVyX3QpKTsNCj4gPiArICAgICAgICAgICAgIGlm ICghc3Bpbm5lcl9ub2RlKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHBsYXRzY2hfZXJy b3IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yDQo+IHNwaW5uZXJfbm9kZVxuIik7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7DQo+ID4gKyAgICAg ICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICBtZW1zZXQoc3Bpbm5lcl9ub2RlLCAwLCBzaXpl b2YoKnNwaW5uZXJfbm9kZSkpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGlmIChjYWlyb19j cmVhdGVfZGlzcGxheV9zdXJmYWNlKGl0ZXIsIHNwaW5uZXJfbm9kZSkpDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgaWYgKGNhaXJvX2NyZWF0ZV9iYWNrZ3JvdW5kX3N1cmZhY2Uoc3Bpbm5lcl9ub2RlLCBjb25m aWcsDQo+IGRpciwgYmFzZSkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFWElU X0ZBSUxVUkU7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgY2Fpcm9fY3JlYXRlX3N5bWJvbF9z dXJmYWNlKHNwaW5uZXJfbm9kZSwgY29uZmlnKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBz cGlubmVyX25vZGUtPmRyYXdpbmdfc3VyZmFjZSA9DQo+IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl YXRlKA0KPiA+ICsgICAgICAgICAgICAgICAgIHNwaW5uZXJfbm9kZS0+Zm10LCBzcGlubmVyX25v ZGUtPmRpc3BsYXlfd2lkdGgsDQo+IHNwaW5uZXJfbm9kZS0+ZGlzcGxheV9oZWlnaHQpOw0KPiA+ ICsgICAgICAgICAgICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHNwaW5uZXJfbm9kZS0+ZHJh d2luZ19zdXJmYWNlKSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBwbGF0c2NoX2Vycm9y KCJGYWlsZWQgdG8gY3JlYXRlIGRyYXdpbmcNCj4gc3VyZmFjZVxuIik7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ ID4gKyAgICAgICAgICAgICAvLyBjcmVhdGUgY2Fpcm8gY29udGV4dCBmb3IgZHJhd2luZyBzdXJm YWNlIHRvIGF2b2lkDQo+IGZybGlja2VyaW5nDQo+ID4gKyAgICAgICAgICAgICBzcGlubmVyX25v ZGUtPmNyX2RyYXdpbmcgPQ0KPiBjYWlyb19jcmVhdGUoc3Bpbm5lcl9ub2RlLT5kcmF3aW5nX3N1 cmZhY2UpOw0KPiA+ICsgICAgICAgICAgICAgLy8gZHJhdyBzdGF0aWMgaW1hZ2Ugd2l0aCB0ZXh0 IGFzIGZpcnN0IGZyYW1lDQo+ID4gKyAgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh Y2Uoc3Bpbm5lcl9ub2RlLT5kaXNwX2NyLA0KPiBzcGlubmVyX25vZGUtPmJhY2tncm91bmRfc3Vy ZmFjZSwgMCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsN Cj4gPiArICAgICAgICAgICAgIGNhaXJvX3BhaW50KHNwaW5uZXJfbm9kZS0+ZGlzcF9jcik7DQo+ ID4gKyAgICAgICAgICAgICBwbGF0c2NoX3NldHVwX2Rpc3BsYXkoaXRlcik7DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICAgc3Bpbm5lcl9ub2RlLT5uZXh0ID0gc3Bpbm5lcl9saXN0Ow0KPiA+ICsg ICAgICAgICAgICAgc3Bpbm5lcl9saXN0ID0gc3Bpbm5lcl9ub2RlOw0KPiA+ICsgICAgIH0NCj4g PiArDQo+ID4gKyAgICAgcGxhdHNjaF9kcm1Ecm9wTWFzdGVyKCk7DQo+ID4gKw0KPiA+ICsgICAg IHJldCA9IGZvcmsoKTsNCj4gPiArICAgICBpZiAocmV0IDwgMCkNCj4gPiArICAgICAgICAgICAg IHBsYXRzY2hfZXJyb3IoImZhaWxlZCB0byBmb3JrIGZvciBpbml0OiAlbVxuIik7DQo+ID4gKyAg ICAgZWxzZSBpZiAocmV0ID09IDApDQo+ID4gKyAgICAgICAgICAgICAvKg0KPiA+ICsgICAgICAg ICAgICAgICogQWx3YXlzIGZvcmsgdG8gbWFrZSBzdXJlIHdlIGdvdCB0aGUgcmVxdWlyZWQNCj4g PiArICAgICAgICAgICAgICAqIHJlc291cmNlcyBmb3IgZHJhd2luZyB0aGUgYW5pbWF0aW9uIGlu IHRoZSBjaGlsZC4NCj4gPiArICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAgICAgICAgZ290 byBkcmF3aW5nOw0KPiA+ICsNCj4gPiArICAgICBpZiAocGlkMSkgew0KPiA+ICsgICAgICAgICAg ICAgaW5pdHNhcmd2ID0gY2FsbG9jKHNpemVvZihhcmd2WzBdKSwgYXJnYyArIDEpOw0KPiA+ICsN Cj4gPiArICAgICAgICAgICAgIGlmICghaW5pdHNhcmd2KSB7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHBsYXRzY2hfZXJyb3IoImZhaWxlZCB0byBhbGxvY2F0ZSBhcmd2IGZvciBpbml0XG4i KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsNCj4gPiAr ICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIG1lbWNweShpbml0c2FyZ3YsIGFyZ3Ys IGFyZ2MgKiBzaXplb2YoYXJndlswXSkpOw0KPiA+ICsgICAgICAgICAgICAgaW5pdHNhcmd2WzBd ID0gIi9zYmluL2luaXQiOw0KPiA+ICsgICAgICAgICAgICAgaW5pdHNhcmd2W2FyZ2NdID0gTlVM TDsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBleGVjdigiL3NiaW4vaW5pdCIsIGluaXRzYXJn dik7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgcGxhdHNjaF9lcnJvcigiZmFpbGVkIHRvIGV4 ZWMgaW5pdDogJW1cbiIpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBFWElUX0ZB SUxVUkU7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7DQo+ID4g Kw0KPiA+ICtkcmF3aW5nOg0KPiA+ICsgICAgIHdoaWxlICh0cnVlKSB7DQo+ID4gKyAgICAgICAg ICAgICBnZXR0aW1lb2ZkYXkoJnN0YXJ0LCBOVUxMKTsNCj4gPiArICAgICAgICAgICAgIGZvciAo c3Bpbm5lcl9pdGVyID0gc3Bpbm5lcl9saXN0OyBzcGlubmVyX2l0ZXI7IHNwaW5uZXJfaXRlciA9 DQo+IHNwaW5uZXJfaXRlci0+bmV4dCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAo c3Bpbm5lcl9ub2RlLT5zeW1ib2xfc3VyZmFjZSA9PSBOVUxMKQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVzbGVlcCgxMDAwMDAwIC8gY29uZmlnLmZwcyk7DQo+IA0KPiBXaGF0 IGlzIHRoZSBwdXJwb3NlIG9mIHRoaXMgZGVsYXk/DQo+IA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBpZiAoc3Bpbm5lcl9ub2RlLT5zeW1ib2xfd2lkdGggLw0KPiBzcGlubmVyX25vZGUtPnN5 bWJvbF9oZWlnaHQgPiAyKQ0KPiA+ICsNCj4gb25fZHJhd19TZXF1ZW5jZV9hbmltYXRpb24oc3Bp bm5lcl9pdGVyLT5jcl9kcmF3aW5nLCBzcGlubmVyX2l0ZXIpOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBlbHNlDQo+ID4gKw0KPiA+ICsgb25fZHJhd19yb3RhdGlvbl9hbmltYXRpb24oc3Bp bm5lcl9pdGVyLT5jcl9kcmF3aW5nLCBzcGlubmVyX2l0ZXIpOw0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKHNwaW5uZXJfaXRlci0+ZGlz cF9jciwNCj4gPiArDQo+IHNwaW5uZXJfaXRlci0+ZHJhd2luZ19zdXJmYWNlLCAwLCAwKTsNCj4g PiArICAgICAgICAgICAgICAgICAgICAgY2Fpcm9fcGFpbnQoc3Bpbm5lcl9pdGVyLT5kaXNwX2Ny KTsNCj4gDQo+IFRoaXMgcGFpbnQgaXMgbGlrZWx5IHdhc3RlZnVsIGFuZCBzaG91bGQgYmUgY2xp cHBlZCB0byB0aGUgcmVjdGFuZ2xlIHRoYXQgd2FzDQo+IG92ZXJ3cml0dGVuIGluIG9uX2RyYXdf Li4uX2FuaW1hdGlvbigpLg0KPiANCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAg ICAgIGdldHRpbWVvZmRheSgmZW5kLCBOVUxMKTsNCj4gPiArICAgICAgICAgICAgIGVsYXBzZWRf dGltZSA9DQo+ID4gKyAgICAgICAgICAgICAgICAgKGVuZC50dl9zZWMgLSBzdGFydC50dl9zZWMp ICogMTAwMDAwMCArIChlbmQudHZfdXNlYw0KPiA+ICsgLSBzdGFydC50dl91c2VjKTsNCj4gPiAr DQo+ID4gKyAgICAgICAgICAgICBsb25nIHNsZWVwX3RpbWUgPSAoMTAwMDAwMCAvIGNvbmZpZy5m cHMpIC0gZWxhcHNlZF90aW1lOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGlmIChzbGVlcF90 aW1lID4gMCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdXNsZWVwKHNsZWVwX3RpbWUpOw0K PiANCj4gSSdkIHVzZSBjbG9ja19nZXR0aW1lIGFuZCBjbG9ja19uYW5vc2xlZXAgd2l0aCBDTE9D S19NT05PVE9OSUMgaW5zdGVhZCBvZg0KPiBnZXR0aW1lb2ZkYXkgYW5kIHVzbGVlcC4gVGhhdCBz aG91bGQgYWxsb3cgYWR2YW5jaW5nIHRoZSB0YXJnZXQgdGltZSB3aXRob3V0DQo+IGhhdmluZyB0 byBtZWFzdXJlIHRoZSBlbGFwc2VkIHRpbWUuDQo+IA0KPiANCj4gcmVnYXJkcw0KPiBQaGlsaXBw DQo=