Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pkcgn-0001zQ-AY for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Apr 2023 03:23:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pkcgl-0007e3-9s for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Apr 2023 03:22:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pkcgk-0007do-7d for pgsql-hackers@lists.postgresql.org; Fri, 07 Apr 2023 03:22:58 +0000 Received: from esa5.fujitsucc.c3s2.iphmx.com ([68.232.159.76]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1pkcgc-001MkD-KF for pgsql-hackers@lists.postgresql.org; Fri, 07 Apr 2023 03:22:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1680837770; x=1712373770; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=fd1cbzWY8k3iZHoKWBl8r+HtxZnCKG0lw7MwadWp+N4=; b=O4WByv3Zh27ZY+qmlO7RCNhyQICvv0UjUQcoK3W4qoJ8bMPXKOiRfOkr mHZJrzD37vLFh7U19lqQH+A6xqVFboK+aXHXFQc3kYldGDW7jP9KLCLqh 2BB4lTeXMuhKdikAQPgqwLF4nH3SpqaqwL8D56X8/rq7ql4zT/Jy+T19h 19Kzf4X3k7eezZLJ1/YyN+rBsKTAu+Ps4OamANWLxBqcdRDClr2KkW4v3 E8T0MxUQHgDQODQElm4DvTpo8hxxLh5XlrXyj5UmcL230neMw540MXLuB QIq1wk6+flLdNjozq6MtLC62Vomq0pftximYrtUhu5kx8j4kH05MvB5CK w==; X-IronPort-AV: E=McAfee;i="6600,9927,10672"; a="81686039" X-IronPort-AV: E=Sophos;i="5.98,324,1673881200"; d="scan'208,223";a="81686039" Received: from mail-os0jpn01lp2107.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.107]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2023 12:22:42 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FpYBhSpSLf1FkwKp1CkEKeCiysmeaA6NVLIp/E/qs2hphM239MDicNsOEnKksixH863gFTCesz2jbz5VSyrJ76FRmN4ndlzQiL+kN6+NJ9/jsqJ49lPSZddaxtbYBSdWE8vkT63tXvkySYGOmHskh22owP08Fc3VT2YIZA2dhNl8uWXQn0S3JMu4sRrj33UFvv3qPnjrJL1FWDv4melDXAqwC2E24/zXoxFqVWijauNkNMpi+02/D0lbrWImzJ8BpggezyDiD5g4GcaA3Ry1stWZzKEEE71EFczVajQNwHm1GkhJpp2Q/saezqQjUaaCXrQa8R7TFLWngPjg7qmsHg== 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=x0KNWjYV0FpHu/PTi17EYwYYvM73woTWtolWzPpwZoA=; b=kKbbZLrCBuqdRqHs8yZsOBh4g73UE5GhSPvE+Lwh6FOmTiTujjDLCUJXKQdUbXQyu4arK0PjHFduCUwDbO3W8p4lSgYyucp6N9RVzKI3QB0iJMkOdn2lOPVTZL+uQNSZl0oGpmUmfRgs17PIWS8I+lsQKydPg8kb71aFjubZRWH4YoNb3rLmA0Z+nPPaJS7x/hwgP5OmfVI8A01qFQNAcJ0yLxR9HFJdr7CulVXTsfb8IURC5/vtw8wrSiQf7tibNLfsG8BHQ3XParzmMTmpBdVW2VqniWVASVXT0jVN3WIB9YMqphTzYtQsVvyUmpJAQdbRorWcuUKvraVKAi5Y8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYBPR01MB5453.jpnprd01.prod.outlook.com (2603:1096:404:8020::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.33; Fri, 7 Apr 2023 03:22:36 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4110:d425:fa9b:cfe8]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4110:d425:fa9b:cfe8%4]) with mapi id 15.20.6277.031; Fri, 7 Apr 2023 03:22:36 +0000 From: "houzj.fnst@fujitsu.com" To: shveta malik CC: vignesh C , Amit Kapila , Ajin Cherian , "wangw.fnst@fujitsu.com" , Runqi Tian , Peter Smith , Tom Lane , li jie , Dilip Kumar , Alvaro Herrera , Masahiko Sawada , Japin Li , rajesh singarapu , PostgreSQL Hackers , Zheng Li Subject: RE: Support logical replication of DDLs Thread-Topic: Support logical replication of DDLs Thread-Index: AQHYJz33AxvYRe/sGky7b41i8Vgxg6y9TlgAgAVZmgCAAA2xAIABMlkAgACE3QCAAKgDAIAAduOAgABm6oCABIs+AIACG98AgBfo2QCABsLLgIAyhVqAgBOd9QCAAOYWgIAAPoOAgAUH2oCABQvawIAPYMWAgAHJ99CAAn9yAIAAPzmAgAQqm4CAA6XiQIACJNSQgAsCywCAAPmNAIAAalXwgAAWjQCACT8UwIAEWbkAgAam+gCADNiE8IAMBWyAgAZSRYCAAW8VgIAE96WAgA0v9QCABHneQIAUEVWAgAuHbACAD5tTgIAIApwAgAGzQoCAB27XgIAGHO6AgAoC5QCAAAoEgIAARwGAgAAqS4CAACxlgIAAKQwAgAUIbgCAAc2DgIABFqCAgAr6zICACEvUAIADrYYAgAI89ICABMyogIAEr42AgAxiJwCANjIaAIAF3niAgAC/BoCAAuB0gIALWfiAgAACQgCACustgIAEUHmAgAjYlQCAAvxsgIABgogAgACtfoCABGf7gIAXCh4AgAoIzICACRPpgIAd/kGAgABvmoCABhsgAIAAzN0AgAKqbICAAmpWAIADCo0AgAa3EiCABFx7AIAAox8AgAS/ZwCAAHmiAIAAm1WAgABcKACAAQzjUIADR9EwgAAcFMCAAB6agIAHbDIAgACN3ICABCjjgIAAAyFA Date: Fri, 7 Apr 2023 03:22:36 +0000 Message-ID: References: <3032112.1679865718@sss.pgh.pa.us> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ODE1OGNiZWUtMjhhNC00MWZiLThjZTAtYzcyNzBiNDFm?= =?utf-8?B?OGZiO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMy0wNC0wN1QwMzowNjowOVo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|TYBPR01MB5453:EE_ x-ms-office365-filtering-correlation-id: d2d66be8-1fb0-4eac-3ba9-08db371755ee x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: i4aYMZBkd+ra2jTevfFqMGDDg/tJpbxzAI8nD4RUF2u6ux8gReXimmre9M9u6IA9DgBBnAI63G5GhyZKaiFE2Aj3aCHk+rdEa33sYp5xvuiCPgCG+zWCaovjBtm2XuZx0FFe5SveW0dlVNBRos8cFNn+/q6OmEmoT/BiShmoil00hM6jh/XvE7ybZvs+7oDGzgi6sc/R2fEM6vw8MkW0dXurmWhgklPV8Ukz1EleT0G9hMXr8gFnE/ryt55drN9fX1H/VUTHFK6WcHqeZZWHMiz5tI5ez7C+IsuJuL3A1uXg8KdOmmqDoYgl7jU6zv6T1zchq0k8tcfFOYDNbyJEM6J2B+fYwgECZkDwlYd0roE1fh1INMq+T6ms8vMYAz4lSlf+cX323CM/UyUbXN1rCLD68QErFdTmSu4Dxn9YU7NmoeG4nYFzE36BCdyx/C7Kn5iROrJdEjaZrNGhXo4JqZAC9o1mL8+tEuuw1BKD80kxQ+NBnuBxbA2JDOVfSMh76+o053OujK32qQUIAnUSGz5Be1S7pRyMPE7bV9oLS3x3iJ96Dnwu2mKL61DMRHxGPeyS7x7kQxyNawPp1LHQkG+Nj2i2xi+ijpNzbJ0rzQ1DgZlWa8xwxg8dM3eECmTrBkKr4xy5q7WajXgUU7gk1g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(136003)(376002)(346002)(39860400002)(366004)(451199021)(1590799018)(1580799015)(66946007)(54906003)(478600001)(6916009)(66556008)(66446008)(4326008)(71200400001)(66476007)(64756008)(7696005)(8676002)(41300700001)(316002)(38070700005)(76116006)(85182001)(86362001)(33656002)(83380400001)(9686003)(6506007)(26005)(2940100002)(52536014)(2906002)(5660300002)(7416002)(8936002)(55016003)(82960400001)(38100700002)(53546011)(122000001)(186003)(99936003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bzl5dmRQeDJZZng5dFhzei9iMENLU1gyNmdGWWRpWXB5MFV2SDMrUWJ0Y0hZ?= =?utf-8?B?dlRpNUhRQzhzczgveHBxZTZ0OU95clZScTA5VjAwZWFzOUpzOExST3ZTSTZo?= =?utf-8?B?QkNaOW91NTE4L2RUdnNmZmJTazBHNDI4VUhSRU81MnZGVmNpY0p0dEJNYWVm?= =?utf-8?B?R24xRzZBYkh1bHU0Y2NnQ3lrU25iRG1NOFg1NTk1dWFWZ0lNQWh1K3BPZmoy?= =?utf-8?B?WEFsQnMxYVVnWEpjOUV3QTZzWHM2czZkSVh2ckF1NHBGVFNBbnBFa1F4OEZU?= =?utf-8?B?d1VQSkg4c00yUEFxNHVIcEozcWhaaWN4TjFXMW5WditEaEdmbTJIbmZBalI4?= =?utf-8?B?K1p6OExmN29FMExsK1VtcmlrS1RVMDY3QlJwU2R0TEdJUUw0Vm9uSVpBTWZk?= =?utf-8?B?RE9NTFJTMUpUZ0djQUV6TUVCVWJ3TGZrbUdCa3NjOXpzMGx4UkpybHY0NkQv?= =?utf-8?B?UGZmUC9uLyt2dzlRYm5FR3F1RTlBQUdKYzB2VW9LZDVTOS84TnFIRXRrVTJQ?= =?utf-8?B?aUYrRUtvVDRGSGFOd0VHKzU3cHRvU2JWSWR5cStNREVibWFkbnBEUEdWVU41?= =?utf-8?B?YUt2TnBlc2o0NllOUjdiWUdyZVpOT1dmU0RCTmpkbk51WW9ZaERCUWN3TnBs?= =?utf-8?B?VW5DRzZWQlVoaWV0ZDFsRkJ3ZzFHbHlxc3VOVFZ5elpNdzRROVprS2htd2Jo?= =?utf-8?B?VzVSRkFqbVlWSXIxZ1RVUWsxS3ZjRkdNLzdlc2xiNGF6b1NkdHBuNElvWVRx?= =?utf-8?B?ajVJaW8zQ3hKOEpEQVZOR2R4L1BRMFkxYUV1QTlaUW41TnR6QjRUeGhpc3Vl?= =?utf-8?B?ZStTL1pHYng0Q1NwMUI1N3BRUHlkdm11dVVwWlQyYU9Lb2hpYUdWTmQ5YjBF?= =?utf-8?B?RFBtRkZJZXJzdDdjL2xrSFZnRHdKb3NiRG5KTkJRb0dpVTFIVTRpQ3hFZ0Y3?= =?utf-8?B?d0Nra1ByUnY5d282UGFsUUxXYVp2cFArTDBQZU5OYTZVa3g4YTlpUHNNM3lS?= =?utf-8?B?UE1kV3EveVRzMEJReGE3QnlZTTNITjBiaXZKa244KzJDSUFUOHMzUnhtYTI1?= =?utf-8?B?WjJtakJ5UVhiQ3VEV2xJRkdLYmxsYUhiajBhZkpMR20rMmtmbXlxMHR4VHRj?= =?utf-8?B?S0t2eDY2R3lWbjRPb1JheWEvNU9rOXM0ckRBK0I2NnZ3ZmdOTkxvYiswOG9Z?= =?utf-8?B?Z2JiamtXOWFKWlhoc1U1Y2ZDNVg2dEtmK2I1M1lyOTFUa2gwZkhvUzRLY29W?= =?utf-8?B?QVV4NE83M1A3Y1l0aExNaGYyWDN0cmg4OFdHM1B3aVZpelJCZE5ZNE1DSlRI?= =?utf-8?B?S2k5V29sTEtxRnR4dHdDL0NyM0dKa3ZLMXdDaXppRDdlaGY5SUljRmFlTEM5?= =?utf-8?B?Z2c2Y3VYV2I2aHBUUC9PMzdRNlV0SkYyMHZ0YzQ3SXFCcm9GNDI0TlpMdFo1?= =?utf-8?B?K3hrRHJ1WkZUUUlDdVBLL21rSzJvMkJWdHB6alBuMHFqTEI1MEU2RkVPeUdK?= =?utf-8?B?NWhZd0p3L3lkWktOOC9XVTlaM1ovK1FBMkFzSHhtNXN0RmVjMHFGQkNJcDJi?= =?utf-8?B?c3J3UjdOdDVHczlSUXpPc3Z3Y0pJZlVsY2p5TG5GUTJ0OXdhMnhIdVloWWR5?= =?utf-8?B?cnU0ODR4cmdwQU15dEFjcXJabWVQajZqM21JY0pNdEZoVkZwc2xBT3FTMDJo?= =?utf-8?B?QnNGRGc4elE5Q0JBdWhEZXI4cGFDQWZPQVA1OW5DdXcyZm4zbm1mUGJqSUtC?= =?utf-8?B?Z3c5bTJ2UXhQQUg3T21HR0VTNExGbThUK1NISjVTejdrMW9IdGZQcEpvQnBZ?= =?utf-8?B?SWhKaUoybURjcUdxNlUwQ1hGSmxXMmpYV01adzRZd2pQMUNXcHhDUEZoMmdG?= =?utf-8?B?Rll3emdGV1hhZExwS0ZQSFowYzI0a2lFNzNHdXlpUmtySUZIVCtRQ095K0g4?= =?utf-8?B?UHpSWXpzN09mdUZZTlRudUpYY0M1WjNCZE90TDk0dnZYMFFNL3RsU2M0ZTM0?= =?utf-8?B?YmErdG12Vi9wOHVqRnlKL3NIVkU5NnAvbHRidjdTaUVDeGE4QkZidzdSUWRo?= =?utf-8?B?dUptcjFVRFA0VlQ0M1lyMWx0eDJvUGROZFh3dlhtTWxNQlR4dklMMmxUWS80?= =?utf-8?Q?RAb33M7we8U4bQb1ZSPbYBx5x?= Content-Type: multipart/mixed; boundary="_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 9oTrwY1sWH3Z4MIIM2d+Gg9JudycaJBubC28kNWHE1z3EaLLzzOJwUgs6dwbjlZ2vquDkBGZliwcLpB8APughYK6qMsOe+lUBvA+FCNMBcfJgvcLfytJuaKHZf5xhLn619r6kwP1N8JkBkHbWned59OfFliGE6DVWbCMoRbjwRnm5XzOigdduKOsNfcrzYBc0STPIp5qAFouWd88XeBfoWkxkcoLUctBOwPpkDr8KAo95JBoDGrnoGzWD0R18RNQrc9+zgdVr74uGuPl0Sn4BlrlxPTX1Xvilulah84Rdnbwb7Zmy7J3TqlkJrA+wzAuGzzyoCcUBVC3cEY5kW+/L/1s7sqQySx/JIOrkSLKvm7kw8y5GqSs4l4ynG24XHlDVz8OQ+5oZE2RwuHoXrlkdzxWF55hBmlrzsPsmoTJbC54M9mdQPqTNf8o/Gzths5rX28ItBTUUArQuchZDiPqM7ELqpV9Trd3XZmC3EAUCWUirh1UwOjNsIIb8mbxXClz+UEfax3c8NquwLnGZUskq7lWbI7vl3Kj5DLbIaLtR6JuB1wbefvv0L2sjZ4NFQikyp7DcIws4FWZCYZ71bMahczwU/B7VmBj8hFDb86RODfOO+hAjT1+IQ5K0l/OQv6I3fLXJlE/zgzpLUXOekUMIqYdjfsttcChjDOEO/fHJeoq/EplEioDTm6oipdL08sGvpbVW2qJjq3sRlYkUYrULLgJuM5OJXtZsD9RSuioxufIQFeGCja+5RI5pajqNg0CcJiXvUpY/2RJTCsDTLQfOmH/sRRhZgTbQ62fwsUtoHWa2MraksANHCMIYpwZ4XR8k2LeKoFKTd3fQHgmB6chIK15ocn6iWweOaZIq2ikXqcpC5Q2AM6Dtq8NRgKsKUQgTRex3F2YERJV1bEXC5rP+ggqzXr0ujVKqHmZ0ypzBQQ= X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2d66be8-1fb0-4eac-3ba9-08db371755ee X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2023 03:22:36.7972 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yuedCTEvZCc93cykn1QFHgsSmPVmxgHPG1gciVZfaWmQvGw1KxXq3hCyfxBShSCr/grzIlx9X/Ei68Q0zKq3Bw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYBPR01MB5453 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpZGF5LCBBcHJpbCA3LCAyMDIzIDExOjEzIEFNIGhvdXpqLmZuc3RAZnVqaXRzdS5jb20g PGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+DQo+IA0KPiBPbiBUdWVzZGF5LCBBcHJpbCA0LCAyMDIz IDc6MzUgUE0gc2h2ZXRhIG1hbGlrIDxzaHZldGEubWFsaWtAZ21haWwuY29tPg0KPiB3cm90ZToN Cj4gPg0KPiA+IE9uIFR1ZSwgQXByIDQsIDIwMjMgYXQgODo0M+KAr0FNIGhvdXpqLmZuc3RAZnVq aXRzdS5jb20NCj4gPiA8aG91emouZm5zdEBmdWppdHN1LmNvbT4gd3JvdGU6DQo+ID4NCj4gPiA+ IEF0dGFjaCB0aGUgbmV3IHZlcnNpb24gcGF0Y2ggc2V0IHdoaWNoIGRpZCB0aGUgZm9sbG93aW5n IGNoYW5nZXM6DQo+ID4gPg0KPiA+DQo+ID4gSGVsbG8sDQo+ID4NCj4gPiBJIHRyaWVkIGJlbG93 Og0KPiA+IHB1Ym5ldz0jIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViMiBTRVQgKGRkbCA9ICd0YWJs ZScpOyBBTFRFUg0KPiA+IFBVQkxJQ0FUSU9ODQo+ID4NCj4gPiBwdWJuZXc9IyBcZFJwKw0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiBteXB1 YjIgT3duZXIgIHwNCj4gPiBBbGwgdGFibGVzDQo+ID4gfCBBbGwgRERMcyB8IFRhYmxlIERETHMg fA0KPiA+IC0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0NCj4gPiBzaHZldGEgfCAgICAgICAgIHQgICAgICAgICAgfCBmICAgICAgICAgICAgICAg fCBmDQo+ID4gKDEgcm93KQ0KPiA+DQo+ID4gSSBzdGlsbCBzZWUgJ1RhYmxlIERETHMnIGFzIGZh bHNlIGFuZCBkZGwgcmVwbGljYXRpb24gZGlkIG5vdCB3b3JrIGZvciB0aGlzIGNhc2UuDQo+IA0K PiBUaGFua3MgZm9yIHJlcG9ydGluZy4NCj4gDQo+IEF0dGFjaCB0aGUgbmV3IHZlcnNpb24gcGF0 Y2ggd2hpY2ggaW5jbHVkZSB0aGUgZm9sbG93aW5nIGNoYW5nZXM6DQo+ICogRml4IHRoZSBhYm92 ZSBidWcgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIFNFVC4NCj4gKiBNb2RpZnkgdGhlIGNvcnJlc3Bv bmRpbmcgZXZlbnQgdHJpZ2dlciB3aGVuIHVzZXIgZXhlY3V0ZSBBTFRFUg0KPiBQVUJMSUNBVElP TiBTRVQgdG8gY2hhbmdlIHRoZSBkZGwgb3B0aW9uLg0KPiAqIEZpeCBhIG1pc3MgaW4gcGdfZHVt cCdzIGNvZGUgd2hpY2ggY2F1c2VzIENGYm90IGZhaWx1cmUuDQo+ICogUmViYXNlIHRoZSBwYXRj aCBkdWUgdG8gcmVjZW50IGNvbW1pdCA0ODI2NzU5Lg0KDQpTb3JyeSwgdGhlcmUgd2FzIGEgbWlz cyB3aGVuIHJlYmFzaW5nIHRoZSBwYXRjaCB3aGljaCBjb3VsZCBjYXVzZSB0aGUNCkNGYm90IHRv IGZhaWwgYW5kIGhlcmUgaXMgdGhlIGNvcnJlY3QgcGF0Y2ggc2V0Lg0KDQpCZXN0IFJlZ2FyZHMs DQpIb3UgemoNCg0KDQo= --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0001-Deparser-for-Table-DDL-commands-and-exten-2023_04_07-2.patch" Content-Description: 0001-Deparser-for-Table-DDL-commands-and-exten-2023_04_07-2.patch Content-Disposition: attachment; filename="0001-Deparser-for-Table-DDL-commands-and-exten-2023_04_07-2.patch"; size=161848; creation-date="Fri, 07 Apr 2023 03:17:30 GMT"; modification-date="Fri, 07 Apr 2023 03:22:31 GMT" Content-Transfer-Encoding: base64 RnJvbSA2NmFkNzFjZDUzN2Y0YWUwN2FjYWY0MzM2NzE3MTkzNGZkMmIyZjY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYW5nIFdlaSA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0 ZTogVGh1LCAzMCBNYXIgMjAyMyAxMzo1MDoyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMS82XSBE ZXBhcnNlciBmb3IgVGFibGUgRERMIGNvbW1hbmRzIGFuZCBleHRlbmRpbmcgZXZlbnQKIHRyaWdn ZXJzCgpUaGlzIHBhdGNoIGNvbnN0cnVjdHMgSlNPTiBibG9icyByZXByZXNlbnRpbmcgRERMIGNv bW1hbmRzLCB3aGljaCBjYW4KbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5n cyBieSB3ZWxsLWRlZmluZWQgc3ByaW50Zi1saWtlCmV4cGFuc2lvbi4gVGhlc2UgSlNPTiBvYmpl Y3RzIGFyZSBpbnRlbmRlZCB0byBhbGxvdyBmb3IgbWFjaGluZS1lZGl0aW5nIG9mCnRoZSBjb21t YW5kcywgYnkgcmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgoKTXVj aCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIG91dHB1dCBibG9iIGFjdHVhbGx5IGNvbWVzIGZy b20gc3lzdGVtCmNhdGFsb2dzLCBub3QgZnJvbSB0aGUgY29tbWFuZCBwYXJzZSBub2RlLCBhcyBp dCBpcyBpbXBvc3NpYmxlIHRvIHJlbGlhYmx5CmNvbnN0cnVjdCBhIGZ1bGx5LXNwZWNpZmllZCBj b21tYW5kIChpLmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9wYXRoCmV0YykgbG9va2lu ZyBvbmx5IGF0IHRoZSBwYXJzZSBub2RlLgoKVGhpcyBwcm92aWRlcyBhIGJhc2UgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gb2YgRERMIHN0YXRlbWVudHMuIEN1cnJlbnRseSwKdGhlIHBhdGNoIGhh cyBzdXBwb3J0IGZvcjoKCkNSRUFURS9BTFRFUi9EUk9QIFRBQkxFIC0tIE5vdGUgIzEsIE5vdGUg IzIKCk5vdGU6IEZvciBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiwgd2UgaGF2ZW4ndCBhZGRlZCBl eHRyYSBsb2dpYyBvbgp0aGUgc3Vic2NyaWJlciB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhl IHRhYmxlIG9uIHRoZSBwdWJsaXNoZXIgaXMgYSBQQVJUSVRJT05FRApUQUJMRSB3aGlsZSB0aGUg dGFyZ2V0IHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUgaXMgYSBOT1JNQUwgdGFibGUuIFdl IHdpbGwKcmVzZWFyY2ggdGhpcyBtb3JlIGFuZCBpbXByb3ZlIGl0IGxhdGVyLgotLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYyAgICAgIHwgICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf ZGVwYXJzZS5jICAgfCAzMzkxICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9kZGxfanNvbi5jICAgICAgfCAgNzgwICsrKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jIHwgIDM1MCArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAg ICAgIHwgICA0MyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgfCAgIDEw ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgfCAgICAxICsKIHNyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICB8ICAxMDkgKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdF90eXBlLmMgIHwgICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jICAgIHwgICAzMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUu YyAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgfCAgICA3 ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCB8ICAgNTAgKy0KIHNyYy9p bmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICB8ICAgIDkgKwogc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBh cnNlLmggICAgICAgfCAgIDIyICsKIHNyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5Lmgg ICB8ICAgMTIgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oICAgICAgICAgICB8ICAgIDIg Kwogc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCAgICAgICAgIHwgICAgMSArCiBzcmMvaW5j bHVkZS91dGlscy9ldnRjYWNoZS5oICAgICAgICAgfCAgICAzICstCiBzcmMvaW5jbHVkZS91dGls cy9ydWxldXRpbHMuaCAgICAgICAgfCAgICA5ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICB8ICAgIDQgKwogMjQgZmlsZXMgY2hhbmdlZCwgNDc5MSBpbnNlcnRpb25zKCsp LCA2NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9jb21tYW5k cy9kZGxfZGVwYXJzZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY29tbWFuZHMv ZGRsX2pzb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFy c2UuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5MS4uMTcxZGZiMjgwMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvTWFrZWZpbGUKQEAgLTI5LDYgKzI5LDggQEAgT0JKUyA9IFwKIAljb3B5dG8ubyBc CiAJY3JlYXRlYXMubyBcCiAJZGJjb21tYW5kcy5vIFwKKwlkZGxfZGVwYXJzZS5vIFwKKwlkZGxf anNvbi5vIFwKIAlkZWZpbmUubyBcCiAJZGlzY2FyZC5vIFwKIAlkcm9wY21kcy5vIFwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCmluZGV4IGU5MTkyMGNhMTQuLmE3YjIyY2I1ZGIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy90b2FzdGluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2NyZWF0ZWFzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCkBAIC0xNDMsNiArMTQ0LDE1IEBAIGNyZWF0 ZV9jdGFzX2ludGVybmFsKExpc3QgKmF0dHJMaXN0LCBJbnRvQ2xhdXNlICppbnRvKQogCQlTdG9y ZVZpZXdRdWVyeShpbnRvUmVsYXRpb25BZGRyLm9iamVjdElkLCBxdWVyeSwgZmFsc2UpOwogCQlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBGaXJl IHRoZSB0cmlnZ2VyIGZvciB0YWJsZV9pbml0X3dyaXRlIGFmdGVyIGNyZWF0aW5nIHRoZSB0YWJs ZSBzbworCQkgKiB0aGF0IHdlIGNhbiBhY2Nlc3MgdGhlIGNhdGFsb2cgaW5mbyBhYm91dCB0aGUg bmV3bHkgY3JlYXRlZCB0YWJsZQorCQkgKiBpbiB0aGUgdHJpZ2dlciBmdW5jdGlvbi4KKwkJICov CisJCUV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlKChOb2RlICopIGNyZWF0ZSwgaW50b1JlbGF0 aW9uQWRkcik7CisJfQogCiAJcmV0dXJuIGludG9SZWxhdGlvbkFkZHI7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsX2RlcGFyc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42 ZWZlODQ0OThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2Rl cGFyc2UuYwpAQCAtMCwwICsxLDMzOTEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRk bF9kZXBhcnNlLmMKKyAqCSAgRnVuY3Rpb25zIHRvIGNvbnZlcnQgdXRpbGl0eSBjb21tYW5kcyB0 byBtYWNoaW5lLXBhcnNlYWJsZQorICoJICByZXByZXNlbnRhdGlvbgorICoKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBOT1RFUworICoKKyAqIFRoaXMgaXMgaW50ZW5k ZWQgdG8gcHJvdmlkZSBKU09OIGJsb2JzIHJlcHJlc2VudGluZyBEREwgY29tbWFuZHMsIHdoaWNo IGNhbgorICogbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5ncyBieSB3ZWxs LWRlZmluZWQgc3ByaW50Zi1saWtlCisgKiBleHBhbnNpb24uICBUaGVzZSBKU09OIG9iamVjdHMg YXJlIGludGVuZGVkIHRvIGFsbG93IGZvciBtYWNoaW5lLWVkaXRpbmcgb2YKKyAqIHRoZSBjb21t YW5kcywgYnkgcmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgorICoK KyAqIE11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBvdXRwdXQgYmxvYiBhY3R1YWxseSBj b21lcyBmcm9tIHN5c3RlbQorICogY2F0YWxvZ3MsIG5vdCBmcm9tIHRoZSBjb21tYW5kIHBhcnNl IG5vZGUsIGFzIGl0IGlzIGltcG9zc2libGUgdG8gcmVsaWFibHkKKyAqIGNvbnN0cnVjdCBhIGZ1 bGx5LXNwZWNpZmllZCBjb21tYW5kIChpLmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9w YXRoCisgKiBldGMpIGxvb2tpbmcgb25seSBhdCB0aGUgcGFyc2Ugbm9kZS4KKyAqCisgKiBEZXBh cnNlIG9iamVjdCB0cmVlIGlzIGNyZWF0ZWQgYnkgdXNpbmc6CisgKiAJYSkgbmV3X29ianRyZWUo Imtub3cgY29udGVudHMiKSB3aGVyZSB0aGUgY29tcGxldGUgdHJlZSBjb250ZW50IGlzIGtub3du IG9yCisgKiAgICAgdGhlIGluaXRpYWwgdHJlZSBjb250ZW50IGlzIGtub3duLgorICogCWIpIG5l d19vYmp0cmVlKCIiKSBmb3IgdGhlIHN5bnRheCB3aGVyZSB0aGUgb2JqZWN0IHRyZWUgd2lsbCBi ZSBkZXJpdmVkCisgKiAgICAgYmFzZWQgb24gc29tZSBjb25kaXRpb25hbCBjaGVja3MuCisgKiAJ YykgbmV3X29ianRyZWVfVkEgd2hlcmUgdGhlIGNvbXBsZXRlIHRyZWUgY2FuIGJlIGRlcml2ZWQg dXNpbmcgc29tZSBmaXhlZAorICogICAgIGNvbnRlbnQgb3IgYnkgdXNpbmcgdGhlIGluaXRpYWwg dHJlZSBjb250ZW50IGFsb25nIHdpdGggc29tZSB2YXJpYWJsZQorICogICAgIGFyZ3VtZW50cy4K KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVw YXJzZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiYWNjZXNzL2FtYXBpLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9u LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3Bh Y2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19h Z2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfY2FzdC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb252 ZXJzaW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19kZXBlbmQuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9kYXRhX3dy YXBwZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25fc2VydmVyLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFuZ3VhZ2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wcm9jLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcmV3cml0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VxdWVuY2UuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Ry YW5zZm9ybS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfY29uZmlnLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ190c19kaWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNpbmNsdWRl ICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24u aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisj aW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV90 eXBlLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInRj b3AvZGRsX2RlcGFyc2UuaCIKKyNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKKyNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAi dXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9ydWxl dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisvKiBFc3RpbWF0ZWQgbGVu Z3RoIG9mIHRoZSBnZW5lcmF0ZWQganNvbmIgc3RyaW5nICovCisjZGVmaW5lIEpTT05CX0VTVElN QVRFRF9MRU4gMTI4CisKKy8qCisgKiBCZWZvcmUgdGhleSBhcmUgdHVybmVkIGludG8gSlNPTkIg cmVwcmVzZW50YXRpb24sIGVhY2ggY29tbWFuZCBpcworICogcmVwcmVzZW50ZWQgYXMgYW4gb2Jq ZWN0IHRyZWUsIHVzaW5nIHRoZSBzdHJ1Y3RzIGJlbG93LgorICovCit0eXBlZGVmIGVudW0KK3sK KwlPYmpUeXBlTnVsbCwKKwlPYmpUeXBlQm9vbCwKKwlPYmpUeXBlU3RyaW5nLAorCU9ialR5cGVB cnJheSwKKwlPYmpUeXBlSW50ZWdlciwKKwlPYmpUeXBlRmxvYXQsCisJT2JqVHlwZU9iamVjdAor fSBPYmpUeXBlOworCit0eXBlZGVmIGVudW0KK3sKKwlDb25zdHJPYmpUYWJsZSwKKwlDb25zdHJP YmpEb21haW4sCisJQ29uc3RyT2JqRm9yZWlnblRhYmxlCit9IENvbnN0cmFpbnRPYmpUeXBlOwor CisvKgorICogUmVwcmVzZW50IHRoZSBjb21tYW5kIGFzIGFuIG9iamVjdCB0cmVlLgorICovCit0 eXBlZGVmIHN0cnVjdCBPYmpUcmVlCit7CisJc2xpc3RfaGVhZAlwYXJhbXM7CQkJLyogT2JqZWN0 IHRyZWUgcGFyYW1ldGVycyAqLworCWludAkJCW51bVBhcmFtczsJCS8qIE51bWJlciBvZiBwYXJh bWV0ZXJzIGluIHRoZSBvYmplY3QgdHJlZSAqLworCVN0cmluZ0luZm8JZm10aW5mbzsJCS8qIEZv cm1hdCBzdHJpbmcgb2YgdGhlIE9ialRyZWUgKi8KKwlib29sCQlwcmVzZW50OwkJLyogSW5kaWNh dGVzIGlmIGJvb2xlYW4gdmFsdWUgc2hvdWxkIGJlIHN0b3JlZCAqLworfSBPYmpUcmVlOworCisv KgorICogQW4gZWxlbWVudCBvZiBhbiBvYmplY3QgdHJlZSAoT2JqVHJlZSkuCisgKi8KK3R5cGVk ZWYgc3RydWN0IE9iakVsZW0KK3sKKwljaGFyCSAgICpuYW1lOwkJCS8qIE5hbWUgb2Ygb2JqZWN0 IGVsZW1lbnQgKi8KKwlPYmpUeXBlCQlvYmp0eXBlOwkJLyogT2JqZWN0IHR5cGUgKi8KKworCXVu aW9uCisJeworCQlib29sCQlib29sZWFuOworCQljaGFyCSAgICpzdHJpbmc7CisJCWludDY0CQlp bnRlZ2VyOworCQlmbG9hdDgJCWZsdDsKKwkJT2JqVHJlZSAgICAqb2JqZWN0OworCQlMaXN0CSAg ICphcnJheTsKKwl9CQkJdmFsdWU7CQkJLyogU3RvcmUgdGhlIG9iamVjdCB2YWx1ZSBiYXNlZCBv biB0aGUgb2JqZWN0CisJCQkJCQkJCSAqIHR5cGUgKi8KKwlzbGlzdF9ub2RlCW5vZGU7CQkJLyog VXNlZCBpbiBjb252ZXJ0aW5nIGJhY2sgdG8gT2JqRWxlbQorCQkJCQkJCQkgKiBzdHJ1Y3R1cmUg Ki8KK30gT2JqRWxlbTsKKworLyoKKyAqIFJlZHVjZSBzb21lIHVubmVjZXNzYXJ5IHN0cmluZ3Mg ZnJvbSB0aGUgb3V0cHV0IGpzb24gd2hlbiB2ZXJib3NlCisgKiBhbmQgInByZXNlbnQiIG1lbWJl ciBpcyBmYWxzZS4gVGhpcyBtZWFucyB0aGVzZSBzdHJpbmdzIHdvbid0IGJlIG1lcmdlZCBpbnRv CisgKiB0aGUgbGFzdCBEREwgY29tbWFuZC4KKyAqLworYm9vbAkJdmVyYm9zZSA9IHRydWU7CisK K3N0YXRpYyB2b2lkIGFwcGVuZF9hcnJheV9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3Vi X2ZtdCwgTGlzdCAqYXJyYXkpOworc3RhdGljIHZvaWQgYXBwZW5kX2Jvb2xfb2JqZWN0KE9ialRy ZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFsdWUpOworc3RhdGljIHZvaWQgYXBwZW5k X251bGxfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQpOworc3RhdGljIHZvaWQg YXBwZW5kX29iamVjdF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgT2JqVHJl ZSAqdmFsdWUpOworc3RhdGljIGNoYXIgKmFwcGVuZF9vYmplY3RfdG9fZm9ybWF0X3N0cmluZyhP YmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10KTsKK3N0YXRpYyB2b2lkIGFwcGVuZF9wcmVtYWRl X29iamVjdChPYmpUcmVlICp0cmVlLCBPYmpFbGVtICplbGVtKTsKK3N0YXRpYyB2b2lkIGFwcGVu ZF9zdHJpbmdfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGNoYXIgKm5hbWUs CisJCQkJCQkJCSBjaGFyICp2YWx1ZSk7CitzdGF0aWMgdm9pZCBmb3JtYXRfdHlwZV9kZXRhaWxl ZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsCisJCQkJCQkJCSBPaWQgKm5zcGlkLCBjaGFy ICoqdHlwbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCisJCQkJCQkJCSBib29sICp0eXBhcnJheSk7 CitzdGF0aWMgT2JqRWxlbSAqbmV3X29iamVjdChPYmpUeXBlIHR5cGUsIGNoYXIgKm5hbWUpOwor c3RhdGljIE9ialRyZWUgKm5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPaWQgY2xhc3NJZCwg T2lkIG9iamVjdElkKTsKK3N0YXRpYyBPYmpFbGVtICpuZXdfb2JqZWN0X29iamVjdChPYmpUcmVl ICp2YWx1ZSk7CitzdGF0aWMgT2JqVHJlZSAqbmV3X29ianRyZWVfVkEoY2hhciAqZm10LCBpbnQg bnVtb2JqcywuLi4pOworc3RhdGljIEpzb25iVmFsdWUgKm9ianRyZWVfdG9fanNvbmJfcmVjKE9i alRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpOworc3RhdGljIGNoYXIgKlJlbGF0 aW9uR2V0Q29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sCisJCQkJ CQkJCQkgIExpc3QgKmRwY29udGV4dCwgTGlzdCAqKmV4cHJzKTsKKworc3RhdGljIE9ialRyZWUg KmRlcGFyc2VfQ29sdW1uRGVmKFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICpkcGNvbnRleHQsIGJv b2wgY29tcG9zaXRlLAorCQkJCQkJCQkgIENvbHVtbkRlZiAqY29sZGVmLCBib29sIGlzX2FsdGVy LCBMaXN0ICoqZXhwcnMpOworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfQ29sdW1uSWRlbnRpdHko T2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50aXR5LCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBP YmpUcmVlICpkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoQWx0ZXJUYWJsZUNtZCAqc3ViY21kKTsK Kworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRGVmRWxlbShEZWZFbGVtICplbGVtLCBib29sIGlz X3Jlc2V0KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX09uQ29tbWl0Q2xhdXNlKE9uQ29tbWl0 QWN0aW9uIG9wdGlvbik7CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9SZWxTZXRPcHRpb25zKEFs dGVyVGFibGVDbWQgKnN1YmNtZCk7CisKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9T ZXFfQ2FjaGUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0 YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfQ3ljbGUoRm9ybV9wZ19zZXF1ZW5jZSBz ZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJz ZV9TZXFfSW5jcmVtZW50QnkoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3Rh YmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfTWludmFsdWUoRm9ybV9w Z19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2Jq RWxlbSAqZGVwYXJzZV9TZXFfTWF4dmFsdWUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29s IGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfUmVzdGFy dChpbnQ2NCBsYXN0X3ZhbHVlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFf U3RhcnR3aXRoKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSk7Citz dGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX0FzKEZvcm1fcGdfc2VxdWVuY2Ugc2Vx ZGF0YSk7CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9TdG9yYWdlKEZvcm1f cGdfdHlwZSB0eXBGb3JtKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9UeXBlX1Jl Y2VpdmUoRm9ybV9wZ190eXBlIHR5cEZvcm0pOworc3RhdGljIGlubGluZSBPYmpFbGVtICpkZXBh cnNlX1R5cGVfU2VuZChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CitzdGF0aWMgaW5saW5lIE9iakVs ZW0gKmRlcGFyc2VfVHlwZV9UeXBtb2RfSW4oRm9ybV9wZ190eXBlIHR5cEZvcm0pOworc3RhdGlj IGlubGluZSBPYmpFbGVtICpkZXBhcnNlX1R5cGVfVHlwbW9kX091dChGb3JtX3BnX3R5cGUgdHlw Rm9ybSk7CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9BbmFseXplKEZvcm1f cGdfdHlwZSB0eXBGb3JtKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9UeXBlX1N1 YnNjcmlwdChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CisKK3N0YXRpYyBMaXN0ICpkZXBhcnNlX0lu aFJlbGF0aW9ucyhPaWQgb2JqZWN0SWQpOworc3RhdGljIExpc3QgKmRlcGFyc2VfVGFibGVFbGVt ZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywgTGlzdCAqZHBjb250 ZXh0LAorCQkJCQkJCQkgICBib29sIHR5cGVkLCBib29sIGNvbXBvc2l0ZSk7CisKKy8qCisgKiBB cHBlbmQgcHJlc2VudCBhcyBmYWxzZSB0byBhIHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBl bmRfbm90X3ByZXNlbnQoT2JqVHJlZSAqdHJlZSkKK3sKKwlhcHBlbmRfYm9vbF9vYmplY3QodHJl ZSwgInByZXNlbnQiLCBmYWxzZSk7Cit9CisKKy8qCisgKiBBcHBlbmQgYW4gYXJyYXkgcGFyYW1l dGVyIHRvIGEgdHJlZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9hcnJheV9vYmplY3QoT2Jq VHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgTGlzdCAqYXJyYXkpCit7CisJT2JqRWxlbSAgICAq cGFyYW07CisJY2hhcgkgICAqb2JqZWN0X25hbWU7CisKKwlBc3NlcnQoc3ViX2ZtdCk7CisKKwlp ZiAobGlzdF9sZW5ndGgoYXJyYXkpID09IDApCisJCXJldHVybjsKKworCWlmICghdmVyYm9zZSkK Kwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qIFJlbW92ZSBlbGVtZW50cyB3aGVyZSBwcmVz ZW50IGZsYWcgaXMgZmFsc2UgKi8KKwkJZm9yZWFjaChsYywgYXJyYXkpCisJCXsKKwkJCU9iakVs ZW0gICAgKmVsZW0gPSAoT2JqRWxlbSAqKSBsZmlyc3QobGMpOworCisJCQlBc3NlcnQoZWxlbS0+ b2JqdHlwZSA9PSBPYmpUeXBlT2JqZWN0IHx8CisJCQkJICAgZWxlbS0+b2JqdHlwZSA9PSBPYmpU eXBlU3RyaW5nKTsKKworCQkJaWYgKCFlbGVtLT52YWx1ZS5vYmplY3QtPnByZXNlbnQgJiYKKwkJ CQllbGVtLT5vYmp0eXBlID09IE9ialR5cGVPYmplY3QpCisJCQkJYXJyYXkgPSBmb3JlYWNoX2Rl bGV0ZV9jdXJyZW50KGFycmF5LCBsYyk7CisJCX0KKworCX0KKworCS8qIENoZWNrIGZvciBlbXB0 eSBsaXN0IGFmdGVyIHJlbW92aW5nIGVsZW1lbnRzICovCisJaWYgKGxpc3RfbGVuZ3RoKGFycmF5 KSA9PSAwKQorCQlyZXR1cm47CisKKwlvYmplY3RfbmFtZSA9IGFwcGVuZF9vYmplY3RfdG9fZm9y bWF0X3N0cmluZyh0cmVlLCBzdWJfZm10KTsKKworCXBhcmFtID0gbmV3X29iamVjdChPYmpUeXBl QXJyYXksIG9iamVjdF9uYW1lKTsKKwlwYXJhbS0+dmFsdWUuYXJyYXkgPSBhcnJheTsKKwlhcHBl bmRfcHJlbWFkZV9vYmplY3QodHJlZSwgcGFyYW0pOworfQorCisvKgorICogQXBwZW5kIGEgYm9v bGVhbiBwYXJhbWV0ZXIgdG8gYSB0cmVlLgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kX2Jvb2xf b2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFsdWUpCit7CisJT2Jq RWxlbSAgICAqcGFyYW07CisJY2hhcgkgICAqb2JqZWN0X25hbWUgPSBzdWJfZm10OworCWJvb2wJ CWlzX3ByZXNlbnRfZmxhZyA9IGZhbHNlOworCisJQXNzZXJ0KHN1Yl9mbXQpOworCisJLyoKKwkg KiBDaGVjayBpZiB0aGUgZm9ybWF0IHN0cmluZyBpcyAncHJlc2VudCcgYW5kIGlmIHllcywgc3Rv cmUgdGhlIGJvb2xlYW4KKwkgKiB2YWx1ZQorCSAqLworCWlmIChzdHJjbXAoc3ViX2ZtdCwgInBy ZXNlbnQiKSA9PSAwKQorCXsKKwkJaXNfcHJlc2VudF9mbGFnID0gdHJ1ZTsKKwkJdHJlZS0+cHJl c2VudCA9IHZhbHVlOworCX0KKworCWlmICghaXNfcHJlc2VudF9mbGFnKQorCQlvYmplY3RfbmFt ZSA9IGFwcGVuZF9vYmplY3RfdG9fZm9ybWF0X3N0cmluZyh0cmVlLCBzdWJfZm10KTsKKworCXBh cmFtID0gbmV3X29iamVjdChPYmpUeXBlQm9vbCwgb2JqZWN0X25hbWUpOworCXBhcmFtLT52YWx1 ZS5ib29sZWFuID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsK K30KKworLyoKKyAqIEFwcGVuZCB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZyB0byB0aGUgT2JqVHJl ZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9mb3JtYXRfc3RyaW5nKE9ialRyZWUgKnRyZWUs IGNoYXIgKnN1Yl9mbXQpCit7CisJaW50CQkJbGVuOworCWNoYXIJICAgKmZtdDsKKworCWlmICh0 cmVlLT5mbXRpbmZvID09IE5VTEwpCisJCXJldHVybjsKKworCWZtdCA9IHRyZWUtPmZtdGluZm8t PmRhdGE7CisJbGVuID0gdHJlZS0+Zm10aW5mby0+bGVuOworCisJLyogQWRkIGEgc2VwYXJhdG9y IGlmIG5lY2Vzc2FyeSAqLworCWlmIChsZW4gPiAwICYmIGZtdFtsZW4gLSAxXSAhPSAnICcpCisJ CWFwcGVuZFN0cmluZ0luZm9TcGFjZXModHJlZS0+Zm10aW5mbywgMSk7CisKKwlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKHRyZWUtPmZtdGluZm8sIHN1Yl9mbXQpOworfQorCisvKgorICogQXBwZW5k IGEgTlVMTCBvYmplY3QgdG8gYSB0cmVlLgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kX251bGxf b2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQpCit7CisJY2hhcgkgICAqb2JqZWN0 X25hbWU7CisKKwlBc3NlcnQoc3ViX2ZtdCk7CisKKwlpZiAoIXZlcmJvc2UpCisJCXJldHVybjsK KworCW9iamVjdF9uYW1lID0gYXBwZW5kX29iamVjdF90b19mb3JtYXRfc3RyaW5nKHRyZWUsIHN1 Yl9mbXQpOworCisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIG5ld19vYmplY3QoT2JqVHlw ZU51bGwsIG9iamVjdF9uYW1lKSk7Cit9CisKKy8qCisgKiBBcHBlbmQgYW4gb2JqZWN0IHBhcmFt ZXRlciB0byBhIHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfb2JqZWN0X29iamVjdChP YmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBPYmpUcmVlICp2YWx1ZSkKK3sKKwlPYmpFbGVt ICAgICpwYXJhbTsKKwljaGFyCSAgICpvYmplY3RfbmFtZTsKKworCUFzc2VydChzdWJfZm10KTsK KworCWlmICghdmVyYm9zZSAmJiAhdmFsdWUtPnByZXNlbnQpCisJCXJldHVybjsKKworCW9iamVj dF9uYW1lID0gYXBwZW5kX29iamVjdF90b19mb3JtYXRfc3RyaW5nKHRyZWUsIHN1Yl9mbXQpOwor CisJcGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVPYmplY3QsIG9iamVjdF9uYW1lKTsKKwlwYXJh bS0+dmFsdWUub2JqZWN0ID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBh cmFtKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgb2JqZWN0IG5hbWUgd2hpY2ggaXMgZXh0cmFj dGVkIGZyb20gdGhlIGlucHV0ICIqJXtuYW1lWzouXX0qIgorICogc3R5bGUgc3RyaW5nLiBBbmQg YXBwZW5kIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nIHRvIHRoZSBPYmpUcmVlLgorICovCitzdGF0 aWMgY2hhciAqCithcHBlbmRfb2JqZWN0X3RvX2Zvcm1hdF9zdHJpbmcoT2JqVHJlZSAqdHJlZSwg Y2hhciAqc3ViX2ZtdCkKK3sKKwlTdHJpbmdJbmZvRGF0YSBvYmplY3RfbmFtZTsKKwljb25zdCBj aGFyICplbmRfcHRyLCAqc3RhcnRfcHRyOworCWludCAgICAgICAgIGxlbmd0aDsKKwljaGFyICAg ICAgICAqdG1wX3N0cjsKKworCWlmIChzdWJfZm10ID09IE5VTEwgfHwgdHJlZS0+Zm10aW5mbyA9 PSBOVUxMKQorCQlyZXR1cm4gc3ViX2ZtdDsKKworCWluaXRTdHJpbmdJbmZvKCZvYmplY3RfbmFt ZSk7CisKKwlzdGFydF9wdHIgPSBzdHJjaHIoc3ViX2ZtdCwgJ3snKTsKKwllbmRfcHRyID0gc3Ry Y2hyKHN1Yl9mbXQsICc6Jyk7CisJaWYgKGVuZF9wdHIgPT0gTlVMTCkKKwkJZW5kX3B0ciA9IHN0 cmNocihzdWJfZm10LCAnfScpOworCisJaWYgKHN0YXJ0X3B0ciAhPSBOVUxMICYmIGVuZF9wdHIg IT0gTlVMTCkKKwl7CisJCWxlbmd0aCA9IGVuZF9wdHIgLSBzdGFydF9wdHIgLSAxOworCQl0bXBf c3RyID0gKGNoYXIgKikgcGFsbG9jKGxlbmd0aCArIDEpOworCQlzdHJuY3B5KHRtcF9zdHIsIHN0 YXJ0X3B0ciArIDEsIGxlbmd0aCk7CisJCXRtcF9zdHJbbGVuZ3RoXSA9ICdcMCc7CisJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJm9iamVjdF9uYW1lLCB0bXBfc3RyKTsKKwkJcGZyZWUodG1wX3N0 cik7CisJfQorCisJaWYgKG9iamVjdF9uYW1lLmxlbiA9PSAwKQorCQllbG9nKEVSUk9SLCAib2Jq ZWN0IG5hbWUgbm90IGZvdW5kIik7CisKKwlhcHBlbmRfZm9ybWF0X3N0cmluZyh0cmVlLCBzdWJf Zm10KTsKKworCXJldHVybiBvYmplY3RfbmFtZS5kYXRhOworCit9CisKKy8qCisgKiBBcHBlbmQg YSBwcmVhbGxvY2F0ZWQgcGFyYW1ldGVyIHRvIGEgdHJlZS4KKyAqLworc3RhdGljIGlubGluZSB2 b2lkCithcHBlbmRfcHJlbWFkZV9vYmplY3QoT2JqVHJlZSAqdHJlZSwgT2JqRWxlbSAqZWxlbSkK K3sKKwlzbGlzdF9wdXNoX2hlYWQoJnRyZWUtPnBhcmFtcywgJmVsZW0tPm5vZGUpOworCXRyZWUt Pm51bVBhcmFtcysrOworfQorCisvKgorICogQXBwZW5kIGEgc3RyaW5nIHBhcmFtZXRlciB0byBh IHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfc3RyaW5nX29iamVjdChPYmpUcmVlICp0 cmVlLCBjaGFyICpzdWJfZm10LCBjaGFyICogb2JqZWN0X25hbWUsCisJCQkJCSBjaGFyICp2YWx1 ZSkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKworCUFzc2VydChzdWJfZm10KTsKKworCWlmICgh dmVyYm9zZSAmJiAodmFsdWUgPT0gTlVMTCB8fCB2YWx1ZVswXSA9PSAnXDAnKSkKKwkJcmV0dXJu OworCisJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodHJlZSwgc3ViX2ZtdCk7CisJcGFyYW0gPSBuZXdf b2JqZWN0KE9ialR5cGVTdHJpbmcsIG9iamVjdF9uYW1lKTsKKwlwYXJhbS0+dmFsdWUuc3RyaW5n ID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsKK30KKworLyoK KyAqIFNpbWlsYXIgdG8gZm9ybWF0X3R5cGVfZXh0ZW5kZWQsIGV4Y2VwdCB3ZSByZXR1cm4gZWFj aCBiaXQgb2YgaW5mb3JtYXRpb24KKyAqIHNlcGFyYXRlbHk6CisgKgorICogLSBuc3BpZCBpcyB0 aGUgc2NoZW1hIE9JRC4gIEZvciBjZXJ0YWluIFNRTC1zdGFuZGFyZCB0eXBlcyB3aGljaCBoYXZl IHdlaXJkCisgKiAgIHR5cG1vZCBydWxlcywgd2UgcmV0dXJuIEludmFsaWRPaWQ7IHRoZSBjYWxs ZXIgaXMgZXhwZWN0ZWQgdG8gbm90IHNjaGVtYS0KKyAqICAgcXVhbGlmeSB0aGUgbmFtZSBub3Ig YWRkIHF1b3RlcyB0byB0aGUgdHlwZSBuYW1lIGluIHRoaXMgY2FzZS4KKyAqCisgKiAtIHR5cG5h bWUgaXMgc2V0IHRvIHRoZSB0eXBlIG5hbWUsIHdpdGhvdXQgcXVvdGVzCisgKgorICogLSB0eXBl bW9kc3RyIGlzIHNldCB0byB0aGUgdHlwZW1vZCwgaWYgYW55LCBhcyBhIHN0cmluZyB3aXRoIHBh cmVudGhlc2VzCisgKgorICogLSB0eXBhcnJheSBpbmRpY2F0ZXMgd2hldGhlciBbXXMgbXVzdCBi ZSBhZGRlZAorICoKKyAqIFdlIGRvbid0IHRyeSB0byBkZWNvZGUgdHlwZSBuYW1lcyB0byB0aGVp ciBzdGFuZGFyZC1tYW5kYXRlZCBuYW1lcywgZXhjZXB0CisgKiBpbiB0aGUgY2FzZXMgb2YgdHlw ZXMgd2l0aCB1bnVzdWFsIHR5cG1vZCBydWxlcy4KKyAqLworc3RhdGljIHZvaWQKK2Zvcm1hdF90 eXBlX2RldGFpbGVkKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCwKKwkJCQkJIE9pZCAqbnNw aWQsIGNoYXIgKip0eXBlbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCisJCQkJCSBib29sICp0eXBl YXJyYXkpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfdHlwZSB0eXBlZm9ybTsKKwlP aWQJCQlhcnJheV9iYXNlX3R5cGU7CisKKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lE LCBPYmplY3RJZEdldERhdHVtKHR5cGVfb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1 cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgd2l0aCBP SUQgJXUiLCB0eXBlX29pZCk7CisKKwl0eXBlZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VCh0dXBsZSk7CisKKwkvKgorCSAqIENoZWNrIGlmIGl0J3MgYSByZWd1bGFyICh2YXJpYWJsZSBs ZW5ndGgpIGFycmF5IHR5cGUuICBBcyBhYm92ZSwKKwkgKiBmaXhlZC1sZW5ndGggYXJyYXkgdHlw ZXMgc3VjaCBhcyAibmFtZSIgc2hvdWxkbid0IGdldCBkZWNvbnN0cnVjdGVkLgorCSAqLworCWFy cmF5X2Jhc2VfdHlwZSA9IHR5cGVmb3JtLT50eXBlbGVtOworCisJKnR5cGVhcnJheSA9IChJc1Ry dWVBcnJheVR5cGUodHlwZWZvcm0pICYmIHR5cGVmb3JtLT50eXBzdG9yYWdlICE9IFRZUFNUT1JB R0VfUExBSU4pOworCisJaWYgKCp0eXBlYXJyYXkpCisJeworCQkvKiBTd2l0Y2ggb3VyIGF0dGVu dGlvbiB0byB0aGUgYXJyYXkgZWxlbWVudCB0eXBlICovCisJCVJlbGVhc2VTeXNDYWNoZSh0dXBs ZSk7CisJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0o YXJyYXlfYmFzZV90eXBlKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdHlwZSB3aXRoIE9JRCAldSIsIHR5 cGVfb2lkKTsKKworCQl0eXBlZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0dXBsZSk7 CisJCXR5cGVfb2lkID0gYXJyYXlfYmFzZV90eXBlOworCX0KKworCS8qCisJICogU3BlY2lhbC1j YXNlIGNyb2NrIGZvciB0eXBlcyB3aXRoIHN0cmFuZ2UgdHlwbW9kIHJ1bGVzIHdoZXJlIHdlIHB1 dAorCSAqIHR5cGVtb2QgYXQgdGhlIG1pZGRsZSBvZiBuYW1lIChlLmcuIFRJTUUoNikgd2l0aCB0 aW1lIHpvbmUpLiBXZSBjYW5ub3QKKwkgKiBzY2hlbWEtcXVhbGlmeSBub3IgYWRkIHF1b3RlcyB0 byB0aGUgdHlwZSBuYW1lIGluIHRoZXNlIGNhc2VzLgorCSAqLworCSpuc3BpZCA9IEludmFsaWRP aWQ7CisKKwlzd2l0Y2ggKHR5cGVfb2lkKQorCXsKKwkJY2FzZSBJTlRFUlZBTE9JRDoKKwkJCSp0 eXBlbmFtZSA9IHBzdHJkdXAoIklOVEVSVkFMIik7CisJCQlicmVhazsKKwkJY2FzZSBUSU1FU1RB TVBUWk9JRDoKKwkJCWlmICh0eXBlbW9kIDwgMCkKKwkJCQkqdHlwZW5hbWUgPSBwc3RyZHVwKCJU SU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUiKTsKKwkJCWVsc2UKKwkJCQkvKiBvdGhlcndpc2UsIFdJ VEggVFogaXMgYWRkZWQgYnkgdHlwbW9kLiAqLworCQkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoIlRJ TUVTVEFNUCIpOworCQkJYnJlYWs7CisJCWNhc2UgVElNRVNUQU1QT0lEOgorCQkJKnR5cGVuYW1l ID0gcHN0cmR1cCgiVElNRVNUQU1QIik7CisJCQlicmVhazsKKwkJY2FzZSBUSU1FVFpPSUQ6CisJ CQlpZiAodHlwZW1vZCA8IDApCisJCQkJKnR5cGVuYW1lID0gcHN0cmR1cCgiVElNRSBXSVRIIFRJ TUUgWk9ORSIpOworCQkJZWxzZQorCQkJCS8qIG90aGVyd2lzZSwgV0lUSCBUWiBpcyBhZGRlZCBi eSB0eXBtb2QuICovCisJCQkJKnR5cGVuYW1lID0gcHN0cmR1cCgiVElNRSIpOworCQkJYnJlYWs7 CisJCWNhc2UgVElNRU9JRDoKKwkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoIlRJTUUiKTsKKwkJCWJy ZWFrOworCQlkZWZhdWx0OgorCisJCQkvKgorCQkJICogTm8gYWRkaXRpb25hbCBwcm9jZXNzaW5n IGlzIHJlcXVpcmVkIGZvciBvdGhlciB0eXBlcywgc28gZ2V0CisJCQkgKiB0aGUgdHlwZSBuYW1l IGFuZCBzY2hlbWEgZGlyZWN0bHkgZnJvbSB0aGUgY2F0YWxvZy4KKwkJCSAqLworCQkJKm5zcGlk ID0gdHlwZWZvcm0tPnR5cG5hbWVzcGFjZTsKKwkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoTmFtZVN0 cih0eXBlZm9ybS0+dHlwbmFtZSkpOworCX0KKworCWlmICh0eXBlbW9kID49IDApCisJCSp0eXBl bW9kc3RyID0gcHJpbnRUeXBtb2QoIiIsIHR5cGVtb2QsIHR5cGVmb3JtLT50eXBtb2RvdXQpOwor CWVsc2UKKwkJKnR5cGVtb2RzdHIgPSBwc3RyZHVwKCIiKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0 dXBsZSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0 aGUgZ2l2ZW4gUkVMUEVSU0lTVEVOQ0UgdmFsdWUuCisgKi8KK3N0YXRpYyBjaGFyICoKK2dldF9w ZXJzaXN0ZW5jZV9zdHIoY2hhciBwZXJzaXN0ZW5jZSkKK3sKKwlzd2l0Y2ggKHBlcnNpc3RlbmNl KQorCXsKKwkJY2FzZSBSRUxQRVJTSVNURU5DRV9URU1QOgorCQkJcmV0dXJuICJURU1QT1JBUlki OworCQljYXNlIFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEOgorCQkJcmV0dXJuICJVTkxPR0dFRCI7 CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOgorCQkJcmV0dXJuICIiOworCQlkZWZh dWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGVyc2lzdGVuY2UgbWFya2luZyAlYyIs IHBlcnNpc3RlbmNlKTsKKwkJCXJldHVybiAiIjsJCQkvKiBtYWtlIGNvbXBpbGVyIGhhcHB5ICov CisJfQorfQorCisvKgorICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhl IGdpdmVuIHN0b3JhZ2V0eXBlIHZhbHVlLgorICovCitzdGF0aWMgaW5saW5lIGNoYXIgKgorZ2V0 X3R5cGVfc3RvcmFnZShjaGFyIHN0b3JhZ2V0eXBlKQoreworCXN3aXRjaCAoc3RvcmFnZXR5cGUp CisJeworCQljYXNlICdwJzoKKwkJCXJldHVybiAicGxhaW4iOworCQljYXNlICdlJzoKKwkJCXJl dHVybiAiZXh0ZXJuYWwiOworCQljYXNlICd4JzoKKwkJCXJldHVybiAiZXh0ZW5kZWQiOworCQlj YXNlICdtJzoKKwkJCXJldHVybiAibWFpbiI7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBzdG9yYWdlIHNwZWNpZmllciAlYyIsIHN0b3JhZ2V0eXBlKTsKKwl9Cit9CisKKy8q CisgKiBBbGxvY2F0ZSBhIG5ldyBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBPYmpFbGVtICoKK25l d19vYmplY3QoT2JqVHlwZSB0eXBlLCBjaGFyICpuYW1lKQoreworCU9iakVsZW0gICAgKnBhcmFt OworCisJcGFyYW0gPSBwYWxsb2MwKHNpemVvZihPYmpFbGVtKSk7CisJcGFyYW0tPm5hbWUgPSBu YW1lOworCXBhcmFtLT5vYmp0eXBlID0gdHlwZTsKKworCXJldHVybiBwYXJhbTsKK30KKworLyoK KyAqIEFsbG9jYXRlIGEgbmV3IG9iamVjdCBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBPYmpFbGVt ICoKK25ld19vYmplY3Rfb2JqZWN0KE9ialRyZWUgKnZhbHVlKQoreworCU9iakVsZW0gICAgKnBh cmFtOworCisJcGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVPYmplY3QsIE5VTEwpOworCXBhcmFt LT52YWx1ZS5vYmplY3QgPSB2YWx1ZTsKKworCXJldHVybiBwYXJhbTsKK30KKworLyoKKyAqIEFs bG9jYXRlIGEgbmV3IG9iamVjdCB0cmVlIHRvIHN0b3JlIHBhcmFtZXRlciB2YWx1ZXMuCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVlKGNoYXIgKmZtdCkKK3sKKwlPYmpUcmVlICAg ICpwYXJhbXM7CisKKwlwYXJhbXMgPSBwYWxsb2MwKHNpemVvZihPYmpUcmVlKSk7CisJcGFyYW1z LT5wcmVzZW50ID0gdHJ1ZTsKKwlzbGlzdF9pbml0KCZwYXJhbXMtPnBhcmFtcyk7CisKKwlpZiAo Zm10KQorCXsKKwkJcGFyYW1zLT5mbXRpbmZvID0gbWFrZVN0cmluZ0luZm8oKTsKKwkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhwYXJhbXMtPmZtdGluZm8sIGZtdCk7CisJfQorCisJcmV0dXJuIHBh cmFtczsKK30KKworLyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVwICV7fUQgYW5kICV7 fU8gZWxlbWVudHMuCisgKgorICogRWxlbWVudHMgInNjaGVtYV9uYW1lIiBhbmQgIm9ial9uYW1l IiBhcmUgc2V0LiAgSWYgdGhlIG5hbWVzcGFjZSBPSUQKKyAqIGNvcnJlc3BvbmRzIHRvIGEgdGVt cCBzY2hlbWEsIHRoYXQncyBzZXQgdG8gInBnX3RlbXAiLgorICoKKyAqIFRoZSBkaWZmZXJlbmNl IGJldHdlZW4gdGhvc2UgdHdvIGVsZW1lbnQgdHlwZXMgaXMgd2hldGhlciB0aGUgb2JqX25hbWUg d2lsbAorICogYmUgcXVvdGVkIGFzIGFuIGlkZW50aWZpZXIgb3Igbm90LCB3aGljaCBpcyBub3Qg c29tZXRoaW5nIHRoYXQgdGhpcyByb3V0aW5lCisgKiBjb25jZXJucyBpdHNlbGYgd2l0aDsgdGhh dCB3aWxsIGJlIHVwIHRvIHRoZSBleHBhbmQgZnVuY3Rpb24uCisgKi8KK3N0YXRpYyBPYmpUcmVl ICoKK25ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShPaWQgbnNwaWQsIGNoYXIgKm5hbWUpCit7CisJ T2JqVHJlZSAgICAqcXVhbGlmaWVkOworCWNoYXIJICAgKm5hbWVzcGFjZTsKKworCWlmIChpc0Fu eVRlbXBOYW1lc3BhY2UobnNwaWQpKQorCQluYW1lc3BhY2UgPSBwc3RyZHVwKCJwZ190ZW1wIik7 CisJZWxzZQorCQluYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUobnNwaWQpOworCisJcXVh bGlmaWVkID0gbmV3X29ianRyZWVfVkEoTlVMTCwgMiwKKwkJCQkJCQkgICAic2NoZW1hbmFtZSIs IE9ialR5cGVTdHJpbmcsIG5hbWVzcGFjZSwKKwkJCQkJCQkgICAib2JqbmFtZSIsIE9ialR5cGVT dHJpbmcsIHBzdHJkdXAobmFtZSkpOworCisJcmV0dXJuIHF1YWxpZmllZDsKK30KKworLyoKKyAq IEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVwICV7fUQgYW5kICV7fU8gZWxlbWVudHMsIHdpdGgg dGhlIG9iamVjdCBzcGVjaWZpZWQKKyAqIGJ5IGNsYXNzSWQvb2JqSWQuCisgKi8KK3N0YXRpYyBP YmpUcmVlICoKK25ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPaWQgY2xhc3NJZCwgT2lkIG9i amVjdElkKQoreworCU9ialRyZWUgICAgKnF1YWxpZmllZDsKKwlSZWxhdGlvbgljYXRhbG9nOwor CUhlYXBUdXBsZQljYXRvYmo7CisJRGF0dW0JCW9ial9uc3A7CisJRGF0dW0JCW9ial9uYW1lOwor CUF0dHJOdW1iZXIJQW51bV9uYW1lOworCUF0dHJOdW1iZXIJQW51bV9uYW1lc3BhY2U7CisJQXR0 ck51bWJlcglBbnVtX29pZCA9IGdldF9vYmplY3RfYXR0bnVtX29pZChjbGFzc0lkKTsKKwlib29s CQlpc251bGw7CisKKwljYXRhbG9nID0gdGFibGVfb3BlbihjbGFzc0lkLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJY2F0b2JqID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChjYXRhbG9nLCBBbnVt X29pZCwgb2JqZWN0SWQpOworCWlmICghY2F0b2JqKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3Igb2JqZWN0IHdpdGggT0lEICV1IG9mIGNhdGFsb2cgXCIlc1wiIiwKKwkJ CSBvYmplY3RJZCwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoY2F0YWxvZykpOworCUFudW1fbmFt ZSA9IGdldF9vYmplY3RfYXR0bnVtX25hbWUoY2xhc3NJZCk7CisJQW51bV9uYW1lc3BhY2UgPSBn ZXRfb2JqZWN0X2F0dG51bV9uYW1lc3BhY2UoY2xhc3NJZCk7CisKKwlvYmpfbnNwID0gaGVhcF9n ZXRhdHRyKGNhdG9iaiwgQW51bV9uYW1lc3BhY2UsIFJlbGF0aW9uR2V0RGVzY3IoY2F0YWxvZyks CisJCQkJCQkgICZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJudWxsIG5h bWVzcGFjZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJb2JqX25hbWUgPSBoZWFwX2dl dGF0dHIoY2F0b2JqLCBBbnVtX25hbWUsIFJlbGF0aW9uR2V0RGVzY3IoY2F0YWxvZyksCisJCQkJ CQkgICAmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAibnVsbCBhdHRyaWJ1 dGUgbmFtZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJcXVhbGlmaWVkID0gbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lKERhdHVtR2V0T2JqZWN0SWQob2JqX25zcCksCisJCQkJCQkJCQkJ IE5hbWVTdHIoKkRhdHVtR2V0TmFtZShvYmpfbmFtZSkpKTsKKwl0YWJsZV9jbG9zZShjYXRhbG9n LCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHF1YWxpZmllZDsKK30KKworLyoKKyAqIEEg aGVscGVyIHJvdXRpbmUgdG8gc2V0dXAgJXt9VCBlbGVtZW50cy4KKyAqLworc3RhdGljIE9ialRy ZWUgKgorbmV3X29ianRyZWVfZm9yX3R5cGUoT2lkIHR5cGVJZCwgaW50MzIgdHlwbW9kKQorewor CU9pZAkJCXR5cG5zcGlkOworCWNoYXIJICAgKnR5cGVfbnNwOworCWNoYXIJICAgKnR5cGVfbmFt ZSA9IE5VTEw7CisJY2hhcgkgICAqdHlwbW9kc3RyOworCWJvb2wJCXR5cGVfYXJyYXk7CisKKwlm b3JtYXRfdHlwZV9kZXRhaWxlZCh0eXBlSWQsIHR5cG1vZCwKKwkJCQkJCSAmdHlwbnNwaWQsICZ0 eXBlX25hbWUsICZ0eXBtb2RzdHIsICZ0eXBlX2FycmF5KTsKKworCWlmIChPaWRJc1ZhbGlkKHR5 cG5zcGlkKSkKKwkJdHlwZV9uc3AgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3JfdGVtcCh0eXBuc3Bp ZCk7CisJZWxzZQorCQl0eXBlX25zcCA9IHBzdHJkdXAoIiIpOworCisJcmV0dXJuIG5ld19vYmp0 cmVlX1ZBKE5VTEwsIDQsCisJCQkJCQkgICJzY2hlbWFuYW1lIiwgT2JqVHlwZVN0cmluZywgdHlw ZV9uc3AsCisJCQkJCQkgICJ0eXBlbmFtZSIsIE9ialR5cGVTdHJpbmcsIHR5cGVfbmFtZSwKKwkJ CQkJCSAgInR5cG1vZCIsIE9ialR5cGVTdHJpbmcsIHR5cG1vZHN0ciwKKwkJCQkJCSAgInR5cGFy cmF5IiwgT2JqVHlwZUJvb2wsIHR5cGVfYXJyYXkpOworfQorCisvKgorICogQWxsb2NhdGUgYSBu ZXcgb2JqZWN0IHRyZWUgdG8gc3RvcmUgcGFyYW1ldGVyIHZhbHVlcyAtLSB2YXJhcmdzIHZlcnNp b24uCisgKgorICogVGhlICJmbXQiIGFyZ3VtZW50IGlzIHVzZWQgdG8gYXBwZW5kIGFzIGEgImZt dCIgZWxlbWVudCBpbiB0aGUgb3V0cHV0IGJsb2IuCisgKiBudW1vYmpzIGluZGljYXRlcyB0aGUg bnVtYmVyIG9mIGV4dHJhIGVsZW1lbnRzIHRvIGFwcGVuZDsgZm9yIGVhY2ggb25lLCBhCisgKiBu YW1lIChzdHJpbmcpLCB0eXBlIChmcm9tIHRoZSBPYmpUeXBlIGVudW0pIGFuZCB2YWx1ZSBtdXN0 IGJlIHN1cHBsaWVkLiAgVGhlCisgKiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSB0eXBlIGdpdmVuOyBm b3IgaW5zdGFuY2UsIE9ialR5cGVJbnRlZ2VyIHJlcXVpcmVzIGFuCisgKiBpbnQ2NCwgT2JqVHlw ZVN0cmluZyByZXF1aXJlcyBhIGNoYXIgKiwgT2JqVHlwZUFycmF5IHJlcXVpcmVzIGEgbGlzdCAo b2YKKyAqIE9iakVsZW0pLCBPYmpUeXBlT2JqZWN0IHJlcXVpcmVzIGFuIE9ialRyZWUsIGFuZCBz byBvbi4gIEVhY2ggZWxlbWVudCB0eXBlICoKKyAqIG11c3QgbWF0Y2ggdGhlIGNvbnZlcnNpb24g c3BlY2lmaWVyIGdpdmVuIGluIHRoZSBmb3JtYXQgc3RyaW5nLCBhcyBkZXNjcmliZWQKKyAqIGlu IGRkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kLCBxLnYuCisgKgorICogTm90ZSB3ZSBkb24ndCBo YXZlIHRoZSBsdXh1cnkgb2Ygc3ByaW50Zi1saWtlIGNvbXBpbGVyIHdhcm5pbmdzIGZvcgorICog bWFsZm9ybWVkIGFyZ3VtZW50IGxpc3RzLgorICovCitzdGF0aWMgT2JqVHJlZSAqCituZXdfb2Jq dHJlZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpzLC4uLikKK3sKKwlPYmpUcmVlICAgICp0cmVl OworCXZhX2xpc3QJCWFyZ3M7CisJaW50CQkJaTsKKworCS8qIFNldCB1cCB0aGUgdG9wbGV2ZWwg b2JqZWN0IGFuZCBpdHMgImZtdCIgKi8KKwl0cmVlID0gbmV3X29ianRyZWUoZm10KTsKKworCS8q IEFuZCBwcm9jZXNzIHRoZSBnaXZlbiB2YXJhcmdzICovCisJdmFfc3RhcnQoYXJncywgbnVtb2Jq cyk7CisJZm9yIChpID0gMDsgaSA8IG51bW9ianM7IGkrKykKKwl7CisJCWNoYXIJICAgKm5hbWU7 CisJCU9ialR5cGUJCXR5cGU7CisJCU9iakVsZW0gICAgKmVsZW07CisKKwkJbmFtZSA9IHZhX2Fy ZyhhcmdzLCBjaGFyICopOworCQl0eXBlID0gdmFfYXJnKGFyZ3MsIE9ialR5cGUpOworCQllbGVt ID0gbmV3X29iamVjdCh0eXBlLCBOVUxMKTsKKworCQkvKgorCQkgKiBGb3IgYWxsIHBhcmFtIHR5 cGVzIG90aGVyIHRoYW4gT2JqVHlwZU51bGwsIHRoZXJlIG11c3QgYmUgYSB2YWx1ZSBpbgorCQkg KiB0aGUgdmFyYXJncy4gRmV0Y2ggaXQgYW5kIGFkZCB0aGUgZnVsbHkgZm9ybWVkIHN1Ym9iamVj dCBpbnRvIHRoZQorCQkgKiBtYWluIG9iamVjdC4KKwkJICovCisJCXN3aXRjaCAodHlwZSkKKwkJ eworCQkJY2FzZSBPYmpUeXBlTnVsbDoKKwkJCQkvKiBOdWxsIHBhcmFtcyBkb24ndCBoYXZlIGEg dmFsdWUgKG9idmlvdXNseSkgKi8KKwkJCQlicmVhazsKKwkJCWNhc2UgT2JqVHlwZUJvb2w6CisJ CQkJZWxlbS0+dmFsdWUuYm9vbGVhbiA9IHZhX2FyZyhhcmdzLCBpbnQpOworCQkJCWJyZWFrOwor CQkJY2FzZSBPYmpUeXBlU3RyaW5nOgorCQkJCWVsZW0tPnZhbHVlLnN0cmluZyA9IHZhX2FyZyhh cmdzLCBjaGFyICopOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlQXJyYXk6CisJCQkJZWxl bS0+dmFsdWUuYXJyYXkgPSB2YV9hcmcoYXJncywgTGlzdCAqKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgT2JqVHlwZUludGVnZXI6CisJCQkJZWxlbS0+dmFsdWUuaW50ZWdlciA9IHZhX2FyZyhhcmdz LCBpbnQpOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlRmxvYXQ6CisJCQkJZWxlbS0+dmFs dWUuZmx0ID0gdmFfYXJnKGFyZ3MsIGRvdWJsZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIE9ialR5 cGVPYmplY3Q6CisJCQkJZWxlbS0+dmFsdWUub2JqZWN0ID0gdmFfYXJnKGFyZ3MsIE9ialRyZWUg Kik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIE9i alRyZWUgZWxlbWVudCB0eXBlICVkIiwgdHlwZSk7CisJCX0KKworCQllbGVtLT5uYW1lID0gbmFt ZTsKKwkJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIGVsZW0pOworCX0KKworCXZhX2VuZChh cmdzKTsKKwlyZXR1cm4gdHJlZTsKK30KKworLyoKKyAqIFByb2Nlc3MgdGhlIHByZS1idWlsdCBm b3JtYXQgc3RyaW5nIGZyb20gdGhlIE9ialRyZWUgaW50byB0aGUgb3V0cHV0IHBhcnNlCisgKiBz dGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK29ianRyZWVfZm10X3RvX2pzb25iX2VsZW1lbnQoSnNv bmJQYXJzZVN0YXRlICpzdGF0ZSwgT2JqVHJlZSAqdHJlZSkKK3sKKwlKc29uYlZhbHVlCWtleTsK KwlKc29uYlZhbHVlCXZhbDsKKworCWlmICh0cmVlLT5mbXRpbmZvID09IE5VTEwpCisJCXJldHVy bjsKKworCS8qIFB1c2ggdGhlIGtleSBmaXJzdCAqLworCWtleS50eXBlID0gamJ2U3RyaW5nOwor CWtleS52YWwuc3RyaW5nLnZhbCA9ICJmbXQiOworCWtleS52YWwuc3RyaW5nLmxlbiA9IHN0cmxl bihrZXkudmFsLnN0cmluZy52YWwpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0tFWSwg JmtleSk7CisKKwkvKiBUaGVuIHByb2Nlc3MgdGhlIHByZS1idWlsdCBmb3JtYXQgc3RyaW5nICov CisJdmFsLnR5cGUgPSBqYnZTdHJpbmc7CisJdmFsLnZhbC5zdHJpbmcubGVuID0gdHJlZS0+Zm10 aW5mby0+bGVuOworCXZhbC52YWwuc3RyaW5nLnZhbCA9IHRyZWUtPmZtdGluZm8tPmRhdGE7CisJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUsICZ2YWwpOworfQorCisvKgorICogQ3Jl YXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBhbiBPYmpUcmVlLgorICovCitzdGF0aWMg SnNvbmIgKgorb2JqdHJlZV90b19qc29uYihPYmpUcmVlICp0cmVlKQoreworCUpzb25iVmFsdWUg KnZhbHVlOworCisJdmFsdWUgPSBvYmp0cmVlX3RvX2pzb25iX3JlYyh0cmVlLCBOVUxMKTsKKwly ZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgorICogSGVscGVyIGZvciBv Ymp0cmVlX3RvX2pzb25iOiBwcm9jZXNzIGFuIGluZGl2aWR1YWwgZWxlbWVudCBmcm9tIGFuIG9i amVjdCBvcgorICogYW4gYXJyYXkgaW50byB0aGUgb3V0cHV0IHBhcnNlIHN0YXRlLgorICovCitz dGF0aWMgdm9pZAorb2JqdHJlZV90b19qc29uYl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAqc3Rh dGUsIE9iakVsZW0gKm9iamVjdCwKKwkJCQkJCSBKc29uYkl0ZXJhdG9yVG9rZW4gZWxlbV90b2tl bikKK3sKKwlKc29uYlZhbHVlCXZhbDsKKworCXN3aXRjaCAob2JqZWN0LT5vYmp0eXBlKQorCXsK KwkJY2FzZSBPYmpUeXBlTnVsbDoKKwkJCXZhbC50eXBlID0gamJ2TnVsbDsKKwkJCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgZWxlbV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9i alR5cGVTdHJpbmc6CisJCQl2YWwudHlwZSA9IGpidlN0cmluZzsKKwkJCXZhbC52YWwuc3RyaW5n LmxlbiA9IHN0cmxlbihvYmplY3QtPnZhbHVlLnN0cmluZyk7CisJCQl2YWwudmFsLnN0cmluZy52 YWwgPSBvYmplY3QtPnZhbHVlLnN0cmluZzsKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgZWxl bV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9ialR5cGVJbnRlZ2VyOgorCQkJ dmFsLnR5cGUgPSBqYnZOdW1lcmljOworCQkJdmFsLnZhbC5udW1lcmljID0gKE51bWVyaWMpCisJ CQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50OF9udW1lcmljLAorCQkJ CQkJCQkJCQkJCW9iamVjdC0+dmFsdWUuaW50ZWdlcikpOworCQkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBlbGVtX3Rva2VuLCAmdmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT2JqVHlwZUZsb2F0 OgorCQkJdmFsLnR5cGUgPSBqYnZOdW1lcmljOworCQkJdmFsLnZhbC5udW1lcmljID0gKE51bWVy aWMpCisJCQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoZmxvYXQ4X251bWVy aWMsCisJCQkJCQkJCQkJCQkJb2JqZWN0LT52YWx1ZS5pbnRlZ2VyKSk7CisJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIGVsZW1fdG9rZW4sICZ2YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPYmpU eXBlQm9vbDoKKwkJCXZhbC50eXBlID0gamJ2Qm9vbDsKKwkJCXZhbC52YWwuYm9vbGVhbiA9IG9i amVjdC0+dmFsdWUuYm9vbGVhbjsKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgZWxlbV90b2tl biwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9ialR5cGVPYmplY3Q6CisJCQkvKiBSZWN1 cnNpdmVseSBhZGQgdGhlIG9iamVjdCBpbnRvIHRoZSBleGlzdGluZyBwYXJzZSBzdGF0ZSAqLwor CQkJb2JqdHJlZV90b19qc29uYl9yZWMob2JqZWN0LT52YWx1ZS5vYmplY3QsIHN0YXRlKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgT2JqVHlwZUFycmF5OgorCQkJeworCQkJCUxpc3RDZWxsICAgKmNl bGw7CisKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7 CisJCQkJZm9yZWFjaChjZWxsLCBvYmplY3QtPnZhbHVlLmFycmF5KQorCQkJCXsKKwkJCQkJT2Jq RWxlbSAgICAqZWxlbSA9IGxmaXJzdChjZWxsKTsKKworCQkJCQlvYmp0cmVlX3RvX2pzb25iX2Vs ZW1lbnQoc3RhdGUsIGVsZW0sIFdKQl9FTEVNKTsKKwkJCQl9CisJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWRlZmF1 bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlICVkIiwgb2JqZWN0 LT5vYmp0eXBlKTsKKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIFJlY3Vyc2l2ZSBoZWxwZXIg Zm9yIG9ianRyZWVfdG9fanNvbmIuCisgKi8KK3N0YXRpYyBKc29uYlZhbHVlICoKK29ianRyZWVf dG9fanNvbmJfcmVjKE9ialRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpCit7CisJ c2xpc3RfaXRlcglpdGVyOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JK RUNULCBOVUxMKTsKKworCW9ianRyZWVfZm10X3RvX2pzb25iX2VsZW1lbnQoc3RhdGUsIHRyZWUp OworCisJc2xpc3RfZm9yZWFjaChpdGVyLCAmdHJlZS0+cGFyYW1zKQorCXsKKwkJT2JqRWxlbSAg ICAqb2JqZWN0ID0gc2xpc3RfY29udGFpbmVyKE9iakVsZW0sIG5vZGUsIGl0ZXIuY3VyKTsKKwkJ SnNvbmJWYWx1ZQlrZXk7CisKKwkJLyogUHVzaCB0aGUga2V5IGZpcnN0ICovCisJCWtleS50eXBl ID0gamJ2U3RyaW5nOworCQlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4ob2JqZWN0LT5uYW1l KTsKKwkJa2V5LnZhbC5zdHJpbmcudmFsID0gb2JqZWN0LT5uYW1lOworCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9LRVksICZrZXkpOworCisJCS8qIFRoZW4gcHJvY2VzcyB0aGUgdmFsdWUg YWNjb3JkaW5nIHRvIGl0cyB0eXBlICovCisJCW9ianRyZWVfdG9fanNvbmJfZWxlbWVudChzdGF0 ZSwgb2JqZWN0LCBXSkJfVkFMVUUpOworCX0KKworCXJldHVybiBwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoKKyAqIFN1YnJvdXRpbmUgZm9yIENS RUFURSBUQUJMRS9DUkVBVEUgRE9NQUlOIGRlcGFyc2luZy4KKyAqCisgKiBHaXZlbiBhIHRhYmxl IE9JRCBvciBkb21haW4gT0lELCBvYnRhaW4gaXRzIGNvbnN0cmFpbnRzIGFuZCBhcHBlbmQgdGhl bSB0bworICogdGhlIGdpdmVuIGVsZW1lbnRzIGxpc3QuICBUaGUgdXBkYXRlZCBsaXN0IGlzIHJl dHVybmVkLgorICoKKyAqIFRoaXMgd29ya3MgZm9yIHR5cGVkIHRhYmxlcywgcmVndWxhciB0YWJs ZXMsIGFuZCBkb21haW5zLgorICoKKyAqIE5vdGUgdGhhdCBDT05TVFJBSU5UX0ZPUkVJR04gY29u c3RyYWludHMgYXJlIGFsd2F5cyBpZ25vcmVkLgorICovCitzdGF0aWMgTGlzdCAqCitvYnRhaW5D b25zdHJhaW50cyhMaXN0ICplbGVtZW50cywgT2lkIHJlbGF0aW9uSWQsIE9pZCBkb21haW5JZCwK KwkJCQkgIENvbnN0cmFpbnRPYmpUeXBlIG9ialR5cGUpCit7CisJUmVsYXRpb24JY29uUmVsOwor CVNjYW5LZXlEYXRhIGtleTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsK KwlPYmpUcmVlICAgICpjb25zdHI7CisJT2lkCQkJcmVsaWQ7CisKKwkvKiBPbmx5IG9uZSBtYXkg YmUgdmFsaWQgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChyZWxhdGlvbklkKSBeIE9pZElzVmFsaWQo ZG9tYWluSWQpKTsKKworCXJlbGlkID0gT2lkSXNWYWxpZChyZWxhdGlvbklkKSA/IENvbnN0cmFp bnRSZWxpZFR5cGlkTmFtZUluZGV4SWQgOgorCQkJQ29uc3RyYWludFR5cGlkSW5kZXhJZDsKKwor CS8qCisJICogU2NhbiBwZ19jb25zdHJhaW50IHRvIGZldGNoIGFsbCBjb25zdHJhaW50cyBsaW5r ZWQgdG8gdGhlIGdpdmVuCisJICogcmVsYXRpb24uCisJICovCisJY29uUmVsID0gdGFibGVfb3Bl bihDb25zdHJhaW50UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgm a2V5LCBBbnVtX3BnX2NvbnN0cmFpbnRfY29ucmVsaWQsIEJURXF1YWxTdHJhdGVneU51bWJlciwK KwkJCQlGX09JREVRLCBPYmplY3RJZEdldERhdHVtKHJlbGF0aW9uSWQpKTsKKwlzY2FuID0gc3lz dGFibGVfYmVnaW5zY2FuKGNvblJlbCwgcmVsaWQsIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJ LyoKKwkgKiBGb3IgZWFjaCBjb25zdHJhaW50LCBhZGQgYSBub2RlIHRvIHRoZSBsaXN0IG9mIHRh YmxlIGVsZW1lbnRzLiAgSW4KKwkgKiB0aGVzZSBub2RlcyB3ZSBpbmNsdWRlIG5vdCBvbmx5IHRo ZSBwcmludGFibGUgaW5mb3JtYXRpb24gKCJmbXQiKSwgYnV0CisJICogYWxzbyBzZXBhcmF0ZSBh dHRyaWJ1dGVzIHRvIGluZGljYXRlIHRoZSB0eXBlIG9mIGNvbnN0cmFpbnQsIGZvcgorCSAqIGF1 dG9tYXRpYyBwcm9jZXNzaW5nLgorCSAqLworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxl ID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29u c3RyRm9ybTsKKwkJY2hhcgkgICAqY29udHlwZTsKKworCQljb25zdHJGb3JtID0gKEZvcm1fcGdf Y29uc3RyYWludCkgR0VUU1RSVUNUKHR1cGxlKTsKKworCQlzd2l0Y2ggKGNvbnN0ckZvcm0tPmNv bnR5cGUpCisJCXsKKwkJCWNhc2UgQ09OU1RSQUlOVF9DSEVDSzoKKwkJCQljb250eXBlID0gImNo ZWNrIjsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSQUlOVF9GT1JFSUdOOgorCQkJCWNvbnRp bnVlOwkJLyogbm90IGhlcmUgKi8KKwkJCWNhc2UgQ09OU1RSQUlOVF9QUklNQVJZOgorCQkJCWNv bnR5cGUgPSAicHJpbWFyeSBrZXkiOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJBSU5UX1VO SVFVRToKKwkJCQljb250eXBlID0gInVuaXF1ZSI7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNU UkFJTlRfVFJJR0dFUjoKKwkJCQljb250eXBlID0gInRyaWdnZXIiOworCQkJCWJyZWFrOworCQkJ Y2FzZSBDT05TVFJBSU5UX0VYQ0xVU0lPTjoKKwkJCQljb250eXBlID0gImV4Y2x1c2lvbiI7CisJ CQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29u c3RyYWludCB0eXBlIik7CisJCX0KKworCQkvKgorCQkgKiAidHlwZSIgYW5kICJjb250eXBlIiBh cmUgbm90IHBhcnQgb2YgdGhlIHByaW50YWJsZSBvdXRwdXQsIGJ1dCBhcmUKKwkJICogdXNlZnVs IHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzdGluZ3Vpc2ggdGhlc2UgZnJvbSBjb2x1bW5zIGFuZCBh bW9uZworCQkgKiBkaWZmZXJlbnQgY29uc3RyYWludCB0eXBlcy4KKwkJICoKKwkJICogWFhYIGl0 IG1pZ2h0IGJlIHVzZWZ1bCB0byBhbHNvIGxpc3QgdGhlIGNvbHVtbiBuYW1lcyBpbiBhIFBLLCBl dGMuCisJCSAqLworCQljb25zdHIgPSBuZXdfb2JqdHJlZV9WQSgiQ09OU1RSQUlOVCAle25hbWV9 SSAle2RlZmluaXRpb259cyIsIDQsCisJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImNv bnN0cmFpbnQiLAorCQkJCQkJCQkiY29udHlwZSIsIE9ialR5cGVTdHJpbmcsIGNvbnR5cGUsCisJ CQkJCQkJCSJuYW1lIiwgT2JqVHlwZVN0cmluZywgTmFtZVN0cihjb25zdHJGb3JtLT5jb25uYW1l KSwKKwkJCQkJCQkJImRlZmluaXRpb24iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQlwZ19nZXRf Y29uc3RyYWludGRlZl9zdHJpbmcoY29uc3RyRm9ybS0+b2lkKSk7CisKKwkJaWYgKGNvbnN0ckZv cm0tPmNvbmluZGlkICYmCisJCQkoY29uc3RyRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BS SU1BUlkgfHwKKwkJCSBjb25zdHJGb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFIHx8 CisJCQkgY29uc3RyRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTikpCisJCXsK KwkJCU9pZAkgIHRibHNwYyA9IGdldF9yZWxfdGFibGVzcGFjZShjb25zdHJGb3JtLT5jb25pbmRp ZCk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHRibHNwYykpCisJCQkJYXBwZW5kX3N0cmluZ19vYmpl Y3QoY29uc3RyLAorCQkJCQkJCQkJICJVU0lORyBJTkRFWCBUQUJMRVNQQUNFICV7dGJsc3BjfXMi LAorCQkJCQkJCQkJICJ0YmxzcGMiLAorCQkJCQkJCQkJIGdldF90YWJsZXNwYWNlX25hbWUodGJs c3BjKSk7CisJCX0KKworCQllbGVtZW50cyA9IGxhcHBlbmQoZWxlbWVudHMsIG5ld19vYmplY3Rf b2JqZWN0KGNvbnN0cikpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVf Y2xvc2UoY29uUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGVsZW1lbnRzOworfQor CisvKgorICogT2J0YWluIHRoZSBkZXBhcnNlZCBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4g Y29sdW1uIG9mIHRoZSBnaXZlbiB0YWJsZS4KKyAqCisgKiBDYWxsZXIgbXVzdCBoYXZlIHNldCBh IGNvcnJlY3QgZGVwYXJzZSBjb250ZXh0LgorICovCitzdGF0aWMgY2hhciAqCitSZWxhdGlvbkdl dENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG5vLCBMaXN0ICpkcGNv bnRleHQsCisJCQkJCQkgTGlzdCAqKmV4cHJzKQoreworCU5vZGUJICAgKmRlZnZhbDsKKwljaGFy CSAgICpkZWZzdHI7CisKKwlkZWZ2YWwgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGF0dG5v KTsKKwlkZWZzdHIgPSBkZXBhcnNlX2V4cHJlc3Npb24oZGVmdmFsLCBkcGNvbnRleHQsIGZhbHNl LCBmYWxzZSk7CisKKwkvKiBDb2xsZWN0IHRoZSBleHByZXNzaW9uIGZvciBsYXRlciByZXBsaWNh dGlvbiBzYWZldHkgY2hlY2tzICovCisJaWYgKGV4cHJzKQorCQkqZXhwcnMgPSBsYXBwZW5kKCpl eHBycywgZGVmdmFsKTsKKworCXJldHVybiBkZWZzdHI7Cit9CisKKy8qCisgKiBPYnRhaW4gdGhl IGRlcGFyc2VkIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9uIGZvciB0aGUgZ2l2ZW4gdGFibGUu CisgKi8KK3N0YXRpYyBjaGFyICoKK1JlbGF0aW9uR2V0UGFydGl0aW9uQm91bmQoT2lkIHJlbGlk KQoreworCURhdHVtCQlkZXBhcnNlZDsKKwlEYXR1bQkJYm91bmREYXR1bTsKKwlib29sCQlpc251 bGw7CisJSGVhcFR1cGxlCXR1cGxlOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lE LCByZWxpZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgcmVsaWQpOwor CisJYm91bmREYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJCQkg QW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJCSAmaXNudWxsKTsKKworCWRlcGFy c2VkID0gRGlyZWN0RnVuY3Rpb25DYWxsMihwZ19nZXRfZXhwciwKKwkJCQkJCQkJICAgQ1N0cmlu Z0dldFRleHREYXR1bShUZXh0RGF0dW1HZXRDU3RyaW5nKGJvdW5kRGF0dW0pKSwKKwkJCQkJCQkJ ICAgcmVsaWQpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCXJldHVybiBUZXh0RGF0 dW1HZXRDU3RyaW5nKGRlcGFyc2VkKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDb2x1bW5EZWYg bm9kZSB3aXRoaW4gYSByZWd1bGFyIChub24tdHlwZWQpIHRhYmxlIGNyZWF0aW9uLgorICoKKyAq IE5PVCBOVUxMIGNvbnN0cmFpbnRzIGluIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBhcmUgZW1pdHRl ZCBkaXJlY3RseSBpbiB0aGUKKyAqIGNvbHVtbiBkZWZpbml0aW9uIGJ5IHRoaXMgcm91dGluZTsg b3RoZXIgY29uc3RyYWludHMgbXVzdCBiZSBlbWl0dGVkCisgKiBlbHNld2hlcmUgKHRoZSBpbmZv IGluIHRoZSBwYXJzZSBub2RlIGlzIGluY29tcGxldGUgYW55d2F5KS4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogJXtuYW1lfUkgJXtjb2x0eXBlfVQgJXtjb21wcmVzc2lvbn1zICV7ZGVmYXVs dH1zICV7bm90X251bGx9cyAle2NvbGxhdGlvbn1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2Rl cGFyc2VfQ29sdW1uRGVmKFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICpkcGNvbnRleHQsIGJvb2wg Y29tcG9zaXRlLAorCQkJCSAgQ29sdW1uRGVmICpjb2xkZWYsIGJvb2wgaXNfYWx0ZXIsIExpc3Qg KipleHBycykKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wX29iajsKKwlP aWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCUhlYXBUdXBsZQlhdHRy VHVwOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJGb3JtOworCU9pZAkJCXR5cGlkOworCWludDMy CQl0eXBtb2Q7CisJT2lkCQkJdHlwY29sbGF0aW9uOworCWJvb2wJCXNhd19ub3RudWxsOworCUxp c3RDZWxsICAgKmNlbGw7CisKKwkvKgorCSAqIEluaGVyaXRlZCBjb2x1bW5zIHdpdGhvdXQgbG9j YWwgZGVmaW5pdGlvbnMgbXVzdCBub3QgYmUgZW1pdHRlZC4KKwkgKgorCSAqIFhYWCBtYXliZSBp dCBpcyB1c2VmdWwgdG8gaGF2ZSB0aGVtIHdpdGggInByZXNlbnQgPSBmYWxzZSIgb3Igc29tZQor CSAqIHN1Y2g/CisJICovCisJaWYgKCFjb2xkZWYtPmlzX2xvY2FsKQorCQlyZXR1cm4gTlVMTDsK KworCWF0dHJUdXAgPSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUocmVsaWQsIGNvbGRlZi0+Y29sbmFt ZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGF0dHJUdXApKQorCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IGZpbmQgY2FjaGUgZW50cnkgZm9yIGNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gJXUi LAorCQkJIGNvbGRlZi0+Y29sbmFtZSwgcmVsaWQpOworCWF0dHJGb3JtID0gKEZvcm1fcGdfYXR0 cmlidXRlKSBHRVRTVFJVQ1QoYXR0clR1cCk7CisKKwlnZXRfYXR0dHlwZXR5cG1vZGNvbGwocmVs aWQsIGF0dHJGb3JtLT5hdHRudW0sCisJCQkJCQkgICZ0eXBpZCwgJnR5cG1vZCwgJnR5cGNvbGxh dGlvbik7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiJXtuYW1lfUkgJXtjb2x0eXBlfVQiLCAz LAorCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImNvbHVtbiIsCisJCQkJCQkgIm5hbWUi LCBPYmpUeXBlU3RyaW5nLCBjb2xkZWYtPmNvbG5hbWUsCisJCQkJCQkgImNvbHR5cGUiLCBPYmpU eXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHR5cGlkLCB0eXBtb2QpKTsK KworCWlmICghY29tcG9zaXRlKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJTVE9SQUdF ICV7Y29sc3RvcmFnZX1zIiwgImNvbHN0b3JhZ2UiLAorCQkJCQkJCSBnZXRfdHlwZV9zdG9yYWdl KGF0dHJGb3JtLT5hdHRzdG9yYWdlKSk7CisKKwkvKiBVU0lORyBjbGF1c2UgKi8KKwl0bXBfb2Jq ID0gbmV3X29ianRyZWUoIkNPTVBSRVNTSU9OIik7CisJaWYgKGNvbGRlZi0+Y29tcHJlc3Npb24p CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle2NvbXByZXNzaW9uX21ldGhvZH1J IiwKKwkJCQkJCQkgImNvbXByZXNzaW9uX21ldGhvZCIsIGNvbGRlZi0+Y29tcHJlc3Npb24pOwor CWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXBfb2JqLCAiJXtjb21wcmVzc2lvbl9t ZXRob2R9SSIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJfQorCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7Y29tcHJlc3Npb259cyIsIHRtcF9vYmopOworCisJdG1wX29i aiA9IG5ld19vYmp0cmVlKCJDT0xMQVRFIik7CisJaWYgKE9pZElzVmFsaWQodHlwY29sbGF0aW9u KSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7bmFtZX1EIiwKKwkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKENvbGxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCQkJCSB0eXBjb2xsYXRpb24pKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBf b2JqKTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2NvbGxhdGlvbn1zIiwgdG1wX29i aik7CisKKwlpZiAoIWNvbXBvc2l0ZSkKKwl7CisJCU9pZAkJCXNlcXJlbGlkID0gSW52YWxpZE9p ZDsKKworCQkvKgorCQkgKiBFbWl0IGEgTk9UIE5VTEwgZGVjbGFyYXRpb24gaWYgbmVjZXNzYXJ5 LiAgTm90ZSB0aGF0IHdlIGNhbm5vdAorCQkgKiB0cnVzdCBwZ19hdHRyaWJ1dGUuYXR0bm90bnVs bCBoZXJlLCBiZWNhdXNlIHRoYXQgYml0IGlzIGFsc28gc2V0CisJCSAqIHdoZW4gcHJpbWFyeSBr ZXlzIGFyZSBzcGVjaWZpZWQ7IHdlIG11c3Qgbm90IGVtaXQgYSBOT1QgTlVMTAorCQkgKiBjb25z dHJhaW50IGluIHRoYXQgY2FzZSwgdW5sZXNzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiAgVGhlcmVm b3JlLAorCQkgKiB3ZSBzY2FuIHRoZSBsaXN0IG9mIGNvbnN0cmFpbnRzIGF0dGFjaGVkIHRvIHRo aXMgY29sdW1uIHRvCisJCSAqIGRldGVybWluZSB3aGV0aGVyIHdlIG5lZWQgdG8gZW1pdCBhbnl0 aGluZy4gKEZvcnR1bmF0ZWx5LCBOT1QgTlVMTAorCQkgKiBjb25zdHJhaW50cyBjYW5ub3QgYmUg dGFibGUgY29uc3RyYWludHMuKQorCQkgKgorCQkgKiBJbiB0aGUgQUxURVIgVEFCTEUgY2FzZXMs IHdlIGFsc28gYWRkIGEgTk9UIE5VTEwgaWYgdGhlIGNvbERlZiBpcworCQkgKiBtYXJrZWQgaXNf bm90X251bGwuCisJCSAqLworCQlzYXdfbm90bnVsbCA9IGZhbHNlOworCQlmb3JlYWNoKGNlbGws IGNvbGRlZi0+Y29uc3RyYWludHMpCisJCXsKKwkJCUNvbnN0cmFpbnQgKmNvbnN0ciA9IChDb25z dHJhaW50ICopIGxmaXJzdChjZWxsKTsKKworCQkJaWYgKGNvbnN0ci0+Y29udHlwZSA9PSBDT05T VFJfTk9UTlVMTCkKKwkJCXsKKwkJCQlzYXdfbm90bnVsbCA9IHRydWU7CisJCQkJYnJlYWs7CisJ CQl9CisJCX0KKworCQlpZiAoaXNfYWx0ZXIgJiYgY29sZGVmLT5pc19ub3RfbnVsbCkKKwkJCXNh d19ub3RudWxsID0gdHJ1ZTsKKworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle25vdF9u dWxsfXMiLCAibm90X251bGwiLAorCQkJCQkJCSBzYXdfbm90bnVsbCA/ICJOT1QgTlVMTCIgOiAi Iik7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJERUZBVUxUIik7CisJCWlmIChhdHRyRm9y bS0+YXR0aGFzZGVmICYmCisJCQljb2xkZWYtPmdlbmVyYXRlZCAhPSBBVFRSSUJVVEVfR0VORVJB VEVEX1NUT1JFRCkKKwkJeworCQkJY2hhcgkgICAqZGVmc3RyOworCisJCQlkZWZzdHIgPSBSZWxh dGlvbkdldENvbHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJGb3JtLT5hdHRudW0sCisJCQkJCQkJ CQkJCSAgZHBjb250ZXh0LCBleHBycyk7CisKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9v YmosICIle2RlZmF1bHR9cyIsICJkZWZhdWx0IiwgZGVmc3RyKTsKKwkJfQorCQllbHNlCisJCQlh cHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwg IiV7ZGVmYXVsdH1zIiwgdG1wX29iaik7CisKKwkJLyogSURFTlRJVFkgQ09MVU1OICovCisJCWlm IChjb2xkZWYtPmlkZW50aXR5KQorCQl7CisJCQlPaWQJCQlhdHRubyA9IGdldF9hdHRudW0ocmVs aWQsIGNvbGRlZi0+Y29sbmFtZSk7CisKKwkJCXNlcXJlbGlkID0gZ2V0SWRlbnRpdHlTZXF1ZW5j ZShyZWxpZCwgYXR0bm8sIHRydWUpOworCQkJaWYgKE9pZElzVmFsaWQoc2VxcmVsaWQpICYmIGNv bGRlZi0+aWRlbnRpdHlTZXF1ZW5jZSkKKwkJCQlzZXFyZWxpZCA9IFJhbmdlVmFyR2V0UmVsaWQo Y29sZGVmLT5pZGVudGl0eVNlcXVlbmNlLCBOb0xvY2ssIGZhbHNlKTsKKwkJfQorCisJCWlmIChP aWRJc1ZhbGlkKHNlcXJlbGlkKSkKKwkJeworCQkJdG1wX29iaiA9IGRlcGFyc2VfQ29sdW1uSWRl bnRpdHkoc2VxcmVsaWQsIGNvbGRlZi0+aWRlbnRpdHksIGlzX2FsdGVyKTsKKwkJCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7aWRlbnRpdHlfY29sdW1ufXMiLCB0bXBfb2JqKTsKKwkJfQor CisJCS8qIEdFTkVSQVRFRCBDT0xVTU4gRVhQUkVTU0lPTiAqLworCQl0bXBfb2JqID0gbmV3X29i anRyZWUoIkdFTkVSQVRFRCBBTFdBWVMgQVMiKTsKKwkJaWYgKGNvbGRlZi0+Z2VuZXJhdGVkID09 IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQorCQl7CisJCQljaGFyCSAgICpkZWZzdHI7CisK KwkJCWRlZnN0ciA9IFJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0t PmF0dG51bSwKKwkJCQkJCQkJCQkJICBkcGNvbnRleHQsIGV4cHJzKTsKKwkJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHRtcF9vYmosICIoJXtnZW5lcmF0aW9uX2V4cHJ9cykgU1RPUkVEIiwKKwkJCQkJ CQkJICJnZW5lcmF0aW9uX2V4cHIiLCBkZWZzdHIpOworCQl9CisJCWVsc2UKKwkJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKworCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2dl bmVyYXRlZF9jb2x1bW59cyIsIHRtcF9vYmopOworCX0KKworCVJlbGVhc2VTeXNDYWNoZShhdHRy VHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ29sdW1uRGVmIG5v ZGUgd2l0aGluIGEgdHlwZWQgdGFibGUgY3JlYXRpb24uCVRoaXMgaXMgc2ltcGxlcgorICogdGhh biB0aGUgcmVndWxhciBjYXNlLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdG8gZW1pdCB0aGUgdHlw ZSBkZWNsYXJhdGlvbiwKKyAqIGNvbGxhdGlvbiwgb3IgZGVmYXVsdC4gIEhlcmUgd2Ugb25seSBy ZXR1cm4gc29tZXRoaW5nIGlmIHRoZSBjb2x1bW4gaXMgYmVpbmcKKyAqIGRlY2xhcmVkIE5PVCBO VUxMLgorICoKKyAqIEFzIGluIGRlcGFyc2VfQ29sdW1uRGVmLCBhbnkgb3RoZXIgY29uc3RyYWlu dCBpcyBwcm9jZXNzZWQgZWxzZXdoZXJlLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiAle25h bWV9SSBXSVRIIE9QVElPTlMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zLgorICovCitzdGF0aWMg T2JqVHJlZSAqCitkZXBhcnNlX0NvbHVtbkRlZl90eXBlZChSZWxhdGlvbiByZWxhdGlvbiwgTGlz dCAqZHBjb250ZXh0LCBDb2x1bW5EZWYgKmNvbGRlZikKK3sKKwlPYmpUcmVlICAgICpyZXQgPSBO VUxMOworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbGF0aW9uKTsKKwlIZWFwVHVwbGUJYXR0clR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBh dHRyRm9ybTsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCU9pZAkJCXR5cGNvbGxh dGlvbjsKKwlib29sCQlzYXdfbm90bnVsbDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJYXR0clR1 cCA9IFNlYXJjaFN5c0NhY2hlQXR0TmFtZShyZWxpZCwgY29sZGVmLT5jb2xuYW1lKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoYXR0clR1cCkpCisJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZmlu ZCBjYWNoZSBlbnRyeSBmb3IgY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiAldSIsCisJCQkgY29s ZGVmLT5jb2xuYW1lLCByZWxpZCk7CisJYXR0ckZvcm0gPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdF VFNUUlVDVChhdHRyVHVwKTsKKworCWdldF9hdHR0eXBldHlwbW9kY29sbChyZWxpZCwgYXR0ckZv cm0tPmF0dG51bSwKKwkJCQkJCSAgJnR5cGlkLCAmdHlwbW9kLCAmdHlwY29sbGF0aW9uKTsKKwor CS8qCisJICogU2VhcmNoIGZvciBhIE5PVCBOVUxMIGRlY2xhcmF0aW9uLiBBcyBpbiBkZXBhcnNl X0NvbHVtbkRlZiwgd2UgcmVseSBvbgorCSAqIGZpbmRpbmcgYSBjb25zdHJhaW50IG9uIHRoZSBj b2x1bW4gcmF0aGVyIHRoYW4gY29sZGVmLT5pc19ub3RfbnVsbC4KKwkgKiAoVGhpcyByb3V0aW5l IGlzIG5ldmVyIHVzZWQgZm9yIEFMVEVSIGNhc2VzLikKKwkgKi8KKwlzYXdfbm90bnVsbCA9IGZh bHNlOworCWZvcmVhY2goY2VsbCwgY29sZGVmLT5jb25zdHJhaW50cykKKwl7CisJCUNvbnN0cmFp bnQgKmNvbnN0ciA9IChDb25zdHJhaW50ICopIGxmaXJzdChjZWxsKTsKKworCQlpZiAoY29uc3Ry LT5jb250eXBlID09IENPTlNUUl9OT1ROVUxMKQorCQl7CisJCQlzYXdfbm90bnVsbCA9IHRydWU7 CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghc2F3X25vdG51bGwgJiYgIWF0dHJGb3JtLT5h dHRoYXNkZWYpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUoYXR0clR1cCk7CisJCXJldHVybiBOVUxM OworCX0KKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiREVGQVVMVCIpOworCWlmIChhdHRyRm9y bS0+YXR0aGFzZGVmKQorCXsKKwkJY2hhcgkgICAqZGVmc3RyOworCisJCWRlZnN0ciA9IFJlbGF0 aW9uR2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0tPmF0dG51bSwKKwkJCQkJCQkJ CQkgIGRwY29udGV4dCwgTlVMTCk7CisKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwg IiV7ZGVmYXVsdH1zIiwgImRlZmF1bHQiLCBkZWZzdHIpOworCX0KKwllbHNlCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCIle25hbWV9SSBX SVRIIE9QVElPTlMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zIiwgNCwKKwkJCQkJCSAidHlwZSIs IE9ialR5cGVTdHJpbmcsICJjb2x1bW4iLAorCQkJCQkJICJuYW1lIiwgT2JqVHlwZVN0cmluZywg Y29sZGVmLT5jb2xuYW1lLAorCQkJCQkJICJub3RfbnVsbCIsIE9ialR5cGVTdHJpbmcsCisJCQkJ CQkgc2F3X25vdG51bGwgPyAiTk9UIE5VTEwiIDogIiIsCisJCQkJCQkgImRlZmF1bHQiLCBPYmpU eXBlT2JqZWN0LCB0bXBfb2JqKTsKKworCS8qIEdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3Vw cG9ydGVkIG9uIHR5cGVkIHRhYmxlcywgc28gd2UgYXJlIGRvbmUgKi8KKworCVJlbGVhc2VTeXND YWNoZShhdHRyVHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBk ZWZpbml0aW9uIG9mIGNvbHVtbiBpZGVudGl0eS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog U0VUIEdFTkVSQVRFRCAle29wdGlvbn1zICV7aWRlbnRpdHlfdHlwZX1zICV7c2VxX2RlZmluaXRp b246IH1zCisgKiAJT1IKKyAqIEdFTkVSQVRFRCAle29wdGlvbn1zIEFTIElERU5USVRZICV7aWRl bnRpdHlfdHlwZX1zICggJXtzZXFfZGVmaW5pdGlvbjogfXMgKQorICovCitzdGF0aWMgT2JqVHJl ZSAqCitkZXBhcnNlX0NvbHVtbklkZW50aXR5KE9pZCBzZXFyZWxpZCwgY2hhciBpZGVudGl0eSwg Ym9vbCBhbHRlcl90YWJsZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqaWRl bnRfb2JqOworCUxpc3QJICAgKmVsZW1zID0gTklMOworCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9y bTsKKwlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVlczsKKwljaGFyCSAgICppZGVudGZtdDsKKwlj aGFyCSAgICpvYmpmbXQ7CisKKwlpZiAoYWx0ZXJfdGFibGUpCisJeworCQlpZGVudGZtdCA9ICJT RVQgR0VORVJBVEVEICI7CisJCW9iamZtdCA9ICIle29wdGlvbn1zIjsKKwl9CisJZWxzZQorCXsK KwkJaWRlbnRmbXQgPSAiR0VORVJBVEVEICI7CisJCW9iamZtdCA9ICIle29wdGlvbn1zIEFTIElE RU5USVRZIjsKKwl9CisKKwlpZGVudF9vYmogPSBuZXdfb2JqdHJlZShpZGVudGZtdCk7CisKKwlp ZiAoaWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5USVRZX0FMV0FZUykKKwkJYXBwZW5kX3N0cmlu Z19vYmplY3QoaWRlbnRfb2JqLCBvYmpmbXQsICJvcHRpb24iLCAiQUxXQVlTIik7CisJZWxzZSBp ZiAoaWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFVTFQpCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KGlkZW50X29iaiwgb2JqZm10LCAib3B0aW9uIiwgIkJZIERFRkFVTFQiKTsK KwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudChpZGVudF9vYmopOworCisJcmV0ID0gbmV3X29i anRyZWVfVkEoIiV7aWRlbnRpdHlfdHlwZX1zIiwgMSwKKwkJCQkJCSAiaWRlbnRpdHlfdHlwZSIs IE9ialR5cGVPYmplY3QsIGlkZW50X29iaik7CisKKwlzZXF2YWx1ZXMgPSBnZXRfc2VxdWVuY2Vf dmFsdWVzKHNlcXJlbGlkKTsKKwlzZXFmb3JtID0gc2VxdmFsdWVzLT5zZXFmb3JtOworCisJLyog RGVmaW5pdGlvbiBlbGVtZW50cyAqLworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9T ZXFfQ2FjaGUoc2VxZm9ybSwgYWx0ZXJfdGFibGUpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMs IGRlcGFyc2VfU2VxX0N5Y2xlKHNlcWZvcm0sIGFsdGVyX3RhYmxlKSk7CisJZWxlbXMgPSBsYXBw ZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeShzZXFmb3JtLCBhbHRlcl90YWJsZSkp OworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9TZXFfTWludmFsdWUoc2VxZm9ybSwg YWx0ZXJfdGFibGUpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX01heHZh bHVlKHNlcWZvcm0sIGFsdGVyX3RhYmxlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBh cnNlX1NlcV9TdGFydHdpdGgoc2VxZm9ybSwgYWx0ZXJfdGFibGUpKTsKKwllbGVtcyA9IGxhcHBl bmQoZWxlbXMsIGRlcGFyc2VfU2VxX1Jlc3RhcnQoc2VxdmFsdWVzLT5sYXN0X3ZhbHVlKSk7CisJ LyogV2UgcHVycG9zZWZ1bGx5IGRvIG5vdCBlbWl0IE9XTkVEIEJZIGhlcmUgKi8KKworCWlmIChh bHRlcl90YWJsZSkKKwkJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle3NlcV9kZWZpbml0aW9u OiB9cyIsIGVsZW1zKTsKKwllbHNlCisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiKCAle3Nl cV9kZWZpbml0aW9uOiB9cyApIiwgZWxlbXMpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAq IC4uLiBBTFRFUiBDT0xVTU4gLi4uIFNFVC9SRVNFVCAoLi4uKQorICoKKyAqIFZlcmJvc2Ugc3lu dGF4CisgKiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBSRVNFVHxTRVQgKCV7b3B0aW9uczosIH1z KQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoQWx0ZXJU YWJsZUNtZCAqc3ViY21kKQoreworCUxpc3QJICAgKnNldHMgPSBOSUw7CisJTGlzdENlbGwgICAq Y2VsbDsKKwlPYmpUcmVlICAgICpyZXQ7CisJYm9vbAkJaXNfcmVzZXQgPSBzdWJjbWQtPnN1YnR5 cGUgPT0gQVRfUmVzZXRPcHRpb25zOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENP TFVNTiAle2NvbHVtbn1JICV7b3B0aW9ufXMiLCAyLAorCQkJCQkJICJjb2x1bW4iLCBPYmpUeXBl U3RyaW5nLCBzdWJjbWQtPm5hbWUsCisJCQkJCQkgIm9wdGlvbiIsIE9ialR5cGVTdHJpbmcsIGlz X3Jlc2V0ID8gIlJFU0VUIiA6ICJTRVQiKTsKKworCWZvcmVhY2goY2VsbCwgKExpc3QgKikgc3Vi Y21kLT5kZWYpCisJeworCQlEZWZFbGVtICAgICplbGVtOworCQlPYmpUcmVlICAgICpzZXQ7CisK KwkJZWxlbSA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKwkJc2V0ID0gZGVwYXJzZV9EZWZF bGVtKGVsZW0sIGlzX3Jlc2V0KTsKKwkJc2V0cyA9IGxhcHBlbmQoc2V0cywgbmV3X29iamVjdF9v YmplY3Qoc2V0KSk7CisJfQorCisJQXNzZXJ0KHNldHMpOworCWFwcGVuZF9hcnJheV9vYmplY3Qo cmV0LCAiKCV7b3B0aW9uczosIH1zKSIsIHNldHMpOworCisJcmV0dXJuIHJldDsKK30KKworLyoK KyAqIC4uLiBBTFRFUiBDT0xVTU4gLi4uIFNFVC9SRVNFVCAoLi4uKQorICoKKyAqIFZlcmJvc2Ug c3ludGF4CisgKiBSRVNFVHxTRVQgKCV7b3B0aW9uczosIH1zKQorICovCitzdGF0aWMgT2JqVHJl ZSAqCitkZXBhcnNlX1JlbFNldE9wdGlvbnMoQWx0ZXJUYWJsZUNtZCAqc3ViY21kKQoreworCUxp c3QJICAgKnNldHMgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlib29sCQlpc19yZXNldCA9 IHN1YmNtZC0+c3VidHlwZSA9PSBBVF9SZXNldFJlbE9wdGlvbnM7CisKKwlmb3JlYWNoKGNlbGws IChMaXN0ICopIHN1YmNtZC0+ZGVmKQorCXsKKwkJRGVmRWxlbSAgICAqZWxlbTsKKwkJT2JqVHJl ZSAgICAqc2V0OworCisJCWVsZW0gPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisJCXNldCA9 IGRlcGFyc2VfRGVmRWxlbShlbGVtLCBpc19yZXNldCk7CisJCXNldHMgPSBsYXBwZW5kKHNldHMs IG5ld19vYmplY3Rfb2JqZWN0KHNldCkpOworCX0KKworCUFzc2VydChzZXRzKTsKKworCXJldHVy biBuZXdfb2JqdHJlZV9WQSgiJXtzZXRfcmVzZXR9cyAoJXtvcHRpb25zOiwgfXMpIiwgMiwKKwkJ CQkJCSAgInNldF9yZXNldCIsIE9ialR5cGVTdHJpbmcsIGlzX3Jlc2V0ID8gIlJFU0VUIiA6ICJT RVQiLAorCQkJCQkJICAib3B0aW9ucyIsIE9ialR5cGVBcnJheSwgc2V0cyk7Cit9CisKKy8qCisg KiBEZXBhcnNlIERlZkVsZW1zLCBhcyB1c2VkIGUuZy4gYnkgQUxURVIgQ09MVU1OIC4uLiBTRVQs IGludG8gYSBsaXN0IG9mIFNFVAorICogKC4uLikgIG9yIFJFU0VUICguLi4pIGNvbnRlbnRzLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiAle2xhYmVsfXMgPSAle3ZhbHVlfUwKKyAqLworc3Rh dGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZFbGVtKERlZkVsZW0gKmVsZW0sIGJvb2wgaXNfcmVz ZXQpCit7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKm9wdG5hbWUgPSBuZXdfb2Jq dHJlZSgiIik7CisKKwlpZiAoZWxlbS0+ZGVmbmFtZXNwYWNlICE9IE5VTEwpCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KG9wdG5hbWUsICIle3NjaGVtYX1JLiIsICJzY2hlbWEiLAorCQkJCQkJCSBl bGVtLT5kZWZuYW1lc3BhY2UpOworCisJYXBwZW5kX3N0cmluZ19vYmplY3Qob3B0bmFtZSwgIiV7 bGFiZWx9SSIsICJsYWJlbCIsIGVsZW0tPmRlZm5hbWUpOworCisJcmV0ID0gbmV3X29ianRyZWVf VkEoIiV7bGFiZWx9cyIsIDEsCisJCQkJCQkgImxhYmVsIiwgT2JqVHlwZU9iamVjdCwgb3B0bmFt ZSk7CisKKwlpZiAoIWlzX3Jlc2V0KQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICI9ICV7 dmFsdWV9TCIsICJ2YWx1ZSIsCisJCQkJCQkJIGVsZW0tPmFyZyA/IGRlZkdldFN0cmluZyhlbGVt KSA6CisJCQkJCQkJIGRlZkdldEJvb2xlYW4oZWxlbSkgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKwor CXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBJTkhFUklUUyByZWxhdGlvbnMu CisgKgorICogR2l2ZW4gYSB0YWJsZSBPSUQsIHJldHVybiBhIHNjaGVtYS1xdWFsaWZpZWQgdGFi bGUgbGlzdCByZXByZXNlbnRpbmcKKyAqIHRoZSBwYXJlbnQgdGFibGVzLgorICovCitzdGF0aWMg TGlzdCAqCitkZXBhcnNlX0luaFJlbGF0aW9ucyhPaWQgb2JqZWN0SWQpCit7CisJTGlzdAkgICAq cGFyZW50cyA9IE5JTDsKKwlSZWxhdGlvbglpbmhSZWw7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlT Y2FuS2V5RGF0YSBrZXk7CisJSGVhcFR1cGxlCXR1cGxlOworCisJaW5oUmVsID0gdGFibGVfb3Bl bihJbmhlcml0c1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJU2NhbktleUluaXQo JmtleSwKKwkJCQlBbnVtX3BnX2luaGVyaXRzX2luaHJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisKKwlz Y2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGluaFJlbCwgSW5oZXJpdHNSZWxpZFNlcW5vSW5kZXhJ ZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlz VmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCU9ialRyZWUgICAg KnBhcmVudDsKKwkJRm9ybV9wZ19pbmhlcml0cyBmb3JtSW5oID0gKEZvcm1fcGdfaW5oZXJpdHMp IEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJcGFyZW50ID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l X2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJIGZvcm1JbmgtPmluaHBhcmVudCk7 CisJCXBhcmVudHMgPSBsYXBwZW5kKHBhcmVudHMsIG5ld19vYmplY3Rfb2JqZWN0KHBhcmVudCkp OworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UoaW5oUmVsLCBS b3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBwYXJlbnRzOworfQorCisvKgorICogRGVwYXJz ZSB0aGUgT04gQ09NTUlUIC4uLiBjbGF1c2UgZm9yIENSRUFURSAuLi4gVEVNUE9SQVJZIC4uLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBPTiBDT01NSVQgJXtvbl9jb21taXRfdmFsdWV9cwor ICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX09uQ29tbWl0Q2xhdXNlKE9uQ29tbWl0QWN0 aW9uIG9wdGlvbikKK3sKKwlPYmpUcmVlICAgICpyZXQgID0gbmV3X29ianRyZWUoIk9OIENPTU1J VCIpOworCXN3aXRjaCAob3B0aW9uKQorCXsKKwkJY2FzZSBPTkNPTU1JVF9EUk9QOgorCQkJYXBw ZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtvbl9jb21taXRfdmFsdWV9cyIsCisJCQkJCQkJCSAi b25fY29tbWl0X3ZhbHVlIiwgIkRST1AiKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT05DT01NSVRf REVMRVRFX1JPV1M6CisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle29uX2NvbW1pdF92 YWx1ZX1zIiwKKwkJCQkJCQkJICJvbl9jb21taXRfdmFsdWUiLCAiREVMRVRFIFJPV1MiKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgT05DT01NSVRfUFJFU0VSVkVfUk9XUzoKKwkJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHJldCwgIiV7b25fY29tbWl0X3ZhbHVlfXMiLAorCQkJCQkJCQkgIm9uX2NvbW1p dF92YWx1ZSIsICJQUkVTRVJWRSBST1dTIik7CisJCQlicmVhazsKKworCQljYXNlIE9OQ09NTUlU X05PT1A6CisJCQlhcHBlbmRfbnVsbF9vYmplY3QocmV0LCAiJXtvbl9jb21taXRfdmFsdWV9cyIp OworCQkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQ0FDSEUgb3B0aW9uLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgQ0FDSEUgJXt2YWx1ZX1zCisgKiBPUgorICogQ0FD SEUgJXt2YWx1ZX0KKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX0Nh Y2hlKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sKKwlPYmpU cmVlICAgICpyZXQ7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAiU0VU IENBQ0hFICV7dmFsdWV9cyIgOiAiQ0FDSEUgJXt2YWx1ZX1zIjsKKworCXJldCA9IG5ld19vYmp0 cmVlX1ZBKGZtdCwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImNhY2hlIiwK KwkJCQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIHBzcHJpbnRmKElOVDY0X0ZP Uk1BVCwgc2VxZGF0YS0+c2VxY2FjaGUpKTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVjdChy ZXQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQ1lDTEUgb3B0aW9uLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgJXtub31zIENZQ0xFCisgKiBPUgorICogJXtub31z IENZQ0xFCisgKi8KK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1NlcV9DeWNsZShG b3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAg ICAqcmV0OworCWNoYXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCAle25v fXMgQ1lDTEUiIDogIiV7bm99cyBDWUNMRSI7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQShmbXQs IDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjeWNsZSIsCisJCQkJCQkgIm5v IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBzZXFkYXRhLT5zZXFjeWNsZSA/ICIiIDogIk5PIik7 CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2Ug dGhlIHNlcXVlbmNlIElOQ1JFTUVOVCBCWSBvcHRpb24uCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIFNFVCBJTkNSRU1FTlQgQlkgJXt2YWx1ZX1zCisgKiBPUgorICogSU5DUkVNRU5UIEJZICV7 dmFsdWV9cworICovCitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfSW5jcmVt ZW50QnkoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKQoreworCU9i alRyZWUgICAgKnJldDsKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJT RVQgSU5DUkVNRU5UIEJZICV7dmFsdWV9cyIgOiAiSU5DUkVNRU5UIEJZICV7dmFsdWV9cyI7CisK KwlyZXQgPSBuZXdfb2JqdHJlZV9WQShmbXQsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVT dHJpbmcsICJzZXFpbmNyZW1lbnQiLAorCQkJCQkJICJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBzZXFkYXRhLT5zZXFpbmNyZW1lbnQpKTsKKwor CXJldHVybiBuZXdfb2JqZWN0X29iamVjdChyZXQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUg c2VxdWVuY2UgTUFYVkFMVUUgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQg TUFYVkFMVUUgJXt2YWx1ZX1zCisgKiBPUgorICogTUFYVkFMVUUgJXt2YWx1ZX1zCisgKi8KK3N0 YXRpYyBpbmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1NlcV9NYXh2YWx1ZShGb3JtX3BnX3NlcXVl bmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAgICAqcmV0OworCWNo YXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCBNQVhWQUxVRSAle3ZhbHVl fXMiIDogIk1BWFZBTFVFICV7dmFsdWV9cyI7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQShmbXQs IDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJtYXh2YWx1ZSIsCisJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNl cWRhdGEtPnNlcW1heCkpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisK Ky8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBNSU5WQUxVRSBvcHRpb24uCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIFNFVCBNSU5WQUxVRSAle3ZhbHVlfXMKKyAqIE9SCisgKiBNSU5WQUxV RSAle3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX01p bnZhbHVlKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sKKwlP YmpUcmVlICAgICpyZXQ7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAi U0VUIE1JTlZBTFVFICV7dmFsdWV9cyIgOiAiTUlOVkFMVUUgJXt2YWx1ZX1zIjsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKGZtdCwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywg Im1pbnZhbHVlIiwKKwkJCQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIHBzcHJp bnRmKElOVDY0X0ZPUk1BVCwgc2VxZGF0YS0+c2VxbWluKSk7CisKKwlyZXR1cm4gbmV3X29iamVj dF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIFJFU1RBUlQg b3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRVNUQVJUICV7dmFsdWV9cworICov CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfUmVzdGFydChpbnQ2NCBsYXN0 X3ZhbHVlKQoreworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJS RVNUQVJUICV7dmFsdWV9cyIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJy ZXN0YXJ0IiwKKwkJCQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIHBzcHJpbnRm KElOVDY0X0ZPUk1BVCwgbGFzdF92YWx1ZSkpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0 KHJldCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBBUyBvcHRpb24uCisgKgor ICogVmVyYm9zZSBzeW50YXgKKyAqIEFTICV7c2VxdHlwZX1UCisgKi8KK3N0YXRpYyBpbmxpbmUg T2JqRWxlbSAqCitkZXBhcnNlX1NlcV9BcyhGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCit7CisJ T2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWUoIkFTIik7CisJaWYgKE9pZElz VmFsaWQoc2VxZGF0YS0+c2VxdHlwaWQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIl e3NlcXR5cGV9VCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHNlcWRhdGEtPnNlcXR5 cGlkLCAtMSkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4g bmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNl IFNUQVJUIFdJVEggb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgU1RBUlQg V0lUSCAle3ZhbHVlfXMKKyAqIE9SCisgKiBTVEFSVCBXSVRIICV7dmFsdWV9cworICovCitzdGF0 aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfU3RhcnR3aXRoKEZvcm1fcGdfc2VxdWVu Y2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJY2hh cgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAiU0VUIFNUQVJUIFdJVEggJXt2YWx1 ZX1zIiA6ICJTVEFSVCBXSVRIICV7dmFsdWV9cyI7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQShm bXQsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJzdGFydCIsCisJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNl cWRhdGEtPnNlcXN0YXJ0KSk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30K KworLyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgU1RPUkFHRSBvcHRpb24uCisgKgorICogVmVyYm9z ZSBzeW50YXgKKyAqIFNUT1JBR0U9JXt2YWx1ZX1zCisgKi8KK3N0YXRpYyBpbmxpbmUgT2JqRWxl bSAqCitkZXBhcnNlX1R5cGVfU3RvcmFnZShGb3JtX3BnX3R5cGUgdHlwRm9ybSkKK3sKKwlPYmpU cmVlICAgICpyZXQ7CisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlNUT1JBR0UgPSAle3ZhbHVlfXMi LCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAic3RvcmFnZSIsCisJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywgZ2V0X3R5cGVfc3RvcmFnZSh0eXBGb3JtLT50eXBzdG9y YWdlKSk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERl cGFyc2UgdGhlIHR5cGUgUkVDRUlWRSBvcHRpb24uCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAq IFJFQ0VJVkU9JXtwcm9jZWR1cmV9RAorICovCitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVw YXJzZV9UeXBlX1JlY2VpdmUoRm9ybV9wZ190eXBlIHR5cEZvcm0pCit7CisJT2JqVHJlZSAgICAq cmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlJFQ0VJVkU9IiwgMSwKKwkJCQkJCSAiY2xh dXNlIiwgT2JqVHlwZVN0cmluZywgInJlY2VpdmUiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3Jt LT50eXByZWNlaXZlKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtwcm9jZWR1cmV9 RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlv bklkLAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwcmVjZWl2ZSkpOworCWVsc2UKKwkJYXBw ZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsK K30KKworLyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgU0VORCBvcHRpb24uCisgKgorICogVmVyYm9z ZSBzeW50YXgKKyAqIFNFTkQ9JXtwcm9jZWR1cmV9RAorICovCitzdGF0aWMgaW5saW5lIE9iakVs ZW0gKgorZGVwYXJzZV9UeXBlX1NlbmQoRm9ybV9wZ190eXBlIHR5cEZvcm0pCit7CisJT2JqVHJl ZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlNFTkQ9IiwgMSwKKwkJCQkJCSAi Y2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInNlbmQiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3Jt LT50eXBzZW5kKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtwcm9jZWR1cmV9RCIs CisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklk LAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwc2VuZCkpOworCWVsc2UKKwkJYXBwZW5kX25v dF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKwor LyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgdHlwbW9kX2luIG9wdGlvbi4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogVFlQTU9EX0lOPSV7cHJvY2VkdXJlfUQKKyAqLworc3RhdGljIGlubGluZSBP YmpFbGVtICoKK2RlcGFyc2VfVHlwZV9UeXBtb2RfSW4oRm9ybV9wZ190eXBlIHR5cEZvcm0pCit7 CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlRZUE1PRF9JTj0i LCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAidHlwbW9kX2luIik7CisJaWYg KE9pZElzVmFsaWQodHlwRm9ybS0+dHlwbW9kaW4pKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChy ZXQsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lk KFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBtb2Rpbikp OworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwlyZXR1cm4gbmV3X29iamVj dF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHR5cGUgdHlwbW9kX291dCBv cHRpb24uCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIFRZUE1PRF9PVVQ9JXtwcm9jZWR1cmV9 RAorICovCitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9UeXBlX1R5cG1vZF9PdXQo Rm9ybV9wZ190eXBlIHR5cEZvcm0pCit7CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3 X29ianRyZWVfVkEoIlRZUE1PRF9PVVQ9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0 cmluZywgInR5cG1vZF9vdXQiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3JtLT50eXBtb2RvdXQp KQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCQkJCSB0eXBGb3JtLT50eXBtb2RvdXQpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2Vu dChyZXQpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisgKiBE ZXBhcnNlIHRoZSB0eXBlIGFuYWx5emUgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4Cisg KiBBTkFMWVpFPSV7cHJvY2VkdXJlfUQKKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2Rl cGFyc2VfVHlwZV9BbmFseXplKEZvcm1fcGdfdHlwZSB0eXBGb3JtKQoreworCU9ialRyZWUgICAg KnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTkFMWVpFPSIsIDEsCisJCQkJCQkgImNs YXVzZSIsIE9ialR5cGVTdHJpbmcsICJhbmFseXplIik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9y bS0+dHlwYW5hbHl6ZSkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7cHJvY2VkdXJl fUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRp b25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cGFuYWx5emUpKTsKKwllbHNlCisJCWFw cGVuZF9ub3RfcHJlc2VudChyZXQpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7 Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSB0eXBlIHN1YnNjcmlwdCBvcHRpb24uCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIFNVQlNDUklQVD0le3Byb2NlZHVyZX1ECisgKi8KK3N0YXRpYyBp bmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1R5cGVfU3Vic2NyaXB0KEZvcm1fcGdfdHlwZSB0eXBG b3JtKQoreworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJTVUJT Q1JJUFQ9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInN1YnNjcmlwdCIp OworCWlmIChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5cHN1YnNjcmlwdCkpCisJCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHJldCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0t PnR5cHN1YnNjcmlwdCkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwly ZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIFN1YnJvdXRpbmUgZm9y IENSRUFURSBUQUJMRSBkZXBhcnNpbmcuCisgKgorICogRGVhbCB3aXRoIGFsbCB0aGUgdGFibGUg ZWxlbWVudHMgKGNvbHVtbnMgYW5kIGNvbnN0cmFpbnRzKS4KKyAqCisgKiBOb3RlIHdlIGlnbm9y ZSBjb25zdHJhaW50cyBpbiB0aGUgcGFyc2Ugbm9kZSBoZXJlOyB0aGV5IGFyZSBleHRyYWN0ZWQg ZnJvbQorICogc3lzdGVtIGNhdGFsb2dzIGluc3RlYWQuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2Rl cGFyc2VfVGFibGVFbGVtZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50 cywgTGlzdCAqZHBjb250ZXh0LAorCQkJCQkgIGJvb2wgdHlwZWQsIGJvb2wgY29tcG9zaXRlKQor eworCUxpc3QJICAgKmVsZW1lbnRzID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFj aChsYywgdGFibGVFbGVtZW50cykKKwl7CisJCU5vZGUJICAgKmVsdCA9IChOb2RlICopIGxmaXJz dChsYyk7CisKKwkJc3dpdGNoIChub2RlVGFnKGVsdCkpCisJCXsKKwkJCWNhc2UgVF9Db2x1bW5E ZWY6CisJCQkJeworCQkJCQlPYmpUcmVlICAgICp0cmVlOworCisJCQkJCXRyZWUgPSB0eXBlZCA/ CisJCQkJCQlkZXBhcnNlX0NvbHVtbkRlZl90eXBlZChyZWxhdGlvbiwgZHBjb250ZXh0LAorCQkJ CQkJCQkJCQkJKENvbHVtbkRlZiAqKSBlbHQpIDoKKwkJCQkJCWRlcGFyc2VfQ29sdW1uRGVmKHJl bGF0aW9uLCBkcGNvbnRleHQsCisJCQkJCQkJCQkJICBjb21wb3NpdGUsIChDb2x1bW5EZWYgKikg ZWx0LAorCQkJCQkJCQkJCSAgZmFsc2UsIE5VTEwpOworCQkJCQlpZiAodHJlZSAhPSBOVUxMKQor CQkJCQkJZWxlbWVudHMgPSBsYXBwZW5kKGVsZW1lbnRzLCBuZXdfb2JqZWN0X29iamVjdCh0cmVl KSk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBUX0NvbnN0cmFpbnQ6CisJCQkJYnJlYWs7 CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIG5vZGUgdHlwZSAlZCIsIG5v ZGVUYWcoZWx0KSk7CisJCX0KKwl9CisKKwlyZXR1cm4gZWxlbWVudHM7Cit9CisKKy8qCisgKiBE ZXBhcnNlIGEgQ3JlYXRlU3RtdCAoQ1JFQVRFIFRBQkxFKS4KKyAqCisgKiBHaXZlbiBhIHRhYmxl IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJl ZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ug c3ludGF4CisgKiBDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31z ICV7aWRlbnRpdHl9RCBbT0YKKyAqICV7b2ZfdHlwZX1UIHwgUEFSVElUSU9OIE9GICV7cGFyZW50 X2lkZW50aXR5fURdICV7dGFibGVfZWxlbWVudHN9cworICogJXtpbmhlcml0c31zICV7cGFydGl0 aW9uX2J5fXMgJXthY2Nlc3NfbWV0aG9kfXMgJXt3aXRoX2NsYXVzZX1zCisgKiAle29uX2NvbW1p dH1zICV7dGFibGVzcGFjZX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRl U3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVTdG10ICpub2Rl ID0gKENyZWF0ZVN0bXQgKikgcGFyc2V0cmVlOworCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVsYXRp b25fb3BlbihvYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlMaXN0CSAgICpkcGNvbnRleHQ7 CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJTGlzdAkgICAqbGlz dCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNS RUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1E IiwgMywKKwkJCQkJCSAicGVyc2lzdGVuY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIGdldF9w ZXJzaXN0ZW5jZV9zdHIocmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpLAorCQkJCQkJ ICJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5pZl9ub3RfZXhp c3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsYXRpb24tPnJkX3JlbC0+ cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpKTsKKworCWRwY29udGV4dCA9IGRlcGFyc2VfY29udGV4dF9mb3IoUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsYXRpb24pLAorCQkJCQkJCQkJb2JqZWN0SWQpOworCisJLyoKKwkgKiBU eXBlZCB0YWJsZXMgYW5kIHBhcnRpdGlvbnMgdXNlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1h dCBzdHJpbmc6IHdlCisJICogbXVzdCBub3QgcHV0IHRhYmxlX2VsZW1lbnRzIHdpdGggcGFyZW50 cyBkaXJlY3RseSBpbiB0aGUgZm10IHN0cmluZywKKwkgKiBiZWNhdXNlIGlmIHRoZXJlIGFyZSBu byBvcHRpb25zIHRoZSBwYXJlbnRoZXNlcyBtdXN0IG5vdCBiZSBlbWl0dGVkOworCSAqIGFuZCBh bHNvLCB0eXBlZCB0YWJsZXMgZG8gbm90IGFsbG93IGZvciBpbmhlcml0YW5jZS4KKwkgKi8KKwlp ZiAobm9kZS0+b2ZUeXBlbmFtZSB8fCBub2RlLT5wYXJ0Ym91bmQpCisJeworCQlMaXN0CSAgICp0 YWJsZWVsdHMgPSBOSUw7CisKKwkJLyoKKwkJICogV2UgY2FuJ3QgcHV0IHRhYmxlIGVsZW1lbnRz IGRpcmVjdGx5IGluIHRoZSBmbXQgc3RyaW5nIGFzIGFuIGFycmF5CisJCSAqIHN1cnJvdW5kZWQg YnkgcGFyZW50aGVzZXMgaGVyZSwgYmVjYXVzZSBhbiBlbXB0eSBjbGF1c2Ugd291bGQgY2F1c2UK KwkJICogYSBzeW50YXggZXJyb3IuICBUaGVyZWZvcmUsIHdlIHVzZSBhbiBpbmRpcmVjdGlvbiBl bGVtZW50IGFuZCBzZXQKKwkJICogcHJlc2VudD1mYWxzZSB3aGVuIHRoZXJlIGFyZSBubyBlbGVt ZW50cy4KKwkJICovCisJCWlmIChub2RlLT5vZlR5cGVuYW1lKQorCQl7CisJCQl0bXBfb2JqID0g bmV3X29ianRyZWVfZm9yX3R5cGUocmVsYXRpb24tPnJkX3JlbC0+cmVsb2Z0eXBlLCAtMSk7CisJ CQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJPRiAle29mX3R5cGV9VCIsIHRtcF9vYmopOwor CQl9CisJCWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFyZW50czsKKwkJCU9iakVsZW0gICAgKmVs ZW07CisKKwkJCXBhcmVudHMgPSBkZXBhcnNlX0luaFJlbGF0aW9ucyhvYmplY3RJZCk7CisJCQll bGVtID0gKE9iakVsZW0gKikgbGluaXRpYWwocGFyZW50cyk7CisKKwkJCUFzc2VydChsaXN0X2xl bmd0aChwYXJlbnRzKSA9PSAxKTsKKworCQkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcocmV0LCAiUEFS VElUSU9OIE9GIik7CisKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7cGFyZW50X2lk ZW50aXR5fUQiLAorCQkJCQkJCQkgZWxlbS0+dmFsdWUub2JqZWN0KTsKKwkJfQorCisJCXRhYmxl ZWx0cyA9IGRlcGFyc2VfVGFibGVFbGVtZW50cyhyZWxhdGlvbiwgbm9kZS0+dGFibGVFbHRzLCBk cGNvbnRleHQsCisJCQkJCQkJCQkJICB0cnVlLCAvKiB0eXBlZCB0YWJsZSAqLworCQkJCQkJCQkJ CSAgZmFsc2UpOwkvKiBub3QgY29tcG9zaXRlICovCisJCXRhYmxlZWx0cyA9IG9idGFpbkNvbnN0 cmFpbnRzKHRhYmxlZWx0cywgb2JqZWN0SWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgIENvbnN0 ck9ialRhYmxlKTsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWUoIiIpOworCQlpZiAodGFibGVl bHRzKQorCQkJYXBwZW5kX2FycmF5X29iamVjdCh0bXBfb2JqLCAiKCV7ZWxlbWVudHM6LCB9cyki LCB0YWJsZWVsdHMpOworCQllbHNlCisJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisK KwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt0YWJsZV9lbGVtZW50c31zIiwgdG1wX29i aik7CisJfQorCWVsc2UKKwl7CisJCUxpc3QJICAgKnRhYmxlZWx0cyA9IE5JTDsKKworCQkvKgor CQkgKiBUaGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgTElLRSBjbGF1c2VzIHNlcGFyYXRlbHk7 IHRoZXkgaGF2ZQorCQkgKiBhbHJlYWR5IGJlZW4gdHJhbnNmb3JtZWQgaW50byBjb2x1bW5zIGFu ZCBjb25zdHJhaW50cy4KKwkJICovCisKKwkJLyoKKwkJICogUHJvY2VzcyB0YWJsZSBlbGVtZW50 czogY29sdW1uIGRlZmluaXRpb25zIGFuZCBjb25zdHJhaW50cy4gIE9ubHkKKwkJICogdGhlIGNv bHVtbiBkZWZpbml0aW9ucyBhcmUgb2J0YWluZWQgZnJvbSB0aGUgcGFyc2Ugbm9kZSBpdHNlbGYu ICBUbworCQkgKiBnZXQgY29uc3RyYWludHMgd2UgcmVseSBvbiBwZ19jb25zdHJhaW50LCBiZWNh dXNlIHRoZSBwYXJzZSBub2RlCisJCSAqIG1pZ2h0IGJlIG1pc3Npbmcgc29tZSB0aGluZ3Mgc3Vj aCBhcyB0aGUgbmFtZSBvZiB0aGUgY29uc3RyYWludHMuCisJCSAqLworCQl0YWJsZWVsdHMgPSBk ZXBhcnNlX1RhYmxlRWxlbWVudHMocmVsYXRpb24sIG5vZGUtPnRhYmxlRWx0cywgZHBjb250ZXh0 LAorCQkJCQkJCQkJCSAgZmFsc2UsCS8qIG5vdCB0eXBlZCB0YWJsZSAqLworCQkJCQkJCQkJCSAg ZmFsc2UpOwkvKiBub3QgY29tcG9zaXRlICovCisJCXRhYmxlZWx0cyA9IG9idGFpbkNvbnN0cmFp bnRzKHRhYmxlZWx0cywgb2JqZWN0SWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgIENvbnN0ck9i alRhYmxlKTsKKworCQlpZiAodGFibGVlbHRzKQorCQkJYXBwZW5kX2FycmF5X29iamVjdChyZXQs ICIoJXt0YWJsZV9lbGVtZW50czosIH1zKSIsIHRhYmxlZWx0cyk7CisJCWVsc2UKKwkJCWFwcGVu ZF9mb3JtYXRfc3RyaW5nKHJldCwgIigpIik7CisKKwkJLyoKKwkJICogQWRkIGluaGVyaXRhbmNl IHNwZWNpZmljYXRpb24uICBXZSBjYW5ub3Qgc2ltcGx5IHNjYW4gdGhlIGxpc3Qgb2YKKwkJICog cGFyZW50cyBmcm9tIHRoZSBwYXJzZXIgbm9kZSwgYmVjYXVzZSB0aGF0IG1heSBsYWNrIHRoZSBh Y3R1YWwKKwkJICogcXVhbGlmaWVkIG5hbWVzIG9mIHRoZSBwYXJlbnQgcmVsYXRpb25zLiAgUmF0 aGVyIHRoYW4gdHJ5aW5nIHRvCisJCSAqIHJlLXJlc29sdmUgdGhlbSBmcm9tIHRoZSBpbmZvcm1h dGlvbiBpbiB0aGUgcGFyc2Ugbm9kZSwgaXQgc2VlbXMKKwkJICogbW9yZSBhY2N1cmF0ZSBhbmQg Y29udmVuaWVudCB0byBncmFiIGl0IGZyb20gcGdfaW5oZXJpdHMuCisJCSAqLworCQl0bXBfb2Jq ID0gbmV3X29ianRyZWUoIklOSEVSSVRTIik7CisJCWlmIChub2RlLT5pbmhSZWxhdGlvbnMgIT0g TklMKQorCQkJYXBwZW5kX2FycmF5X29iamVjdCh0bXBfb2JqLCAiKCV7cGFyZW50czosIH1EKSIs IGRlcGFyc2VfSW5oUmVsYXRpb25zKG9iamVjdElkKSk7CisJCWVsc2UKKwkJeworCQkJYXBwZW5k X251bGxfb2JqZWN0KHRtcF9vYmosICIoJXtwYXJlbnRzOiwgfUQpIik7CisJCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wX29iaik7CisJCX0KKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtp bmhlcml0c31zIiwgdG1wX29iaik7CisJfQorCisJLyogRk9SIFZBTFVFUyBjbGF1c2UgKi8KKwlp ZiAobm9kZS0+cGFydGJvdW5kKQorCXsKKwkJLyoKKwkJICogR2V0IHBnX2NsYXNzLnJlbHBhcnRi b3VuZC4gV2UgY2Fubm90IHVzZSBwYXJ0Ym91bmQgaW4gdGhlIHBhcnNldHJlZQorCQkgKiBkaXJl Y3RseSBhcyBpdCdzIHRoZSBvcmlnaW5hbCBwYXJ0Ym91bmQgZXhwcmVzc2lvbiB3aGljaCBoYXZl bid0CisJCSAqIGJlZW4gdHJhbnNmb3JtZWQuCisJCSAqLworCQlhcHBlbmRfc3RyaW5nX29iamVj dChyZXQsICIle3BhcnRpdGlvbl9ib3VuZH1zIiwgInBhcnRpdGlvbl9ib3VuZCIsCisJCQkJCQkJ IFJlbGF0aW9uR2V0UGFydGl0aW9uQm91bmQob2JqZWN0SWQpKTsKKwl9CisKKwkvKiBQQVJUSVRJ T04gQlkgY2xhdXNlICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJQQVJUSVRJT04gQlkiKTsK KwlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtkZWZpbml0aW9ufXMiLCAi ZGVmaW5pdGlvbiIsCisJCQkJCQkJIHBnX2dldF9wYXJ0a2V5ZGVmX3N0cmluZyhvYmplY3RJZCkp OworCWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXBfb2JqLCAiJXtkZWZpbml0aW9u fXMiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCX0KKwlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICIle3BhcnRpdGlvbl9ieX1zIiwgdG1wX29iaik7CisKKwkvKiBVU0lORyBj bGF1c2UgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIlVTSU5HIik7CisJaWYgKG5vZGUtPmFj Y2Vzc01ldGhvZCkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwgIiV7YWNjZXNzX21l dGhvZH1JIiwgImFjY2Vzc19tZXRob2QiLAorCQkJCQkJCSBub2RlLT5hY2Nlc3NNZXRob2QpOwor CWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXBfb2JqLCAiJXthY2Nlc3NfbWV0aG9k fUkiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCX0KKwlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICIle2FjY2Vzc19tZXRob2R9cyIsIHRtcF9vYmopOworCisJLyogV0lUSCBj bGF1c2UgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIldJVEgiKTsKKworCWZvcmVhY2goY2Vs bCwgbm9kZS0+b3B0aW9ucykKKwl7CisJCU9ialRyZWUgICAgKnRtcF9vYmoyOworCQlEZWZFbGVt ICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJdG1wX29iajIgPSBkZXBh cnNlX0RlZkVsZW0ob3B0LCBmYWxzZSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmpl Y3Rfb2JqZWN0KHRtcF9vYmoyKSk7CisJfQorCisJaWYgKGxpc3QpCisJCWFwcGVuZF9hcnJheV9v YmplY3QodG1wX29iaiwgIigle3dpdGg6LCB9cykiLCBsaXN0KTsKKwllbHNlCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXBfb2JqKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7d2l0 aF9jbGF1c2V9cyIsIHRtcF9vYmopOworCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtv bl9jb21taXR9cyIsCisJCQkJCQkgZGVwYXJzZV9PbkNvbW1pdENsYXVzZShub2RlLT5vbmNvbW1p dCkpOworCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJUQUJMRVNQQUNFIik7CisJaWYgKG5vZGUt PnRhYmxlc3BhY2VuYW1lKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXt0YWJs ZXNwYWNlfUkiLCAidGFibGVzcGFjZSIsCisJCQkJCQkJIG5vZGUtPnRhYmxlc3BhY2VuYW1lKTsK KwllbHNlCisJeworCQlhcHBlbmRfbnVsbF9vYmplY3QodG1wX29iaiwgIiV7dGFibGVzcGFjZX1J Iik7CisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwl9CisJYXBwZW5kX29iamVjdF9v YmplY3QocmV0LCAiJXt0YWJsZXNwYWNlfXMiLCB0bXBfb2JqKTsKKworCXJlbGF0aW9uX2Nsb3Nl KHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAq IERlcGFyc2UgQ1JFQVRFIFRBQkxFIEFTIGNvbW1hbmQuCisgKgorICogZGVwYXJzZV9DcmVhdGVT dG10IGRvIHRoZSBhY3R1YWwgd29yayBhcyB3ZSBkZXBhcnNlIHRoZSBmaW5hbCBDcmVhdGVTdG10 IGZvcgorICogQ1JFQVRFIFRBQkxFIEFTIGNvbW1hbmQuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoK K2RlcGFyc2VfQ3JlYXRlVGFibGVBc1N0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQoreworCU9p ZAkJCW9iamVjdElkOworCU5vZGUJICAgKnBhcnNldHJlZTsKKworCUFzc2VydChjbWQtPnR5cGUg PT0gU0NUX0NyZWF0ZVRhYmxlQXMpOworCisJcGFyc2V0cmVlID0gY21kLT5kLmN0YXMucmVhbF9j cmVhdGU7CisJb2JqZWN0SWQgPSBjbWQtPmQuY3Rhcy5hZGRyZXNzLm9iamVjdElkOworCisJcmV0 dXJuIGRlcGFyc2VfQ3JlYXRlU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKK30KKworLyoKKyAq IERlcGFyc2UgYWxsIHRoZSBjb2xsZWN0ZWQgc3ViY29tbWFuZHMgYW5kIHJldHVybiBhbiBPYmpU cmVlIHJlcHJlc2VudGluZyB0aGUKKyAqIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBz eW50YXgKKyAqIEFMVEVSIHJlbHR5cGUgJXtvbmx5fXMgJXtpZGVudGl0eX1EICV7c3ViY21kczos IH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJSZWxhdGlvbihDb2xsZWN0 ZWRDb21tYW5kICpjbWQpCit7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9v Ymo7CisJT2JqVHJlZSAgICAqdG1wX29iajI7CisJTGlzdAkgICAqZHBjb250ZXh0OworCVJlbGF0 aW9uCXJlbDsKKwlMaXN0CSAgICpzdWJjbWRzID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJ Y29uc3QgY2hhciAqcmVsdHlwZTsKKwlib29sCQlpc3R5cGUgPSBmYWxzZTsKKwlMaXN0CSAgICpl eHBycyA9IE5JTDsKKwlPaWQJCQlyZWxJZCA9IGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkOwor CUFsdGVyVGFibGVTdG10ICpzdG10ID0gTlVMTDsKKworCUFzc2VydChjbWQtPnR5cGUgPT0gU0NU X0FsdGVyVGFibGUpOworCXN0bXQgPSAoQWx0ZXJUYWJsZVN0bXQgKikgY21kLT5wYXJzZXRyZWU7 CisJQXNzZXJ0KElzQShzdG10LCBBbHRlclRhYmxlU3RtdCkpOworCisJLyoKKwkgKiBBTFRFUiBU QUJMRSBzdWJjb21tYW5kcyBnZW5lcmF0ZWQgZm9yIFRhYmxlTGlrZUNsYXVzZSBpcyBwcm9jZXNz ZWQgaW4KKwkgKiB0aGUgdG9wIGxldmVsIENSRUFURSBUQUJMRSBjb21tYW5kOyByZXR1cm4gZW1w dHkgaGVyZS4KKwkgKi8KKwlpZiAoc3RtdC0+dGFibGVfbGlrZSkKKwkJcmV0dXJuIE5VTEw7CisK KwlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbElkLCBBY2Nlc3NTaGFyZUxvY2spOworCWRwY29udGV4 dCA9IGRlcGFyc2VfY29udGV4dF9mb3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJ CQkJCQkJCXJlbElkKTsKKworCXN3aXRjaCAocmVsLT5yZF9yZWwtPnJlbGtpbmQpCisJeworCQlj YXNlIFJFTEtJTkRfUkVMQVRJT046CisJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToK KwkJCXJlbHR5cGUgPSAiVEFCTEUiOworCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9JTkRFWDoK KwkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYOgorCQkJcmVsdHlwZSA9ICJJTkRFWCI7 CisJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZJRVc6CisJCQlyZWx0eXBlID0gIlZJRVciOwor CQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKKwkJCXJlbHR5cGUgPSAi VFlQRSI7CisJCQlpc3R5cGUgPSB0cnVlOworCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9GT1JF SUdOX1RBQkxFOgorCQkJcmVsdHlwZSA9ICJGT1JFSUdOIFRBQkxFIjsKKwkJCWJyZWFrOworCQlj YXNlIFJFTEtJTkRfTUFUVklFVzoKKwkJCXJlbHR5cGUgPSAiTUFURVJJQUxJWkVEIFZJRVciOwor CQkJYnJlYWs7CisKKwkJCS8qIFRPRE8gc3VwcG9ydCBmb3IgcGFydGl0aW9uZWQgdGFibGUgKi8K KworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcmVsa2luZCAlZCIsIHJl bC0+cmRfcmVsLT5yZWxraW5kKTsKKwl9CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIg JXtvYmp0eXBlfXMgJXtpZGVudGl0eX1EIiwgMiwKKwkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVT dHJpbmcsIHJlbHR5cGUsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJ CQkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOworCisJZm9yZWFjaChj ZWxsLCBjbWQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzKQorCXsKKwkJQ29sbGVjdGVkQVRTdWJjbWQg KnN1YiA9IChDb2xsZWN0ZWRBVFN1YmNtZCAqKSBsZmlyc3QoY2VsbCk7CisJCUFsdGVyVGFibGVD bWQgKnN1YmNtZCA9IChBbHRlclRhYmxlQ21kICopIHN1Yi0+cGFyc2V0cmVlOworCQlPYmpUcmVl ICAgICp0cmVlOworCisJCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxlQ21kKSk7CisKKwkg ICAvKgorCQkqIElmIHRoZSBBTFRFUiBUQUJMRSBjb21tYW5kIGZvciB0aGUgcGFyZW50IHRhYmxl IGluY2x1ZGVzIHN1YmNvbW1hbmRzCisJCSogZm9yIGNoaWxkIHRhYmxlKHMpLCBkbyBub3QgZGVw YXJzZSB0aGUgc3ViY29tbWFuZCBmb3IgY2hpbGQKKwkJKiB0YWJsZShzKS4KKwkJKi8KKwkJaWYg KHN1Yi0+YWRkcmVzcy5vYmplY3RJZCAhPSByZWxJZCAmJgorCQkJaGFzX3N1cGVyY2xhc3Moc3Vi LT5hZGRyZXNzLm9iamVjdElkKSkKKwkJCWNvbnRpbnVlOworCisJCXN3aXRjaCAoc3ViY21kLT5z dWJ0eXBlKQorCQl7CisJCQljYXNlIEFUX0FkZENvbHVtbjoKKwkJCQkvKiBYWFggbmVlZCB0byBz ZXQgdGhlICJyZWN1cnNlIiBiaXQgc29tZXdoZXJlPyAqLworCQkJCUFzc2VydChJc0Eoc3ViY21k LT5kZWYsIENvbHVtbkRlZikpOworCQkJCXRyZWUgPSBkZXBhcnNlX0NvbHVtbkRlZihyZWwsIGRw Y29udGV4dCwgZmFsc2UsCisJCQkJCQkJCQkJIChDb2x1bW5EZWYgKikgc3ViY21kLT5kZWYsIHRy dWUsICZleHBycyk7CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBREQgJXtvYmp0eXBl fXMgJXtpZl9ub3RfZXhpc3RzfXMgJXtkZWZpbml0aW9ufXMiLCA0LAorCQkJCQkJCQkJCSJvYmp0 eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlpc3R5cGUgPyAiQVRUUklCVVRFIiA6ICJD T0xVTU4iLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb2x1bW4iLAor CQkJCQkJCQkJCSJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlzdWJj bWQtPm1pc3Npbmdfb2sgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIiwKKwkJCQkJCQkJCQkiZGVmaW5p dGlvbiIsIE9ialR5cGVPYmplY3QsIHRyZWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNt ZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBB VF9BZGRJbmRleENvbnN0cmFpbnQ6CisJCQkJeworCQkJCQlJbmRleFN0bXQgICppc3RtdDsKKwkJ CQkJUmVsYXRpb24JaWR4OworCQkJCQlPaWQJCQljb25zdHJPaWQgPSBzdWItPmFkZHJlc3Mub2Jq ZWN0SWQ7CisKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgSW5kZXhTdG10KSk7CisJCQkJ CWlzdG10ID0gKEluZGV4U3RtdCAqKSBzdWJjbWQtPmRlZjsKKworCQkJCQlBc3NlcnQoaXN0bXQt PmlzY29uc3RyYWludCAmJiBpc3RtdC0+dW5pcXVlKTsKKworCQkJCQlpZHggPSByZWxhdGlvbl9v cGVuKGlzdG10LT5pbmRleE9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQkJCQkvKgorCQkJCQkg KiBWZXJib3NlIHN5bnRheAorCQkJCQkgKgorCQkJCQkgKiBBREQgQ09OU1RSQUlOVCAle25hbWV9 SSAle2NvbnN0cmFpbnRfdHlwZX1zIFVTSU5HIElOREVYCisJCQkJCSAqICVpbmRleF9uYW1lfUkg JXtkZWZlcnJhYmxlfXMgJXtpbml0X2RlZmVycmVkfXMKKwkJCQkJICovCisJCQkJCXRtcF9vYmog PSBuZXdfb2JqdHJlZV9WQSgiQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtjb25zdHJhaW50X3R5 cGV9cyBVU0lORyBJTkRFWCAle2luZGV4X25hbWV9SSAle2RlZmVycmFibGV9cyAle2luaXRfZGVm ZXJyZWR9cyIsIDYsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb25z dHJhaW50IHVzaW5nIGluZGV4IiwKKwkJCQkJCQkJCQkJIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBn ZXRfY29uc3RyYWludF9uYW1lKGNvbnN0ck9pZCksCisJCQkJCQkJCQkJCSJjb25zdHJhaW50X3R5 cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCQlpc3RtdC0+cHJpbWFyeSA/ICJQUklNQVJZ IEtFWSIgOiAiVU5JUVVFIiwKKwkJCQkJCQkJCQkJImluZGV4X25hbWUiLCBPYmpUeXBlU3RyaW5n LAorCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpZHgpLAorCQkJCQkJCQkJCQki ZGVmZXJyYWJsZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWlzdG10LT5kZWZlcnJhYmxl ID8gIkRFRkVSUkFCTEUiIDogIk5PVCBERUZFUlJBQkxFIiwKKwkJCQkJCQkJCQkJImluaXRfZGVm ZXJyZWQiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCQlpc3RtdC0+aW5pdGRlZmVycmVkID8g IklOSVRJQUxMWSBERUZFUlJFRCIgOiAiSU5JVElBTExZIElNTUVESUFURSIpOworCisJCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwor CQkJCQlyZWxhdGlvbl9jbG9zZShpZHgsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX1JlQWRkSW5kZXg6CisJCQljYXNlIEFUX1JlQWRkQ29uc3RyYWlu dDoKKwkJCWNhc2UgQVRfUmVBZGREb21haW5Db25zdHJhaW50OgorCQkJY2FzZSBBVF9SZUFkZENv bW1lbnQ6CisJCQljYXNlIEFUX1JlcGxhY2VSZWxPcHRpb25zOgorCQkJY2FzZSBBVF9DaGVja05v dE51bGw6CisJCQljYXNlIEFUX1JlQWRkU3RhdGlzdGljczoKKwkJCQkvKiBTdWJ0eXBlcyB1c2Vk IGZvciBpbnRlcm5hbCBvcGVyYXRpb25zOyBub3RoaW5nIHRvIGRvIGhlcmUgKi8KKwkJCQlicmVh azsKKworCQkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgorCQkJCXsKKwkJCQkJUmVsYXRp b24JYXR0cnJlbDsKKwkJCQkJSGVhcFR1cGxlCWF0dHR1cDsKKwkJCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0U3RydWN0OworCisJCQkJCWF0dHJyZWwgPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQkJCQlhdHR0dXAgPSBTZWFyY2hTeXNDYWNoZUNv cHkyKEFUVE5VTSwKKwkJCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVs aWQocmVsKSksCisJCQkJCQkJCQkJCQkgSW50MTZHZXREYXR1bShzdWJjbWQtPm51bSkpOworCQkJ CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoYXR0dHVwKSkKKwkJCQkJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBhdHRyaWJ1dGUgJWQgb2YgcmVsYXRpb24gd2l0aCBPSUQgJXUi LAorCQkJCQkJCSBzdWJjbWQtPm51bSwgUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJCQkJYXR0 U3RydWN0ID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoYXR0dHVwKTsKKworCQkJCQkv KgorCQkJCQkgKiBCb3RoIGRlZmF1bHQgYW5kIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBub3Qgc3Vw cG9ydGVkCisJCQkJCSAqIHRvZ2V0aGVyLgorCQkJCQkgKi8KKwkJCQkJaWYgKCFhdHRTdHJ1Y3Qt PmF0dGdlbmVyYXRlZCkKKwkJCQkJCWVsb2coV0FSTklORywgInVuc3VwcG9ydGVkIGFsdGVyIHRh YmxlIHN1YnR5cGUgJWQiLAorCQkJCQkJCSBzdWJjbWQtPnN1YnR5cGUpOworCisJCQkJCWhlYXBf ZnJlZXR1cGxlKGF0dHR1cCk7CisJCQkJCXRhYmxlX2Nsb3NlKGF0dHJyZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UgQVRfQWRkQ29sdW1uVG9WaWV3 OgorCQkJCS8qIENSRUFURSBPUiBSRVBMQUNFIFZJRVcgLS0gbm90aGluZyB0byBkbyBoZXJlICov CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKKwkJCQlpZiAoc3ViY21k LT5kZWYgPT0gTlVMTCkKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xV TU4gJXtjb2x1bW59SSBEUk9QIERFRkFVTFQiLCAyLAorCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5 cGVTdHJpbmcsICJkcm9wIGRlZmF1bHQiLAorCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0 cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQllbHNlCisJCQkJeworCQkJCQlMaXN0CSAgICpkcGNv bnRleHRfcmVsOworCQkJCQlIZWFwVHVwbGUJYXR0cnR1cDsKKwkJCQkJQXR0ck51bWJlcglhdHRu bzsKKworCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENPTFVNTiAle2NvbHVt bn1JIFNFVCBERUZBVUxUIiwgMiwKKwkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAi c2V0IGRlZmF1bHQiLAorCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0cmluZywgc3ViY21k LT5uYW1lKTsKKworCQkJCQlkcGNvbnRleHRfcmVsID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlk KHJlbCkpOworCQkJCQlhdHRydHVwID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgc3ViY21kLT5uYW1lKTsKKwkJCQkJYXR0bm8gPSAoKEZvcm1fcGdfYXR0cmli dXRlKSBHRVRTVFJVQ1QoYXR0cnR1cCkpLT5hdHRudW07CisJCQkJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHRtcF9vYmosICIle2RlZmluaXRpb259cyIsICJkZWZpbml0aW9uIiwKKwkJCQkJCQkJCQkg UmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbCwgYXR0bm8sCisJCQkJCQkJCQkJCQkJCQkJICBk cGNvbnRleHRfcmVsLAorCQkJCQkJCQkJCQkJCQkJCSAgTlVMTCkpOworCQkJCQlSZWxlYXNlU3lz Q2FjaGUoYXR0cnR1cCk7CisJCQkJfQorCisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywg bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Ry b3BOb3ROdWxsOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgQ09MVU1OICV7 Y29sdW1ufUkgRFJPUCBOT1QgTlVMTCIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3Ry aW5nLCAiZHJvcCBub3QgbnVsbCIsCisJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcs IHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVj dF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0ZvcmNlUm93U2Vj dXJpdHk6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJGT1JDRSBST1cgTEVWRUwgU0VDVVJJ VFkiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfTm9Gb3JjZVJvd1NlY3VyaXR5Ogor CQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiTk8gRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIik7 CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29i aikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldE5vdE51bGw6CisJCQkJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgTk9UIE5VTEwiLCAy LAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCBub3QgbnVsbCIsCisJCQkJ CQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21k cyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX0Ryb3BFeHByZXNzaW9uOgorCQkJCXRtcF9vYmogPSBuZXdfb2Jq dHJlZV9WQSgiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgRFJPUCBFWFBSRVNTSU9OICV7aWZfZXhp c3RzfXMiLCAzLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3AgZXhwcmVz c2lvbiIsCisJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSwK KwkJCQkJCQkJCQkiaWZfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlzdWJjbWQt Pm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChz dWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgQVRfU2V0U3RhdGlzdGljczoKKwkJCQl7CisJCQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYs IEludGVnZXIpKTsKKwkJCQkJaWYgKHN1YmNtZC0+bmFtZSkKKwkJCQkJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIFNUQVRJU1RJQ1MgJXtzdGF0 aXN0aWNzfW4iLCAzLAorCQkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IHN0 YXRpc3RpY3MiLAorCQkJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+ bmFtZSwKKwkJCQkJCQkJCQkJCSJzdGF0aXN0aWNzIiwgT2JqVHlwZUludGVnZXIsCisJCQkJCQkJ CQkJCQlpbnRWYWwoKEludGVnZXIgKikgc3ViY21kLT5kZWYpKTsKKwkJCQkJZWxzZQorCQkJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59biBTRVQgU1RB VElTVElDUyAle3N0YXRpc3RpY3N9biIsIDMsCisJCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJzZXQgc3RhdGlzdGljcyIsCisJCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZUlu dGVnZXIsIHN1YmNtZC0+bnVtLAorCQkJCQkJCQkJCQkJInN0YXRpc3RpY3MiLCBPYmpUeXBlSW50 ZWdlciwKKwkJCQkJCQkJCQkJCWludFZhbCgoSW50ZWdlciAqKSBzdWJjbWQtPmRlZikpOworCQkJ CQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7 CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldE9wdGlvbnM6CisJCQljYXNlIEFU X1Jlc2V0T3B0aW9uczoKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0 X29iamVjdCgKKwkJCQkJCQkJCQkJCQkJCSBkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoc3ViY21k KSkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldFN0b3JhZ2U6CisJCQkJQXNzZXJ0KElz QShzdWJjbWQtPmRlZiwgU3RyaW5nKSk7CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJB TFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgU1RPUkFHRSAle3N0b3JhZ2V9cyIsIDMsCisJCQkJ CQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IHN0b3JhZ2UiLAorCQkJCQkJCQkJCSJj b2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUsCisJCQkJCQkJCQkJInN0b3JhZ2Ui LCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCXN0clZhbCgoU3RyaW5nICopIHN1YmNtZC0+ZGVm KSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldENvbXByZXNzaW9uOgorCQkJCUFz c2VydChJc0Eoc3ViY21kLT5kZWYsIFN0cmluZykpOworCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIENPTVBSRVNTSU9OICV7Y29tcHJlc3Np b25fbWV0aG9kfXMiLCAzLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCBj b21wcmVzc2lvbiIsCisJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+ bmFtZSwKKwkJCQkJCQkJCQkiY29tcHJlc3Npb25fbWV0aG9kIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCQkJCQlzdHJWYWwoKFN0cmluZyAqKSBzdWJjbWQtPmRlZikpOworCQkJCXN1YmNtZHMgPSBs YXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9Ecm9wQ29sdW1uOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi RFJPUCAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7Y29sdW1ufUkiLCA0LAorCQkJCQkJCQkJ CSJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlpc3R5cGUgPyAiQVRUUklCVVRF IiA6ICJDT0xVTU4iLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3AgY29s dW1uIiwKKwkJCQkJCQkJCQkiaWZfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlz dWJjbWQtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAorCQkJCQkJCQkJCSJjb2x1bW4i LCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXRtcF9vYmoyID0gbmV3X29ianRy ZWVfVkEoIkNBU0NBREUiLCAxLAorCQkJCQkJCQkJCSAicHJlc2VudCIsIE9ialR5cGVCb29sLCBz dWJjbWQtPmJlaGF2aW9yKTsKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtj YXNjYWRlfXMiLCB0bXBfb2JqMik7CisKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBu ZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQWRk SW5kZXg6CisJCQkJeworCQkJCQlPaWQJCQlpZHhPaWQgPSBzdWItPmFkZHJlc3Mub2JqZWN0SWQ7 CisJCQkJCUluZGV4U3RtdCAgKmlzdG10OworCQkJCQlSZWxhdGlvbglpZHg7CisJCQkJCWNvbnN0 IGNoYXIgKmlkeG5hbWU7CisJCQkJCU9pZAkJCWNvbnN0ck9pZDsKKworCQkJCQlBc3NlcnQoSXNB KHN1YmNtZC0+ZGVmLCBJbmRleFN0bXQpKTsKKwkJCQkJaXN0bXQgPSAoSW5kZXhTdG10ICopIHN1 YmNtZC0+ZGVmOworCisJCQkJCWlmICghaXN0bXQtPmlzY29uc3RyYWludCkKKwkJCQkJCWJyZWFr OworCisJCQkJCWlkeCA9IHJlbGF0aW9uX29wZW4oaWR4T2lkLCBBY2Nlc3NTaGFyZUxvY2spOwor CQkJCQlpZHhuYW1lID0gUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaWR4KTsKKworCQkJCQljb25z dHJPaWQgPSBnZXRfcmVsYXRpb25fY29uc3RyYWludF9vaWQoCisJCQkJCQkJCQkJCQkJCQljbWQt PmQuYWx0ZXJUYWJsZS5vYmplY3RJZCwgaWR4bmFtZSwgZmFsc2UpOworCisJCQkJCXRtcF9vYmog PSBuZXdfb2JqdHJlZV9WQSgiQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZpbml0aW9ufXMi LCAzLAorCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJhZGQgY29uc3RyYWludCIs CisJCQkJCQkJCQkJCSJuYW1lIiwgT2JqVHlwZVN0cmluZywgaWR4bmFtZSwKKwkJCQkJCQkJCQkJ ImRlZmluaXRpb24iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCQlwZ19nZXRfY29uc3RyYWlu dGRlZl9zdHJpbmcoY29uc3RyT2lkKSk7CisJCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMs IG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCQkJCQlyZWxhdGlvbl9jbG9zZShpZHgs IEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0FkZENv bnN0cmFpbnQ6CisJCQkJeworCQkJCQkvKiBYWFggbmVlZCB0byBzZXQgdGhlICJyZWN1cnNlIiBi aXQgc29tZXdoZXJlPyAqLworCQkJCQlPaWQJCQljb25zdHJPaWQgPSBzdWItPmFkZHJlc3Mub2Jq ZWN0SWQ7CisJCQkJCWJvb2wJCWlzbnVsbDsKKwkJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQkJRGF0 dW0JCXZhbDsKKwkJCQkJQ29uc3RyYWludCAqY29uc3RyOworCisJCQkJCS8qIFNraXAgYWRkaW5n IGNvbnN0cmFpbnQgZm9yIGluaGVyaXRzIHRhYmxlIHN1YiBjb21tYW5kICovCisJCQkJCWlmICgh Y29uc3RyT2lkKQorCQkJCQkJY29udGludWU7CisKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRl ZiwgQ29uc3RyYWludCkpOworCQkJCQljb25zdHIgPSBjYXN0Tm9kZShDb25zdHJhaW50LCBzdWJj bWQtPmRlZik7CisKKwkJCQkJaWYgKCFjb25zdHItPnNraXBfdmFsaWRhdGlvbikKKwkJCQkJewor CQkJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwgT2JqZWN0SWRHZXREYXR1bShj b25zdHJPaWQpKTsKKworCQkJCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJCXsK KwkJCQkJCQljaGFyCSAgICpjb25iaW47CisKKwkJCQkJCQkvKiBGZXRjaCBjb25zdHJhaW50IGV4 cHJlc3Npb24gaW4gcGFyc2V0cmVlIGZvcm0gKi8KKwkJCQkJCQl2YWwgPSBTeXNDYWNoZUdldEF0 dHIoQ09OU1RST0lELCB0dXAsCisJCQkJCQkJCQkJCQkgIEFudW1fcGdfY29uc3RyYWludF9jb25i aW4sICZpc251bGwpOworCisJCQkJCQkJaWYgKCFpc251bGwpCisJCQkJCQkJeworCQkJCQkJCQlj b25iaW4gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHZhbCk7CisJCQkJCQkJCWV4cHJzID0gbGFwcGVu ZChleHBycywgc3RyaW5nVG9Ob2RlKGNvbmJpbikpOworCQkJCQkJCX0KKworCQkJCQkJCVJlbGVh c2VTeXNDYWNoZSh0dXApOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJdG1wX29iaiA9IG5ld19v Ymp0cmVlX1ZBKCJBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2RlZmluaXRpb259cyIsIDMsCisJ CQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb25zdHJhaW50IiwKKwkJCQkJ CQkJCQkJIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBnZXRfY29uc3RyYWludF9uYW1lKGNvbnN0ck9p ZCksCisJCQkJCQkJCQkJCSJkZWZpbml0aW9uIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkJ cGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKGNvbnN0ck9pZCkpOworCQkJCQlzdWJjbWRzID0g bGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJfQorCQkJ CWJyZWFrOworCisJCQljYXNlIEFUX0FsdGVyQ29uc3RyYWludDoKKwkJCQl7CisJCQkJCU9pZAkJ CWNvbnN0ck9pZCA9IHN1Yi0+YWRkcmVzcy5vYmplY3RJZDsKKwkJCQkJQ29uc3RyYWludCAqYyA9 IChDb25zdHJhaW50ICopIHN1YmNtZC0+ZGVmOworCisJCQkJCS8qIElmIG5vIGNvbnN0cmFpbnQg d2FzIGFsdGVyZWQsIHNpbGVudGx5IHNraXAgaXQgKi8KKwkJCQkJaWYgKCFPaWRJc1ZhbGlkKGNv bnN0ck9pZCkpCisJCQkJCQlicmVhazsKKworCQkJCQlBc3NlcnQoSXNBKGMsIENvbnN0cmFpbnQp KTsKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT05TVFJBSU5UICV7bmFt ZX1JICV7ZGVmZXJyYWJsZX1zICV7aW5pdF9kZWZlcnJlZH1zIiwgNCwKKwkJCQkJCQkJCQkJInR5 cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWx0ZXIgY29uc3RyYWludCIsCisJCQkJCQkJCQkJCSJuYW1l IiwgT2JqVHlwZVN0cmluZywgZ2V0X2NvbnN0cmFpbnRfbmFtZShjb25zdHJPaWQpLAorCQkJCQkJ CQkJCQkiZGVmZXJyYWJsZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWMtPmRlZmVycmFi bGUgPyAiREVGRVJSQUJMRSIgOiAiTk9UIERFRkVSUkFCTEUiLAorCQkJCQkJCQkJCQkiaW5pdF9k ZWZlcnJlZCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWMtPmluaXRkZWZlcnJlZCA/ICJJ TklUSUFMTFkgREVGRVJSRUQiIDogIklOSVRJQUxMWSBJTU1FRElBVEUiKTsKKworCQkJCQlzdWJj bWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJ fQorCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1ZhbGlkYXRlQ29uc3RyYWludDoKKwkJCQl0bXBf b2JqID0gbmV3X29ianRyZWVfVkEoIlZBTElEQVRFIENPTlNUUkFJTlQgJXtjb25zdHJhaW50fUki LCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInZhbGlkYXRlIGNvbnN0cmFp bnQiLAorCQkJCQkJCQkJCSJjb25zdHJhaW50IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1l KTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBf b2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6CisJCQkJdG1w X29iaiA9IG5ld19vYmp0cmVlX1ZBKCJEUk9QIENPTlNUUkFJTlQgJXtpZl9leGlzdHN9cyAle2Nv bnN0cmFpbnR9SSAle2Nhc2NhZGV9cyIsIDQsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3Ry aW5nLCAiZHJvcCBjb25zdHJhaW50IiwKKwkJCQkJCQkJCQkiaWZfZXhpc3RzIiwgT2JqVHlwZVN0 cmluZywKKwkJCQkJCQkJCQlzdWJjbWQtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAor CQkJCQkJCQkJCSJjb25zdHJhaW50IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lLAorCQkJ CQkJCQkJCSJjYXNjYWRlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQlzdWJjbWQtPmJlaGF2 aW9yID09IERST1BfQ0FTQ0FERSA/ICJDQVNDQURFIiA6ICIiKTsKKwkJCQlzdWJjbWRzID0gbGFw cGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5UeXBlOgorCQkJCXsKKwkJCQkJVHVwbGVEZXNjCXR1cGRl c2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CisJCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dDsK KwkJCQkJQ29sdW1uRGVmICAqZGVmOworCisJCQkJCWF0dCA9ICYodHVwZGVzYy0+YXR0cnNbc3Vi LT5hZGRyZXNzLm9iamVjdFN1YklkIC0gMV0pOworCQkJCQlkZWYgPSAoQ29sdW1uRGVmICopIHN1 YmNtZC0+ZGVmOworCQkJCQlBc3NlcnQoSXNBKGRlZiwgQ29sdW1uRGVmKSk7CisKKwkJCQkJLyoK KwkJCQkJICogVmVyYm9zZSBzeW50YXgKKwkJCQkJICoKKwkJCQkJICogQ29tcG9zaXRlIHR5cGVz OiBBTFRFUiByZWx0eXBlICV7Y29sdW1ufUkgU0VUIERBVEEgVFlQRQorCQkJCQkgKiAle2RhdGF0 eXBlfVQgJXtjb2xsYXRpb259cyBBVFRSSUJVVEUgJXtjYXNjYWRlfXMKKwkJCQkJICoKKwkJCQkJ ICogTm9ybWFsIHR5cGVzOiBBTFRFUiByZWx0eXBlICV7Y29sdW1ufUkgU0VUIERBVEEgVFlQRQor CQkJCQkgKiAle2RhdGF0eXBlfVQgJXtjb2xsYXRpb259cyBDT0xVTU4gJXt1c2luZ31zCisJCQkJ CSAqLworCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7 Y29sdW1ufUkgU0VUIERBVEEgVFlQRSAle2RhdGF0eXBlfVQiLCA0LAorCQkJCQkJCQkJCQkib2Jq dHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWlzdHlwZSA/ICJBVFRSSUJVVEUiIDog IkNPTFVNTiIsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFsdGVyIGNvbHVt biB0eXBlIiwKKwkJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFt ZSwKKwkJCQkJCQkJCQkJImRhdGF0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCQkJbmV3 X29ianRyZWVfZm9yX3R5cGUoYXR0LT5hdHR0eXBpZCwKKwkJCQkJCQkJCQkJCQkJCQkgYXR0LT5h dHR0eXBtb2QpKTsKKworCQkJCQkvKiBBZGQgYSBDT0xMQVRFIGNsYXVzZSwgaWYgbmVlZGVkICov CisJCQkJCXRtcF9vYmoyID0gbmV3X29ianRyZWUoIkNPTExBVEUiKTsKKwkJCQkJaWYgKE9pZElz VmFsaWQoYXR0LT5hdHRjb2xsYXRpb24pKQorCQkJCQl7CisJCQkJCQlPYmpUcmVlICAgICpjb2xs bmFtZTsKKworCQkJCQkJY29sbG5hbWUgPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoQ29s bGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCSAgIGF0dC0+YXR0Y29sbGF0aW9uKTsK KwkJCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmoyLCAiJXtuYW1lfUQiLCBjb2xsbmFt ZSk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmoy KTsKKwkJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7Y29sbGF0aW9ufXMiLCB0 bXBfb2JqMik7CisKKwkJCQkJLyogSWYgbm90IGEgY29tcG9zaXRlIHR5cGUsIGFkZCB0aGUgVVNJ TkcgY2xhdXNlICovCisJCQkJCWlmICghaXN0eXBlKQorCQkJCQl7CisJCQkJCQkvKgorCQkJCQkJ ICogSWYgdGhlcmUncyBhIFVTSU5HIGNsYXVzZSwgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQKKwkJ CQkJCSAqIHJhbiBpdCB0aHJvdWdoIHRyYW5zZm9ybUV4cHIgYW5kIHN0b3JlZCB0aGUKKwkJCQkJ CSAqIHJlc3VsdGluZyBub2RlIGluIGNvb2tlZF9kZWZhdWx0LCB3aGljaCB3ZSBjYW4gdXNlCisJ CQkJCQkgKiBoZXJlLgorCQkJCQkJICovCisJCQkJCQl0bXBfb2JqMiA9IG5ld19vYmp0cmVlKCJV U0lORyIpOworCQkJCQkJaWYgKGRlZi0+cmF3X2RlZmF1bHQpCisJCQkJCQkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wX29iajIsICIle2V4cHJlc3Npb259cyIsCisJCQkJCQkJCQkJCQkgImV4cHJl c3Npb24iLAorCQkJCQkJCQkJCQkJIHN1Yi0+dXNpbmdleHByKTsKKwkJCQkJCWVsc2UKKwkJCQkJ CQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iajIpOworCQkJCQkJYXBwZW5kX29iamVjdF9vYmpl Y3QodG1wX29iaiwgIiV7dXNpbmd9cyIsIHRtcF9vYmoyKTsKKwkJCQkJfQorCisJCQkJCS8qIElm IGl0J3MgYSBjb21wb3NpdGUgdHlwZSwgYWRkIHRoZSBDQVNDQURFIGNsYXVzZSAqLworCQkJCQlp ZiAoaXN0eXBlKQorCQkJCQl7CisJCQkJCQl0bXBfb2JqMiA9IG5ld19vYmp0cmVlKCJDQVNDQURF Iik7CisJCQkJCQlpZiAoc3ViY21kLT5iZWhhdmlvciAhPSBEUk9QX0NBU0NBREUpCisJCQkJCQkJ YXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmoyKTsKKwkJCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0 KHRtcF9vYmosICIle2Nhc2NhZGV9cyIsIHRtcF9vYmoyKTsKKwkJCQkJfQorCisJCQkJCXN1YmNt ZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQl9 CisJCQkJYnJlYWs7CisKKyNpZmRlZiBUT0RPTElTVAorCQkJY2FzZSBBVF9BbHRlckNvbHVtbkdl bmVyaWNPcHRpb25zOgorCQkJCXRtcF9vYmogPSBkZXBhcnNlX0Zkd09wdGlvbnMoKExpc3QgKikg c3ViY21kLT5kZWYsCisJCQkJCQkJCQkJCXN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOwor I2VuZGlmCisJCQljYXNlIEFUX0NoYW5nZU93bmVyOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiT1dORVIgVE8gJXtvd25lcn1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJjaGFuZ2Ugb3duZXIiLAorCQkJCQkJCQkJCSJvd25lciIsIE9ialR5cGVTdHJpbmcs CisJCQkJCQkJCQkJZ2V0X3JvbGVzcGVjX25hbWUoc3ViY21kLT5uZXdvd25lcikpOworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBBVF9DbHVzdGVyT246CisJCQkJdG1wX29iaiA9IG5ld19vYmp0 cmVlX1ZBKCJDTFVTVEVSIE9OICV7aW5kZXh9SSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpU eXBlU3RyaW5nLCAiY2x1c3RlciBvbiIsCisJCQkJCQkJCQkJImluZGV4IiwgT2JqVHlwZVN0cmlu Zywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2Jq ZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcENsdXN0 ZXI6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgV0lUSE9VVCBDTFVTVEVSIiwg MSwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgd2l0aG91dCBjbHVzdGVy Iik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldExvZ2dlZDoKKwkJCQl0bXBfb2Jq ID0gbmV3X29ianRyZWVfVkEoIlNFVCBMT0dHRUQiLCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgInNldCBsb2dnZWQiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRz LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf U2V0VW5Mb2dnZWQ6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgVU5MT0dHRUQi LCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCB1bmxvZ2dlZCIpOwor CQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmop KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wT2lkczoKKwkJCQl0bXBfb2JqID0gbmV3 X29ianRyZWVfVkEoIlNFVCBXSVRIT1VUIE9JRFMiLCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgInNldCB3aXRob3V0IG9pZHMiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChz dWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisJCQljYXNl IEFUX1NldEFjY2Vzc01ldGhvZDoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlNFVCBB Q0NFU1MgTUVUSE9EICV7YWNjZXNzX21ldGhvZH1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9i alR5cGVTdHJpbmcsICJzZXQgYWNjZXNzIG1ldGhvZCIsCisJCQkJCQkJCQkJImFjY2Vzc19tZXRo b2QiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5k KHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgQVRfU2V0VGFibGVTcGFjZToKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlNFVCBU QUJMRVNQQUNFICV7dGFibGVzcGFjZX1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJzZXQgdGFibGVzcGFjZSIsCisJCQkJCQkJCQkJInRhYmxlc3BhY2UiLCBPYmpUeXBl U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5l d19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRS ZWxPcHRpb25zOgorCQkJY2FzZSBBVF9SZXNldFJlbE9wdGlvbnM6CisJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QoCisJCQkJCQkJCQkJCQkJCQkgZGVwYXJz ZV9SZWxTZXRPcHRpb25zKHN1YmNtZCkpKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFi bGVUcmlnOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdHRVIgJXt0 cmlnZ2VyfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSB0 cmlnZ2VyIiwKKwkJCQkJCQkJCQkidHJpZ2dlciIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFt ZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0VuYWJsZUFsd2F5c1RyaWc6CisJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJFTkFCTEUgQUxXQVlTIFRSSUdHRVIgJXt0cmlnZ2Vy fUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSBhbHdheXMg dHJpZ2dlciIsCisJCQkJCQkJCQkJInRyaWdnZXIiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5h bWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRt cF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSZXBsaWNhVHJpZzoKKwkJ CQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgJXt0cmln Z2VyfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSByZXBs aWNhIHRyaWdnZXIiLAorCQkJCQkJCQkJCSJ0cmlnZ2VyIiwgT2JqVHlwZVN0cmluZywgc3ViY21k LT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVj dCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRGlzYWJsZVRyaWc6CisJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFRSSUdHRVIgJXt0cmlnZ2VyfUkiLCAy LAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgdHJpZ2dlciIsCisJ CQkJCQkJCQkJInRyaWdnZXIiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVUcmlnQWxsOgorCQkJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdHRVIgQUxMIiwgMSwKKwkJCQkJCQkJCQkidHlwZSIsIE9i alR5cGVTdHJpbmcsICJlbmFibGUgdHJpZ2dlciBhbGwiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVu ZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgQVRfRGlzYWJsZVRyaWdBbGw6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJE SVNBQkxFIFRSSUdHRVIgQUxMIiwgMSwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcs ICJkaXNhYmxlIHRyaWdnZXIgYWxsIik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywg bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Vu YWJsZVRyaWdVc2VyOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdH RVIgVVNFUiIsIDEsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5hYmxlIHRy aWdnZXIgdXNlciIpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rf b2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9EaXNhYmxlVHJpZ1Vz ZXI6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFRSSUdHRVIgVVNFUiIs IDEsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZGlzYWJsZSB0cmlnZ2VyIHVz ZXIiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlUnVsZToKKwkJCQl0bXBf b2JqID0gbmV3X29ianRyZWVfVkEoIkVOQUJMRSBSVUxFICV7cnVsZX1JIiwgMiwKKwkJCQkJCQkJ CQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJlbmFibGUgcnVsZSIsCisJCQkJCQkJCQkJInJ1bGUi LCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1 YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBBVF9FbmFibGVBbHdheXNSdWxlOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5B QkxFIEFMV0FZUyBSVUxFICV7cnVsZX1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJlbmFibGUgYWx3YXlzIHJ1bGUiLAorCQkJCQkJCQkJCSJydWxlIiwgT2JqVHlwZVN0 cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdf b2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxl UmVwbGljYVJ1bGU6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJFTkFCTEUgUkVQTElD QSBSVUxFICV7cnVsZX1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJl bmFibGUgcmVwbGljYSBydWxlIiwKKwkJCQkJCQkJCQkicnVsZSIsIE9ialR5cGVTdHJpbmcsIHN1 YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9v YmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVSdWxlOgor CQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRElTQUJMRSBSVUxFICV7cnVsZX1JIiwgMiwK KwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJkaXNhYmxlIHJ1bGUiLAorCQkJCQkJ CQkJCSJydWxlIiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0g bGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7 CisKKwkJCWNhc2UgQVRfQWRkSW5oZXJpdDoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEo IklOSEVSSVQgJXtwYXJlbnR9RCIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5n LCAiaW5oZXJpdCIsCisJCQkJCQkJCQkJInBhcmVudCIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJ CQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJ CQkJCQkJCQkJCQkJc3ViLT5hZGRyZXNzLm9iamVjdElkKSk7CisJCQkJc3ViY21kcyA9IGxhcHBl bmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJ CQljYXNlIEFUX0Ryb3BJbmhlcml0OgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiTk8g SU5IRVJJVCAle3BhcmVudH1EIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcs ICJkcm9wIGluaGVyaXQiLAorCQkJCQkJCQkJCSJwYXJlbnQiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJ CQkJCQkJCQkJCQkJCQkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCkpOworCQkJCXN1YmNtZHMgPSBs YXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9BZGRPZjoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIk9GICV7 dHlwZV9vZn1UIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJhZGQgb2Yi LAorCQkJCQkJCQkJCSJ0eXBlX29mIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCQluZXdfb2Jq dHJlZV9mb3JfdHlwZShzdWItPmFkZHJlc3Mub2JqZWN0SWQsIC0xKSk7CisJCQkJc3ViY21kcyA9 IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFr OworCisJCQljYXNlIEFUX0Ryb3BPZjoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIk5P VCBPRiIsIDEsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAibm90IG9mIik7CisJ CQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1JlcGxpY2FJZGVudGl0eToKKwkJCQl0bXBfb2Jq ID0gbmV3X29ianRyZWVfVkEoIlJFUExJQ0EgSURFTlRJVFkiLCAxLAorCQkJCQkJCQkJCSJ0eXBl IiwgT2JqVHlwZVN0cmluZywgInJlcGxpY2EgaWRlbnRpdHkiKTsKKwkJCQlzd2l0Y2ggKCgoUmVw bGljYUlkZW50aXR5U3RtdCAqKSBzdWJjbWQtPmRlZiktPmlkZW50aXR5X3R5cGUpCisJCQkJewor CQkJCQljYXNlIFJFUExJQ0FfSURFTlRJVFlfREVGQVVMVDoKKwkJCQkJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHRtcF9vYmosICIle2lkZW50fXMiLCAiaWRlbnQiLAorCQkJCQkJCQkJCQkgIkRFRkFV TFQiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJFUExJQ0FfSURFTlRJVFlfRlVMTDoKKwkJ CQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle2lkZW50fXMiLCAiaWRlbnQiLAor CQkJCQkJCQkJCQkgIkZVTEwiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJFUExJQ0FfSURF TlRJVFlfTk9USElORzoKKwkJCQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle2lk ZW50fXMiLCAiaWRlbnQiLAorCQkJCQkJCQkJCQkgIk5PVEhJTkciKTsKKwkJCQkJCWJyZWFrOwor CQkJCQljYXNlIFJFUExJQ0FfSURFTlRJVFlfSU5ERVg6CisJCQkJCQl0bXBfb2JqMiA9IG5ld19v Ymp0cmVlX1ZBKCJVU0lORyBJTkRFWCAle2luZGV4fUkiLCAxLAorCQkJCQkJCQkJCQkJICJpbmRl eCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCQkgKChSZXBsaWNhSWRlbnRpdHlTdG10ICop IHN1YmNtZC0+ZGVmKS0+bmFtZSk7CisJCQkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2Jq LCAiJXtpZGVudH1zIiwgdG1wX29iajIpOworCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJCXN1YmNt ZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSb3dTZWN1cml0eToKKwkJCQl0bXBfb2JqID0gbmV3 X29ianRyZWVfVkEoIkVOQUJMRSBST1cgTEVWRUwgU0VDVVJJVFkiLCAxLAorCQkJCQkJCQkJCSJ0 eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSByb3cgc2VjdXJpdHkiKTsKKwkJCQlzdWJjbWRz ID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgQVRfRGlzYWJsZVJvd1NlY3VyaXR5OgorCQkJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiRElTQUJMRSBST1cgTEVWRUwgU0VDVVJJVFkiLCAxLAorCQkJCQkJCQkJCSJ0 eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgcm93IHNlY3VyaXR5Iik7CisJCQkJc3ViY21k cyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJy ZWFrOworI2lmZGVmIFRPRE9MSVNUCisJCQljYXNlIEFUX0dlbmVyaWNPcHRpb25zOgorCQkJCXRt cF9vYmogPSBkZXBhcnNlX0Zkd09wdGlvbnMoKExpc3QgKikgc3ViY21kLT5kZWYsIE5VTEwpOwor CQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmop KTsKKwkJCQlicmVhazsKKyNlbmRpZgorCQkJY2FzZSBBVF9BdHRhY2hQYXJ0aXRpb246CisJCQkJ dG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBVFRBQ0ggUEFSVElUSU9OICV7cGFydGl0aW9uX2lk ZW50aXR5fUQiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImF0dGFjaCBw YXJ0aXRpb24iLAorCQkJCQkJCQkJCSJwYXJ0aXRpb25faWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0 LAorCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9u SWQsCisJCQkJCQkJCQkJCQkJCQkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCkpOworCisJCQkJaWYg KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle3BhcnRpdGlvbl9ib3VuZH1zIiwKKwkJ CQkJCQkJCQkgInBhcnRpdGlvbl9ib3VuZCIsCisJCQkJCQkJCQkJIFJlbGF0aW9uR2V0UGFydGl0 aW9uQm91bmQoc3ViLT5hZGRyZXNzLm9iamVjdElkKSk7CisKKwkJCQlzdWJjbWRzID0gbGFwcGVu ZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisJCQlj YXNlIEFUX0RldGFjaFBhcnRpdGlvbjoKKwkJCXsKKwkJCQlQYXJ0aXRpb25DbWQgKmNtZDsKKwor CQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYsIFBhcnRpdGlvbkNtZCkpOworCQkJCWNtZCA9IChQ YXJ0aXRpb25DbWQgKikgc3ViY21kLT5kZWY7CisKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVf VkEoIkRFVEFDSCBQQVJUSVRJT04gJXtwYXJ0aXRpb25faWRlbnRpdHl9RCAle2NvbmN1cnJlbnR9 cyIsIDMsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCSJkZXRh Y2ggcGFydGl0aW9uIiwKKwkJCQkJCQkJCQkicGFydGl0aW9uX2lkZW50aXR5IiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxh dGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCQlzdWItPmFkZHJlc3Mub2JqZWN0SWQpLAorCQkJCQkJ CQkJCWNtZC0+Y29uY3VycmVudCA/ICJDT05DVVJSRU5UTFkiIDogIiIpOworCQkJCXN1YmNtZHMg PSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVh azsKKwkJCX0KKwkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CisJCQkJdG1wX29i aiA9IG5ld19vYmp0cmVlX1ZBKCJERVRBQ0ggUEFSVElUSU9OICV7cGFydGl0aW9uX2lkZW50aXR5 fUQgRklOQUxJWkUiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRldGFj aCBwYXJ0aXRpb24gZmluYWxpemUiLAorCQkJCQkJCQkJCSJwYXJ0aXRpb25faWRlbnRpdHkiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxh dGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCkp OworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9v YmopKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CisJCQkJeworCQkJCQlB dHRyTnVtYmVyCWF0dG51bTsKKwkJCQkJT2lkCQkJc2VxX3JlbGlkOworCQkJCQlPYmpUcmVlICAg ICpzZXFkZWY7CisJCQkJCUNvbHVtbkRlZiAgKmNvbGRlZiA9IChDb2x1bW5EZWYgKikgc3ViY21k LT5kZWY7CisKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtj b2x1bW59SSIsIDIsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBpZGVu dGl0eSIsCisJCQkJCQkJCQkJCSJjb2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUp OworCisJCQkJCWF0dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdWJj bWQtPm5hbWUpOworCQkJCQlzZXFfcmVsaWQgPSBnZXRJZGVudGl0eVNlcXVlbmNlKFJlbGF0aW9u R2V0UmVsaWQocmVsKSwgYXR0bnVtLCB0cnVlKTsKKworCQkJCQlpZiAoT2lkSXNWYWxpZChzZXFf cmVsaWQpKQorCQkJCQl7CisJCQkJCQlzZXFkZWYgPSBkZXBhcnNlX0NvbHVtbklkZW50aXR5KHNl cV9yZWxpZCwgY29sZGVmLT5pZGVudGl0eSwgZmFsc2UpOworCQkJCQkJYXBwZW5kX29iamVjdF9v YmplY3QodG1wX29iaiwgIkFERCAle2lkZW50aXR5X2NvbHVtbn1zIiwgc2VxZGVmKTsKKwkJCQkJ fQorCisJCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRt cF9vYmopKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIEFUX1NldElkZW50aXR5OgorCQkJ CXsKKwkJCQkJRGVmRWxlbSAgICAqZGVmZWw7CisJCQkJCWNoYXIJCWlkZW50aXR5ID0gMDsKKwkJ CQkJT2JqVHJlZSAgICAqc2VxZGVmOworCQkJCQlBdHRyTnVtYmVyCWF0dG51bTsKKwkJCQkJT2lk CQkJc2VxX3JlbGlkOworCisKKwkJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBD T0xVTU4gJXtjb2x1bW59SSIsIDIsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywg InNldCBpZGVudGl0eSIsCisJCQkJCQkJCQkJCSJjb2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBzdWJj bWQtPm5hbWUpOworCisJCQkJCWlmIChzdWJjbWQtPmRlZikKKwkJCQkJeworCQkJCQkJTGlzdAkg ICAqZGVmID0gKExpc3QgKikgc3ViY21kLT5kZWY7CisKKwkJCQkJCUFzc2VydChJc0Eoc3ViY21k LT5kZWYsIExpc3QpKTsKKworCQkJCQkJZGVmZWwgPSBsaW5pdGlhbF9ub2RlKERlZkVsZW0sIGRl Zik7CisJCQkJCQlpZGVudGl0eSA9IGRlZkdldEludDMyKGRlZmVsKTsKKwkJCQkJfQorCisJCQkJ CWF0dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdWJjbWQtPm5hbWUp OworCQkJCQlzZXFfcmVsaWQgPSBnZXRJZGVudGl0eVNlcXVlbmNlKFJlbGF0aW9uR2V0UmVsaWQo cmVsKSwgYXR0bnVtLCB0cnVlKTsKKworCQkJCQlpZiAoT2lkSXNWYWxpZChzZXFfcmVsaWQpKQor CQkJCQl7CisJCQkJCQlzZXFkZWYgPSBkZXBhcnNlX0NvbHVtbklkZW50aXR5KHNlcV9yZWxpZCwg aWRlbnRpdHksIHRydWUpOworCQkJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7 ZGVmaW5pdGlvbn1zIiwgc2VxZGVmKTsKKwkJCQkJfQorCisJCQkJCXN1YmNtZHMgPSBsYXBwZW5k KHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJY2FzZSBBVF9Ecm9wSWRlbnRpdHk6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZB KCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBEUk9QIElERU5USVRZIiwgMiwKKwkJCQkJCQkJCQki dHlwZSIsIE9ialR5cGVTdHJpbmcsICJkcm9wIGlkZW50aXR5IiwKKwkJCQkJCQkJCQkiY29sdW1u IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHRtcF9vYmosICIle2lmX2V4aXN0c31zIiwKKwkJCQkJCQkJCSAiaWZfZXhpc3RzIiwKKwkJ CQkJCQkJCSBzdWJjbWQtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiKTsKKworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhXQVJOSU5HLCAidW5zdXBwb3J0ZWQgYWx0 ZXIgdGFibGUgc3VidHlwZSAlZCIsCisJCQkJCSBzdWJjbWQtPnN1YnR5cGUpOworCQkJCWJyZWFr OworCQl9CisKKwkJLyoKKwkJICogV2UgZG9uJ3Qgc3VwcG9ydCByZXBsaWNhdGluZyBBTFRFUiBU QUJMRSB3aGljaCBjb250YWlucyB2b2xhdGlsZQorCQkgKiBmdW5jdGlvbnMgYmVjYXVzZSBJdCdz IHBvc3NpYmxlIHRoZSBmdW5jdGlvbnMgY29udGFpbiBEREwvRE1MIGluCisJCSAqIHdoaWNoIGNh c2UgdGhlc2Ugb3BlcmF0aW9ucyB3aWxsIGJlIGV4ZWN1dGVkIHR3aWNlIGFuZCBjYXVzZQorCQkg KiBkdXBsaWNhdGUgZGF0YS4gSW4gYWRkaXRpb24sIHdlIGRvbid0IGtub3cgd2hldGhlciB0aGUg dGFibGVzIGJlaW5nCisJCSAqIGFjY2Vzc2VkIGJ5IHRoZXNlIERETC9ETUwgYXJlIHB1Ymxpc2hl ZCBvciBub3QuIFNvIGJsaW5kbHkgYWxsb3dpbmcKKwkJICogc3VjaCBmdW5jdGlvbnMgY2FuIGFs bG93IHVuaW50ZW5kZWQgY2xhdXNlcyBsaWtlIHRoZSB0YWJsZXMKKwkJICogYWNjZXNzZWQgaW4g dGhvc2UgZnVuY3Rpb25zIG1heSBub3QgZXZlbiBleGlzdCBvbiB0aGUgc3Vic2NyaWJlci4KKwkJ ICovCisJCWlmIChjb250YWluX3ZvbGF0aWxlX2Z1bmN0aW9ucygoTm9kZSAqKSBleHBycykpCisJ CQllbG9nKEVSUk9SLCAiQUxURVIgVEFCTEUgY29tbWFuZCB1c2luZyB2b2xhdGlsZSBmdW5jdGlv biBjYW5ub3QgYmUgcmVwbGljYXRlZCIpOworCisJCS8qCisJCSAqIENsZWFuIHRoZSBsaXN0IGFz IHdlIGFscmVhZHkgY29uZmlybWVkIHRoZXJlIGlzIG5vIHZvbGF0aWxlCisJCSAqIGZ1bmN0aW9u LgorCQkgKi8KKwkJbGlzdF9mcmVlKGV4cHJzKTsKKwkJZXhwcnMgPSBOSUw7CisJfQorCisJdGFi bGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJaWYgKGxpc3RfbGVuZ3RoKHN1YmNt ZHMpID09IDApCisJCXJldHVybiBOVUxMOworCisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIl e3N1YmNtZHM6LCB9cyIsIHN1YmNtZHMpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIEhh bmRsZSBkZXBhcnNpbmcgb2YgRFJPUCBjb21tYW5kcy4KKyAqCisgKiBWZXJib3NlIHN5bnRheAor ICogRFJPUCAle29ianR5cGV9cyBJRiBFWElTVFMgJSV7b2JqaWRlbnRpdHl9cyAle2Nhc2NhZGV9 cworICovCitjaGFyICoKK2RlcGFyc2VfZHJvcF9jb21tYW5kKGNvbnN0IGNoYXIgKm9iamlkZW50 aXR5LCBjb25zdCBjaGFyICpvYmplY3R0eXBlLAorCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9y KQoreworCVN0cmluZ0luZm9EYXRhIHN0cjsKKwljaGFyCSAgICpjb21tYW5kOworCWNoYXIJICAg KmlkZW50aXR5ID0gKGNoYXIgKikgb2JqaWRlbnRpdHk7CisJT2JqVHJlZSAgICAqc3RtdDsKKwlP YmpUcmVlICAgICp0bXBfb2JqOworCUpzb25iCSAgICpqc29uYjsKKworCWluaXRTdHJpbmdJbmZv KCZzdHIpOworCisJc3RtdCA9IG5ld19vYmp0cmVlX1ZBKCJEUk9QICV7b2JqdHlwZX1zIElGIEVY SVNUUyAle29iamlkZW50aXR5fXMiLCAyLAorCQkJCQkJICAib2JqdHlwZSIsIE9ialR5cGVTdHJp bmcsIG9iamVjdHR5cGUsCisJCQkJCQkgICJvYmppZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIGlk ZW50aXR5KTsKKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiQ0FTQ0FERSIsIDEsCisJCQkJ CQkJInByZXNlbnQiLCBPYmpUeXBlQm9vbCwgYmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFKTsKKwlh cHBlbmRfb2JqZWN0X29iamVjdChzdG10LCAiJXtjYXNjYWRlfXMiLCB0bXBfb2JqKTsKKworCWpz b25iID0gb2JqdHJlZV90b19qc29uYihzdG10KTsKKwljb21tYW5kID0gSnNvbmJUb0NTdHJpbmco JnN0ciwgJmpzb25iLT5yb290LCBKU09OQl9FU1RJTUFURURfTEVOKTsKKworCXJldHVybiBjb21t YW5kOworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlck9iamVjdFNjaGVtYVN0bXQgKEFMVEVS IC4uLiBTRVQgU0NIRU1BIGNvbW1hbmQpCisgKgorICogR2l2ZW4gdGhlIG9iamVjdCBhZGRyZXNz IGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJl ZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBTRVQgU0NIRU1BICV7bmV3c2NoZW1h fUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlck9iamVjdFNjaGVtYVN0bXQo T2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUsCisJCQkJCQkJICBPYmplY3RB ZGRyZXNzIG9sZF9zY2hlbWEpCit7CisJQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpub2RlID0gKEFs dGVyT2JqZWN0U2NoZW1hU3RtdCAqKSBwYXJzZXRyZWU7CisJY2hhcgkgICAqaWRlbnRpdHk7CisJ Y2hhcgkgICAqbmV3X3NjaGVtYSA9IG5vZGUtPm5ld3NjaGVtYTsKKwljaGFyCSAgICpvbGRfc2No bmFtZTsKKwljaGFyCSAgICppZGVudDsKKworCS8qCisJICogU2luY2UgdGhlIGNvbW1hbmQgaGFz IGFscmVhZHkgdGFrZW4gcGxhY2UgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZgorCSAqIGNhdGFs b2dzLCBnZXRPYmplY3RJZGVudGl0eSByZXR1cm5zIHRoZSBvYmplY3QgbmFtZSB3aXRoIHRoZSBh bHJlYWR5CisJICogY2hhbmdlZCBzY2hlbWEuICBUaGUgb3V0cHV0IG9mIG91ciBkZXBhcnNpbmcg bXVzdCByZXR1cm4gdGhlIG9yaWdpbmFsCisJICogc2NoZW1hIG5hbWUsIGhvd2V2ZXIsIHNvIHdl IGNob3AgdGhlIHNjaGVtYSBuYW1lIG9mZiB0aGUgaWRlbnRpdHkKKwkgKiBzdHJpbmcgYW5kIHRo ZW4gcHJlcGVuZCB0aGUgcXVvdGVkIHNjaGVtYSBuYW1lLgorCSAqCisJICogWFhYIFRoaXMgaXMg cHJldHR5IGNsdW5reS4gQ2FuIHdlIGRvIGJldHRlcj8KKwkgKi8KKwlpZGVudGl0eSA9IGdldE9i amVjdElkZW50aXR5KCZhZGRyZXNzLCBmYWxzZSk7CisJb2xkX3NjaG5hbWUgPSBnZXRfbmFtZXNw YWNlX25hbWUob2xkX3NjaGVtYS5vYmplY3RJZCk7CisJaWYgKCFvbGRfc2NobmFtZSkKKwkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB3aXRoIE9JRCAldSIsCisJ CQkgb2xkX3NjaGVtYS5vYmplY3RJZCk7CisKKwlpZGVudCA9IHBzcHJpbnRmKCIlcyVzIiwgcXVv dGVfaWRlbnRpZmllcihvbGRfc2NobmFtZSksCisJCQkJCSBpZGVudGl0eSArIHN0cmxlbihxdW90 ZV9pZGVudGlmaWVyKG5ld19zY2hlbWEpKSk7CisKKwlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkFM VEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBTRVQgU0NIRU1BICV7bmV3c2NoZW1hfUkiLCAz LAorCQkJCQkJICAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgIHN0cmluZ2lmeV9v Ymp0eXBlKG5vZGUtPm9iamVjdFR5cGUsIGZhbHNlKSwKKwkJCQkJCSAgImlkZW50aXR5IiwgT2Jq VHlwZVN0cmluZywgaWRlbnQsCisJCQkJCQkgICJuZXdzY2hlbWEiLCBPYmpUeXBlU3RyaW5nLCBu ZXdfc2NoZW1hKTsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJPd25lclN0bXQgKEFMVEVS IC4uLiBPV05FUiBUTyAuLi4pLgorICoKKyAqIEdpdmVuIHRoZSBvYmplY3QgYWRkcmVzcyBhbmQg dGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVw cmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBB TFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dORVIgVE8gJXtuZXdvd25lcn1JCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJPd25lclN0bXQoT2JqZWN0QWRkcmVzcyBh ZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJPd25lclN0bXQgKm5vZGUgPSAoQWx0 ZXJPd25lclN0bXQgKikgcGFyc2V0cmVlOworCisJcmV0dXJuIG5ld19vYmp0cmVlX1ZBKCJBTFRF UiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dORVIgVE8gJXtuZXdvd25lcn1JIiwgMywKKwkJ CQkJCSAgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJICBzdHJpbmdpZnlfb2JqdHlw ZShub2RlLT5vYmplY3RUeXBlLCBmYWxzZSksCisJCQkJCQkgICJpZGVudGl0eSIsIE9ialR5cGVT dHJpbmcsCisJCQkJCQkgIGdldE9iamVjdElkZW50aXR5KCZhZGRyZXNzLCBmYWxzZSksCisJCQkJ CQkgICJuZXdvd25lciIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgIGdldF9yb2xlc3BlY19uYW1l KG5vZGUtPm5ld293bmVyKSk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgUmVuYW1lU3RtdC4KKyAq CisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAl e2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgVEFCTEUg JXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5UICV7b2xkbmFtZX1JIFRPICV7 bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAle29u bHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENPTFVNTiAle2NvbG5hbWV9SSBUTyAle25ld25hbWV9 SSAle2Nhc2NhZGV9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1JlbmFtZVN0bXQo T2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJUmVuYW1lU3RtdCAq bm9kZSA9IChSZW5hbWVTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJUmVs YXRpb24JcmVsYXRpb247CisJT2lkCQkJc2NoZW1hSWQ7CisKKwkvKgorCSAqIEluIGFuIEFMVEVS IC4uIFJFTkFNRSBjb21tYW5kLCB3ZSBkb24ndCBoYXZlIHRoZSBvcmlnaW5hbCBuYW1lIG9mIHRo ZQorCSAqIG9iamVjdCBpbiBzeXN0ZW0gY2F0YWxvZ3M6IHNpbmNlIHdlIGluc3BlY3QgdGhlbSBh ZnRlciB0aGUgY29tbWFuZCBoYXMKKwkgKiBleGVjdXRlZCwgdGhlIG9sZCBuYW1lIGlzIGFscmVh ZHkgZ29uZS4gIFRoZXJlZm9yZSwgd2UgZXh0cmFjdCBpdCBmcm9tCisJICogdGhlIHBhcnNlIG5v ZGUuICBOb3RlIHdlIHN0aWxsIGV4dHJhY3QgdGhlIHNjaGVtYSBuYW1lIGZyb20gdGhlIGNhdGFs b2cKKwkgKiAoaXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIHBhcnNlIG5vZGUpOyBpdCBj YW5ub3QgcG9zc2libHkgaGF2ZQorCSAqIGNoYW5nZWQgYW55d2F5LgorCSAqLworCXN3aXRjaCAo bm9kZS0+cmVuYW1lVHlwZSkKKwl7CisJCWNhc2UgT0JKRUNUX1RBQkxFOgorCQkJcmVsYXRpb24g PSByZWxhdGlvbl9vcGVuKGFkZHJlc3Mub2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQlz Y2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKKwkJCXJldCA9IG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7aWRlbnRpdHl9RCBS RU5BTUUgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3Ry aW5nLAorCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVuYW1lVHlwZSwgZmFsc2Up LAorCQkJCQkJCQkgImlmX2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCSBub2RlLT5t aXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIiwKKwkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoc2NoZW1hSWQsCisJ CQkJCQkJCQkJCQkJCSAgbm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpLAorCQkJCQkJCQkgIm5ld25h bWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkgbm9kZS0+bmV3bmFtZSk7CisJCQlyZWxhdGlv bl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCWJyZWFrOworCisJCWNhc2Ug T0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCQl7CisJCQkJSGVhcFR1cGxlCWNvbnN0cnR1cDsKKwkJ CQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uc3Rmb3JtOworCisJCQkJY29uc3RydHVwID0gU2VhcmNo U3lzQ2FjaGUxKENPTlNUUk9JRCwKKwkJCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShhZGRyZXNz Lm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbnN0cnR1cCkpCisJCQkJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb25zdHJhaW50IHdpdGggT0lE ICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQljb25zdGZvcm0gPSAoRm9ybV9w Z19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uc3RydHVwKTsKKworCQkJCXJldCA9IG5ld19vYmp0 cmVlX1ZBKCJBTFRFUiBUQUJMRSAle29ubHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENPTlNUUkFJ TlQgJXtvbGRuYW1lfUkgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkJIm9ubHkiLCAgT2Jq VHlwZVN0cmluZywKKwkJCQkJCQkJCW5vZGUtPnJlbGF0aW9uLT5pbmggPyAiIiA6ICJPTkxZIiwK KwkJCQkJCQkJCSJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQluZXdfb2JqdHJl ZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCWNv bnN0Zm9ybS0+Y29ucmVsaWQpLAorCQkJCQkJCQkJIm9sZG5hbWUiLCBPYmpUeXBlU3RyaW5nLCBu b2RlLT5zdWJuYW1lLAorCQkJCQkJCQkJIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5u ZXduYW1lKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoY29uc3RydHVwKTsKKwkJCX0KKwkJCWJyZWFr OworCisJCWNhc2UgT0JKRUNUX0NPTFVNTjoKKwkJCXJlbGF0aW9uID0gcmVsYXRpb25fb3Blbihh ZGRyZXNzLm9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJc2NoZW1hSWQgPSBSZWxhdGlv bkdldE5hbWVzcGFjZShyZWxhdGlvbik7CisKKwkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRF UiAle29ianR5cGV9cyIsIDEsCisJCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZWxhdGlvblR5cGUsIGZhbHNlKSk7CisK KwkJCS8qIENvbXBvc2l0ZSB0eXBlcyBkbyBub3Qgc3VwcG9ydCBJRiBFWElTVFMgKi8KKwkJCWlm IChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9DT0xVTU4pCisJCQkJYXBwZW5kX3N0cmluZ19v YmplY3QocmV0LCAiJXtpZl9leGlzdHN9cyIsCisJCQkJCQkJCQkgImlmX2V4aXN0cyIsCisJCQkJ CQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIpOworCQkJaWYgKCFub2Rl LT5yZWxhdGlvbi0+aW5oKQorCQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7b25seX1z IiwKKwkJCQkJCQkJCSAib25seSIsCisJCQkJCQkJCQkgIk9OTFkiKTsKKwkJCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHJldCwgIiV7aWRlbnRpdHl9RCIsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWUoc2NoZW1hSWQsCisJCQkJCQkJCQkJCQkJCSAgbm9kZS0+cmVsYXRpb24tPnJlbG5h bWUpKTsKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIlJFTkFNRSBDT0xVTU4gJXtjb2xu YW1lfUkiLAorCQkJCQkJCQkgImNvbG5hbWUiLCBub2RlLT5zdWJuYW1lKTsKKworCQkJYXBwZW5k X3N0cmluZ19vYmplY3QocmV0LCAiVE8gJXtuZXduYW1lfUkiLCAibmV3bmFtZSIsCisJCQkJCQkJ CSBub2RlLT5uZXduYW1lKTsKKworCQkJaWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0FU VFJJQlVURSkKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2Nhc2NhZGV9cyIsCisJ CQkJCQkJCQkgbmV3X29ianRyZWVfVkEoIkNBU0NBREUiLCAxLAorCQkJCQkJCQkJCQkJCSJwcmVz ZW50IiwgT2JqVHlwZUJvb2wsCisJCQkJCQkJCQkJCQkJbm9kZS0+YmVoYXZpb3IgPT0gRFJPUF9D QVNDQURFKSk7CisKKwkJCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2sp OworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBv YmplY3QgdHlwZSAlZCIsIG5vZGUtPnJlbmFtZVR5cGUpOworCX0KKworCXJldHVybiByZXQ7Cit9 CisKKy8qCisgKiBIYW5kbGUgZGVwYXJzaW5nIG9mIHNpbXBsZSBjb21tYW5kcy4KKyAqCisgKiBU aGlzIGZ1bmN0aW9uIHNob3VsZCBjb3ZlciBhbGwgY2FzZXMgaGFuZGxlZCBpbiBQcm9jZXNzVXRp bGl0eVNsb3cuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2Vfc2ltcGxlX2NvbW1hbmQo Q29sbGVjdGVkQ29tbWFuZCAqY21kKQoreworCU9pZAkJCW9iamVjdElkOworCU5vZGUJICAgKnBh cnNldHJlZTsKKworCUFzc2VydChjbWQtPnR5cGUgPT0gU0NUX1NpbXBsZSk7CisKKwlwYXJzZXRy ZWUgPSBjbWQtPnBhcnNldHJlZTsKKwlvYmplY3RJZCA9IGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5v YmplY3RJZDsKKworCWlmIChjbWQtPmluX2V4dGVuc2lvbiAmJiAobm9kZVRhZyhwYXJzZXRyZWUp ICE9IFRfQ3JlYXRlRXh0ZW5zaW9uU3RtdCkpCisJCXJldHVybiBOVUxMOworCisJLyogVGhpcyBz d2l0Y2ggbmVlZHMgdG8gaGFuZGxlIGV2ZXJ5dGhpbmcgdGhhdCBQcm9jZXNzVXRpbGl0eVNsb3cg ZG9lcyAqLworCXN3aXRjaCAobm9kZVRhZyhwYXJzZXRyZWUpKQorCXsKKwkJY2FzZSBUX0FsdGVy T2JqZWN0U2NoZW1hU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3Rt dChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsCisJCQkJCQkJCQkJCQkgcGFyc2V0cmVlLAorCQkJCQkJ CQkJCQkJIGNtZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2JqZWN0KTsKKworCQljYXNlIFRfQWx0ZXJP d25lclN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlck93bmVyU3RtdChjbWQtPmQuc2ltcGxl LmFkZHJlc3MsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVN0bXQ6CisJCQlyZXR1cm4g ZGVwYXJzZV9DcmVhdGVTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9SZW5h bWVTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfUmVuYW1lU3RtdChjbWQtPmQuc2ltcGxlLmFkZHJl c3MsIHBhcnNldHJlZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coTE9HLCAidW5yZWNvZ25pemVk IG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwKKwkJCQkgKGludCkgbm9kZVRhZyhw YXJzZXRyZWUpKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFdvcmtob3JzZSB0 byBkZXBhcnNlIGEgQ29sbGVjdGVkQ29tbWFuZC4KKyAqLworY2hhciAqCitkZXBhcnNlX3V0aWxp dHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgdmVyYm9zZV9tb2RlKQorewor CU92ZXJyaWRlU2VhcmNoUGF0aCAqb3ZlcnJpZGVQYXRoOworCU1lbW9yeUNvbnRleHQgb2xkY3h0 OworCU1lbW9yeUNvbnRleHQgdG1wY3h0OworCU9ialRyZWUgICAgKnRyZWU7CisJY2hhcgkgICAq Y29tbWFuZCA9IE5VTEw7CisJU3RyaW5nSW5mb0RhdGEgc3RyOworCisJLyoKKwkgKiBBbGxvY2F0 ZSBldmVyeXRoaW5nIGRvbmUgYnkgdGhlIGRlcGFyc2luZyByb3V0aW5lcyBpbnRvIGEgdGVtcCBj b250ZXh0LAorCSAqIHRvIGF2b2lkIGhhdmluZyB0byBzcHJpbmtsZSB0aGVtIHdpdGggbWVtb3J5 IGhhbmRsaW5nIGNvZGUsIGJ1dAorCSAqIGFsbG9jYXRlIHRoZSBvdXRwdXQgU3RyaW5nSW5mbyBi ZWZvcmUgc3dpdGNoaW5nLgorCSAqLworCWluaXRTdHJpbmdJbmZvKCZzdHIpOworCXRtcGN4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJICAg ImRlcGFyc2UgY3R4IiwKKwkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9NSU5TSVpFLAorCQkJ CQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX0lOSVRTSVpFLAorCQkJCQkJCQkgICBBTExPQ1NFVF9E RUZBVUxUX01BWFNJWkUpOworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0bXBjeHQp OworCisJLyoKKwkgKiBNYW55IHJvdXRpbmVzIHVuZGVybHlpbmcgdGhpcyBvbmUgd2lsbCBpbnZv a2UgcnVsZXV0aWxzLmMgZnVuY3Rpb25hbGl0eQorCSAqIHRvIG9idGFpbiBkZXBhcnNlZCB2ZXJz aW9ucyBvZiBleHByZXNzaW9ucy4gIEluIHN1Y2ggcmVzdWx0cywgd2Ugd2FudAorCSAqIGFsbCBv YmplY3QgbmFtZXMgdG8gYmUgcXVhbGlmaWVkLCBzbyB0aGF0IHJlc3VsdHMgYXJlICJwb3J0YWJs ZSIgdG8KKwkgKiBlbnZpcm9ubWVudHMgd2l0aCBkaWZmZXJlbnQgc2VhcmNoX3BhdGggc2V0dGlu Z3MuICBSYXRoZXIgdGhhbiBpbmplY3QKKwkgKiB3aGF0IHdvdWxkIGJlIHJlcGV0aXRpdmUgY2Fs bHMgdG8gb3ZlcnJpZGUgc2VhcmNoIHBhdGggYWxsIG92ZXIgdGhlCisJICogcGxhY2UsIHdlIGRv IGl0IGNlbnRyYWxseSBoZXJlLgorCSAqLworCW92ZXJyaWRlUGF0aCA9IEdldE92ZXJyaWRlU2Vh cmNoUGF0aChDdXJyZW50TWVtb3J5Q29udGV4dCk7CisJb3ZlcnJpZGVQYXRoLT5zY2hlbWFzID0g TklMOworCW92ZXJyaWRlUGF0aC0+YWRkQ2F0YWxvZyA9IGZhbHNlOworCW92ZXJyaWRlUGF0aC0+ YWRkVGVtcCA9IHRydWU7CisJUHVzaE92ZXJyaWRlU2VhcmNoUGF0aChvdmVycmlkZVBhdGgpOwor CisJdmVyYm9zZSA9IHZlcmJvc2VfbW9kZTsKKworCXN3aXRjaCAoY21kLT50eXBlKQorCXsKKwkJ Y2FzZSBTQ1RfU2ltcGxlOgorCQkJdHJlZSA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoY21kKTsK KwkJCWJyZWFrOworCQljYXNlIFNDVF9BbHRlclRhYmxlOgorCQkJdHJlZSA9IGRlcGFyc2VfQWx0 ZXJSZWxhdGlvbihjbWQpOworCQkJYnJlYWs7CisJCWNhc2UgU0NUX0NyZWF0ZVRhYmxlQXM6CisJ CQl0cmVlID0gZGVwYXJzZV9DcmVhdGVUYWJsZUFzU3RtdChjbWQpOworCQkJYnJlYWs7CisJCWRl ZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkZXBhcnNlIG5vZGUgdHlwZSAlZCIs IGNtZC0+dHlwZSk7CisJfQorCisJUG9wT3ZlcnJpZGVTZWFyY2hQYXRoKCk7CisKKwlpZiAodHJl ZSkKKwl7CisJCUpzb25iCSAgICpqc29uYjsKKworCQlqc29uYiA9IG9ianRyZWVfdG9fanNvbmIo dHJlZSk7CisJCWNvbW1hbmQgPSBKc29uYlRvQ1N0cmluZygmc3RyLCAmanNvbmItPnJvb3QsIEpT T05CX0VTVElNQVRFRF9MRU4pOworCX0KKworCS8qCisJICogQ2xlYW4gdXAuICBOb3RlIHRoYXQg c2luY2Ugd2UgY3JlYXRlZCB0aGUgU3RyaW5nSW5mbyBpbiB0aGUgY2FsbGVyJ3MKKwkgKiBjb250 ZXh0LCB0aGUgb3V0cHV0IHN0cmluZyBpcyBub3QgZGVsZXRlZCBoZXJlLgorCSAqLworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCU1lbW9yeUNvbnRleHREZWxldGUodG1wY3h0KTsK KworCXJldHVybiBjb21tYW5kOworfQorCisvKgorICogR2l2ZW4gYSBDb2xsZWN0ZWRDb21tYW5k LCByZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGl0LgorICoKKyAqIFRoZSBjb21tYW5k IGlzIGV4cGFuZGVkIGZ1bGx5IHNvIHRoYXQgdGhlcmUgYXJlIG5vIGFtYmlndWl0aWVzIGV2ZW4g aW4gdGhlCisgKiBmYWNlIG9mIHNlYXJjaF9wYXRoIGNoYW5nZXMuCisgKi8KK0RhdHVtCitkZGxf ZGVwYXJzZV90b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQ29sbGVjdGVkQ29tbWFuZCAq Y21kID0gKENvbGxlY3RlZENvbW1hbmQgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisJY2hhcgkg ICAqY29tbWFuZDsKKworCWNvbW1hbmQgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIHRy dWUpOworCisJaWYgKGNvbW1hbmQpCisJCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0 KGNvbW1hbmQpKTsKKworCVBHX1JFVFVSTl9OVUxMKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kZGxfanNvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24u YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYTU3ZDI2OTdjCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24uYwpAQCAtMCwwICsx LDc4MCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRsX2pzb24uYworICoJICBKU09O IGNvZGUgcmVsYXRlZCB0byBEREwgY29tbWFuZCBkZXBhcnNpbmcKKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tl bmQvY29tbWFuZHMvZGRsX2pzb24uYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5j bHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCisjaW5jbHVk ZSAidGNvcC9kZGxfZGVwYXJzZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5j bHVkZSAidXRpbHMvanNvbmIuaCIKKworCisvKgorICogQ29udmVyc2lvbiBzcGVjaWZpZXIgd2hp Y2ggZGV0ZXJtaW5lcyBob3cgdG8gZXhwYW5kIHRoZSBKU09OIGVsZW1lbnQKKyAqIGludG8gYSBz dHJpbmcuCisgKi8KK3R5cGVkZWYgZW51bQoreworCVNwZWNEb3R0ZWROYW1lLAorCVNwZWNJZGVu dGlmaWVyLAorCVNwZWNOdW1iZXIsCisJU3BlY09wZXJhdG9yTmFtZSwKKwlTcGVjUm9sZSwKKwlT cGVjU3RyaW5nLAorCVNwZWNTdHJpbmdMaXRlcmFsLAorCVNwZWNUeXBlTmFtZQorfSBjb252U3Bl Y2lmaWVyOworCisvKgorICogQSB0ZXJuYXJ5IHZhbHVlIHRoYXQgcmVwcmVzZW50cyBhIGJvb2xl YW4gdHlwZSBKc29uYlZhbHVlLgorICovCit0eXBlZGVmIGVudW0KK3sKKwl0dl9hYnNlbnQsCisJ dHZfdHJ1ZSwKKwl0dl9mYWxzZQorfQkJCWpzb25fdHJpdmFsdWU7CisKK3N0YXRpYyBib29sIGV4 cGFuZF9vbmVfanNvbmJfZWxlbWVudChTdHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCisJCQkJ CQkJCQkgSnNvbmJWYWx1ZSAqanNvbnZhbCwgY29udlNwZWNpZmllciBzcGVjaWZpZXIsCisJCQkJ CQkJCQkgY29uc3QgY2hhciAqZm10KTsKK3N0YXRpYyB2b2lkIGV4cGFuZF9qc29uYl9hcnJheShT dHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCisJCQkJCQkJICAgSnNvbmJWYWx1ZSAqanNvbmFy ciwgY2hhciAqYXJyYXlzZXAsCisJCQkJCQkJICAgY29udlNwZWNpZmllciBzcGVjaWZpZXIsIGNv bnN0IGNoYXIgKmZtdCk7CitzdGF0aWMgdm9pZCBmbXRzdHJfZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKTsKKworLyoKKyAqIEdpdmVuIGEgSnNvbmJDb250YWluZXIsIGZpbmQgdGhlIEpzb25iVmFs dWUgd2l0aCB0aGUgZ2l2ZW4ga2V5IG5hbWUgaW4gaXQuCisgKiBJZiBpdCdzIG9mIGEgdHlwZSBv dGhlciB0aGFuIGpidkJvb2wsIGFuIGVycm9yIGlzIHJhaXNlZC4gSWYgaXQgZG9lc24ndAorICog ZXhpc3QsIHR2X2Fic2VudCBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlIHJldHVybiB0aGUgYWN0dWFs IGpzb25fdHJpdmFsdWUuCisgKi8KK3N0YXRpYyBqc29uX3RyaXZhbHVlCitmaW5kX2Jvb2xfaW5f anNvbmJjb250YWluZXIoSnNvbmJDb250YWluZXIgKmNvbnRhaW5lciwgY2hhciAqa2V5bmFtZSkK K3sKKwlKc29uYlZhbHVlCWtleTsKKwlKc29uYlZhbHVlICp2YWx1ZTsKKwlqc29uX3RyaXZhbHVl IHJlc3VsdDsKKworCWtleS50eXBlID0gamJ2U3RyaW5nOworCWtleS52YWwuc3RyaW5nLnZhbCA9 IGtleW5hbWU7CisJa2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKGtleW5hbWUpOworCXZhbHVl ID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwKKwkJCQkJCQkJCQlKQl9G T0JKRUNULCAma2V5KTsKKwlpZiAodmFsdWUgPT0gTlVMTCkKKwkJcmV0dXJuIHR2X2Fic2VudDsK KwlpZiAodmFsdWUtPnR5cGUgIT0gamJ2Qm9vbCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVu dCBcIiVzXCIgaXMgbm90IG9mIHR5cGUgYm9vbGVhbiIsIGtleW5hbWUpKTsKKwlyZXN1bHQgPSB2 YWx1ZS0+dmFsLmJvb2xlYW4gPyB0dl90cnVlIDogdHZfZmFsc2U7CisJcGZyZWUodmFsdWUpOwor CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEdpdmVuIGEgSnNvbmJDb250YWluZXIsIGZp bmQgdGhlIEpzb25iVmFsdWUgd2l0aCB0aGUgZ2l2ZW4ga2V5IG5hbWUgaW4gaXQuCisgKiBJZiBp dCdzIG9mIGEgdHlwZSBvdGhlciB0aGFuIGpidlN0cmluZywgYW4gZXJyb3IgaXMgcmFpc2VkLiAg SWYgaXQgZG9lc24ndAorICogZXhpc3QsIGFuIGVycm9yIGlzIHJhaXNlZCB1bmxlc3MgbWlzc2lu Z19vazsgb3RoZXJ3aXNlIHJldHVybiBOVUxMLgorICoKKyAqIElmIGl0IGV4aXN0cyBhbmQgaXMg YSBzdHJpbmcsIGEgZnJlc2hseSBwYWxsb2MnZWQgY29weSBpcyByZXR1cm5lZC4KKyAqCisgKiBJ ZiAqbGVuZ3RoIGlzIG5vdCBOVUxMLCBpdCBpcyBzZXQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgc3Ry aW5nLgorICovCitzdGF0aWMgY2hhciAqCitmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihK c29uYkNvbnRhaW5lciAqY29udGFpbmVyLCBjaGFyICprZXluYW1lLAorCQkJCQkJCSAgYm9vbCBt aXNzaW5nX29rLCBpbnQgKmxlbmd0aCkKK3sKKwlKc29uYlZhbHVlCWtleTsKKwlKc29uYlZhbHVl ICp2YWx1ZTsKKwljaGFyCSAgICpzdHI7CisKKwkvKiBYWFggdmVyaWZ5IHRoYXQgdGhpcyBpcyBh biBvYmplY3QsIG5vdCBhbiBhcnJheSAqLworCisJa2V5LnR5cGUgPSBqYnZTdHJpbmc7CisJa2V5 LnZhbC5zdHJpbmcudmFsID0ga2V5bmFtZTsKKwlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4o a2V5bmFtZSk7CisJdmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWluZXIoY29udGFpbmVy LAorCQkJCQkJCQkJCUpCX0ZPQkpFQ1QsICZrZXkpOworCWlmICh2YWx1ZSA9PSBOVUxMKQorCXsK KwkJaWYgKG1pc3Npbmdfb2spCisJCQlyZXR1cm4gTlVMTDsKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygi bWlzc2luZyBlbGVtZW50IFwiJXNcIiBpbiBKU09OIG9iamVjdCIsIGtleW5hbWUpKTsKKwl9CisK KwlpZiAodmFsdWUtPnR5cGUgIT0gamJ2U3RyaW5nKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJlbGVt ZW50IFwiJXNcIiBpcyBub3Qgb2YgdHlwZSBzdHJpbmciLCBrZXluYW1lKSk7CisKKwlzdHIgPSBw bnN0cmR1cCh2YWx1ZS0+dmFsLnN0cmluZy52YWwsIHZhbHVlLT52YWwuc3RyaW5nLmxlbik7CisJ aWYgKGxlbmd0aCkKKwkJKmxlbmd0aCA9IHZhbHVlLT52YWwuc3RyaW5nLmxlbjsKKwlwZnJlZSh2 YWx1ZSk7CisJcmV0dXJuIHN0cjsKK30KKworI2RlZmluZSBBRFZBTkNFX1BBUlNFX1BPSU5URVIo cHRyLGVuZF9wdHIpIFwKKwlkbyB7IFwKKwkJaWYgKCsrKHB0cikgPj0gKGVuZF9wdHIpKSBcCisJ CQllcmVwb3J0KEVSUk9SLCBcCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksIFwKKwkJCQkJZXJybXNnKCJ1bnRlcm1pbmF0ZWQgZm9ybWF0IHNwZWNpZmllciIp KTsgXAorCX0gd2hpbGUgKDApCisKKy8qCisgKiBSZWN1cnNpdmUgaGVscGVyIGZvciBkZXBhcnNl X2RkbF9qc29uX3RvX3N0cmluZy4KKyAqCisgKiBGaW5kIHRoZSAiZm10IiBlbGVtZW50IGluIHRo ZSBnaXZlbiBjb250YWluZXIsIGFuZCBleHBhbmQgaXQgaW50byB0aGUKKyAqIHByb3ZpZGVkIFN0 cmluZ0luZm8uCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfZm10X3JlY3Vyc2l2ZShTdHJpbmdJ bmZvIGJ1ZiwgSnNvbmJDb250YWluZXIgKmNvbnRhaW5lcikKK3sKKwlKc29uYlZhbHVlCWtleTsK KwlKc29uYlZhbHVlICp2YWx1ZTsKKwljb25zdCBjaGFyICpjcDsKKwljb25zdCBjaGFyICpzdGFy dF9wdHI7CisJY29uc3QgY2hhciAqZW5kX3B0cjsKKwlpbnQJCQlsZW47CisKKwlzdGFydF9wdHIg PSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihjb250YWluZXIsICJmbXQiLCBmYWxzZSwg Jmxlbik7CisJZW5kX3B0ciA9IHN0YXJ0X3B0ciArIGxlbjsKKworCWZvciAoY3AgPSBzdGFydF9w dHI7IGNwIDwgZW5kX3B0cjsgY3ArKykKKwl7CisJCWNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyOwor CQlib29sCQlpc19hcnJheSA9IGZhbHNlOworCQljaGFyCSAgICpwYXJhbSA9IE5VTEw7CisJCWNo YXIJICAgKmFycmF5c2VwID0gTlVMTDsKKworCQlpZiAoKmNwICE9ICclJykKKwkJeworCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXJNYWNybyhidWYsICpjcCk7CisJCQljb250aW51ZTsKKwkJfQorCisJ CUFEVkFOQ0VfUEFSU0VfUE9JTlRFUihjcCwgZW5kX3B0cik7CisKKwkJLyogRWFzeSBjYXNlOiAl JSBvdXRwdXRzIGEgc2luZ2xlICUgKi8KKwkJaWYgKCpjcCA9PSAnJScpCisJCXsKKwkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyTWFjcm8oYnVmLCAqY3ApOworCQkJY29udGludWU7CisJCX0KKworCQkv KgorCQkgKiBTY2FuIHRoZSBtYW5kYXRvcnkgZWxlbWVudCBuYW1lLiAgQWxsb3cgZm9yIGFuIGFy cmF5IHNlcGFyYXRvcgorCQkgKiAod2hpY2ggbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcpIHRvIGJl IHNwZWNpZmllZCBhZnRlciBhIGNvbG9uLgorCQkgKi8KKwkJaWYgKCpjcCA9PSAneycpCisJCXsK KwkJCVN0cmluZ0luZm9EYXRhIHBhcmJ1ZjsKKwkJCVN0cmluZ0luZm9EYXRhIGFycmF5c2VwYnVm OworCQkJU3RyaW5nSW5mbwlhcHBlbmRUbzsKKworCQkJaW5pdFN0cmluZ0luZm8oJnBhcmJ1Zik7 CisJCQlhcHBlbmRUbyA9ICZwYXJidWY7CisKKwkJCUFEVkFOQ0VfUEFSU0VfUE9JTlRFUihjcCwg ZW5kX3B0cik7CisJCQl3aGlsZSAoY3AgPCBlbmRfcHRyKQorCQkJeworCQkJCWlmICgqY3AgPT0g JzonKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogRm91bmQgYXJyYXkgc2VwYXJhdG9yIGRlbGlt aXRlcjsgZWxlbWVudCBuYW1lIGlzIG5vdworCQkJCQkgKiBjb21wbGV0ZSwgc3RhcnQgZmlsbGlu ZyB0aGUgc2VwYXJhdG9yLgorCQkJCQkgKi8KKwkJCQkJaW5pdFN0cmluZ0luZm8oJmFycmF5c2Vw YnVmKTsKKwkJCQkJYXBwZW5kVG8gPSAmYXJyYXlzZXBidWY7CisJCQkJCWlzX2FycmF5ID0gdHJ1 ZTsKKwkJCQkJQURWQU5DRV9QQVJTRV9QT0lOVEVSKGNwLCBlbmRfcHRyKTsKKwkJCQkJY29udGlu dWU7CisJCQkJfQorCisJCQkJaWYgKCpjcCA9PSAnfScpCisJCQkJeworCQkJCQlBRFZBTkNFX1BB UlNFX1BPSU5URVIoY3AsIGVuZF9wdHIpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJYXBwZW5k U3RyaW5nSW5mb0NoYXJNYWNybyhhcHBlbmRUbywgKmNwKTsKKwkJCQlBRFZBTkNFX1BBUlNFX1BP SU5URVIoY3AsIGVuZF9wdHIpOworCQkJfQorCQkJcGFyYW0gPSBwYXJidWYuZGF0YTsKKwkJCWlm IChpc19hcnJheSkKKwkJCQlhcnJheXNlcCA9IGFycmF5c2VwYnVmLmRhdGE7CisJCX0KKwkJaWYg KHBhcmFtID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coIm1pc3NpbmcgY29udmVyc2lv biBuYW1lIGluIGNvbnZlcnNpb24gc3BlY2lmaWVyIikpOworCisJCXN3aXRjaCAoKmNwKQorCQl7 CisJCQljYXNlICdJJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjSWRlbnRpZmllcjsKKwkJCQlicmVh azsKKwkJCWNhc2UgJ0QnOgorCQkJCXNwZWNpZmllciA9IFNwZWNEb3R0ZWROYW1lOworCQkJCWJy ZWFrOworCQkJY2FzZSAncyc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1N0cmluZzsKKwkJCQlicmVh azsKKwkJCWNhc2UgJ0wnOgorCQkJCXNwZWNpZmllciA9IFNwZWNTdHJpbmdMaXRlcmFsOworCQkJ CWJyZWFrOworCQkJY2FzZSAnVCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1R5cGVOYW1lOworCQkJ CWJyZWFrOworCQkJY2FzZSAnTyc6CisJCQkJc3BlY2lmaWVyID0gU3BlY09wZXJhdG9yTmFtZTsK KwkJCQlicmVhazsKKwkJCWNhc2UgJ24nOgorCQkJCXNwZWNpZmllciA9IFNwZWNOdW1iZXI7CisJ CQkJYnJlYWs7CisJCQljYXNlICdSJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjUm9sZTsKKwkJCQli cmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImludmFsaWQgY29u dmVyc2lvbiBzcGVjaWZpZXIgXCIlY1wiIiwgKmNwKSk7CisJCX0KKworCQkvKgorCQkgKiBPYnRh aW4gdGhlIGVsZW1lbnQgdG8gYmUgZXhwYW5kZWQuCisJCSAqLworCQlrZXkudHlwZSA9IGpidlN0 cmluZzsKKwkJa2V5LnZhbC5zdHJpbmcudmFsID0gcGFyYW07CisJCWtleS52YWwuc3RyaW5nLmxl biA9IHN0cmxlbihwYXJhbSk7CisKKwkJdmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWlu ZXIoY29udGFpbmVyLCBKQl9GT0JKRUNULCAma2V5KTsKKwkJQXNzZXJ0KHZhbHVlICE9IE5VTEwp OworCisJCS8qCisJCSAqIEV4cGFuZCB0aGUgZGF0YSAocG9zc2libHkgYW4gYXJyYXkpIGludG8g dGhlIG91dHB1dCBTdHJpbmdJbmZvLgorCQkgKi8KKwkJaWYgKGlzX2FycmF5KQorCQkJZXhwYW5k X2pzb25iX2FycmF5KGJ1ZiwgcGFyYW0sIHZhbHVlLCBhcnJheXNlcCwgc3BlY2lmaWVyLCBzdGFy dF9wdHIpOworCQllbHNlCisJCQlleHBhbmRfb25lX2pzb25iX2VsZW1lbnQoYnVmLCBwYXJhbSwg dmFsdWUsIHNwZWNpZmllciwgc3RhcnRfcHRyKTsKKwl9Cit9CisKKy8qCisgKiBFeHBhbmQgYSBq c29uIHZhbHVlIGFzIGEgcXVvdGVkIGlkZW50aWZpZXIuICBUaGUgdmFsdWUgbXVzdCBiZSBvZiB0 eXBlIHN0cmluZy4KKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9qc29udmFsX2lkZW50aWZpZXIo U3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc3RyOwor CisJQXNzZXJ0KGpzb252YWwtPnR5cGUgPT0gamJ2U3RyaW5nKTsKKworCXN0ciA9IHBuc3RyZHVw KGpzb252YWwtPnZhbC5zdHJpbmcudmFsLCBqc29udmFsLT52YWwuc3RyaW5nLmxlbik7CisJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJcGZyZWUo c3RyKTsKK30KKworLyoKKyAqIEV4cGFuZCBhIGpzb24gdmFsdWUgYXMgYSBkb3Qtc2VwYXJhdGVk LW5hbWUuICBUaGUgdmFsdWUgbXVzdCBiZSBvZiB0eXBlCisgKiBiaW5hcnkgYW5kIG1heSBjb250 YWluIGVsZW1lbnRzICJzY2hlbWFuYW1lIiAob3B0aW9uYWwpLCAib2JqbmFtZSIKKyAqIChtYW5k YXRvcnkpLCAiYXR0cm5hbWUiIChvcHRpb25hbCkuICBEb3VibGUgcXVvdGVzIGFyZSBhZGRlZCB0 byBlYWNoIGVsZW1lbnQKKyAqIGFzIG5lY2Vzc2FyeSwgYW5kIGRvdCBzZXBhcmF0b3JzIHdoZXJl IG5lZWRlZC4KKyAqCisgKiBPbmUgZGF5IHdlIG1pZ2h0IG5lZWQgYSAiY2F0YWxvZyIgZWxlbWVu dCBhcyB3ZWxsLCBidXQgbm8gY3VycmVudCB1c2UgY2FzZQorICogbmVlZHMgdGhhdC4KKyAqLwor c3RhdGljIHZvaWQKK2V4cGFuZF9qc29udmFsX2RvdHRlZG5hbWUoU3RyaW5nSW5mbyBidWYsIEpz b25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc3RyOworCUpzb25iQ29udGFpbmVyICpk YXRhID0ganNvbnZhbC0+dmFsLmJpbmFyeS5kYXRhOworCisJQXNzZXJ0KGpzb252YWwtPnR5cGUg PT0gamJ2QmluYXJ5KTsKKworCXN0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRh dGEsICJzY2hlbWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJaWYgKHN0cikKKwl7CisJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAiJXMuIiwgcXVvdGVfaWRlbnRpZmllcihzdHIpKTsKKwkJcGZyZWUoc3Ry KTsKKwl9CisKKwlzdHIgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAib2Jq bmFtZSIsIGZhbHNlLCBOVUxMKTsKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwgcXVvdGVf aWRlbnRpZmllcihzdHIpKTsKKwlwZnJlZShzdHIpOworCisJc3RyID0gZmluZF9zdHJpbmdfaW5f anNvbmJjb250YWluZXIoZGF0YSwgImF0dHJuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJaWYgKHN0cikK Kwl7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLiVzIiwgcXVvdGVfaWRlbnRpZmllcihzdHIp KTsKKwkJcGZyZWUoc3RyKTsKKwl9Cit9CisKKy8qCisgKiBFeHBhbmQgYSBKU09OIHZhbHVlIGFz IGEgdHlwZSBuYW1lLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfdHlwZW5hbWUo U3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc2NoZW1h ID0gTlVMTDsKKwljaGFyCSAgICp0eXBlbmFtZTsKKwljaGFyCSAgICp0eXBtb2RzdHI7CisJanNv bl90cml2YWx1ZSBpc19hcnJheTsKKwljaGFyCSAgICphcnJheV9kZWNvcjsKKwlKc29uYkNvbnRh aW5lciAqZGF0YSA9IGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YTsKKworCS8qCisJICogV2Ugb21p dCBzY2hlbWEtcXVhbGlmeWluZyB0aGUgb3V0cHV0IG5hbWUgaWYgdGhlIHNjaGVtYSBlbGVtZW50 IGlzCisJICogZWl0aGVyIHRoZSBlbXB0eSBzdHJpbmcgb3IgTlVMTDsgdGhlIGRpZmZlcmVuY2Ug YmV0d2VlbiB0aG9zZSB0d28gY2FzZXMKKwkgKiBpcyB0aGF0IGluIHRoZSBsYXR0ZXIgd2UgcXVv dGUgdGhlIHR5cGUgbmFtZSwgaW4gdGhlIGZvcm1lciB3ZSBkb24ndC4KKwkgKiBUaGlzIGFsbG93 cyBmb3IgdHlwZXMgd2l0aCBzcGVjaWFsIHR5cG1vZCBuZWVkcywgc3VjaCBhcyBpbnRlcnZhbCBh bmQKKwkgKiB0aW1lc3RhbXAgKHNlZSBmb3JtYXRfdHlwZV9kZXRhaWxlZCksIHdoaWxlIGF0IHRo ZSBzYW1lIHRpbWUgYWxsb3dpbmcKKwkgKiBmb3IgdGhlIHNjaGVtYSBuYW1lIHRvIGJlIG9taXR0 ZWQgZnJvbSB0eXBlIG5hbWVzIHRoYXQgcmVxdWlyZSBxdW90ZXMKKwkgKiBidXQgYXJlIHRvIGJl IG9idGFpbmVkIGZyb20gYSB1c2VyIHNjaGVtYS4KKwkgKi8KKworCXNjaGVtYSA9IGZpbmRfc3Ry aW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJzY2hlbWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJ dHlwZW5hbWUgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAidHlwZW5hbWUi LCBmYWxzZSwgTlVMTCk7CisJdHlwbW9kc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWlu ZXIoZGF0YSwgInR5cG1vZCIsIHRydWUsIE5VTEwpOworCWlzX2FycmF5ID0gZmluZF9ib29sX2lu X2pzb25iY29udGFpbmVyKGRhdGEsICJ0eXBhcnJheSIpOworCXN3aXRjaCAoaXNfYXJyYXkpCisJ eworCQljYXNlIHR2X3RydWU6CisJCQlhcnJheV9kZWNvciA9ICJbXSI7CisJCQlicmVhazsKKwor CQljYXNlIHR2X2ZhbHNlOgorCQkJYXJyYXlfZGVjb3IgPSAiIjsKKwkJCWJyZWFrOworCisJCWNh c2UgdHZfYWJzZW50OgorCQlkZWZhdWx0OgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJtaXNzaW5n IHR5cGFycmF5IGVsZW1lbnQiKSk7CisJfQorCisJaWYgKHNjaGVtYSA9PSBOVUxMKQorCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwgcXVvdGVfaWRlbnRpZmllcih0eXBlbmFtZSkpOworCWVs c2UgaWYgKHNjaGVtYVswXSA9PSAnXDAnKQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwg dHlwZW5hbWUpOwkvKiBTcGVjaWFsIHR5cG1vZCBuZWVkcyAqLworCWVsc2UKKwkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIlcy4lcyIsIHF1b3RlX2lkZW50aWZpZXIoc2NoZW1hKSwKKwkJCQkJCSBx dW90ZV9pZGVudGlmaWVyKHR5cGVuYW1lKSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVz JXMiLCB0eXBtb2RzdHIgPyB0eXBtb2RzdHIgOiAiIiwgYXJyYXlfZGVjb3IpOworCXBmcmVlKHNj aGVtYSk7CisJcGZyZWUodHlwZW5hbWUpOworCXBmcmVlKHR5cG1vZHN0cik7Cit9CisKKy8qCisg KiBFeHBhbmQgYSBKU09OIHZhbHVlIGFzIGFuIG9wZXJhdG9yIG5hbWUuIFRoZSB2YWx1ZSBtYXkg Y29udGFpbiBlbGVtZW50CisgKiAic2NoZW1hbmFtZSIgKG9wdGlvbmFsKS4KKyAqLworc3RhdGlj IHZvaWQKK2V4cGFuZF9qc29udmFsX29wZXJhdG9yKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVl ICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cjsKKwlKc29uYkNvbnRhaW5lciAqZGF0YSA9IGpz b252YWwtPnZhbC5iaW5hcnkuZGF0YTsKKworCXN0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29u dGFpbmVyKGRhdGEsICJzY2hlbWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJLyogU2NoZW1hIG1pZ2h0 IGJlIE5VTEwgb3IgZW1wdHkgKi8KKwlpZiAoc3RyICE9IE5VTEwgJiYgc3RyWzBdICE9ICdcMCcp CisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzLiIsIHF1b3RlX2lkZW50aWZpZXIoc3Ry KSk7CisJCXBmcmVlKHN0cik7CisJfQorCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250 YWluZXIoZGF0YSwgIm9iam5hbWUiLCBmYWxzZSwgTlVMTCk7CisJaWYgKCFzdHIpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQllcnJtc2coIm1pc3Npbmcgb3BlcmF0b3IgbmFtZSIpKTsKKworCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCBzdHIpOworCXBmcmVlKHN0cik7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBK U09OIHZhbHVlIGFzIGEgc3RyaW5nLiAgVGhlIHZhbHVlIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcg b3Igb2YKKyAqIHR5cGUgQmluYXJ5LiAgSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBtdXN0IGNvbnRh aW4gYSAiZm10IiBlbGVtZW50IHdoaWNoIHdpbGwKKyAqIGJlIHJlY3Vyc2l2ZWx5IGV4cGFuZGVk OyBhbHNvLCBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIGFuIGVsZW1lbnQgInByZXNlbnQiCisgKiBh bmQgaXQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgZXhwYW5zaW9uIGlzIHRoZSBlbXB0eSBzdHJpbmcu CisgKgorICogUmV0dXJucyBmYWxzZSBpZiBubyBhY3R1YWwgZXhwYW5zaW9uIHdhcyBtYWRlIGR1 ZSB0byB0aGUgInByZXNlbnQiIGZsYWcKKyAqIGJlaW5nIHNldCB0byAiZmFsc2UiLgorICoKKyAq IFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgdG8gY2hlY2sganNvbnZhbCBpcyBvZiB0eXBlIGpi dlN0cmluZyBvciBqYnZCaW5hcnkuCisgKi8KK3N0YXRpYyBib29sCitleHBhbmRfanNvbnZhbF9z dHJpbmcoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJYm9vbCBleHBh bmRlZCA9IGZhbHNlOworCisJaWYgKGpzb252YWwtPnR5cGUgPT0gamJ2U3RyaW5nKQorCXsKKwkJ YXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsIGpzb252YWwtPnZhbC5zdHJpbmcudmFsLAorCQkJ CQkJCSAgIGpzb252YWwtPnZhbC5zdHJpbmcubGVuKTsKKwkJZXhwYW5kZWQgPSB0cnVlOworCX0K KwllbHNlIGlmIChqc29udmFsLT50eXBlID09IGpidkJpbmFyeSkKKwl7CisJCWpzb25fdHJpdmFs dWUgcHJlc2VudDsKKworCQlwcmVzZW50ID0gZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKGpz b252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkJICAicHJlc2VudCIpOworCisJCS8q CisJCSAqIElmICJwcmVzZW50IiBpcyBzZXQgdG8gZmFsc2UsIHRoaXMgZWxlbWVudCBleHBhbmRz IHRvIGVtcHR5OworCQkgKiBvdGhlcndpc2UgKGVpdGhlciB0cnVlIG9yIGFic2VudCksIGV4cGFu ZCAiZm10Ii4KKwkJICovCisJCWlmIChwcmVzZW50ICE9IHR2X2ZhbHNlKQorCQl7CisJCQlleHBh bmRfZm10X3JlY3Vyc2l2ZShidWYsIGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSk7CisJCQlleHBh bmRlZCA9IHRydWU7CisJCX0KKwl9CisKKwlyZXR1cm4gZXhwYW5kZWQ7Cit9CisKKy8qCisgKiBF eHBhbmQgYSBKU09OIHZhbHVlIGFzIGEgc3RyaW5nIGxpdGVyYWwuCisgKi8KK3N0YXRpYyB2b2lk CitleHBhbmRfanNvbnZhbF9zdHJsaXQoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252 YWwpCit7CisJY2hhcgkgICAqc3RyOworCVN0cmluZ0luZm9EYXRhIGRxZGVsaW07CisJc3RhdGlj IGNvbnN0IGNoYXIgZHFzdWZmaXhlc1tdID0gIl9YWVpaWVhfIjsKKwlpbnQJCQlkcW5leHRjaGFy ID0gMDsKKworCXN0ciA9IHBuc3RyZHVwKGpzb252YWwtPnZhbC5zdHJpbmcudmFsLCBqc29udmFs LT52YWwuc3RyaW5nLmxlbik7CisKKwkvKiBFYXN5IGNhc2U6IGlmIHRoZXJlIGFyZSBubyAnIGFu ZCBubyBcLCBqdXN0IHVzZSBhIHNpbmdsZSBxdW90ZSAqLworCWlmIChzdHJwYnJrKHN0ciwgIlwn XFwiKSA9PSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICInJXMnIiwgc3RyKTsK KwkJcGZyZWUoc3RyKTsKKwkJcmV0dXJuOworCX0KKworCS8qIE90aGVyd2lzZSBuZWVkIHRvIGZp bmQgYSB1c2VmdWwgZG9sbGFyLXF1b3RlIGRlbGltaXRlciAqLworCWluaXRTdHJpbmdJbmZvKCZk cWRlbGltKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkcWRlbGltLCAiJCIpOworCXdoaWxl IChzdHJzdHIoc3RyLCBkcWRlbGltLmRhdGEpICE9IE5VTEwpCisJeworCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmZHFkZWxpbSwgZHFzdWZmaXhlc1tkcW5leHRjaGFyKytdKTsKKwkJZHFuZXh0Y2hh ciA9IGRxbmV4dGNoYXIgJSAoc2l6ZW9mKGRxc3VmZml4ZXMpIC0gMSk7CisJfQorCS8qIEFkZCB0 cmFpbGluZyAkICovCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmRxZGVsaW0sICckJyk7CisKKwkv KiBBbmQgZmluYWxseSBwcm9kdWNlIHRoZSBxdW90ZWQgbGl0ZXJhbCBpbnRvIHRoZSBvdXRwdXQg U3RyaW5nSW5mbyAqLworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlcyVzIiwgZHFkZWxpbS5k YXRhLCBzdHIsIGRxZGVsaW0uZGF0YSk7CisJcGZyZWUoZHFkZWxpbS5kYXRhKTsKKwlwZnJlZShz dHIpOworfQorCisvKgorICogRXhwYW5kIGEgSlNPTiB2YWx1ZSBhcyBhbiBpbnRlZ2VyIHF1YW50 aXR5LgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfbnVtYmVyKFN0cmluZ0luZm8g YnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cmRhdHVtOworCisJQXNz ZXJ0KGpzb252YWwtPnR5cGUgPT0gamJ2TnVtZXJpYyk7CisKKwlzdHJkYXR1bSA9IERhdHVtR2V0 Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LAorCQkJCQkJCQkJCQkJICAg TnVtZXJpY0dldERhdHVtKGpzb252YWwtPnZhbC5udW1lcmljKSkpOworCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCBzdHJkYXR1bSk7CisJcGZyZWUoc3RyZGF0dW0pOworfQorCisvKgorICog RXhwYW5kIGEgSlNPTiB2YWx1ZSBhcyBhIHJvbGUgbmFtZS4gIElmIHRoZSAnaXNfcHVibGljJyBl bGVtZW50IGlzIHNldCB0bworICogdHJ1ZSwgUFVCTElDIGlzIGV4cGFuZGVkIChubyBxdW90ZXMp OyBvdGhlcndpc2UsIGV4cGFuZCB0aGUgZ2l2ZW4gcm9sZSBuYW1lLAorICogcXVvdGluZyBhcyBh biBpZGVudGlmaWVyLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfcm9sZShTdHJp bmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwlqc29uX3RyaXZhbHVlIGlzX3B1 YmxpYzsKKworCWlzX3B1YmxpYyA9IGZpbmRfYm9vbF9pbl9qc29uYmNvbnRhaW5lcihqc29udmFs LT52YWwuYmluYXJ5LmRhdGEsCisJCQkJCQkJCQkJCSJpc19wdWJsaWMiKTsKKwlpZiAoaXNfcHVi bGljID09IHR2X3RydWUpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiUFVCTElDIik7 CisJZWxzZQorCXsKKwkJY2hhcgkgICAqcm9sZW5hbWU7CisKKwkJcm9sZW5hbWUgPSBmaW5kX3N0 cmluZ19pbl9qc29uYmNvbnRhaW5lcihqc29udmFsLT52YWwuYmluYXJ5LmRhdGEsCisJCQkJCQkJ CQkJCQkgInJvbGVuYW1lIiwgZmFsc2UsIE5VTEwpOworCQlpZiAocm9sZW5hbWUpCisJCXsKKwkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHJvbGVuYW1lKSk7 CisJCQlwZnJlZShyb2xlbmFtZSk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBFeHBhbmQgb25lIEpT T04gZWxlbWVudCBpbnRvIHRoZSBvdXRwdXQgU3RyaW5nSW5mbyBhY2NvcmRpbmcgdG8gdGhlCisg KiBjb252ZXJzaW9uIHNwZWNpZmllci4gIFRoZSBlbGVtZW50IHR5cGUgaXMgdmFsaWRhdGVkLCBh bmQgYW4gZXJyb3IgaXMgcmFpc2VkCisgKiBpZiBpdCBkb2Vzbid0IG1hdGNoIHdoYXQgd2UgZXhw ZWN0IGZvciB0aGUgY29udmVyc2lvbiBzcGVjaWZpZXIuCisgKgorICogUmV0dXJucyB0cnVlLCBl eGNlcHQgZm9yIHRoZSBmb3JtYXR0ZWQgc3RyaW5nIGNhc2UgaWYgbm8gYWN0dWFsIGV4cGFuc2lv bgorICogd2FzIG1hZGUgKGR1ZSB0byB0aGUgInByZXNlbnQiIGZsYWcgYmVpbmcgc2V0IHRvICJm YWxzZSIpLgorICovCitzdGF0aWMgYm9vbAorZXhwYW5kX29uZV9qc29uYl9lbGVtZW50KFN0cmlu Z0luZm8gYnVmLCBjaGFyICpwYXJhbSwgSnNvbmJWYWx1ZSAqanNvbnZhbCwKKwkJCQkJCSBjb252 U3BlY2lmaWVyIHNwZWNpZmllciwgY29uc3QgY2hhciAqZm10KQoreworCWJvb2wJCXN0cmluZ19l eHBhbmRlZCA9IHRydWU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgc3FsZXJyY29udGV4dDsKKwor CS8qIElmIHdlIHdlcmUgZ2l2ZW4gYSBmb3JtYXQgc3RyaW5nLCBzZXR1cCBhbiBlcmVwb3J0KCkg Y29udGV4dCBjYWxsYmFjayAqLworCWlmIChmbXQpCisJeworCQlzcWxlcnJjb250ZXh0LmNhbGxi YWNrID0gZm10c3RyX2Vycm9yX2NhbGxiYWNrOworCQlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lk ICopIGZtdDsKKwkJc3FsZXJyY29udGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7 CisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmc3FsZXJyY29udGV4dDsKKwl9CisKKwlpZiAoIWpz b252YWwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wiIG5vdCBmb3VuZCIsIHBh cmFtKSk7CisKKwlzd2l0Y2ggKHNwZWNpZmllcikKKwl7CisJCWNhc2UgU3BlY0lkZW50aWZpZXI6 CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZTdHJpbmcpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQll cnJtc2coImV4cGVjdGVkIEpTT04gc3RyaW5nIGZvciAlJUkgZWxlbWVudCBcIiVzXCIsIGdvdCAl ZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFs X2lkZW50aWZpZXIoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3BlY0RvdHRl ZE5hbWU6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RydWN0IGZvciAlJUQgZWxlbWVudCBcIiVzXCIs IGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9q c29udmFsX2RvdHRlZG5hbWUoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3Bl Y1N0cmluZzoKKwkJCWlmIChqc29udmFsLT50eXBlICE9IGpidlN0cmluZyAmJgorCQkJCWpzb252 YWwtPnR5cGUgIT0gamJ2QmluYXJ5KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3Rl ZCBKU09OIHN0cmluZyBvciBzdHJ1Y3QgZm9yICUlcyBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwK KwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJc3RyaW5nX2V4cGFuZGVkID0g ZXhwYW5kX2pzb252YWxfc3RyaW5nKGJ1ZiwganNvbnZhbCk7CisJCQlicmVhazsKKworCQljYXNl IFNwZWNTdHJpbmdMaXRlcmFsOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2U3RyaW5nKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cmluZyBmb3IgJSVMIGVs ZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50eXBlKSk7 CisJCQlleHBhbmRfanNvbnZhbF9zdHJsaXQoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgU3BlY1R5cGVOYW1lOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2QmluYXJ5KQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cnVjdCBmb3IgJSVUIGVs ZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50eXBlKSk7 CisJCQlleHBhbmRfanNvbnZhbF90eXBlbmFtZShidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisK KwkJY2FzZSBTcGVjT3BlcmF0b3JOYW1lOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2Qmlu YXJ5KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cnVjdCBmb3Ig JSVPIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50 eXBlKSk7CisJCQlleHBhbmRfanNvbnZhbF9vcGVyYXRvcihidWYsIGpzb252YWwpOworCQkJYnJl YWs7CisKKwkJY2FzZSBTcGVjTnVtYmVyOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2TnVt ZXJpYykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiZXhwZWN0ZWQgSlNPTiBudW1lcmljIGZv ciAlJW4gZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwt PnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFsX251bWJlcihidWYsIGpzb252YWwpOworCQkJYnJl YWs7CisKKwkJY2FzZSBTcGVjUm9sZToKKwkJCWlmIChqc29udmFsLT50eXBlICE9IGpidkJpbmFy eSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiZXhwZWN0ZWQgSlNPTiBzdHJ1Y3QgZm9yICUl UiBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlw ZSkpOworCQkJZXhwYW5kX2pzb252YWxfcm9sZShidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisJ fQorCisJaWYgKGZtdCkKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IHNxbGVycmNvbnRleHQucHJl dmlvdXM7CisKKwlyZXR1cm4gc3RyaW5nX2V4cGFuZGVkOworfQorCisvKgorICogSXRlcmF0ZSBv biB0aGUgZWxlbWVudHMgb2YgYSBKU09OIGFycmF5LCBleHBhbmRpbmcgZWFjaCBvbmUgaW50byB0 aGUgb3V0cHV0CisgKiBTdHJpbmdJbmZvIHBlciB0aGUgZ2l2ZW4gY29udmVyc2lvbiBzcGVjaWZp ZXIsIHNlcGFyYXRlZCBieSB0aGUgZ2l2ZW4KKyAqIHNlcGFyYXRvci4KKyAqLworc3RhdGljIHZv aWQKK2V4cGFuZF9qc29uYl9hcnJheShTdHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCisJCQkJ ICAgSnNvbmJWYWx1ZSAqanNvbmFyciwgY2hhciAqYXJyYXlzZXAsIGNvbnZTcGVjaWZpZXIgc3Bl Y2lmaWVyLAorCQkJCSAgIGNvbnN0IGNoYXIgKmZtdCkKK3sKKwlFcnJvckNvbnRleHRDYWxsYmFj ayBzcWxlcnJjb250ZXh0OworCUpzb25iQ29udGFpbmVyICpjb250YWluZXI7CisJSnNvbmJJdGVy YXRvciAqaXQ7CisJSnNvbmJWYWx1ZQl2OworCWludAkJCXR5cGU7CisJYm9vbAkJZmlyc3QgPSB0 cnVlOworCVN0cmluZ0luZm9EYXRhIGFycmF5ZWxlbTsKKworCS8qIElmIHdlIHdlcmUgZ2l2ZW4g YSBmb3JtYXQgc3RyaW5nLCBzZXR1cCBhbiBlcmVwb3J0KCkgY29udGV4dCBjYWxsYmFjayAqLwor CWlmIChmbXQpCisJeworCQlzcWxlcnJjb250ZXh0LmNhbGxiYWNrID0gZm10c3RyX2Vycm9yX2Nh bGxiYWNrOworCQlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lkICopIGZtdDsKKwkJc3FsZXJyY29u dGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJCWVycm9yX2NvbnRleHRfc3Rh Y2sgPSAmc3FsZXJyY29udGV4dDsKKwl9CisKKwlpZiAoIWpzb25hcnIpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQll cnJtc2coImVsZW1lbnQgXCIlc1wiIG5vdCBmb3VuZCIsIHBhcmFtKSk7CisKKwlpZiAoanNvbmFy ci0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wi IGlzIG5vdCBhIEpTT04gYXJyYXkiLCBwYXJhbSkpOworCisJY29udGFpbmVyID0ganNvbmFyci0+ dmFsLmJpbmFyeS5kYXRhOworCWlmICghSnNvbkNvbnRhaW5lcklzQXJyYXkoY29udGFpbmVyKSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IGEgSlNPTiBhcnJheSIs IHBhcmFtKSk7CisKKwlpbml0U3RyaW5nSW5mbygmYXJyYXllbGVtKTsKKworCWl0ID0gSnNvbmJJ dGVyYXRvckluaXQoY29udGFpbmVyKTsKKwl3aGlsZSAoKHR5cGUgPSBKc29uYkl0ZXJhdG9yTmV4 dCgmaXQsICZ2LCB0cnVlKSkgIT0gV0pCX0RPTkUpCisJeworCQlpZiAodHlwZSA9PSBXSkJfRUxF TSkKKwkJeworCQkJcmVzZXRTdHJpbmdJbmZvKCZhcnJheWVsZW0pOworCisJCQlpZiAoZXhwYW5k X29uZV9qc29uYl9lbGVtZW50KCZhcnJheWVsZW0sIHBhcmFtLCAmdiwgc3BlY2lmaWVyLCBOVUxM KSkKKwkJCXsKKwkJCQlpZiAoIWZpcnN0KQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgYXJyYXlzZXApOworCisJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhidWYsIGFycmF5ZWxl bS5kYXRhLCBhcnJheWVsZW0ubGVuKTsKKwkJCQlmaXJzdCA9IGZhbHNlOworCQkJfQorCQl9CisJ fQorCisJaWYgKGZtdCkKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IHNxbGVycmNvbnRleHQucHJl dmlvdXM7Cit9CisKKy8qCisgKiBXb3JraG9yc2UgZm9yIGRkbF9kZXBhcnNlX2V4cGFuZF9jb21t YW5kLgorICovCitjaGFyICoKK2RlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25f c3RyKQoreworCURhdHVtCQlkOworCUpzb25iCSAgICpqc29uYjsKKwlTdHJpbmdJbmZvCWJ1ZiA9 IChTdHJpbmdJbmZvKSBwYWxsb2MwKHNpemVvZihTdHJpbmdJbmZvRGF0YSkpOworCisJaW5pdFN0 cmluZ0luZm8oYnVmKTsKKworCWQgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBQb2lu dGVyR2V0RGF0dW0oanNvbl9zdHIpKTsKKwlqc29uYiA9IChKc29uYiAqKSBEYXR1bUdldFBvaW50 ZXIoZCk7CisKKwlleHBhbmRfZm10X3JlY3Vyc2l2ZShidWYsICZqc29uYi0+cm9vdCk7CisKKwly ZXR1cm4gYnVmLT5kYXRhOworfQorCisvKi0tLS0tLQorICogUmV0dXJucyBhIGZvcm1hdHRlZCBz dHJpbmcgZnJvbSBhIEpTT04gb2JqZWN0LgorICoKKyAqIFRoZSBzdGFydGluZyBwb2ludCBpcyB0 aGUgZWxlbWVudCBuYW1lZCAiZm10IiAod2hpY2ggbXVzdCBiZSBhIHN0cmluZykuCisgKiBUaGlz IGZvcm1hdCBzdHJpbmcgbWF5IGNvbnRhaW4gemVybyBvciBtb3JlICUtZXNjYXBlcywgd2hpY2gg Y29uc2lzdCBvZiBhbgorICogZWxlbWVudCBuYW1lIGVuY2xvc2VkIGluIHsgfSwgcG9zc2libHkg Zm9sbG93ZWQgYnkgYSBjb252ZXJzaW9uIG1vZGlmaWVyLAorICogZm9sbG93ZWQgYnkgYSBjb252 ZXJzaW9uIHNwZWNpZmllci4gIFBvc3NpYmxlIGNvbnZlcnNpb24gc3BlY2lmaWVycyBhcmU6Cisg KgorICogJQkJZXhwYW5kIHRvIGEgbGl0ZXJhbCAlCisgKiBJCQlleHBhbmQgYXMgYSBzaW5nbGUs IG5vbi1xdWFsaWZpZWQgaWRlbnRpZmllcgorICogRAkJZXhwYW5kIGFzIGEgcG9zc2libHktcXVh bGlmaWVkIGlkZW50aWZpZXIKKyAqIFQJCWV4cGFuZCBhcyBhIHR5cGUgbmFtZQorICogTwkJZXhw YW5kIGFzIGFuIG9wZXJhdG9yIG5hbWUKKyAqIEwJCWV4cGFuZCBhcyBhIHN0cmluZyBsaXRlcmFs IChxdW90ZSB1c2luZyBzaW5nbGUgcXVvdGVzKQorICogcwkJZXhwYW5kIGFzIGEgc2ltcGxlIHN0 cmluZyAobm8gcXVvdGluZykKKyAqIG4JCWV4cGFuZCBhcyBhIHNpbXBsZSBudW1iZXIgKG5vIHF1 b3RpbmcpCisgKiBSCQlleHBhbmQgYXMgYSByb2xlIG5hbWUgKHBvc3NpYmx5IHF1b3RlZCBuYW1l LCBvciBQVUJMSUMpCisgKgorICogVGhlIGVsZW1lbnQgbmFtZSBtYXkgaGF2ZSBhbiBvcHRpb25h bCBzZXBhcmF0b3Igc3BlY2lmaWNhdGlvbiBwcmVjZWRlZAorICogYnkgYSBjb2xvbi4gIEl0cyBw cmVzZW5jZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZQorICog YW4gYXJyYXk7IHRoZSBzcGVjaWZpZWQgc2VwYXJhdG9yIGlzIHVzZWQgdG8gam9pbiB0aGUgYXJy YXkgZWxlbWVudHMuCisgKi0tLS0tLQorICovCitEYXR1bQorZGRsX2RlcGFyc2VfZXhwYW5kX2Nv bW1hbmQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwl0ZXh0CSAgICpqc29uID0gUEdfR0VUQVJHX1RF WFRfUCgwKTsKKwljaGFyCSAgICpqc29uX3N0cjsKKworCWpzb25fc3RyID0gdGV4dF90b19jc3Ry aW5nKGpzb24pOworCisJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9k ZGxfanNvbl90b19zdHJpbmcoanNvbl9zdHIpKSk7Cit9CisKKy8qCisgKiBFcnJvciBjb250ZXh0 IGNhbGxiYWNrIGZvciBKU09OIGZvcm1hdCBzdHJpbmcgZXhwYW5zaW9uLgorICoKKyAqIFhYWDog aW5kaWNhdGUgd2hpY2ggZWxlbWVudCB3ZSdyZSBleHBhbmRpbmcsIGlmIGFwcGxpY2FibGUuCisg Ki8KK3N0YXRpYyB2b2lkCitmbXRzdHJfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQoreworCWVy cmNvbnRleHQoIndoaWxlIGV4cGFuZGluZyBmb3JtYXQgc3RyaW5nIFwiJXNcIiIsIChjaGFyICop IGFyZyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2Vy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggZDRiMDBkMWE4 Mi4uY2ZjMzZiMDJkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMzYs OCArMzYsMTAgQEAKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZXIuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJ0Y29wL2RlcGFyc2VfdXRpbGl0 eS5oIgorI2luY2x1ZGUgInRjb3AvZGRsX2RlcGFyc2UuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxp dHkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgpAQCAtNDgsNDUgKzUwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogCi10eXBlZGVmIHN0cnVjdCBFdmVudFRyaWdnZXJRdWVyeVN0YXRl Ci17Ci0JLyogbWVtb3J5IGNvbnRleHQgZm9yIHRoaXMgc3RhdGUncyBvYmplY3RzICovCi0JTWVt b3J5Q29udGV4dCBjeHQ7Ci0KLQkvKiBzcWxfZHJvcCAqLwotCXNsaXN0X2hlYWQJU1FMRHJvcExp c3Q7Ci0JYm9vbAkJaW5fc3FsX2Ryb3A7Ci0KLQkvKiB0YWJsZV9yZXdyaXRlICovCi0JT2lkCQkJ dGFibGVfcmV3cml0ZV9vaWQ7CS8qIEludmFsaWRPaWQsIG9yIHNldCBmb3IgdGFibGVfcmV3cml0 ZQotCQkJCQkJCQkJICogZXZlbnQgKi8KLQlpbnQJCQl0YWJsZV9yZXdyaXRlX3JlYXNvbjsJLyog QVRfUkVXUklURSByZWFzb24gKi8KLQotCS8qIFN1cHBvcnQgZm9yIGNvbW1hbmQgY29sbGVjdGlv biAqLwotCWJvb2wJCWNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVkOwotCUNvbGxlY3RlZENvbW1h bmQgKmN1cnJlbnRDb21tYW5kOwotCUxpc3QJICAgKmNvbW1hbmRMaXN0OwkvKiBsaXN0IG9mIENv bGxlY3RlZENvbW1hbmQ7IHNlZQotCQkJCQkJCQkgKiBkZXBhcnNlX3V0aWxpdHkuaCAqLwotCXN0 cnVjdCBFdmVudFRyaWdnZXJRdWVyeVN0YXRlICpwcmV2aW91czsKLX0gRXZlbnRUcmlnZ2VyUXVl cnlTdGF0ZTsKLQotc3RhdGljIEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKmN1cnJlbnRFdmVudFRy aWdnZXJTdGF0ZSA9IE5VTEw7Ci0KLS8qIFN1cHBvcnQgZm9yIGRyb3BwZWQgb2JqZWN0cyAqLwot dHlwZWRlZiBzdHJ1Y3QgU1FMRHJvcE9iamVjdAotewotCU9iamVjdEFkZHJlc3MgYWRkcmVzczsK LQljb25zdCBjaGFyICpzY2hlbWFuYW1lOwotCWNvbnN0IGNoYXIgKm9iam5hbWU7Ci0JY29uc3Qg Y2hhciAqb2JqaWRlbnRpdHk7Ci0JY29uc3QgY2hhciAqb2JqZWN0dHlwZTsKLQlMaXN0CSAgICph ZGRybmFtZXM7Ci0JTGlzdAkgICAqYWRkcmFyZ3M7Ci0JYm9vbAkJb3JpZ2luYWw7Ci0JYm9vbAkJ bm9ybWFsOwotCWJvb2wJCWlzdGVtcDsKLQlzbGlzdF9ub2RlCW5leHQ7Ci19IFNRTERyb3BPYmpl Y3Q7CitFdmVudFRyaWdnZXJRdWVyeVN0YXRlICpjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgPSBO VUxMOwogCiBzdGF0aWMgdm9pZCBBbHRlckV2ZW50VHJpZ2dlck93bmVyX2ludGVybmFsKFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJCQkJSGVhcFR1cGxlIHR1cCwKQEAgLTEzMCw3ICs5NCw4IEBAIENy ZWF0ZUV2ZW50VHJpZ2dlcihDcmVhdGVFdmVudFRyaWdTdG10ICpzdG10KQogCWlmIChzdHJjbXAo c3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfc3RhcnQiKSAhPSAwICYmCiAJCXN0cmNtcChz dG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9lbmQiKSAhPSAwICYmCiAJCXN0cmNtcChzdG10 LT5ldmVudG5hbWUsICJzcWxfZHJvcCIpICE9IDAgJiYKLQkJc3RyY21wKHN0bXQtPmV2ZW50bmFt ZSwgInRhYmxlX3Jld3JpdGUiKSAhPSAwKQorCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAidGFi bGVfcmV3cml0ZSIpICE9IDAgJiYKKwkJc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgInRhYmxlX2lu aXRfd3JpdGUiKSAhPSAwKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZXZlbnQgbmFtZSBcIiVz XCIiLApAQCAtMTU2LDcgKzEyMSw4IEBAIENyZWF0ZUV2ZW50VHJpZ2dlcihDcmVhdGVFdmVudFRy aWdTdG10ICpzdG10KQogCS8qIFZhbGlkYXRlIHRhZyBsaXN0LCBpZiBhbnkuICovCiAJaWYgKChz dHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfc3RhcnQiKSA9PSAwIHx8CiAJCSBz dHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfZW5kIikgPT0gMCB8fAotCQkgc3Ry Y21wKHN0bXQtPmV2ZW50bmFtZSwgInNxbF9kcm9wIikgPT0gMCkKKwkJIHN0cmNtcChzdG10LT5l dmVudG5hbWUsICJzcWxfZHJvcCIpID09IDAgfHwKKwkJIHN0cmNtcChzdG10LT5ldmVudG5hbWUs ICJ0YWJsZV9pbml0X3dyaXRlIikgPT0gMCkKIAkJJiYgdGFncyAhPSBOVUxMKQogCQl2YWxpZGF0 ZV9kZGxfdGFncygidGFnIiwgdGFncyk7CiAJZWxzZSBpZiAoc3RyY21wKHN0bXQtPmV2ZW50bmFt ZSwgInRhYmxlX3Jld3JpdGUiKSA9PSAwCkBAIC01NjAsNiArNTI2LDcgQEAgRXZlbnRUcmlnZ2Vy Q29tbW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCUxpc3QJICAgKmNhY2hlbGlzdDsKIAlMaXN0 Q2VsbCAgICpsYzsKIAlMaXN0CSAgICpydW5saXN0ID0gTklMOworCWludAkJCXB1Yl9kZXBhcnNl X2Z1bmNfY250ID0gMDsKIAogCS8qCiAJICogV2Ugd2FudCB0aGUgbGlzdCBvZiBjb21tYW5kIHRh Z3MgZm9yIHdoaWNoIHRoaXMgcHJvY2VkdXJlIGlzIGFjdHVhbGx5CkBAIC01ODIsNyArNTQ5LDgg QEAgRXZlbnRUcmlnZ2VyQ29tbW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCQlkYmd0YWcgPSBD cmVhdGVDb21tYW5kVGFnKHBhcnNldHJlZSk7CiAJCWlmIChldmVudCA9PSBFVlRfRERMQ29tbWFu ZFN0YXJ0IHx8CiAJCQlldmVudCA9PSBFVlRfRERMQ29tbWFuZEVuZCB8fAotCQkJZXZlbnQgPT0g RVZUX1NRTERyb3ApCisJCQlldmVudCA9PSBFVlRfU1FMRHJvcCB8fAorCQkJZXZlbnQgPT0gRVZU X1RhYmxlSW5pdFdyaXRlKQogCQl7CiAJCQlpZiAoIWNvbW1hbmRfdGFnX2V2ZW50X3RyaWdnZXJf b2soZGJndGFnKSkKIAkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBjb21tYW5kIHRhZyBcIiVz XCIiLCBHZXRDb21tYW5kVGFnTmFtZShkYmd0YWcpKTsKQEAgLTYwOSw2ICs1NzcsMTIgQEAgRXZl bnRUcmlnZ2VyQ29tbW9uU2V0dXAoTm9kZSAqcGFyc2V0cmVlLAogCSAqIG9uY2Ugd2UgZG8gYW55 dGhpbmcgYXQgYWxsIHRoYXQgdG91Y2hlcyB0aGUgY2F0YWxvZ3MsIGFuIGludmFsaWRhdGlvbgog CSAqIG1pZ2h0IGxlYXZlIGNhY2hlbGlzdCBwb2ludGluZyBhdCBnYXJiYWdlLCBzbyB3ZSBtdXN0 IGRvIHRoaXMgYmVmb3JlIHdlCiAJICogY2FuIGRvIG11Y2ggZWxzZS4KKwkgKgorCSAqIFNwZWNp YWwgaGFuZGxpbmcgZm9yIGV2ZW50IHRyaWdnZXJzIGNyZWF0ZWQgYXMgcGFydCBvZiBwdWJsaWNh dGlvbnMuCisJICogSWYgdGhlcmUgYXJlIG11bHRpcGxlIHB1YmxpY2F0aW9ucyB3aGljaCBwdWJs aXNoIGRkbHMsIG9ubHkgb25lIHNldCBvZiB0aGUKKwkgKiBldmVudCB0cmlnZ2VyIGZ1bmN0aW9u cyBuZWVkIHRvIGJlIGludm9rZWQuIFRoZSBkZGwgZGVwYXJzZSBldmVudCB0cmlnZ2VycworCSAq IHdyaXRlIHRvIFdBTCwgc28gbm8gbmVlZCB0byBkdXBsaWNhdGUgaXQgYXMgYWxsIHdhbHNlbmRl cnMgd2lsbCByZWFkIHRoZSBzYW1lCisJICogV0FMLgogCSAqLwogCWZvcmVhY2gobGMsIGNhY2hl bGlzdCkKIAl7CkBAIC02MTYsOCArNTkwLDI1IEBAIEV2ZW50VHJpZ2dlckNvbW1vblNldHVwKE5v ZGUgKnBhcnNldHJlZSwKIAogCQlpZiAoZmlsdGVyX2V2ZW50X3RyaWdnZXIodGFnLCBpdGVtKSkK IAkJewotCQkJLyogV2UgbXVzdCBwbGFuIHRvIGZpcmUgdGhpcyB0cmlnZ2VyLiAqLwotCQkJcnVu bGlzdCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3QsIGl0ZW0tPmZub2lkKTsKKwkJCXN0YXRpYyBjb25z dCBjaGFyICp0cmlnZ2VyX2Z1bmNfcHJlZml4ID0gInB1YmxpY2F0aW9uX2RlcGFyc2VfJXMiOwor CQkJY2hhcgkJdHJpZ2dlcl9mdW5jX25hbWVbTkFNRURBVEFMRU5dOworCQkJT2lkCQkJcHViX2Z1 bmNvaWQ7CisJCQlMaXN0IAkJKnB1YmZ1bmNuYW1lOworCisJCQkvKiBHZXQgZnVuY3Rpb24gb2lk IG9mIHRoZSBwdWJsaWNhdGlvbidzIGRkbCBkZXBhcnNlIGV2ZW50IHRyaWdnZXIgKi8KKwkJCXNu cHJpbnRmKHRyaWdnZXJfZnVuY19uYW1lLCBzaXplb2YodHJpZ2dlcl9mdW5jX25hbWUpLCB0cmln Z2VyX2Z1bmNfcHJlZml4LAorCQkJCQkgZXZlbnRzdHIpOworCQkJcHViZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSh0cmlnZ2VyX2Z1bmNfbmFtZSk7CisJCQlwdWJfZnVuY29pZCA9IExvb2t1cEZ1 bmNOYW1lKHB1YmZ1bmNuYW1lLCAwLCBOVUxMLCB0cnVlKTsKKworCQkJaWYgKGl0ZW0tPmZub2lk ICE9IHB1Yl9mdW5jb2lkKQorCQkJCXJ1bmxpc3QgPSBsYXBwZW5kX29pZChydW5saXN0LCBpdGVt LT5mbm9pZCk7CisJCQllbHNlCisJCQl7CisJCQkJLyogT25seSB0aGUgZmlyc3QgZGRsIGRlcGFy c2UgZXZlbnQgdHJpZ2dlciBuZWVkcyB0byBiZSBpbnZva2VkICovCisJCQkJaWYgKHB1Yl9kZXBh cnNlX2Z1bmNfY250KysgPT0gMCkKKwkJCQkJcnVubGlzdCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3Qs IGl0ZW0tPmZub2lkKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtODY1LDYgKzg1NiwxNDAgQEAgRXZl bnRUcmlnZ2VyVGFibGVSZXdyaXRlKE5vZGUgKnBhcnNldHJlZSwgT2lkIHRhYmxlT2lkLCBpbnQg cmVhc29uKQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKKy8qCisgKiBFdmVudFRy aWdnZXJUYWJsZUluaXRXcml0ZVN0YXJ0CisgKiAgICAgUHJlcGFyZSB0byByZWNlaXZlIGRhdGEg b24gYW4gQ1JFQVRFIFRBQkxFIEFTL1NFTEVUIElOVE8gY29tbWFuZCBhYm91dAorICogICAgIHRv IGJlIGV4ZWN1dGVkLgorICovCit2b2lkCitFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZVN0YXJ0 KE5vZGUgKnBhcnNldHJlZSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRD b21tYW5kICpjb21tYW5kOworCUNyZWF0ZVRhYmxlQXNTdG10ICpzdG10ID0gKENyZWF0ZVRhYmxl QXNTdG10ICopcGFyc2V0cmVlOworCisJLyogaWdub3JlIGlmIGV2ZW50IHRyaWdnZXIgY29udGV4 dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICovCisJaWYgKCFjdXJyZW50RXZlbnRU cmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5kQ29sbGVj dGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKKworCWNvbW1hbmQgPSBwYWxsb2Mo c2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKKworCWNvbW1hbmQtPnR5cGUgPSAoc3RtdC0+b2Jq dHlwZSA9PSBPQkpFQ1RfVEFCTEUpID8gU0NUX0NyZWF0ZVRhYmxlQXMgOiBTQ1RfU2ltcGxlOwor CWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwljb21tYW5kLT5k LmN0YXMuYWRkcmVzcyA9IEludmFsaWRPYmplY3RBZGRyZXNzOworCWNvbW1hbmQtPmQuY3Rhcy5y ZWFsX2NyZWF0ZSA9IE5VTEw7CisJY29tbWFuZC0+cGFyc2V0cmVlID0gY29weU9iamVjdChwYXJz ZXRyZWUpOworCisJY29tbWFuZC0+cGFyZW50ID0gY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5j dXJyZW50Q29tbWFuZDsKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5k ID0gY29tbWFuZDsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCisvKgor ICogRXZlbnRUcmlnZ2VyVGFibGVJbml0V3JpdGVFbmQKKyAqCQlGaW5pc2ggdXAgc2F2aW5nIGFu IENSRUFURSBUQUJMRSBBUy9TRUxFQ1QgSU5UTyBjb21tYW5kLgorICoKKyAqIEZJWE1FIHRoaXMg QVBJIGlzbid0IGNvbnNpZGVyaW5nIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGFuIHhhY3Qvc3VieGFj dCBpcworICogYWJvcnRlZCBwYXJ0d2F5IHRocm91Z2guICBQcm9iYWJseSBpdCdzIGJlc3QgdG8g YWRkIGFuCisgKiBBdEVPU3ViWGFjdF9FdmVudFRyaWdnZXJzKCkgdG8gZml4IHRoaXMuCisgKi8K K3ZvaWQKK0V2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlRW5kKE9iamVjdEFkZHJlc3MgYWRkcmVz cykKK3sKKwlDb2xsZWN0ZWRDb21tYW5kICpwYXJlbnQ7CisJQ3JlYXRlVGFibGVBc1N0bXQgKnN0 bXQ7CisKKwkvKiBpZ25vcmUgaWYgZXZlbnQgdHJpZ2dlciBjb250ZXh0IG5vdCBzZXQsIG9yIGNv bGxlY3Rpb24gZGlzYWJsZWQgKi8KKwlpZiAoIWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZSB8fAor CQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVkKQor CQlyZXR1cm47CisKKwlzdG10ID0gIChDcmVhdGVUYWJsZUFzU3RtdCAqKWN1cnJlbnRFdmVudFRy aWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPnBhcnNldHJlZTsKKworCWlmIChzdG10LT5vYmp0 eXBlID09IE9CSkVDVF9UQUJMRSkKKwl7CisJCXBhcmVudCA9IGN1cnJlbnRFdmVudFRyaWdnZXJT dGF0ZS0+Y3VycmVudENvbW1hbmQtPnBhcmVudDsKKworCQlwZnJlZShjdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kKTsKKworCQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUt PmN1cnJlbnRDb21tYW5kID0gcGFyZW50OworCX0KKwllbHNlCisJeworCQlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKKworCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5jeHQpOworCisJCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVu dENvbW1hbmQtPmQuc2ltcGxlLmFkZHJlc3MgPSBhZGRyZXNzOworCQljdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmNvbW1hbmRMaXN0ID0KKwkJCWxhcHBlbmQoY3VycmVudEV2ZW50VHJpZ2dlclN0 YXRlLT5jb21tYW5kTGlzdCwKKwkJCQkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50 Q29tbWFuZCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJfQorfQorCisv KgorICogRmlyZSB0YWJsZV9pbml0X3Jld3JpdGUgdHJpZ2dlcnMuCisgKi8KK3ZvaWQKK0V2ZW50 VHJpZ2dlclRhYmxlSW5pdFdyaXRlKE5vZGUgKnJlYWxfY3JlYXRlLCBPYmplY3RBZGRyZXNzIGFk ZHJlc3MpCit7CisJTGlzdAkgICAqcnVubGlzdDsKKwlFdmVudFRyaWdnZXJEYXRhIHRyaWdkYXRh OworCUNvbGxlY3RlZENvbW1hbmQgKmNvbW1hbmQ7CisKKwkvKgorCSAqIFNlZSBFdmVudFRyaWdn ZXJERExDb21tYW5kU3RhcnQgZm9yIGEgZGlzY3Vzc2lvbiBhYm91dCB3aHkgZXZlbnQKKwkgKiB0 cmlnZ2VycyBhcmUgZGlzYWJsZWQgaW4gc2luZ2xlIHVzZXIgbW9kZS4KKwkgKi8KKwlpZiAoIUlz VW5kZXJQb3N0bWFzdGVyKQorCQlyZXR1cm47CisKKwkvKgorCSAqIEFsc28gZG8gbm90aGluZyBp ZiBvdXIgc3RhdGUgaXNuJ3Qgc2V0IHVwLCB3aGljaCBpdCB3b24ndCBiZSBpZiB0aGVyZQorCSAq IHdlcmVuJ3QgYW55IHJlbGV2YW50IGV2ZW50IHRyaWdnZXJzIGF0IHRoZSBzdGFydCBvZiB0aGUg Y3VycmVudCBEREwKKwkgKiBjb21tYW5kLiAgVGhpcyB0ZXN0IG1pZ2h0IHRoZXJlZm9yZSBzZWVt IG9wdGlvbmFsLCBidXQgaXQncworCSAqICpuZWNlc3NhcnkqLCBiZWNhdXNlIEV2ZW50VHJpZ2dl ckNvbW1vblNldHVwIG1pZ2h0IGZpbmQgdHJpZ2dlcnMgdGhhdAorCSAqIGRpZG4ndCBleGlzdCBh dCB0aGUgdGltZSB0aGUgY29tbWFuZCBzdGFydGVkLgorCSAqLworCWlmICghY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlKQorCQlyZXR1cm47CisKKwkvKiBEbyBub3RoaW5nIGlmIG5vIGNvbW1hbmQg d2FzIGNvbGxlY3RlZC4gKi8KKwlpZiAoIWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVu dENvbW1hbmQpCisJCXJldHVybjsKKworCWNvbW1hbmQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3Rh dGUtPmN1cnJlbnRDb21tYW5kOworCisJcnVubGlzdCA9IEV2ZW50VHJpZ2dlckNvbW1vblNldHVw KGNvbW1hbmQtPnBhcnNldHJlZSwKKwkJCQkJCQkJCSAgRVZUX1RhYmxlSW5pdFdyaXRlLAorCQkJ CQkJCQkJICAidGFibGVfaW5pdF93cml0ZSIsCisJCQkJCQkJCQkgICZ0cmlnZGF0YSk7CisJaWYg KHJ1bmxpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKiBTZXQgdGhlIHJlYWwgQ3JlYXRlVGFi bGUgc3RhdG1lbnQgYW5kIG9iamVjdCBhZGRyZXNzICovCisJY29tbWFuZC0+ZC5jdGFzLnJlYWxf Y3JlYXRlID0gcmVhbF9jcmVhdGU7CisJY29tbWFuZC0+ZC5jdGFzLmFkZHJlc3MgPSBhZGRyZXNz OworCisJLyogUnVuIHRoZSB0cmlnZ2Vycy4gKi8KKwlFdmVudFRyaWdnZXJJbnZva2UocnVubGlz dCwgJnRyaWdkYXRhKTsKKworCS8qIENsZWFudXAuICovCisJbGlzdF9mcmVlKHJ1bmxpc3QpOwor CisJLyoKKwkgKiBNYWtlIHN1cmUgYW55dGhpbmcgdGhlIGV2ZW50IHRyaWdnZXJzIGRpZCB3aWxs IGJlIHZpc2libGUgdG8gdGhlIG1haW4KKwkgKiBjb21tYW5kLgorCSAqLworCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7Cit9CisKIC8qCiAgKiBJbnZva2UgZWFjaCBldmVudCB0cmlnZ2VyIGlu IGEgbGlzdCBvZiBldmVudCB0cmlnZ2Vycy4KICAqLwpAQCAtMTE0Niw3ICsxMjcxLDggQEAgdHJh Y2tEcm9wcGVkT2JqZWN0c05lZWRlZCh2b2lkKQogCSAqLwogCXJldHVybiAoRXZlbnRDYWNoZUxv b2t1cChFVlRfU1FMRHJvcCkgIT0gTklMKSB8fAogCQkoRXZlbnRDYWNoZUxvb2t1cChFVlRfVGFi bGVSZXdyaXRlKSAhPSBOSUwpIHx8Ci0JCShFdmVudENhY2hlTG9va3VwKEVWVF9ERExDb21tYW5k RW5kKSAhPSBOSUwpOworCQkoRXZlbnRDYWNoZUxvb2t1cChFVlRfRERMQ29tbWFuZEVuZCkgIT0g TklMKSB8fAorCQkoRXZlbnRDYWNoZUxvb2t1cChFVlRfVGFibGVJbml0V3JpdGUpICE9IE5JTCk7 CiB9CiAKIC8qCkBAIC0xNTM3LDYgKzE2NjMsNyBAQCBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3Rh cnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLmNsYXNzSWQgPSBS ZWxhdGlvblJlbGF0aW9uSWQ7CiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkID0gSW52 YWxpZE9pZDsKKwljb21tYW5kLT5kLmFsdGVyVGFibGUucmV3cml0ZSA9IGZhbHNlOwogCWNvbW1h bmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0gTklMOwogCWNvbW1hbmQtPnBhcnNldHJlZSA9IGNv cHlPYmplY3QocGFyc2V0cmVlKTsKIApAQCAtMTU3MCw3ICsxNjk3LDcgQEAgRXZlbnRUcmlnZ2Vy QWx0ZXJUYWJsZVJlbGlkKE9pZCBvYmplY3RJZCkKICAqIGludGVybmFsbHksIHNvIHRoYXQncyBh bGwgdGhhdCB0aGlzIGNvZGUgbmVlZHMgdG8gaGFuZGxlIGF0IHRoZSBtb21lbnQuCiAgKi8KIHZv aWQKLUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwgT2Jq ZWN0QWRkcmVzcyBhZGRyZXNzKQorRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQo Tm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsIGJvb2wgcmV3cml0ZSkKIHsKIAlN ZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlDb2xsZWN0ZWRBVFN1YmNtZCAqbmV3c3ViOwpAQCAtMTU5 MCwxMiArMTcxNywxNDAgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQoTm9k ZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MpCiAJbmV3c3ViLT5hZGRyZXNzID0gYWRk cmVzczsKIAluZXdzdWItPnBhcnNldHJlZSA9IGNvcHlPYmplY3Qoc3ViY21kKTsKIAorCWN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRl IHw9IHJld3JpdGU7CisJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ ZC5hbHRlclRhYmxlLnN1YmNtZHMgPQorCQlsYXBwZW5kKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0 ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzLCBuZXdzdWIpOworCisJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBFdmVudFRyaWdnZXJBbHRl clR5cGVTdGFydAorICoJCVNhdmUgZGF0YSBhYm91dCBhIHNpbmdsZSBwYXJ0IG9mIGFuIEFMVEVS IFRZUEUuCisgKgorICogQUxURVIgVEFCTEUgY2FuIGhhdmUgbXVsdGlwbGUgc3ViY29tbWFuZHMg d2hpY2ggbWlnaHQgaW5jbHVkZSBEUk9QIENPTFVNTgorICogY29tbWFuZCBhbmQgQUxURVIgVFlQ RSByZWZlcnJpbmcgdGhlIGRyb3AgY29sdW1uIGluIFVTSU5HIGV4cHJlc3Npb24uCisgKiBBcyB0 aGUgZHJvcHBlZCBjb2x1bW4gY2Fubm90IGJlIGFjY2Vzc2VkIGFmdGVyIHRoZSBleGVjdXRpb24g b2YgRFJPUCBDT0xVTU4sCisgKiBhIHNwZWNpYWwgdHJpZ2dlciBpcyByZXF1aXJlZCB0byBoYW5k bGUgdGhpcyBjYXNlIGJlZm9yZSB0aGUgZHJvcCBjb2x1bW4gaXMKKyAqIGV4ZWN1dGVkLgorICov Cit2b2lkCitFdmVudFRyaWdnZXJBbHRlclR5cGVTdGFydChBbHRlclRhYmxlQ21kICpzdWJjbWQs IFJlbGF0aW9uIHJlbCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRBVFN1 YmNtZCAqbmV3c3ViOworCUNvbHVtbkRlZiAgKmRlZjsKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsK KwlIZWFwVHVwbGUJaGVhcFR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRUdXA7CisJQXR0ck51 bWJlcglhdHRudW07CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCisJLyogaWdub3JlIGlmIGV2 ZW50IHRyaWdnZXIgY29udGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICovCisJ aWYgKCFjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0 YXRlLT5jb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJQXNzZXJ0KElz QShzdWJjbWQsIEFsdGVyVGFibGVDbWQpKTsKKwlBc3NlcnQoc3ViY21kLT5zdWJ0eXBlID09IEFU X0FsdGVyQ29sdW1uVHlwZSk7CisJQXNzZXJ0KGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3Vy cmVudENvbW1hbmQgIT0gTlVMTCk7CisJQXNzZXJ0KE9pZElzVmFsaWQoY3VycmVudEV2ZW50VHJp Z2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkKSk7CisKKwlk ZWYgPSAoQ29sdW1uRGVmICopIHN1YmNtZC0+ZGVmOworCUFzc2VydChJc0EoZGVmLCBDb2x1bW5E ZWYpKTsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmN4dCk7CisKKwluZXdzdWIgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZEFUU3Vi Y21kKSk7CisJbmV3c3ViLT5wYXJzZXRyZWUgPSAoTm9kZSAqKWNvcHlPYmplY3Qoc3ViY21kKTsK KworCWF0dHJlbGF0aW9uID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKKworCS8qIExvb2sgdXAgdGhlIHRhcmdldCBjb2x1bW4gKi8KKwloZWFwVHVw ID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN1YmNt ZC0+bmFtZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGhlYXBUdXApKSAvKiBzaG91bGRuJ3Qg aGFwcGVuICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9DT0xVTU4pLAorCQkJCWVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIg ZG9lcyBub3QgZXhpc3QiLAorCQkJCQkgICBzdWJjbWQtPm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCkpKTsKKwlhdHRUdXAgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCho ZWFwVHVwKTsKKwlhdHRudW0gPSBhdHRUdXAtPmF0dG51bTsKKworCU9iamVjdEFkZHJlc3NTdWJT ZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJUmVsYXRpb25HZXRSZWxpZChy ZWwpLCBhdHRudW0pOworCWhlYXBfZnJlZXR1cGxlKGhlYXBUdXApOworCXRhYmxlX2Nsb3NlKGF0 dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwluZXdzdWItPmFkZHJlc3MgPSBhZGRyZXNz OworCisJaWYgKGRlZi0+cmF3X2RlZmF1bHQpCisJeworCQljaGFyCSAgICpkZWZleHByOworCisJ CWRlZmV4cHIgPSBub2RlVG9TdHJpbmcoZGVmLT5jb29rZWRfZGVmYXVsdCk7CisJCW5ld3N1Yi0+ dXNpbmdleHByID0gVGV4dERhdHVtR2V0Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwyKHBnX2dl dF9leHByLAorCQkJCQkJCQkJCQkJCQkJCQlDU3RyaW5nR2V0VGV4dERhdHVtKGRlZmV4cHIpLAor CQkJCQkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGlkKHJlbCkpKTsKKwl9CisJZWxzZQorCQlu ZXdzdWItPnVzaW5nZXhwciA9IE5VTEw7CisKIAljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUuc3ViY21kcyA9CiAJCWxhcHBlbmQoY3VycmVudEV2 ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMsIG5l d3N1Yik7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIH0KIAorLyoKKyAqIEV2 ZW50VHJpZ2dlckFsdGVyVHlwZUVuZAorICoJCUZpbmlzaCB1cCBzYXZpbmcgYW4gQUxURVIgVFlQ RSBjb21tYW5kLCBhbmQgYWRkIGl0IHRvIGNvbW1hbmQgbGlzdC4KKyAqLwordm9pZAorRXZlbnRU cmlnZ2VyQWx0ZXJUeXBlRW5kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBi b29sIHJld3JpdGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJQ29sbGVjdGVkQVRTdWJj bWQgKm5ld3N1YjsKKwlMaXN0Q2VsbCAgICpjZWxsOworCUNvbGxlY3RlZENvbW1hbmQgKmNtZDsK KwlBbHRlclRhYmxlQ21kICphbHRzdWJjbWQgPSAoQWx0ZXJUYWJsZUNtZCAqKXN1YmNtZDsKKwor CS8qIGlnbm9yZSBpZiBldmVudCB0cmlnZ2VyIGNvbnRleHQgbm90IHNldCwgb3IgY29sbGVjdGlv biBkaXNhYmxlZCAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlIHx8CisJCWN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQpCisJCXJldHVy bjsKKworCWNtZCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CisK KwlBc3NlcnQoSXNBKHN1YmNtZCwgQWx0ZXJUYWJsZUNtZCkpOworCUFzc2VydChjbWQgIT0gTlVM TCk7CisJQXNzZXJ0KE9pZElzVmFsaWQoY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQpKTsKKwor CWZvcmVhY2goY2VsbCwgY21kLT5kLmFsdGVyVGFibGUuc3ViY21kcykKKwl7CisJCUNvbGxlY3Rl ZEFUU3ViY21kICpzdWIgPSAoQ29sbGVjdGVkQVRTdWJjbWQgKikgbGZpcnN0KGNlbGwpOworCQlB bHRlclRhYmxlQ21kICpjb2xsY21kID0gKEFsdGVyVGFibGVDbWQgKikgc3ViLT5wYXJzZXRyZWU7 CisKKwkJaWYgKGNvbGxjbWQtPnN1YnR5cGUgPT0gYWx0c3ViY21kLT5zdWJ0eXBlICYmCisJCQlh ZGRyZXNzLmNsYXNzSWQgPT0gc3ViLT5hZGRyZXNzLmNsYXNzSWQgJiYKKwkJCWFkZHJlc3Mub2Jq ZWN0SWQgPT0gc3ViLT5hZGRyZXNzLm9iamVjdElkICYmCisJCQlhZGRyZXNzLm9iamVjdFN1Yklk ID09IHN1Yi0+YWRkcmVzcy5vYmplY3RTdWJJZCkKKwkJeworCQkJY21kLT5kLmFsdGVyVGFibGUu cmV3cml0ZSB8PSByZXdyaXRlOworCQkJcmV0dXJuOworCQl9CisJfQorCisJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKKworCW5l d3N1YiA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQVRTdWJjbWQpKTsKKwluZXdzdWItPmFkZHJl c3MgPSBhZGRyZXNzOworCW5ld3N1Yi0+cGFyc2V0cmVlID0gY29weU9iamVjdChzdWJjbWQpOwor CisJY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSB8PSByZXdyaXRlOworCWNtZC0+ZC5hbHRlclRh YmxlLnN1YmNtZHMgPSBsYXBwZW5kKGNtZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMsIG5ld3N1Yik7 CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIEV2ZW50VHJp Z2dlckFsdGVyVGFibGVFbmQKICAqCQlGaW5pc2ggdXAgc2F2aW5nIGFuIEFMVEVSIFRBQkxFIGNv bW1hbmQsIGFuZCBhZGQgaXQgdG8gY29tbWFuZCBsaXN0LgpAQCAtMTg2Myw2ICsyMTE4LDcgQEAg cGdfZXZlbnRfdHJpZ2dlcl9kZGxfY29tbWFuZHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2Ug U0NUX0FsdGVyT3BGYW1pbHk6CiAJCQljYXNlIFNDVF9DcmVhdGVPcENsYXNzOgogCQkJY2FzZSBT Q1RfQWx0ZXJUU0NvbmZpZzoKKwkJCWNhc2UgU0NUX0NyZWF0ZVRhYmxlQXM6CiAJCQkJewogCQkJ CQljaGFyCSAgICppZGVudGl0eTsKIAkJCQkJY2hhcgkgICAqdHlwZTsKQEAgLTE4ODAsNiArMjEz Niw4IEBAIHBnX2V2ZW50X3RyaWdnZXJfZGRsX2NvbW1hbmRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJCQlhZGRyID0gY21kLT5kLmNyZWF0ZW9wYy5hZGRyZXNzOwogCQkJCQllbHNlIGlmIChjbWQt PnR5cGUgPT0gU0NUX0FsdGVyVFNDb25maWcpCiAJCQkJCQlhZGRyID0gY21kLT5kLmF0c2NmZy5h ZGRyZXNzOworCQkJCQllbHNlIGlmIChjbWQtPnR5cGUgPT0gU0NUX0NyZWF0ZVRhYmxlQXMpCisJ CQkJCQlhZGRyID0gY21kLT5kLmN0YXMuYWRkcmVzczsKIAogCQkJCQkvKgogCQkJCQkgKiBJZiBh biBvYmplY3Qgd2FzIGRyb3BwZWQgaW4gdGhlIHNhbWUgY29tbWFuZCB3ZSBtYXkgZW5kCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL21lc29uLmJ1aWxkCmluZGV4IDQyY2NlZDllYmUuLjI4NDRkMzY1MjEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL21lc29uLmJ1aWxkCkBAIC0xNyw2ICsxNyw4IEBAIGJhY2tlbmRfc291cmNlcyArPSBm aWxlcygKICAgJ2NvcHl0by5jJywKICAgJ2NyZWF0ZWFzLmMnLAogICAnZGJjb21tYW5kcy5jJywK KyAgJ2RkbF9kZXBhcnNlLmMnLAorICAnZGRsX2pzb24uYycsCiAgICdkZWZpbmUuYycsCiAgICdk aXNjYXJkLmMnLAogICAnZHJvcGNtZHMuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCBl ZjAxNDQ5Njc4Li40YmI3MzFkNWZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9z ZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTE3MDcs NiArMTcwNyw0OSBAQCBwcm9jZXNzX293bmVkX2J5KFJlbGF0aW9uIHNlcXJlbCwgTGlzdCAqb3du ZWRfYnksIGJvb2wgZm9yX2lkZW50aXR5KQogCQlyZWxhdGlvbl9jbG9zZSh0YWJsZXJlbCwgTm9M b2NrKTsKIH0KIAorLyoKKyAqIFJldHVybiBzZXF1ZW5jZSBwYXJhbWV0ZXJzLCBkZXRhaWxlZAor ICovCitTZXF1ZW5jZV92YWx1ZXMgKgorZ2V0X3NlcXVlbmNlX3ZhbHVlcyhPaWQgc2VxdWVuY2VJ ZCkKK3sKKwlCdWZmZXIgICAgICBidWY7CisJU2VxVGFibGUgICAgZWxtOworCVJlbGF0aW9uICAg IHNlcXJlbDsKKwlIZWFwVHVwbGUJc2VxdHVwbGU7CisJSGVhcFR1cGxlRGF0YSBzZXF0dXBsZWRh dGE7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOworCUZvcm1fcGdfc2VxdWVuY2VfZGF0YSBz ZXE7CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2YWx1ZXM7CisKKwlzZXF0dXBsZSA9IFNlYXJjaFN5 c0NhY2hlMShTRVFSRUxJRCwgc2VxdWVuY2VJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHNl cXR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlcXVlbmNl ICV1Iiwgc2VxdWVuY2VJZCk7CisJc2VxZm9ybSA9IChGb3JtX3BnX3NlcXVlbmNlKSBHRVRTVFJV Q1Qoc2VxdHVwbGUpOworCisJUmVsZWFzZVN5c0NhY2hlKHNlcXR1cGxlKTsKKworCS8qIE9wZW4g YW5kIGxvY2sgc2VxdWVuY2UgKi8KKwlpbml0X3NlcXVlbmNlKHNlcXVlbmNlSWQsICZlbG0sICZz ZXFyZWwpOworCisJaWYgKHBnX2NsYXNzX2FjbGNoZWNrKHNlcXVlbmNlSWQsIEdldFVzZXJJZCgp LAorCQlBQ0xfU0VMRUNUIHwgQUNMX1VTQUdFKSAhPSBBQ0xDSEVDS19PSykKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJ ZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2VxdWVuY2UgJXMiLAorCQkJCQkgICBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShzZXFyZWwpKSk7CisKKwlzZXEgPSByZWFkX3NlcV90dXBsZShz ZXFyZWwsICZidWYsICZzZXF0dXBsZWRhdGEpOworCisJc2VxdmFsdWVzID0gKFNlcXVlbmNlX3Zh bHVlcyAqKSBwYWxsb2Moc2l6ZW9mKFNlcXVlbmNlX3ZhbHVlcykpOworCXNlcXZhbHVlcy0+bGFz dF92YWx1ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwlzZXF2YWx1ZXMtPnNlcWZvcm0gPSBzZXFmb3Jt OworCisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCXJlbGF0aW9uX2Nsb3NlKHNlcXJlbCwg Tm9Mb2NrKTsKKworCXJldHVybiBzZXF2YWx1ZXM7Cit9CiAKIC8qCiAgKiBSZXR1cm4gc2VxdWVu Y2UgcGFyYW1ldGVycyBpbiBhIGxpc3Qgb2YgdGhlIGZvcm0gY3JlYXRlZCBieSB0aGUgcGFyc2Vy LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBkOWJiZWFmZDgyLi45MTk0MTIxMjJiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDc0Myw2ICs0NzQzLDkgQEAgQVRQcmVwQ21k KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJY21k ID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIHJlY3Vyc2UsIGxv Y2ttb2RlLAogCQkJCQkJCQkJICBBVF9QQVNTX1VOU0VULCBjb250ZXh0KTsKIAkJCUFzc2VydChj bWQgIT0gTlVMTCk7CisKKwkJCUV2ZW50VHJpZ2dlckFsdGVyVHlwZVN0YXJ0KGNtZCwgcmVsKTsK KwogCQkJLyogUGVyZm9ybXMgb3duIHJlY3Vyc2lvbiAqLwogCQkJQVRQcmVwQWx0ZXJDb2x1bW5U eXBlKHdxdWV1ZSwgdGFiLCByZWwsIHJlY3Vyc2UsIHJlY3Vyc2luZywgY21kLAogCQkJCQkJCQkg IGxvY2ttb2RlLCBjb250ZXh0KTsKQEAgLTUwMTQsNiArNTAxNyw3IEBAIEFURXhlY0NtZChMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRy ZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CiAJUmVsYXRpb24JcmVsID0gdGFiLT5yZWw7CisJ Ym9vbAkJY29tbWFuZENvbGxlY3RlZCA9IGZhbHNlOwogCiAJc3dpdGNoIChjbWQtPnN1YnR5cGUp CiAJewpAQCAtNTEzNyw2ICs1MTQxLDggQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9BbHRlckNvbHVtblR5cGU6CS8qIEFMVEVSIENP TFVNTiBUWVBFICovCiAJCQkvKiBwYXJzZSB0cmFuc2Zvcm1hdGlvbiB3YXMgZG9uZSBlYXJsaWVy ICovCiAJCQlhZGRyZXNzID0gQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKHRhYiwgcmVsLCBjbWQsIGxv Y2ttb2RlKTsKKwkJCUV2ZW50VHJpZ2dlckFsdGVyVHlwZUVuZCgoTm9kZSAqKSBjbWQsIGFkZHJl c3MsIHRhYi0+cmV3cml0ZSk7CisJCQljb21tYW5kQ29sbGVjdGVkID0gdHJ1ZTsKIAkJCWJyZWFr OwogCQljYXNlIEFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlvbnM6CS8qIEFMVEVSIENPTFVNTiBP UFRJT05TICovCiAJCQlhZGRyZXNzID0KQEAgLTUzMDksOCArNTMxNSw4IEBAIEFURXhlY0NtZChM aXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiAJLyoKIAkgKiBSZXBvcnQgdGhl IHN1YmNvbW1hbmQgdG8gaW50ZXJlc3RlZCBldmVudCB0cmlnZ2Vycy4KIAkgKi8KLQlpZiAoY21k KQotCQlFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1YmNtZCgoTm9kZSAqKSBjbWQsIGFk ZHJlc3MpOworCWlmIChjbWQgJiYgIWNvbW1hbmRDb2xsZWN0ZWQpCisJCUV2ZW50VHJpZ2dlckNv bGxlY3RBbHRlclRhYmxlU3ViY21kKChOb2RlICopIGNtZCwgYWRkcmVzcywgdGFiLT5yZXdyaXRl KTsKIAogCS8qCiAJICogQnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIGVuc3VyZSB0aGUgbmV4 dCBzdWJjb21tYW5kIGluIHRoZSBzZXF1ZW5jZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK aW5kZXggYjBmNmZlNGZhNi4uMjFhOWNhZTc3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCkBAIC0xMzk1LDYgKzEzOTUsNyBAQCBleHBhbmRUYWJsZUxpa2VDbGF1c2UoUmFuZ2VWYXIg KmhlYXBSZWwsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGF1c2UpCiAJCWF0Y21kLT5j bWRzID0gYXRzdWJjbWRzOwogCQlhdGNtZC0+b2JqdHlwZSA9IE9CSkVDVF9UQUJMRTsKIAkJYXRj bWQtPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJYXRjbWQtPnRhYmxlX2xpa2UgPSB0cnVlOwogCQly ZXN1bHQgPSBsY29ucyhhdGNtZCwgcmVzdWx0KTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggMzBi NTFiZjRkMy4uNDUwMWNjMzM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE2NzUsOCArMTY3NSwxMSBA QCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWJyZWFrOwogCiAJ CQljYXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6CisJCQkJRXZlbnRUcmlnZ2VyVGFibGVJbml0V3Jp dGVTdGFydChwYXJzZXRyZWUpOwogCQkJCWFkZHJlc3MgPSBFeGVjQ3JlYXRlVGFibGVBcyhwc3Rh dGUsIChDcmVhdGVUYWJsZUFzU3RtdCAqKSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCXBhcmFtcywg cXVlcnlFbnYsIHFjKTsKKwkJCQlFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZUVuZChhZGRyZXNz KTsKKwkJCQljb21tYW5kQ29sbGVjdGVkID0gdHJ1ZTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSBU X1JlZnJlc2hNYXRWaWV3U3RtdDoKQEAgLTIyMDYsNiArMjIwOSwxMTIgQEAgVXRpbGl0eUNvbnRh aW5zUXVlcnkoTm9kZSAqcGFyc2V0cmVlKQogCX0KIH0KIAorLyoKKyAqIFJldHVybiB0aGUgZ2l2 ZW4gb2JqZWN0IHR5cGUgYXMgYSBzdHJpbmcuCisgKgorICogSWYgaXNncmFudCBpcyB0cnVlLCB0 aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoaWxlIGRlcGFyc2luZyBHUkFOVAorICogc3Rh dGVtZW50IGFuZCBzb21lIG9iamVjdCBuYW1lcyBhcmUgcmVwbGFjZWQuCisgKi8KK2NvbnN0IGNo YXIgKgorc3RyaW5naWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlLCBib29sIGlzZ3JhbnQp Cit7CisJc3dpdGNoIChvYmp0eXBlKQorCXsKKwkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgorCQkJ cmV0dXJuICJBR0dSRUdBVEUiOworCQljYXNlIE9CSkVDVF9DQVNUOgorCQkJcmV0dXJuICJDQVNU IjsKKwkJY2FzZSBPQkpFQ1RfQ09MTEFUSU9OOgorCQkJcmV0dXJuICJDT0xMQVRJT04iOworCQlj YXNlIE9CSkVDVF9DT0xVTU46CisJCQlyZXR1cm4gaXNncmFudCA/ICJUQUJMRSIgOiAiQ09MVU1O IjsKKwkJY2FzZSBPQkpFQ1RfQ09OVkVSU0lPTjoKKwkJCXJldHVybiAiQ09OVkVSU0lPTiI7CisJ CWNhc2UgT0JKRUNUX0RBVEFCQVNFOgorCQkJcmV0dXJuICJEQVRBQkFTRSI7CisJCWNhc2UgT0JK RUNUX0RPTUFJTjoKKwkJCXJldHVybiAiRE9NQUlOIjsKKwkJY2FzZSBPQkpFQ1RfRVZFTlRfVFJJ R0dFUjoKKwkJCXJldHVybiAiRVZFTlQgVFJJR0dFUiI7CisJCWNhc2UgT0JKRUNUX0VYVEVOU0lP TjoKKwkJCXJldHVybiAiRVhURU5TSU9OIjsKKwkJY2FzZSBPQkpFQ1RfRkRXOgorCQkJcmV0dXJu ICJGT1JFSUdOIERBVEEgV1JBUFBFUiI7CisJCWNhc2UgT0JKRUNUX0ZPUkVJR05fU0VSVkVSOgor CQkJcmV0dXJuIGlzZ3JhbnQgPyAiRk9SRUlHTiBTRVJWRVIiIDogIlNFUlZFUiI7CisJCWNhc2Ug T0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCQlyZXR1cm4gIkZPUkVJR04gVEFCTEUiOworCQljYXNl IE9CSkVDVF9GVU5DVElPTjoKKwkJCXJldHVybiAiRlVOQ1RJT04iOworCQljYXNlIE9CSkVDVF9J TkRFWDoKKwkJCXJldHVybiAiSU5ERVgiOworCQljYXNlIE9CSkVDVF9MQU5HVUFHRToKKwkJCXJl dHVybiAiTEFOR1VBR0UiOworCQljYXNlIE9CSkVDVF9MQVJHRU9CSkVDVDoKKwkJCXJldHVybiAi TEFSR0UgT0JKRUNUIjsKKwkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKKwkJCXJldHVybiAiTUFURVJJ QUxJWkVEIFZJRVciOworCQljYXNlIE9CSkVDVF9PUENMQVNTOgorCQkJcmV0dXJuICJPUEVSQVRP UiBDTEFTUyI7CisJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgorCQkJcmV0dXJuICJPUEVSQVRPUiI7 CisJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQkJcmV0dXJuICJPUEVSQVRPUiBGQU1JTFkiOwor CQljYXNlIE9CSkVDVF9QT0xJQ1k6CisJCQlyZXR1cm4gIlBPTElDWSI7CisJCWNhc2UgT0JKRUNU X1BST0NFRFVSRToKKwkJCXJldHVybiAiUFJPQ0VEVVJFIjsKKwkJY2FzZSBPQkpFQ1RfUk9MRToK KwkJCXJldHVybiAiUk9MRSI7CisJCWNhc2UgT0JKRUNUX1JPVVRJTkU6CisJCQlyZXR1cm4gIlJP VVRJTkUiOworCQljYXNlIE9CSkVDVF9SVUxFOgorCQkJcmV0dXJuICJSVUxFIjsKKwkJY2FzZSBP QkpFQ1RfU0NIRU1BOgorCQkJcmV0dXJuICJTQ0hFTUEiOworCQljYXNlIE9CSkVDVF9TRVFVRU5D RToKKwkJCXJldHVybiAiU0VRVUVOQ0UiOworCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgor CQkJcmV0dXJuICJTVEFUSVNUSUNTIjsKKwkJY2FzZSBPQkpFQ1RfVEFCTEU6CisJCQlyZXR1cm4g IlRBQkxFIjsKKwkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKKwkJCXJldHVybiAiVEFCTEVTUEFD RSI7CisJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CisJCQlyZXR1cm4gIlRSSUdHRVIiOworCQljYXNl IE9CSkVDVF9UU0NPTkZJR1VSQVRJT046CisJCQlyZXR1cm4gIlRFWFQgU0VBUkNIIENPTkZJR1VS QVRJT04iOworCQljYXNlIE9CSkVDVF9UU0RJQ1RJT05BUlk6CisJCQlyZXR1cm4gIlRFWFQgU0VB UkNIIERJQ1RJT05BUlkiOworCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKKwkJCXJldHVybiAiVEVY VCBTRUFSQ0ggUEFSU0VSIjsKKwkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToKKwkJCXJldHVybiAi VEVYVCBTRUFSQ0ggVEVNUExBVEUiOworCQljYXNlIE9CSkVDVF9UWVBFOgorCQkJcmV0dXJuICJU WVBFIjsKKwkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgorCQkJcmV0dXJuICJVU0VSIE1BUFBJ TkciOworCQljYXNlIE9CSkVDVF9WSUVXOgorCQkJcmV0dXJuICJWSUVXIjsKKwkJY2FzZSBPQkpF Q1RfQUNDRVNTX01FVEhPRDoKKwkJY2FzZSBPQkpFQ1RfQU1PUDoKKwkJY2FzZSBPQkpFQ1RfQU1Q Uk9DOgorCQljYXNlIE9CSkVDVF9BVFRSSUJVVEU6CisJCWNhc2UgT0JKRUNUX0RFRkFVTFQ6CisJ CWNhc2UgT0JKRUNUX0RFRkFDTDoKKwkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKKwkJY2Fz ZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CisJCWNh c2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKKwkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJ T05fUkVMOgorCQljYXNlIE9CSkVDVF9TVUJTQ1JJUFRJT046CisJCWNhc2UgT0JKRUNUX1RBQkNP TlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNUX1RSQU5TRk9STToKKwkJCWVsb2coRVJST1IsICJ1bnN1 cHBvcnRlZCBvYmplY3QgdHlwZSAlZCIsIG9ianR5cGUpOworCX0KKworCXJldHVybiAiPz8/IjsJ CQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQogCiAvKgogICogQWx0ZXJPYmplY3RUeXBl Q29tbWFuZFRhZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdF90eXBl LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYwppbmRleCAxMjQwMmEwNjM3 Li43YjQ3NmFkYjIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5 cGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0X3R5cGUuYwpAQCAtMjcsOCAr MjcsNiBAQAogI2luY2x1ZGUgInV0aWxzL251bWVyaWMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgogCi1zdGF0aWMgY2hhciAqcHJpbnRUeXBtb2QoY29uc3QgY2hhciAqdHlwbmFtZSwg aW50MzIgdHlwbW9kLCBPaWQgdHlwbW9kb3V0KTsKLQogCiAvKgogICogU1FMIGZ1bmN0aW9uOiBm b3JtYXRfdHlwZSh0eXBlX29pZCwgdHlwZW1vZCkKQEAgLTM2Myw3ICszNjEsNyBAQCBmb3JtYXRf dHlwZV93aXRoX3R5cGVtb2QoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kKQogLyoKICAqIEFk ZCB0eXBtb2QgZGVjb3JhdGlvbiB0byB0aGUgYmFzaWMgdHlwZSBuYW1lCiAgKi8KLXN0YXRpYyBj aGFyICoKK2NoYXIgKgogcHJpbnRUeXBtb2QoY29uc3QgY2hhciAqdHlwbmFtZSwgaW50MzIgdHlw bW9kLCBPaWQgdHlwbW9kb3V0KQogewogCWNoYXIJICAgKnJlczsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwppbmRleCA0NjE3MzVlODRmLi5jOGY1NDcxYjE4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCkBAIC00OTksMjIgKzQ5OSwxNSBAQCBzdGF0aWMgdm9pZCBnZXRfZnJvbV9jbGF1 c2VfY29sZGVmbGlzdChSYW5nZVRibEZ1bmN0aW9uICpydGZ1bmMsCiAJCQkJCQkJCQkgICBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X3RhYmxlc2FtcGxlX2RlZihU YWJsZVNhbXBsZUNsYXVzZSAqdGFibGVzYW1wbGUsCiAJCQkJCQkJCWRlcGFyc2VfY29udGV4dCAq Y29udGV4dCk7Ci1zdGF0aWMgdm9pZCBnZXRfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzLCBPaWQg YWN0dWFsX2RhdGF0eXBlLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMgTm9kZSAq cHJvY2Vzc0luZGlyZWN0aW9uKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7 CiBzdGF0aWMgdm9pZCBwcmludFN1YnNjcmlwdHMoU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsIGRl cGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgY2hhciAqZ2V0X3JlbGF0aW9uX25hbWUo T2lkIHJlbGlkKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9yZWxhdGlvbl9uYW1lKE9pZCByZWxp ZCwgTGlzdCAqbmFtZXNwYWNlcyk7CiBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVkX3Jl bGF0aW9uX25hbWUoT2lkIHJlbGlkKTsKLXN0YXRpYyBjaGFyICpnZW5lcmF0ZV9mdW5jdGlvbl9u YW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywKLQkJCQkJCQkJCUxpc3QgKmFyZ25hbWVzLCBPaWQg KmFyZ3R5cGVzLAotCQkJCQkJCQkJYm9vbCBoYXNfdmFyaWFkaWMsIGJvb2wgKnVzZV92YXJpYWRp Y19wLAotCQkJCQkJCQkJUGFyc2VFeHByS2luZCBzcGVjaWFsX2V4cHJraW5kKTsKIHN0YXRpYyBj aGFyICpnZW5lcmF0ZV9vcGVyYXRvcl9uYW1lKE9pZCBvcGVyaWQsIE9pZCBhcmcxLCBPaWQgYXJn Mik7CiBzdGF0aWMgdm9pZCBhZGRfY2FzdF90byhTdHJpbmdJbmZvIGJ1ZiwgT2lkIHR5cGlkKTsK IHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKE9pZCB0eXBpZCk7CiBz dGF0aWMgdGV4dCAqc3RyaW5nX3RvX3RleHQoY2hhciAqc3RyKTsKLXN0YXRpYyBjaGFyICpmbGF0 dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIHN0YXRpYyB2b2lkIGdldF9yZWxvcHRpb25zKFN0 cmluZ0luZm8gYnVmLCBEYXR1bSByZWxvcHRpb25zKTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihy dGUpICAoKHJ0ZSktPmluaCA/ICIiIDogIk9OTFkgIikKQEAgLTE4ODMsNiArMTg3NiwxNCBAQCBw Z19nZXRfcGFydGtleWRlZl9jb2x1bW5zKE9pZCByZWxpZCwgYm9vbCBwcmV0dHkpCiAJcmV0dXJu IHBnX2dldF9wYXJ0a2V5ZGVmX3dvcmtlcihyZWxpZCwgcHJldHR5RmxhZ3MsIHRydWUsIGZhbHNl KTsKIH0KIAorLyogSW50ZXJuYWwgdmVyc2lvbiB0aGF0IHJlcG9ydHMgdGhlIGZ1bGwgcGFydGl0 aW9uIGtleSBkZWZpbml0aW9uICovCitjaGFyICoKK3BnX2dldF9wYXJ0a2V5ZGVmX3N0cmluZyhP aWQgcmVsaWQpCit7CisJcmV0dXJuIHBnX2dldF9wYXJ0a2V5ZGVmX3dvcmtlcihyZWxpZCwgR0VU X1BSRVRUWV9GTEFHUyhmYWxzZSksIGZhbHNlLAorCQkJCQkJCQkJZmFsc2UpOworfQorCiAvKgog ICogSW50ZXJuYWwgd29ya2hvcnNlIHRvIGRlY29tcGlsZSBhIHBhcnRpdGlvbiBrZXkgZGVmaW5p dGlvbi4KICAqLwpAQCAtMjEzMCw2ICsyMTMxLDE2IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX2V4 dChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9URVhUX1Aoc3RyaW5nX3RvX3RleHQocmVz KSk7CiB9CiAKKy8qCisgKiBJbnRlcm5hbCB2ZXJzaW9uIHRoYXQgcmV0dXJucyB0aGUgZGVmaW5p dGlvbiBvZiBhIENPTlNUUkFJTlQgY29tbWFuZAorICovCitjaGFyICoKK3BnX2dldF9jb25zdHJh aW50ZGVmX3N0cmluZyhPaWQgY29uc3RyYWludElkKQoreworCXJldHVybiBwZ19nZXRfY29uc3Ry YWludGRlZl93b3JrZXIoY29uc3RyYWludElkLCBmYWxzZSwKKwkJCQkJCQkJCSAgIEdFVF9QUkVU VFlfRkxBR1MoZmFsc2UpLCBmYWxzZSk7Cit9CisKIC8qCiAgKiBJbnRlcm5hbCB2ZXJzaW9uIHRo YXQgcmV0dXJucyBhIGZ1bGwgQUxURVIgVEFCTEUgLi4uIEFERCBDT05TVFJBSU5UIGNvbW1hbmQK ICAqLwpAQCAtMTE2MTYsNyArMTE2MjcsNyBAQCBnZXRfdGFibGVzYW1wbGVfZGVmKFRhYmxlU2Ft cGxlQ2xhdXNlICp0YWJsZXNhbXBsZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogICogYWN0 dWFsX2RhdGF0eXBlLiAgKElmIHlvdSBkb24ndCB3YW50IHRoaXMgYmVoYXZpb3IsIGp1c3QgcGFz cwogICogSW52YWxpZE9pZCBmb3IgYWN0dWFsX2RhdGF0eXBlLikKICAqLwotc3RhdGljIHZvaWQK K3ZvaWQKIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MsIE9pZCBhY3R1YWxfZGF0YXR5cGUs CiAJCQkJIFN0cmluZ0luZm8gYnVmKQogewpAQCAtMTIwMTAsNyArMTIwMjEsNyBAQCBnZW5lcmF0 ZV9xdWFsaWZpZWRfcmVsYXRpb25fbmFtZShPaWQgcmVsaWQpCiAgKgogICogVGhlIHJlc3VsdCBp bmNsdWRlcyBhbGwgbmVjZXNzYXJ5IHF1b3RpbmcgYW5kIHNjaGVtYS1wcmVmaXhpbmcuCiAgKi8K LXN0YXRpYyBjaGFyICoKK2NoYXIgKgogZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZShPaWQgZnVuY2lk LCBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkgICBib29s IGhhc192YXJpYWRpYywgYm9vbCAqdXNlX3ZhcmlhZGljX3AsCiAJCQkJCSAgIFBhcnNlRXhwcktp bmQgc3BlY2lhbF9leHBya2luZCkKQEAgLTEyMzk2LDcgKzEyNDA3LDcgQEAgZ2V0X3JlbG9wdGlv bnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpCiAvKgogICogR2VuZXJhdGUgYSBD IHN0cmluZyByZXByZXNlbnRpbmcgYSByZWxhdGlvbidzIHJlbG9wdGlvbnMsIG9yIE5VTEwgaWYg bm9uZS4KICAqLwotc3RhdGljIGNoYXIgKgorY2hhciAqCiBmbGF0dGVuX3JlbG9wdGlvbnMoT2lk IHJlbGlkKQogewogCWNoYXIJICAgKnJlc3VsdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0 Y2FjaGUuYwppbmRleCAxZjVlN2ViNGM2Li5mMmE5ZjVkY2MyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMKQEAgLTE2Nyw2ICsxNjcsOCBAQCBCdWlsZEV2ZW50VHJpZ2dlckNhY2hlKHZv aWQpCiAJCQlldmVudCA9IEVWVF9TUUxEcm9wOwogCQllbHNlIGlmIChzdHJjbXAoZXZ0ZXZlbnQs ICJ0YWJsZV9yZXdyaXRlIikgPT0gMCkKIAkJCWV2ZW50ID0gRVZUX1RhYmxlUmV3cml0ZTsKKwkJ ZWxzZSBpZiAoc3RyY21wKGV2dGV2ZW50LCAidGFibGVfaW5pdF93cml0ZSIpID09IDApCisJCQll dmVudCA9IEVWVF9UYWJsZUluaXRXcml0ZTsKIAkJZWxzZQogCQkJY29udGludWU7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IGY5ZjI2NDIyMDEuLjc0MmRmNDczODEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTIwNTMsNCArMTIwNTMsMTEgQEAKICAgcHJvbmFtZSA9PiAnYW55 X3ZhbHVlX3RyYW5zZm4nLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKICAgcHJvYXJndHlw ZXMgPT4gJ2FueWVsZW1lbnQgYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnYW55X3ZhbHVlX3RyYW5z Zm4nIH0sCiAKK3sgb2lkID0+ICc0NjQyJywgZGVzY3IgPT4gJ2RlcGFyc2UgdGhlIERETCBjb21t YW5kIGludG8gYSBKU09OIGZvcm1hdCBzdHJpbmcnLAorICBwcm9uYW1lID0+ICdkZGxfZGVwYXJz ZV90b19qc29uJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdwZ19k ZGxfY29tbWFuZCcsIHByb3NyYyA9PiAnZGRsX2RlcGFyc2VfdG9fanNvbicgfSwKK3sgb2lkID0+ ICc0NjQzJywgZGVzY3IgPT4gJ2V4cGFuZCBKU09OIGZvcm1hdCBEREwgdG8gYSBwbGFpbiB0ZXh0 IERETCBjb21tYW5kJywKKyAgcHJvbmFtZSA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQn LCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4gJ3RleHQnLCBwcm9zcmMg PT4gJ2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmgKaW5kZXggNWVkNmVjZTU1NS4uY2JhNGU3MjQ1NSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvZGVwZW5kZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1ZGUgImxpYi9pbGlzdC5o IgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ0Y29wL2NtZHRhZy5o IgogI2luY2x1ZGUgInRjb3AvZGVwYXJzZV91dGlsaXR5LmgiCkBAIC0yOSw2ICszMCw0NCBAQCB0 eXBlZGVmIHN0cnVjdCBFdmVudFRyaWdnZXJEYXRhCiAJQ29tbWFuZFRhZwl0YWc7CiB9IEV2ZW50 VHJpZ2dlckRhdGE7CiAKK3R5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUKK3sK KwkvKiBtZW1vcnkgY29udGV4dCBmb3IgdGhpcyBzdGF0ZSdzIG9iamVjdHMgKi8KKwlNZW1vcnlD b250ZXh0IGN4dDsKKworCS8qIHNxbF9kcm9wICovCisJc2xpc3RfaGVhZAlTUUxEcm9wTGlzdDsK Kwlib29sCQlpbl9zcWxfZHJvcDsKKworCS8qIHRhYmxlX3Jld3JpdGUgKi8KKwlPaWQJCQl0YWJs ZV9yZXdyaXRlX29pZDsJLyogSW52YWxpZE9pZCwgb3Igc2V0IGZvciB0YWJsZV9yZXdyaXRlCisJ CQkJCQkJCQkgKiBldmVudCAqLworCWludAkJCXRhYmxlX3Jld3JpdGVfcmVhc29uOwkvKiBBVF9S RVdSSVRFIHJlYXNvbiAqLworCisJLyogU3VwcG9ydCBmb3IgY29tbWFuZCBjb2xsZWN0aW9uICov CisJYm9vbAkJY29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQ7CisJQ29sbGVjdGVkQ29tbWFuZCAq Y3VycmVudENvbW1hbmQ7CisJTGlzdAkgICAqY29tbWFuZExpc3Q7CS8qIGxpc3Qgb2YgQ29sbGVj dGVkQ29tbWFuZDsgc2VlCisJCQkJCQkJCSAqIGRlcGFyc2VfdXRpbGl0eS5oICovCisJc3RydWN0 IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKnByZXZpb3VzOworfSBFdmVudFRyaWdnZXJRdWVyeVN0 YXRlOworCisvKiBTdXBwb3J0IGZvciBkcm9wcGVkIG9iamVjdHMgKi8KK3R5cGVkZWYgc3RydWN0 IFNRTERyb3BPYmplY3QKK3sKKwlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisJY29uc3QgY2hhciAq c2NoZW1hbmFtZTsKKwljb25zdCBjaGFyICpvYmpuYW1lOworCWNvbnN0IGNoYXIgKm9iamlkZW50 aXR5OworCWNvbnN0IGNoYXIgKm9iamVjdHR5cGU7CisJTGlzdAkgICAqYWRkcm5hbWVzOworCUxp c3QJICAgKmFkZHJhcmdzOworCWJvb2wJCW9yaWdpbmFsOworCWJvb2wJCW5vcm1hbDsKKwlib29s CQlpc3RlbXA7CisJc2xpc3Rfbm9kZQluZXh0OworfSBTUUxEcm9wT2JqZWN0OworCiAjZGVmaW5l IEFUX1JFV1JJVEVfQUxURVJfUEVSU0lTVEVOQ0UJMHgwMQogI2RlZmluZSBBVF9SRVdSSVRFX0RF RkFVTFRfVkFMCQkJMHgwMgogI2RlZmluZSBBVF9SRVdSSVRFX0NPTFVNTl9SRVdSSVRFCQkweDA0 CkBAIC01NSw2ICs5NCwxMCBAQCBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJERExDb21tYW5kRW5k KE5vZGUgKnBhcnNldHJlZSk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJTUUxEcm9wKE5vZGUg KnBhcnNldHJlZSk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJUYWJsZVJld3JpdGUoTm9kZSAq cGFyc2V0cmVlLCBPaWQgdGFibGVPaWQsIGludCByZWFzb24pOwogCitleHRlcm4gdm9pZCBFdmVu dFRyaWdnZXJUYWJsZUluaXRXcml0ZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSk7CitleHRlcm4gdm9p ZCBFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZShOb2RlICpwYXJzZXRyZWUsIE9iamVjdEFkZHJl c3MgYWRkcmVzcyk7CitleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZUVuZChP YmplY3RBZGRyZXNzIGFkZHJlc3MpOworCiBleHRlcm4gYm9vbCBFdmVudFRyaWdnZXJCZWdpbkNv bXBsZXRlUXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJFbmRDb21wbGV0ZVF1 ZXJ5KHZvaWQpOwogZXh0ZXJuIGJvb2wgdHJhY2tEcm9wcGVkT2JqZWN0c05lZWRlZCh2b2lkKTsK QEAgLTcxLDcgKzExNCwxMiBAQCBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxl Q29tbWFuZChPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJB bHRlclRhYmxlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dl ckFsdGVyVGFibGVSZWxpZChPaWQgb2JqZWN0SWQpOwogZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2Vy Q29sbGVjdEFsdGVyVGFibGVTdWJjbWQoTm9kZSAqc3ViY21kLAotCQkJCQkJCQkJCQkJT2JqZWN0 QWRkcmVzcyBhZGRyZXNzKTsKKwkJCQkJCQkJCQkJCU9iamVjdEFkZHJlc3MgYWRkcmVzcywKKwkJ CQkJCQkJCQkJCWJvb2wgcmV3cml0ZSk7CisKK2V4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckFsdGVy VHlwZVN0YXJ0KEFsdGVyVGFibGVDbWQgKnN1YmNtZCwgUmVsYXRpb24gcmVsKTsKK2V4dGVybiB2 b2lkIEV2ZW50VHJpZ2dlckFsdGVyVHlwZUVuZChOb2RlICpzdWJjbWQsIE9iamVjdEFkZHJlc3Mg YWRkcmVzcywKKwkJCQkJCQkJCSBib29sIHJld3JpdGUpOwogZXh0ZXJuIHZvaWQgRXZlbnRUcmln Z2VyQWx0ZXJUYWJsZUVuZCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQ29sbGVj dEdyYW50KEludGVybmFsR3JhbnQgKmlzdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCmluZGV4 IDdkYjdiM2RhN2IuLmMwYTM5NTk2YWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3NlcXVlbmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaApAQCAtMTUs NiArMTUsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIuaCIKICNpbmNsdWRlICJj YXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3NlcXVlbmNlLmgi CiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVk ZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgpAQCAtNTEsOSArNTIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfc2VxX3JlYwogCS8qIFNFUVVFTkNFIFRVUExFIERBVEEgRk9MTE9XUyBBVCBUSEUgRU5EICov CiB9IHhsX3NlcV9yZWM7CiAKKy8qIEluZm9ybWF0aW9uIG5lZWRlZCB0byBkZWZpbmUgYSBzZXF1 ZW5jZS4gKi8KK3R5cGVkZWYgc3RydWN0IFNlcXVlbmNlX3ZhbHVlcworeworCUZvcm1fcGdfc2Vx dWVuY2Ugc2VxZm9ybTsKKwlpbnQ2NAkJbGFzdF92YWx1ZTsKK30gU2VxdWVuY2VfdmFsdWVzOwor CiBleHRlcm4gaW50NjQgbmV4dHZhbF9pbnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVy bWlzc2lvbnMpOwogZXh0ZXJuIERhdHVtIG5leHR2YWwoUEdfRlVOQ1RJT05fQVJHUyk7CiBleHRl cm4gTGlzdCAqc2VxdWVuY2Vfb3B0aW9ucyhPaWQgcmVsaWQpOworZXh0ZXJuIFNlcXVlbmNlX3Zh bHVlcyAqZ2V0X3NlcXVlbmNlX3ZhbHVlcyhPaWQgc2VxdWVuY2VJZCk7CiAKIGV4dGVybiBPYmpl Y3RBZGRyZXNzIERlZmluZVNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2VxU3Rt dCAqc2VxKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU2VxdWVuY2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGNj N2IzMmIyNzkuLjE1M2JhMjk3YjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIxNjcsNiAr MjE2Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVGFibGVTdG10CiAJTGlzdAkgICAqY21kczsJ CQkvKiBsaXN0IG9mIHN1YmNvbW1hbmRzICovCiAJT2JqZWN0VHlwZQlvYmp0eXBlOwkJLyogdHlw ZSBvZiBvYmplY3QgKi8KIAlib29sCQltaXNzaW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiB0YWJs ZSBtaXNzaW5nICovCisJYm9vbCAgICAgICAgdGFibGVfbGlrZTsJCS8qIGludGVybmFsbHkgZ2Vu ZXJhdGVkIGZvciBUYWJsZUxpa2VDbGF1c2UgKi8KIH0gQWx0ZXJUYWJsZVN0bXQ7CiAKIHR5cGVk ZWYgZW51bSBBbHRlclRhYmxlVHlwZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxf ZGVwYXJzZS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFhMjcwMmM1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKQEAgLTAsMCArMSwyMiBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogZGRsX2RlcGFyc2UuaAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m IENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBERExfREVQQVJTRV9ICisjZGVmaW5lIERE TF9ERVBBUlNFX0gKKworI2luY2x1ZGUgInRjb3AvZGVwYXJzZV91dGlsaXR5LmgiCisKK2V4dGVy biBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJv b2wgdmVyYm9zZV9tb2RlKTsKK2V4dGVybiBjaGFyICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmlu ZyhjaGFyICpqc29uYik7CitleHRlcm4gY2hhciAqZGVwYXJzZV9kcm9wX2NvbW1hbmQoY29uc3Qg Y2hhciAqb2JqaWRlbnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCisJCQkJCQkJCSAgRHJv cEJlaGF2aW9yIGJlaGF2aW9yKTsKKworI2VuZGlmCQkJCQkJCS8qIERETF9ERVBBUlNFX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmggYi9zcmMvaW5j bHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IGI1ODU4MTBiOWEuLmE0YTEyMzc3Yjgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKKysrIGIvc3Jj L2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaApAQCAtMjksNyArMjksOCBAQCB0eXBlZGVm IGVudW0gQ29sbGVjdGVkQ29tbWFuZFR5cGUKIAlTQ1RfQWx0ZXJPcEZhbWlseSwKIAlTQ1RfQWx0 ZXJEZWZhdWx0UHJpdmlsZWdlcywKIAlTQ1RfQ3JlYXRlT3BDbGFzcywKLQlTQ1RfQWx0ZXJUU0Nv bmZpZworCVNDVF9BbHRlclRTQ29uZmlnLAorCVNDVF9DcmVhdGVUYWJsZUFzCiB9IENvbGxlY3Rl ZENvbW1hbmRUeXBlOwogCiAvKgpAQCAtMzksNiArNDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb2xs ZWN0ZWRBVFN1YmNtZAogewogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsJCS8qIGFmZmVjdGVkIGNv bHVtbiwgY29uc3RyYWludCwgaW5kZXgsIC4uLiAqLwogCU5vZGUJICAgKnBhcnNldHJlZTsKKwlj aGFyCSAgICp1c2luZ2V4cHI7CiB9IENvbGxlY3RlZEFUU3ViY21kOwogCiB0eXBlZGVmIHN0cnVj dCBDb2xsZWN0ZWRDb21tYW5kCkBAIC02Miw2ICs2NCw3IEBAIHR5cGVkZWYgc3RydWN0IENvbGxl Y3RlZENvbW1hbmQKIAkJewogCQkJT2lkCQkJb2JqZWN0SWQ7CiAJCQlPaWQJCQljbGFzc0lkOwor CQkJYm9vbAkJcmV3cml0ZTsKIAkJCUxpc3QJICAgKnN1YmNtZHM7CiAJCX0JCQlhbHRlclRhYmxl OwogCkBAIC0xMDAsNiArMTAzLDEzIEBAIHR5cGVkZWYgc3RydWN0IENvbGxlY3RlZENvbW1hbmQK IAkJewogCQkJT2JqZWN0VHlwZQlvYmp0eXBlOwogCQl9CQkJZGVmcHJpdnM7CisKKwkJLyogQ1JF QVRFIFRBQkxFIEFTICovCisJCXN0cnVjdAorCQl7CisJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7 CisJCQlOb2RlCQkgKnJlYWxfY3JlYXRlOworCQl9CQkJY3RhczsKIAl9CQkJZDsKIAogCXN0cnVj dCBDb2xsZWN0ZWRDb21tYW5kICpwYXJlbnQ7CS8qIHdoZW4gbmVzdGVkICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5o CmluZGV4IDU5ZTY0YWVhMDcuLmE2OGNlM2QzMzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rj b3AvdXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCkBAIC05OSw2ICs5 OSw4IEBAIGV4dGVybiBRdWVyeSAqVXRpbGl0eUNvbnRhaW5zUXVlcnkoTm9kZSAqcGFyc2V0cmVl KTsKIAogZXh0ZXJuIENvbW1hbmRUYWcgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUp OwogCitleHRlcm4gY29uc3QgY2hhciAqc3RyaW5naWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0 eXBlLCBib29sIGlzZ3JhbnQpOworCiBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgogQ3JlYXRl Q29tbWFuZE5hbWUoTm9kZSAqcGFyc2V0cmVlKQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvYnVpbHRpbnMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKaW5kZXggMmY4 YjQ2ZDZkYS4uYzkwYzMyYmZmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRp bnMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCkBAIC0xMjcsNiArMTI3LDcg QEAgZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2V4dGVuZGVkKE9pZCB0eXBlX29pZCwgaW50MzIg dHlwZW1vZCwgYml0czE2IGZsYWdzKTsKIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV9iZShPaWQg dHlwZV9vaWQpOwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2JlX3F1YWxpZmllZChPaWQgdHlw ZV9vaWQpOwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZChPaWQgdHlwZV9v aWQsIGludDMyIHR5cGVtb2QpOworZXh0ZXJuIGNoYXIgKnByaW50VHlwbW9kKGNvbnN0IGNoYXIg KnR5cG5hbWUsIGludDMyIHR5cG1vZCwgT2lkIHR5cG1vZG91dCk7CiAKIGV4dGVybiBpbnQzMiB0 eXBlX21heGltdW1fc2l6ZShPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9ldnRjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZXZ0 Y2FjaGUuaAppbmRleCBkMzQwMDI2NTE4Li45MWQ0YmRkNmIzIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9ldnRjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2V2dGNhY2hlLmgK QEAgLTIyLDcgKzIyLDggQEAgdHlwZWRlZiBlbnVtCiAJRVZUX0RETENvbW1hbmRTdGFydCwKIAlF VlRfRERMQ29tbWFuZEVuZCwKIAlFVlRfU1FMRHJvcCwKLQlFVlRfVGFibGVSZXdyaXRlCisJRVZU X1RhYmxlUmV3cml0ZSwKKwlFVlRfVGFibGVJbml0V3JpdGUKIH0gRXZlbnRUcmlnZ2VyRXZlbnQ7 CiAKIHR5cGVkZWYgc3RydWN0CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRp bHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4IDFhNDJkOWYzOWIuLjlh ZGM1ODkxNzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCkBAIC0yNiw5ICsyNiwxMSBAQCBleHRlcm4g Y2hhciAqcGdfZ2V0X2luZGV4ZGVmX2NvbHVtbnMoT2lkIGluZGV4cmVsaWQsIGJvb2wgcHJldHR5 KTsKIGV4dGVybiBjaGFyICpwZ19nZXRfcXVlcnlkZWYoUXVlcnkgKnF1ZXJ5LCBib29sIHByZXR0 eSk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfcGFydGtleWRlZl9jb2x1bW5zKE9pZCByZWxpZCwg Ym9vbCBwcmV0dHkpOworZXh0ZXJuIGNoYXIgKnBnX2dldF9wYXJ0a2V5ZGVmX3N0cmluZyhPaWQg cmVsaWQpOwogZXh0ZXJuIGNoYXIgKnBnX2dldF9wYXJ0Y29uc3RyZGVmX3N0cmluZyhPaWQgcGFy dGl0aW9uSWQsIGNoYXIgKmFsaWFzbmFtZSk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfY29uc3Ry YWludGRlZl9jb21tYW5kKE9pZCBjb25zdHJhaW50SWQpOworZXh0ZXJuIGNoYXIgKnBnX2dldF9j b25zdHJhaW50ZGVmX3N0cmluZyhPaWQgY29uc3RyYWludElkKTsKIGV4dGVybiBjaGFyICpkZXBh cnNlX2V4cHJlc3Npb24oTm9kZSAqZXhwciwgTGlzdCAqZHBjb250ZXh0LAogCQkJCQkJCQlib29s IGZvcmNlcHJlZml4LCBib29sIHNob3dpbXBsaWNpdCk7CiBleHRlcm4gTGlzdCAqZGVwYXJzZV9j b250ZXh0X2Zvcihjb25zdCBjaGFyICphbGlhc25hbWUsIE9pZCByZWxpZCk7CkBAIC00MCw3ICs0 MiwxNCBAQCBleHRlcm4gTGlzdCAqc2VsZWN0X3J0YWJsZV9uYW1lc19mb3JfZXhwbGFpbihMaXN0 ICpydGFibGUsCiAJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJlbHNfdXNlZCk7CiBleHRlcm4gY2hh ciAqZ2VuZXJhdGVfY29sbGF0aW9uX25hbWUoT2lkIGNvbGxpZCk7CiBleHRlcm4gY2hhciAqZ2Vu ZXJhdGVfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzKTsKK2V4dGVybiBjaGFyICpnZW5lcmF0ZV9m dW5jdGlvbl9uYW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsCisJCQkJ CQkJCQlPaWQgKmFyZ3R5cGVzLCBib29sIGhhc192YXJpYWRpYywKKwkJCQkJCQkJCWJvb2wgKnVz ZV92YXJpYWRpY19wLAorCQkJCQkJCQkJUGFyc2VFeHByS2luZCBzcGVjaWFsX2V4cHJraW5kKTsK IGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1 bXMpOworZXh0ZXJuIHZvaWQgZ2V0X29wY2xhc3NfbmFtZShPaWQgb3BjbGFzcywgT2lkIGFjdHVh bF9kYXRhdHlwZSwKKwkJCQkJCQkgU3RyaW5nSW5mbyBidWYpOworZXh0ZXJuIGNoYXIgKmZsYXR0 ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3N0YXRpc3Rp Y3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IDMyMTllYTVmMDUuLjg1MmVlNjA5MzQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0xNjI2LDYgKzE2MjYsOSBAQCBPU0luZm8KIE9TU0xDaXBoZXIKIE9TU0xEaWdlc3QKIE9W RVJMQVBQRUQKK09iakVsZW0KK09ialRyZWUKK09ialR5cGUKIE9iamVjdEFjY2Vzc0Ryb3AKIE9i amVjdEFjY2Vzc05hbWVzcGFjZVNlYXJjaAogT2JqZWN0QWNjZXNzUG9zdEFsdGVyCkBAIC0zMjAy LDYgKzMyMDUsNyBAQCBjb21wYXJlX2NvbnRleHQKIGNvbmZpZ192YXJfdmFsdWUKIGNvbnRhaW5f YWdnc19vZl9sZXZlbF9jb250ZXh0CiBjb252ZXJ0X3Rlc3RleHByX2NvbnRleHQKK2NvbnZTcGVj aWZpZXIKIGNvcHlfZGF0YV9kZXN0X2NiCiBjb3B5X2RhdGFfc291cmNlX2NiCiBjb3JlX1lZU1RZ UEUKLS0gCjIuMzAuMC53aW5kb3dzLjIKCg== --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0005-Apply-the-DDL-change-as-that-same-user-th-2023_04_07-2.patch" Content-Description: 0005-Apply-the-DDL-change-as-that-same-user-th-2023_04_07-2.patch Content-Disposition: attachment; filename="0005-Apply-the-DDL-change-as-that-same-user-th-2023_04_07-2.patch"; size=23688; creation-date="Fri, 07 Apr 2023 03:17:30 GMT"; modification-date="Fri, 07 Apr 2023 03:22:32 GMT" Content-Transfer-Encoding: base64 RnJvbSAzOTZhODA3MWZjOTZjYTdkODFkMmRhODZhNDYzMThjMGE4MjdiOGQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBGcmksIDcgQXByIDIwMjMgMDk6NDI6NDAgKzA4MDAKU3ViamVjdDogW1BBVENIIDUv Nl0gQXBwbHkgdGhlIERETCBjaGFuZ2UgYXMgdGhhdCBzYW1lIHVzZXIgdGhhdCBleGVjdXRlZCB0 aGUKCjEuIENoYW5nZSBldmVudCB0cmlnZ2VyIGZ1bmN0aW9ucyB0byBjb2xsZWN0IHRoZSBjdXJy ZW50IHJvbGUgaW4KQ29sbGVjdGVkQ29tbWFuZC4KCjIuIENoYW5nZSBEZXBhcnNlciBmdW5jdGlv biBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZCB0byBlbmNvZGUgb3duZXIgcm9sZSBpbiB0aGUKdG9w LWxldmVsIGVsZW1lbnQgc3VjaCBhcyB7bXlvd25lcjpyb2xlX25hbWUsIGZtdDouLi4sIGlkZW50 aXR5Oi4uLn0gb2YgdGhlCmRlcGFyc2VkIGpzb25iIG91dHB1dCBmb3IgY29tbWFuZHMgdGhhdCBj cmVhdGUgZGF0YWJhc2Ugb2JqZWN0cy4gQWxzbyBjaGFuZ2UKZnVuY3Rpb24gZGVwYXJzZV9kZGxf anNvbl90b19zdHJpbmcgdG8gcmV0cmlldmUgdGhlIG15b3duZXIgZWxlbWVudCBmcm9tIGEKanNv bmIgc3RyaW5nLgoKMy4gSW50cm9kdWNlIGEgbmV3IHN1YnNjcmlwdGlvbiBvcHRpb24gbWF0Y2hf ZGRsX293bmVyOiB3aGVuIHR1cm5lZCBvbiwgdGhlCmFwcGx5IHdvcmtlciB3aWxsIGFwcGx5IERE TCBtZXNzYWdlcyBpbiB0aGUgcm9sZSByZXRyaWV2ZWQgZnJvbSB0aGUgIm15b3duZXIiCmZpZWxk IG9mIHRoZSBkZXBhcnNlZCBqc29uYiBzdHJpbmcuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIG1hdGNo X2RkbF9vd25lciBpcyBvbi4KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMgICAg ICAgICAgIHwgNjIgKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Rk bF9qc29uLmMgICAgICAgICAgICAgIHwgMjUgKysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2V2ZW50X3RyaWdnZXIuYyAgICAgICAgIHwgIDUgKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYyAgICAgIHwgMjggKysrKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYyB8ICA2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jICAgICB8IDIyICsrKysrKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaCAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAg ICAgICAgICAgICAgICAgICAgICB8ICA4ICsrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCAgICAgICAgfCAgNSArKwogc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5o ICAgICAgICAgICAgICAgfCAgNCArLQogc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHku aCAgICAgICAgICAgfCAgMSArCiAxMyBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5zZXJ0aW9ucygrKSwg MjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXgg ZDA3Zjg4Y2UyOC4uMmQ4MmZiZmFkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jCkBAIC03Myw2ICs3Myw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlz c2luZ19vaykKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0tPnN1YmRpc2FibGVvbmVycjsK IAlzdWItPnBhc3N3b3JkcmVxdWlyZWQgPSBzdWJmb3JtLT5zdWJwYXNzd29yZHJlcXVpcmVkOwog CXN1Yi0+cnVuYXNvd25lciA9IHN1YmZvcm0tPnN1YnJ1bmFzb3duZXI7CisJc3ViLT5tYXRjaGRk bG93bmVyID0gc3ViZm9ybS0+c3VibWF0Y2hkZGxvd25lcjsKIAogCS8qIEdldCBjb25uaW5mbyAq LwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJT05PSUQsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGRsX2RlcGFyc2UuYwppbmRleCA4M2YyZWVlYjBlLi41ZDg1MDcwYTg1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMgT2Jq RWxlbSAqbmV3X29iamVjdChPYmpUeXBlIHR5cGUsIGNoYXIgKm5hbWUpOwogc3RhdGljIE9ialRy ZWUgKm5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElk KTsKIHN0YXRpYyBPYmpFbGVtICpuZXdfb2JqZWN0X29iamVjdChPYmpUcmVlICp2YWx1ZSk7CiBz dGF0aWMgT2JqVHJlZSAqbmV3X29ianRyZWVfVkEoY2hhciAqZm10LCBpbnQgbnVtb2JqcywuLi4p Owotc3RhdGljIEpzb25iVmFsdWUgKm9ianRyZWVfdG9fanNvbmJfcmVjKE9ialRyZWUgKnRyZWUs IEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpOworc3RhdGljIEpzb25iVmFsdWUgKm9ianRyZWVfdG9f anNvbmJfcmVjKE9ialRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKm93 bmVyKTsKIHN0YXRpYyBjaGFyICpSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVs LCBBdHRyTnVtYmVyIGF0dG5vLAogCQkJCQkJCQkJICBMaXN0ICpkcGNvbnRleHQsIExpc3QgKipl eHBycyk7CiAKQEAgLTgxNSwxNCArODE1LDM5IEBAIG9ianRyZWVfZm10X3RvX2pzb25iX2VsZW1l bnQoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgT2JqVHJlZSAqdHJlZSkKIH0KIAogLyoKLSAqIENy ZWF0ZSBhIEpTT05CIHJlcHJlc2VudGF0aW9uIGZyb20gYW4gT2JqVHJlZS4KKyAqIFByb2Nlc3Mg dGhlIHJvbGUgc3RyaW5nIGludG8gdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4KKyAqLworc3RhdGlj IHZvaWQKK3JvbGVfdG9fanNvbmJfZWxlbWVudChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFy ICpvd25lcikKK3sKKwlKc29uYlZhbHVlCWtleTsKKwlKc29uYlZhbHVlCXZhbDsKKworCWlmIChv d25lciA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBQdXNoIHRoZSBrZXkgZmlyc3QgKi8KKwlr ZXkudHlwZSA9IGpidlN0cmluZzsKKwlrZXkudmFsLnN0cmluZy52YWwgPSAibXlvd25lciI7CisJ a2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKGtleS52YWwuc3RyaW5nLnZhbCk7CisJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfS0VZLCAma2V5KTsKKworCS8qIFRoZW4gcHJvY2VzcyB0aGUg cm9sZSBzdHJpbmcgKi8KKwl2YWwudHlwZSA9IGpidlN0cmluZzsKKwl2YWwudmFsLnN0cmluZy5s ZW4gPSBzdHJsZW4ob3duZXIpOworCXZhbC52YWwuc3RyaW5nLnZhbCA9IG93bmVyOworCXB1c2hK c29uYlZhbHVlKCZzdGF0ZSwgV0pCX1ZBTFVFLCAmdmFsKTsKK30KKworLyoKKyAqIENyZWF0ZSBh IEpTT05CIHJlcHJlc2VudGF0aW9uIGZyb20gYW4gT2JqVHJlZSBhbmQgaXRzIG93bmVyIChpZiBn aXZlbikuCiAgKi8KIHN0YXRpYyBKc29uYiAqCi1vYmp0cmVlX3RvX2pzb25iKE9ialRyZWUgKnRy ZWUpCitvYmp0cmVlX3RvX2pzb25iKE9ialRyZWUgKnRyZWUsIGNoYXIgKm93bmVyKQogewogCUpz b25iVmFsdWUgKnZhbHVlOwogCi0JdmFsdWUgPSBvYmp0cmVlX3RvX2pzb25iX3JlYyh0cmVlLCBO VUxMKTsKKwl2YWx1ZSA9IG9ianRyZWVfdG9fanNvbmJfcmVjKHRyZWUsIE5VTEwsIG93bmVyKTsK IAlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOwogfQogCkBAIC04NzQsNyArODk5LDcg QEAgb2JqdHJlZV90b19qc29uYl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIE9iakVs ZW0gKm9iamVjdCwKIAogCQljYXNlIE9ialR5cGVPYmplY3Q6CiAJCQkvKiBSZWN1cnNpdmVseSBh ZGQgdGhlIG9iamVjdCBpbnRvIHRoZSBleGlzdGluZyBwYXJzZSBzdGF0ZSAqLwotCQkJb2JqdHJl ZV90b19qc29uYl9yZWMob2JqZWN0LT52YWx1ZS5vYmplY3QsIHN0YXRlKTsKKwkJCW9ianRyZWVf dG9fanNvbmJfcmVjKG9iamVjdC0+dmFsdWUub2JqZWN0LCBzdGF0ZSwgTlVMTCk7CiAJCQlicmVh azsKIAogCQljYXNlIE9ialR5cGVBcnJheToKQEAgLTkwMiwxMiArOTI3LDEzIEBAIG9ianRyZWVf dG9fanNvbmJfZWxlbWVudChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBPYmpFbGVtICpvYmplY3Qs CiAgKiBSZWN1cnNpdmUgaGVscGVyIGZvciBvYmp0cmVlX3RvX2pzb25iLgogICovCiBzdGF0aWMg SnNvbmJWYWx1ZSAqCi1vYmp0cmVlX3RvX2pzb25iX3JlYyhPYmpUcmVlICp0cmVlLCBKc29uYlBh cnNlU3RhdGUgKnN0YXRlKQorb2JqdHJlZV90b19qc29uYl9yZWMoT2JqVHJlZSAqdHJlZSwgSnNv bmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqb3duZXIpCiB7CiAJc2xpc3RfaXRlcglpdGVyOwog CiAJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKIAorCXJv bGVfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwgb3duZXIpOwogCW9ianRyZWVfZm10X3RvX2pzb25i X2VsZW1lbnQoc3RhdGUsIHRyZWUpOwogCiAJc2xpc3RfZm9yZWFjaChpdGVyLCAmdHJlZS0+cGFy YW1zKQpAQCAtMzQwMCw3ICszNDI2LDcgQEAgZGVwYXJzZV9kcm9wX2NvbW1hbmQoY29uc3QgY2hh ciAqb2JqaWRlbnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCiAJCQkJCQkJInByZXNlbnQi LCBPYmpUeXBlQm9vbCwgYmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFKTsKIAlhcHBlbmRfb2JqZWN0 X29iamVjdChzdG10LCAiJXtjYXNjYWRlfXMiLCB0bXBfb2JqKTsKIAotCWpzb25iID0gb2JqdHJl ZV90b19qc29uYihzdG10KTsKKwlqc29uYiA9IG9ianRyZWVfdG9fanNvbmIoc3RtdCwgTlVMTCAv KiBPd25lci9yb2xlIGNhbiBiZSBza2lwcGVkIGZvciBkcm9wIGNvbW1hbmQgKi8pOwogCWNvbW1h bmQgPSBKc29uYlRvQ1N0cmluZygmc3RyLCAmanNvbmItPnJvb3QsIEpTT05CX0VTVElNQVRFRF9M RU4pOwogCiAJcmV0dXJuIGNvbW1hbmQ7CkBAIC0zNjI0LDcgKzM2NTAsNyBAQCBkZXBhcnNlX0Fs dGVyRGVwZW5kU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKICAqIFRoaXMgZnVu Y3Rpb24gc2hvdWxkIGNvdmVyIGFsbCBjYXNlcyBoYW5kbGVkIGluIFByb2Nlc3NVdGlsaXR5U2xv dy4KICAqLwogc3RhdGljIE9ialRyZWUgKgotZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0 ZWRDb21tYW5kICpjbWQpCitkZXBhcnNlX3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQg KmNtZCwgYm9vbCAqaW5jbHVkZV9vd25lcikKIHsKIAlPaWQJCQlvYmplY3RJZDsKIAlOb2RlCSAg ICpwYXJzZXRyZWU7CkBAIC0zNjQxLDE0ICszNjY3LDE3IEBAIGRlcGFyc2Vfc2ltcGxlX2NvbW1h bmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCXN3aXRjaCAobm9kZVRhZyhwYXJzZXRyZWUpKQog CXsKIAkJY2FzZSBUX0FsdGVyT2JqZWN0RGVwZW5kc1N0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9 IGZhbHNlOwogCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJEZXBlbmRTdG10KG9iamVjdElkLCBwYXJz ZXRyZWUpOwogCiAJCWNhc2UgVF9BbHRlck9iamVjdFNjaGVtYVN0bXQ6CisJCQkqaW5jbHVkZV9v d25lciA9IGZhbHNlOwogCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJPYmplY3RTY2hlbWFTdG10KGNt ZC0+ZC5zaW1wbGUuYWRkcmVzcywKIAkJCQkJCQkJCQkJCSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJ CQkgY21kLT5kLnNpbXBsZS5zZWNvbmRhcnlPYmplY3QpOwogCiAJCWNhc2UgVF9BbHRlck93bmVy U3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4gZGVwYXJzZV9BbHRl ck93bmVyU3RtdChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsIHBhcnNldHJlZSk7CiAKIAkJY2FzZSBU X0NyZWF0ZVN0bXQ6CkBAIC0zNjU4LDYgKzM2ODcsNyBAQCBkZXBhcnNlX3NpbXBsZV9jb21tYW5k KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAkJCXJldHVybiBkZXBhcnNlX0luZGV4U3RtdChvYmpl Y3RJZCwgcGFyc2V0cmVlKTsKIAogCQljYXNlIFRfUmVuYW1lU3RtdDoKKwkJCSppbmNsdWRlX293 bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4gZGVwYXJzZV9SZW5hbWVTdG10KGNtZC0+ZC5zaW1wbGUu YWRkcmVzcywgcGFyc2V0cmVlKTsKIAogCQlkZWZhdWx0OgpAQCAtMzY3MCw5ICszNzAwLDE1IEBA IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCiAvKgogICog V29ya2hvcnNlIHRvIGRlcGFyc2UgYSBDb2xsZWN0ZWRDb21tYW5kLgorICoKKyAqIGluY2x1ZGVf b3duZXIgaW5kaWNhdGVzIGlmIHRoZSBvd25lci9yb2xlIG9mIHRoZSBjb21tYW5kIHNob3VsZCBi ZQorICogaW5jbHVkZWQgaW4gdGhlIGRlcGFyc2VkIEpzb24gb3V0cHV0LiBJdCBpcyBzZXQgdG8g ZmFsc2UgZm9yIGFueSBjb21tYW5kcworICogdGhhdCBkb24ndCBDUkVBVEUgZGF0YWJhc2Ugb2Jq ZWN0cyAoQUxURVIgY29tbWFuZHMgZm9yIGV4YW1wbGUpLCB0aGlzIGlzCisgKiB0byBhdm9pZCBl bmNvZGluZyBhbmQgc2VuZGluZyB0aGUgb3duZXIgdG8gZG93bnN0cmVhbSBmb3IgcmVwbGF5IGFz IGl0IGlzCisgKiB1bm5lY2Vzc2FyeSBmb3Igc3VjaCBjb21tYW5kcy4KICAqLwogY2hhciAqCi1k ZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgdmVyYm9z ZV9tb2RlKQorZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kLCBi b29sIGluY2x1ZGVfb3duZXIsIGJvb2wgdmVyYm9zZV9tb2RlKQogewogCU92ZXJyaWRlU2VhcmNo UGF0aCAqb3ZlcnJpZGVQYXRoOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwpAQCAtMzcxMywxMCAr Mzc0OSwxMSBAQCBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQs IGJvb2wgdmVyYm9zZV9tb2RlKQogCXN3aXRjaCAoY21kLT50eXBlKQogCXsKIAkJY2FzZSBTQ1Rf U2ltcGxlOgotCQkJdHJlZSA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoY21kKTsKKwkJCXRyZWUg PSBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKGNtZCwgJmluY2x1ZGVfb3duZXIpOwogCQkJYnJlYWs7 CiAJCWNhc2UgU0NUX0FsdGVyVGFibGU6CiAJCQl0cmVlID0gZGVwYXJzZV9BbHRlclJlbGF0aW9u KGNtZCk7CisJCQlpbmNsdWRlX293bmVyID0gZmFsc2U7CiAJCQlicmVhazsKIAkJY2FzZSBTQ1Rf Q3JlYXRlVGFibGVBczoKIAkJCXRyZWUgPSBkZXBhcnNlX0NyZWF0ZVRhYmxlQXNTdG10KGNtZCk7 CkBAIC0zNzMxLDcgKzM3NjgsOCBAQCBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRD b21tYW5kICpjbWQsIGJvb2wgdmVyYm9zZV9tb2RlKQogCXsKIAkJSnNvbmIJICAgKmpzb25iOwog Ci0JCWpzb25iID0gb2JqdHJlZV90b19qc29uYih0cmVlKTsKKwkJanNvbmIgPSBpbmNsdWRlX293 bmVyID8gb2JqdHJlZV90b19qc29uYih0cmVlLCBjbWQtPnJvbGUpIDoKKwkJCQkJCQkJb2JqdHJl ZV90b19qc29uYih0cmVlLCBOVUxMKTsKIAkJY29tbWFuZCA9IEpzb25iVG9DU3RyaW5nKCZzdHIs ICZqc29uYi0+cm9vdCwgSlNPTkJfRVNUSU1BVEVEX0xFTik7CiAJfQogCkBAIC0zNzU3LDcgKzM3 OTUsNyBAQCBkZGxfZGVwYXJzZV90b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQ29sbGVjdGVk Q29tbWFuZCAqY21kID0gKENvbGxlY3RlZENvbW1hbmQgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7 CiAJY2hhcgkgICAqY29tbWFuZDsKIAotCWNvbW1hbmQgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFu ZChjbWQsIHRydWUpOworCWNvbW1hbmQgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIGZh bHNlLCB0cnVlKTsKIAogCWlmIChjb21tYW5kKQogCQlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdf dG9fdGV4dChjb21tYW5kKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf anNvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24uYwppbmRleCAzYTU3ZDI2OTdj Li43NmNlZmI5NDg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfanNvbi5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9qc29uLmMKQEAgLTcxOCw3ICs3MTgsNyBA QCBleHBhbmRfanNvbmJfYXJyYXkoU3RyaW5nSW5mbyBidWYsIGNoYXIgKnBhcmFtLAogICogV29y a2hvcnNlIGZvciBkZGxfZGVwYXJzZV9leHBhbmRfY29tbWFuZC4KICAqLwogY2hhciAqCi1kZXBh cnNlX2RkbF9qc29uX3RvX3N0cmluZyhjaGFyICpqc29uX3N0cikKK2RlcGFyc2VfZGRsX2pzb25f dG9fc3RyaW5nKGNoYXIgKmpzb25fc3RyLCBjaGFyKiogb3duZXIpCiB7CiAJRGF0dW0JCWQ7CiAJ SnNvbmIJICAgKmpzb25iOwpAQCAtNzI5LDYgKzcyOSwyNyBAQCBkZXBhcnNlX2RkbF9qc29uX3Rv X3N0cmluZyhjaGFyICpqc29uX3N0cikKIAlkID0gRGlyZWN0RnVuY3Rpb25DYWxsMShqc29uYl9p biwgUG9pbnRlckdldERhdHVtKGpzb25fc3RyKSk7CiAJanNvbmIgPSAoSnNvbmIgKikgRGF0dW1H ZXRQb2ludGVyKGQpOwogCisJaWYgKG93bmVyICE9IE5VTEwpCisJeworCQljb25zdCBjaGFyICpr ZXkgPSAibXlvd25lciI7CisJCUpzb25iVmFsdWUgKnZhbHVlOworCisJCXZhbHVlID0gZ2V0S2V5 SnNvblZhbHVlRnJvbUNvbnRhaW5lcigmanNvbmItPnJvb3QsIGtleSwgc3RybGVuKGtleSksIE5V TEwpOworCQlpZiAodmFsdWUpCisJCXsKKwkJCWNoYXIgKnN0cjsKKworCQkJLyogdmFsdWUtPnZh bC5zdHJpbmcudmFsIG1heSBub3QgYmUgTlVMTCB0ZXJtaW5hdGVkICovCisJCQlzdHIgPSBwYWxs b2ModmFsdWUtPnZhbC5zdHJpbmcubGVuICsgMSk7CisJCQltZW1jcHkoc3RyLCB2YWx1ZS0+dmFs LnN0cmluZy52YWwsIHZhbHVlLT52YWwuc3RyaW5nLmxlbik7CisJCQlzdHJbdmFsdWUtPnZhbC5z dHJpbmcubGVuXSA9ICdcMCc7CisJCQkqb3duZXIgPSBzdHI7CisJCX0KKwkJZWxzZQorCQkJLyog bXlvd25lciBpcyBub3QgZ2l2ZW4gaW4gdGhpcyBqc29uYiwgZS5nLiBmb3IgRHJvcCBDb21tYW5k cyAqLworCQkJKm93bmVyID0gTlVMTDsKKwl9CisKIAlleHBhbmRfZm10X3JlY3Vyc2l2ZShidWYs ICZqc29uYi0+cm9vdCk7CiAKIAlyZXR1cm4gYnVmLT5kYXRhOwpAQCAtNzY1LDcgKzc4Niw3IEBA IGRkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlqc29uX3N0 ciA9IHRleHRfdG9fY3N0cmluZyhqc29uKTsKIAotCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190 b190ZXh0KGRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGpzb25fc3RyKSkpOworCVBHX1JFVFVS Tl9URVhUX1AoY3N0cmluZ190b190ZXh0KGRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGpzb25f c3RyLCBOVUxMKSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmlu ZGV4IDcxZDJjNDNhZmMuLjM4YzExZjAwMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmln Z2VyLmMKQEAgLTg4MSw2ICs4ODEsNyBAQCBFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZVN0YXJ0 KE5vZGUgKnBhcnNldHJlZSkKIAogCWNvbW1hbmQtPnR5cGUgPSAoc3RtdC0+b2JqdHlwZSA9PSBP QkpFQ1RfVEFCTEUpID8gU0NUX0NyZWF0ZVRhYmxlQXMgOiBTQ1RfU2ltcGxlOwogCWNvbW1hbmQt PmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0 VXNlck5hbWVGcm9tSWQoR2V0VXNlcklkKCksIGZhbHNlKTsKIAljb21tYW5kLT5kLmN0YXMuYWRk cmVzcyA9IEludmFsaWRPYmplY3RBZGRyZXNzOwogCWNvbW1hbmQtPmQuY3Rhcy5yZWFsX2NyZWF0 ZSA9IE5VTEw7CiAJY29tbWFuZC0+cGFyc2V0cmVlID0gY29weU9iamVjdChwYXJzZXRyZWUpOwpA QCAtMTYyNiw2ICsxNjI3LDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQoT2Jq ZWN0QWRkcmVzcyBhZGRyZXNzLAogCiAJY29tbWFuZC0+dHlwZSA9IFNDVF9TaW1wbGU7CiAJY29t bWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUg PSBHZXRVc2VyTmFtZUZyb21JZChHZXRVc2VySWQoKSwgZmFsc2UpOwogCiAJY29tbWFuZC0+ZC5z aW1wbGUuYWRkcmVzcyA9IGFkZHJlc3M7CiAJY29tbWFuZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2Jq ZWN0ID0gc2Vjb25kYXJ5T2JqZWN0OwpAQCAtMTY2Miw2ICsxNjY0LDcgQEAgRXZlbnRUcmlnZ2Vy QWx0ZXJUYWJsZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSkKIAogCWNvbW1hbmQtPnR5cGUgPSBTQ1Rf QWx0ZXJUYWJsZTsKIAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247 CisJY29tbWFuZC0+cm9sZSA9IEdldFVzZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCBmYWxzZSk7 CiAKIAljb21tYW5kLT5kLmFsdGVyVGFibGUuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsK IAljb21tYW5kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQgPSBJbnZhbGlkT2lkOwpAQCAtMTkyOSw2 ICsxOTMyLDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEdyYW50KEludGVybmFsR3JhbnQgKmlzdG10 KQogCWNvbW1hbmQgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKIAljb21tYW5k LT50eXBlID0gU0NUX0dyYW50OwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4 dGVuc2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNlcklkKCks IGZhbHNlKTsKIAljb21tYW5kLT5kLmdyYW50LmlzdG10ID0gaWNvcHk7CiAJY29tbWFuZC0+cGFy c2V0cmVlID0gTlVMTDsKIApAQCAtMTk2MCw2ICsxOTY0LDcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVj dEFsdGVyT3BGYW0oQWx0ZXJPcEZhbWlseVN0bXQgKnN0bXQsIE9pZCBvcGZhbW9pZCwKIAljb21t YW5kID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CiAJY29tbWFuZC0+dHlwZSA9 IFNDVF9BbHRlck9wRmFtaWx5OwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4 dGVuc2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNlcklkKCks IGZhbHNlKTsKIAlPYmplY3RBZGRyZXNzU2V0KGNvbW1hbmQtPmQub3BmYW0uYWRkcmVzcywKIAkJ CQkJIE9wZXJhdG9yRmFtaWx5UmVsYXRpb25JZCwgb3BmYW1vaWQpOwogCWNvbW1hbmQtPmQub3Bm YW0ub3BlcmF0b3JzID0gb3BlcmF0b3JzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jCmluZGV4IDMyNTFkODliYTguLjcyN2E2ZmM5YzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTcxLDYgKzcxLDcgQEAKICNkZWZpbmUgU1VCT1BUX1JV Tl9BU19PV05FUgkJCTB4MDAwMDEwMDAKICNkZWZpbmUgU1VCT1BUX0xTTgkJCQkJMHgwMDAwMjAw MAogI2RlZmluZSBTVUJPUFRfT1JJR0lOCQkJCTB4MDAwMDQwMDAKKyNkZWZpbmUgU1VCT1BUX01B VENIX0RETF9PV05FUgkJMHgwMDAwODAwMAogCiAvKiBjaGVjayBpZiB0aGUgJ3ZhbCcgaGFzICdi aXRzJyBzZXQgKi8KICNkZWZpbmUgSXNTZXQodmFsLCBiaXRzKSAgKCgodmFsKSAmIChiaXRzKSkg PT0gKGJpdHMpKQpAQCAtOTUsNiArOTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9v bAkJZGlzYWJsZW9uZXJyOwogCWJvb2wJCXBhc3N3b3JkcmVxdWlyZWQ7CiAJYm9vbAkJcnVuYXNv d25lcjsKKwlib29sCQltYXRjaGRkbG93bmVyOwogCWNoYXIJICAgKm9yaWdpbjsKIAlYTG9nUmVj UHRyCWxzbjsKIH0gU3ViT3B0czsKQEAgLTE1Nyw2ICsxNTksOCBAQCBwYXJzZV9zdWJzY3JpcHRp b25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJb3B0 cy0+cnVuYXNvd25lciA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BU X09SSUdJTikpCiAJCW9wdHMtPm9yaWdpbiA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5Z KTsKKwlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9NQVRDSF9ERExfT1dORVIpKQor CQlvcHRzLT5tYXRjaGRkbG93bmVyID0gdHJ1ZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KIAlm b3JlYWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC0zNTMsNiArMzU3LDE1IEBAIHBhcnNlX3N1YnNj cmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAog CQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX0xTTjsKIAkJCW9wdHMtPmxzbiA9IGxz bjsKIAkJfQorCQllbHNlIGlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX01BVENIX0RE TF9PV05FUikgJiYKKwkJCQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAibWF0Y2hfZGRsX293bmVy IikgPT0gMCkKKwkJeworCQkJaWYgKElzU2V0KG9wdHMtPnNwZWNpZmllZF9vcHRzLCBTVUJPUFRf TUFUQ0hfRERMX09XTkVSKSkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0 YXRlKTsKKworCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX01BVENIX0RETF9PV05F UjsKKwkJCW9wdHMtPm1hdGNoZGRsb3duZXIgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQog CQllbHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCkBAIC01OTEsNyArNjA0LDggQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJICBTVUJPUFRfU1lO Q0hST05PVVNfQ09NTUlUIHwgU1VCT1BUX0JJTkFSWSB8CiAJCQkJCSAgU1VCT1BUX1NUUkVBTUlO RyB8IFNVQk9QVF9UV09QSEFTRV9DT01NSVQgfAogCQkJCQkgIFNVQk9QVF9ESVNBQkxFX09OX0VS UiB8IFNVQk9QVF9QQVNTV09SRF9SRVFVSVJFRCB8Ci0JCQkJCSAgU1VCT1BUX1JVTl9BU19PV05F UiB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkgIFNVQk9QVF9SVU5fQVNfT1dORVIgfCBTVUJPUFRf TUFUQ0hfRERMX09XTkVSIHwKKwkJCQkJICBTVUJPUFRfT1JJR0lOKTsKIAlwYXJzZV9zdWJzY3Jp cHRpb25fb3B0aW9ucyhwc3RhdGUsIHN0bXQtPm9wdGlvbnMsIHN1cHBvcnRlZF9vcHRzLCAmb3B0 cyk7CiAKIAkvKgpAQCAtNzA4LDYgKzcyMiw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCXB1YmxpY2F0aW9u TGlzdFRvQXJyYXkocHVibGljYXRpb25zKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vib3JpZ2luIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKG9wdHMub3JpZ2luKTsKKwl2 YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VibWF0Y2hkZGxvd25lciAtIDFdID0gQm9vbEdl dERhdHVtKG9wdHMubWF0Y2hkZGxvd25lcik7CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVs YXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzKTsKIApAQCAtMTEzMCw3ICsxMTQ1LDgg QEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJCQkJCSAgU1VCT1BUX1NZTkNIUk9OT1VTX0NPTU1JVCB8IFNVQk9Q VF9CSU5BUlkgfAogCQkJCQkJCQkgIFNVQk9QVF9TVFJFQU1JTkcgfCBTVUJPUFRfRElTQUJMRV9P Tl9FUlIgfAogCQkJCQkJCQkgIFNVQk9QVF9QQVNTV09SRF9SRVFVSVJFRCB8Ci0JCQkJCQkJCSAg U1VCT1BUX1JVTl9BU19PV05FUiB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkJCQkgIFNVQk9QVF9S VU5fQVNfT1dORVIgfCBTVUJPUFRfTUFUQ0hfRERMX09XTkVSIHwKKwkJCQkJCQkJICBTVUJPUFRf T1JJR0lOKTsKIAogCQkJCXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+ b3B0aW9ucywKIAkJCQkJCQkJCQkgICBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwpAQCAtMTIwOSw2 ICsxMjI1LDE0IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJT dWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJvcmlnaW4gLSAxXSA9IHRydWU7CiAJCQkJfQogCisJCQkJaWYgKElzU2V0KG9wdHMuc3Bl Y2lmaWVkX29wdHMsIFNVQk9QVF9NQVRDSF9ERExfT1dORVIpKQorCQkJCXsKKwkJCQkJdmFsdWVz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym1hdGNoZGRsb3duZXIgLSAxXQorCQkJCQkJPSBCb29s R2V0RGF0dW0ob3B0cy5tYXRjaGRkbG93bmVyKTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3VibWF0Y2hkZGxvd25lciAtIDFdCisJCQkJCQk9IHRydWU7CisJCQkJfQorCiAJ CQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKaW5kZXggZmIzNWNjMmM3Zi4uMTFlMzNi OWI2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmln Z2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMK QEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUoUEdf RlVOQ1RJT05fQVJHUykKIAlpZiAocmVscGVyc2lzdCA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5F TlQpCiAJewogCQkvKiBEZXBhcnNlIHRoZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBh bGxvdyBkZWNvZGluZyBvZiB0aGUgc2FtZS4gKi8KLQkJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0 aWxpdHlfY29tbWFuZChjbWQsIGZhbHNlKTsKKwkJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxp dHlfY29tbWFuZChjbWQsIHRydWUsIGZhbHNlKTsKIAogCQlpZiAoanNvbl9zdHJpbmcgIT0gTlVM TCkKIAkJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgY21kLT5kLmFsdGVyVGFibGUu b2JqZWN0SWQsIERDVF9UYWJsZUFsdGVyLApAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpY2F0aW9u X2RlcGFyc2VfZGRsX2NvbW1hbmRfZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiBEZXBhcnNl IHRoZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNvZGluZyBvZiB0aGUK IAkJCSAqIHNhbWUuCiAJCQkgKi8KLQkJCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2Nv bW1hbmQoY21kLCBmYWxzZSk7CisJCQlqc29uX3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21t YW5kKGNtZCwgdHJ1ZSwgZmFsc2UpOwogCiAJCQlpZiAoanNvbl9zdHJpbmcgIT0gTlVMTCkKIAkJ CQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIHJlbGlkLCB0eXBlLCBqc29uX3N0cmlu ZywKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3Jp dGUoUEdfRlVOQ1RJT05fQVJHUykKIAkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKIAog CS8qIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBXQUwgbG9nIGl0IHRvIGFsbG93IGRlY29k aW5nIG9mIHRoZSBzYW1lLiAqLwotCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1h bmQoY21kLCBmYWxzZSk7CisJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChj bWQsIHRydWUsIGZhbHNlKTsKIAogCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQogCQlMb2dMb2dp Y2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZCwg RENUX1NpbXBsZUNtZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmlu ZGV4IGRiMzc5ZTQ5ZmMuLmFkMmM2N2FjMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYwpAQCAtMzM5NSwyMSArMzM5NSwzMyBAQCBhcHBseV9oYW5kbGVfZGRsKFN0 cmluZ0luZm8gcykKIAljb25zdCBjaGFyICpwcmVmaXggPSBOVUxMOwogCWNoYXIJICAgKm1lc3Nh Z2UgPSBOVUxMOwogCWNoYXIJICAgKmRkbF9jb21tYW5kOworCWNoYXIJICAgKm93bmVyOwogCVNp emUJCXN6OwogCUxpc3QJICAgKnBhcnNldHJlZV9saXN0OwogCUxpc3RDZWxsICAgKnBhcnNldHJl ZV9pdGVtOwogCURlc3RSZWNlaXZlciAqcmVjZWl2ZXI7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OwogCWNvbnN0IGNoYXIgKnNhdmVfZGVidWdfcXVlcnlfc3RyaW5nID0gZGVidWdfcXVlcnlf c3RyaW5nOworCWludAkJCXNhdmVfbmVzdGxldmVsID0gMDsKIAogCW1lc3NhZ2UgPSBsb2dpY2Fs cmVwX3JlYWRfZGRsKHMsICZsc24sICZwcmVmaXgsICZzeik7CiAKIAkvKiBNYWtlIHN1cmUgd2Ug YXJlIGluIGEgdHJhbnNhY3Rpb24gY29tbWFuZCAqLwogCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAotCWRkbF9jb21tYW5kID0gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcobWVzc2FnZSk7 CisJZGRsX2NvbW1hbmQgPSBkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhtZXNzYWdlLCAmb3du ZXIpOwogCWRlYnVnX3F1ZXJ5X3N0cmluZyA9IGRkbF9jb21tYW5kOwogCisJaWYgKE15U3Vic2Ny aXB0aW9uLT5tYXRjaGRkbG93bmVyICYmIG93bmVyKQorCXsKKwkJLyoKKwkJICogU2V0IHRoZSBj dXJyZW50IHJvbGUgdG8gdGhlIG93bmVyIHRoYXQgZXhlY3V0ZWQgdGhlIGNvbW1hbmQgb24gdGhl CisJCSAqIHB1YmxpY2F0aW9uIHNlcnZlci4KKwkJICovCisJCXNhdmVfbmVzdGxldmVsID0gTmV3 R1VDTmVzdExldmVsKCk7CisJCVNldENvbmZpZ09wdGlvbigicm9sZSIsIG93bmVyLCBQR0NfSU5U RVJOQUwsIFBHQ19TX09WRVJSSURFKTsKKwl9CisKIAkvKiBEZXN0Tm9uZSBmb3IgbG9naWNhbCBy ZXBsaWNhdGlvbiAqLwogCXJlY2VpdmVyID0gQ3JlYXRlRGVzdFJlY2VpdmVyKERlc3ROb25lKTsK IAlwYXJzZXRyZWVfbGlzdCA9IHBnX3BhcnNlX3F1ZXJ5KGRkbF9jb21tYW5kKTsKQEAgLTM1MDcs NiArMzUxOSwxNCBAQCBhcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8gcykKIAkJTWVtb3J5Q29u dGV4dERlbGV0ZShwZXJfcGFyc2V0cmVlX2NvbnRleHQpOwogCX0KIAorCS8qCisJICogUmVzdG9y ZSB0aGUgR1VDIHZhcmlhYmxlcyB3ZSBzZXQgYWJvdmUuCisJICovCisJaWYgKHNhdmVfbmVzdGxl dmVsID4gMCkKKwl7CisJCUF0RU9YYWN0X0dVQyh0cnVlLCBzYXZlX25lc3RsZXZlbCk7CisJfQor CiAJZGVidWdfcXVlcnlfc3RyaW5nID0gc2F2ZV9kZWJ1Z19xdWVyeV9zdHJpbmc7CiAJZW5kX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGMzNGQzM2I5YTEuLmZkY2YyN2Rk MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwpAQCAtNDY0OCw2ICs0NjQ4LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhB cmNoaXZlICpmb3V0KQogCWludAkJCWlfc3VicHVibGljYXRpb25zOwogCWludAkJCWlfc3ViYmlu YXJ5OwogCWludAkJCWlfc3VicGFzc3dvcmRyZXF1aXJlZDsKKwlpbnQJCQlpX3N1Ym1hdGNoZGRs b3duZXI7CiAJaW50CQkJaSwKIAkJCQludHVwczsKIApAQCAtNDcwMiwxMSArNDcwMywxMyBAQCBn ZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTYwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIiBzLnN1 Ym9yaWdpbixcbiIKLQkJCQkJCQkgIiBzLnN1YnBhc3N3b3JkcmVxdWlyZWRcbiIpOworCQkJCQkJ CSAiIHMuc3VicGFzc3dvcmRyZXF1aXJlZCxcbiIKKwkJCQkJCQkgIiBzLnN1Ym1hdGNoZGRsb3du ZXJcbiIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkgICIgJyVz JyBBUyBzdWJvcmlnaW4sXG4iCi0JCQkJCQkgICIgJ3QnIEFTIHN1YnBhc3N3b3JkcmVxdWlyZWRc biIsCisJCQkJCQkgICIgJ3QnIEFTIHN1YnBhc3N3b3JkcmVxdWlyZWQsXG4iCisJCQkJCQkgICIg ZmFsc2UgQVMgc3VibWF0Y2hkZGxvd25lclxuIiwKIAkJCQkJCSAgTE9HSUNBTFJFUF9PUklHSU5f QU5ZKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDczNiw2ICs0NzM5LDcg QEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlfc3ViZGlzYWJsZW9uZXJyID0g UFFmbnVtYmVyKHJlcywgInN1YmRpc2FibGVvbmVyciIpOwogCWlfc3Vib3JpZ2luID0gUFFmbnVt YmVyKHJlcywgInN1Ym9yaWdpbiIpOwogCWlfc3VicGFzc3dvcmRyZXF1aXJlZCA9IFBRZm51bWJl cihyZXMsICJzdWJwYXNzd29yZHJlcXVpcmVkIik7CisJaV9zdWJtYXRjaGRkbG93bmVyID0gUFFm bnVtYmVyKHJlcywgInN1Ym1hdGNoZGRsb3duZXIiKTsKIAogCXN1YmluZm8gPSBwZ19tYWxsb2Mo bnR1cHMgKiBzaXplb2YoU3Vic2NyaXB0aW9uSW5mbykpOwogCkBAIC00NzY4LDYgKzQ3NzIsOCBA QCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCXN1YmluZm9baV0uc3Vib3JpZ2lu ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1Ym9yaWdpbikpOwogCQlzdWJpbmZv W2ldLnN1YnBhc3N3b3JkcmVxdWlyZWQgPQogCQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3N1YnBhc3N3b3JkcmVxdWlyZWQpKTsKKwkJc3ViaW5mb1tpXS5zdWJtYXRjaGRkbG93bmVy ID0KKwkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJtYXRjaGRkbG93bmVyKSk7 CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1 bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5kb2JqKSwgZm91dCk7CkBAIC00ODQ2LDYgKzQ4NTIs OSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbklu Zm8gKnN1YmluZm8pCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ViaW5mby0+c3Vib3JpZ2luLCBMT0dJ Q0FMUkVQX09SSUdJTl9BTlkpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCBv cmlnaW4gPSAlcyIsIHN1YmluZm8tPnN1Ym9yaWdpbik7CiAKKwlpZiAoc3RyY21wKHN1YmluZm8t PnN1Ym1hdGNoZGRsb3duZXIsICJmIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIsIG1hdGNoX2RkbF9vd25lciA9IGZhbHNlIik7CisKIAlpZiAoc3RyY21wKHN1YmluZm8t PnN1YnN5bmNjb21taXQsICJvZmYiKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwg Iiwgc3luY2hyb25vdXNfY29tbWl0ID0gJXMiLCBmbXRJZChzdWJpbmZvLT5zdWJzeW5jY29tbWl0 KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCmluZGV4IDlhZTZhMzhlMDAuLmVmZDYzNDc3YTggMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aApAQCAtNjY2LDYgKzY2Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJ Y2hhcgkgICAqc3Vic3luY2NvbW1pdDsKIAljaGFyCSAgICpzdWJwdWJsaWNhdGlvbnM7CiAJY2hh cgkgICAqc3VicGFzc3dvcmRyZXF1aXJlZDsKKwljaGFyCSAgICpzdWJtYXRjaGRkbG93bmVyOwog fSBTdWJzY3JpcHRpb25JbmZvOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA3MDY4ZGMwMzg4Li5kZjc5Yzc5 ZThkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYwpAQCAtNjUyMSw3ICs2NTIxLDcgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25z KGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAlQR3Jlc3VsdCAgICpyZXM7CiAJ cHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAlzdGF0aWMgY29uc3QgYm9vbCB0cmFu c2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotCWZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9Owor CWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTY1 NzksOSArNjU3OSwxMSBAQCBkZXNjcmliZVN1YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy biwgYm9vbCB2ZXJib3NlKQogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCiAJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIiwgc3Vib3JpZ2luIEFTIFwiJXNcIlxuIgot CQkJCQkJCSAgIiwgc3VicnVuYXNvd25lciBBUyBcIiVzXCJcbiIsCisJCQkJCQkJICAiLCBzdWJy dW5hc293bmVyIEFTIFwiJXNcIlxuIgorCQkJCQkJCSAgIiwgc3VibWF0Y2hkZGxvd25lciBBUyBc IiVzXCJcbiIsCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoIk9yaWdpbiIpLAotCQkJCQkJCSAgZ2V0 dGV4dF9ub29wKCJSdW4gYXMgT3duZXI/IikpOworCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJSdW4g YXMgT3duZXI/IiksCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIk1hdGNoIERETCBvd25lciIpKTsK IAogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLCAgc3Vic3luY2NvbW1pdCBB UyBcIiVzXCJcbiIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDkxZDcy OWQ2MmQuLmJlNDUxMjM3ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApA QCAtOTMsNiArOTMsOSBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlv blJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YnJ1bmFz b3duZXI7CQkvKiBUcnVlIGlmIHJlcGxpY2F0aW9uIHNob3VsZCBleGVjdXRlIGFzCiAJCQkJCQkJ CQkgKiB0aGUgc3Vic2NyaXB0aW9uIG93bmVyICovCiAKKwlib29sCQlzdWJtYXRjaGRkbG93bmVy OwkvKiBUcnVlIGlmIHJlcGxpY2F0ZWQgb2JqZWN0cyBieSBEREwgcmVwbGljYXRpb24KKwkJCQkJ CQkJCSAqIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgb3duZXIgb24gdGhlIHB1Ymxpc2hlciAq LworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0 YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJ dGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxMOwpAQCAtMTQ0LDYgKzE0Nyw4IEBA IHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsJLyog TGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byBzdWJzY3JpYmUgdG8gKi8KIAljaGFyCSAgICpv cmlnaW47CQkJLyogT25seSBwdWJsaXNoIGRhdGEgb3JpZ2luYXRpbmcgZnJvbSB0aGUKIAkJCQkJ CQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLworCWJvb2wJCW1hdGNoZGRsb3duZXI7ICAvKiBJbmRp Y2F0ZXMgaWYgcmVwbGljYXRlZCBvYmplY3RzIGJ5IERETCByZXBsaWNhdGlvbgorCQkJCQkJCQkg KiBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIG93bmVyIG9uIHRoZSBwdWJsaXNoZXIgKi8KIH0g U3Vic2NyaXB0aW9uOwogCiAvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oIGIv c3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oCmluZGV4IDFhMjcwMmM1YWMuLjJiNzc1NGJm YWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaAorKysgYi9zcmMv aW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKQEAgLTE0LDggKzE0LDggQEAKIAogI2luY2x1ZGUg InRjb3AvZGVwYXJzZV91dGlsaXR5LmgiCiAKLWV4dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlf Y29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgdmVyYm9zZV9tb2RlKTsKLWV4dGVy biBjaGFyICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhjaGFyICpqc29uYik7CitleHRlcm4g Y2hhciAqZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kLCBib29s IGluY2x1ZGVfb3duZXIsIGJvb2wgdmVyYm9zZV9tb2RlKTsKK2V4dGVybiBjaGFyICpkZXBhcnNl X2RkbF9qc29uX3RvX3N0cmluZyhjaGFyICpqc29uYiwgY2hhcioqIG93bmVyKTsKIGV4dGVybiBj aGFyICpkZXBhcnNlX2Ryb3BfY29tbWFuZChjb25zdCBjaGFyICpvYmppZGVudGl0eSwgY29uc3Qg Y2hhciAqb2JqZWN0dHlwZSwKIAkJCQkJCQkJICBEcm9wQmVoYXZpb3IgYmVoYXZpb3IpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oIGIvc3JjL2luY2x1 ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAppbmRleCBhNGExMjM3N2I4Li44N2E3NjFiYjNlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCisrKyBiL3NyYy9p bmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgQ29sbGVjdGVkQ29tbWFuZAogCUNvbGxlY3RlZENvbW1hbmRUeXBlIHR5cGU7CiAKIAli b29sCQlpbl9leHRlbnNpb247CisJY2hhcgkgICAqcm9sZTsKIAlOb2RlCSAgICpwYXJzZXRyZWU7 CiAKIAl1bmlvbgotLSAKMi4zMC4wLndpbmRvd3MuMgoK --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0002-DDL-replication-for-Table-DDL-commands-2023_04_07-2.patch" Content-Description: 0002-DDL-replication-for-Table-DDL-commands-2023_04_07-2.patch Content-Disposition: attachment; filename="0002-DDL-replication-for-Table-DDL-commands-2023_04_07-2.patch"; size=245624; creation-date="Fri, 07 Apr 2023 03:17:30 GMT"; modification-date="Fri, 07 Apr 2023 03:22:33 GMT" Content-Transfer-Encoding: base64 RnJvbSBkNzhkMmIzYjZiMGVmMjM1NjU0NGIwNWQ1YzM2ZmNjMDI2MGMzMzg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjA6MzE6MjMgKzA4MDAKU3ViamVjdDogW1BBVENIIDIv Nl0gRERMIHJlcGxpY2F0aW9uIGZvciBUYWJsZSBEREwgY29tbWFuZHMKClRvIHN1cHBvcnQgRERM IHJlcGxpY2F0aW9uLCBpdCB1c2UgZXZlbnQgdHJpZ2dlciBhbmQgRERMIGRlcGFyc2luZwpmYWNp bGl0aWVzLiBEdXJpbmcgQ1JFQVRFIFBVQkxJQ0FUSU9OIHdlIHJlZ2lzdGVyIGEgY29tbWFuZCBl bmQgdHJpZ2dlciB0aGF0CmRlcGFyc2VzIHRoZSBEREwgKGlmIHRoZSBEREwgaXMgYW5ub3RhdGVk IGFzIGRkbHJlcGxvayBmb3IgRERMIHJlcGxpY2F0aW9uIGluCmNtZHRhZ2xpc3QuaCkgYXMgYSBK U09OIGJsb2IsIGFuZCBXQUwgbG9ncyBpdC4gVGhlIGV2ZW50IHRyaWdnZXIgaXMgYXV0b21hdGlj YWxseQpyZW1vdmVkIGF0IHRoZSB0aW1lIG9mIERST1AgUFVCTElDQVRJT04uIFRoZSBXQUxTZW5k ZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcwppdCBkb3duc3RyZWFtIHNpbWlsYXIgdG8gb3Ro ZXIgRE1MIGNvbW1hbmRzLiBUaGUgc3Vic2NyaWJlciB0aGVuIGNvbnZlcnRzIEpTT04KYmFjayB0 byB0aGUgRERMIGNvbW1hbmQgc3RyaW5nIGFuZCBleGVjdXRlcyBpdC4gSW4gdGhlIHN1YnNjcmli ZXIsIHdlIGFsc28gYWRkCnRoZSBuZXdseSBhZGRlZCByZWwgdG8gcGdfc3Vic2NyaXB0aW9uX3Jl bCBzbyB0aGF0IHRoZSBETUwgY2hhbmdlcyBvbiB0aGUgbmV3CnRhYmxlIGNhbiBiZSByZXBsaWNh dGVkIHdpdGhvdXQgaGF2aW5nIHRvIG1hbnVhbGx5IHJ1bgoiQUxURVIgU1VCU0NSSVBUSU9OIC4u LiBSRUZSRVNIIFBVQkxJQ0FUSU9OIi4KCi0gRm9yIG5vbi1yZXdyaXRlIEFMVEVSIG9iamVjdCBj b21tYW5kIGFuZAotICAgICBDUkVBVEUgb2JqZWN0IGNvbW1hbmQ6CndlIGRlcGFyc2UgdGhlIGNv bW1hbmQgYXQgZGRsX2NvbW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIgYW5kIFdBTCBsb2cgdGhlCmRl cGFyc2VkIGpzb24gc3RyaW5nLiBUaGUgV0FMU2VuZGVyIGRlY29kZXMgdGhlIFdBTCBhbmQgc2Vu ZHMgaXQgdG8Kc3Vic2NyaWJlciBpZiB0aGUgY3JlYXRlZC9hbHRlcmVkIHRhYmxlIGlzIHB1Ymxp c2hlZC4gSXQgc3VwcG9ydHMgbW9zdCBvZgpBTFRFUiBUQUJMRSBjb21tYW5kIGV4Y2VwdCBzb21l IGNvbW1hbmRzKERETCByZWxhdGVkIHRvIFBBUlRJVElPTkVEIFRBQkxFCi4uLikgdGhhdCBpbnRy b2R1Y2VkIHJlY2VudGx5IHdoaWNoIGhhdmVuJ3QgYmVlbiBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJl bnQKZGRsX2RlcGFyc2VyLCB3ZSB3aWxsIHN1cHBvcnQgdGhhdCBsYXRlci4KCi0gRm9yIERST1Ag b2JqZWN0OgpUaGUgJ2NvbW1hbmQgc3RhcnQnIGV2ZW50IGhhbmRsZXIgbG9ncyBhIGRkbCBtZXNz YWdlIHdpdGggdGhlIHJlbGlkcyBvZgp0aGUgdGFibGVzIHRoYXQgYXJlIGRyb3BwZWQgd2hpY2gg dGhlIG91dHB1dCBwbHVnaW4gKHBnb3V0cHV0KSBzdG9yZXMgaW4KaXRzIGludGVybmFsIGRhdGEg c3RydWN0dXJlIGFmdGVyIHZlcmlmeWluZyB0aGF0IGl0IGlzIGZvciBhIHRhYmxlIHRoYXQgaXMK cGFydCBvZiB0aGUgcHVibGljYXRpb24uIExhdGVyIHRoZSAnY29tbWFuZCBlbmQnIGV2ZW50IGhh bmRsZXIgc2VuZHMgdGhlCmFjdHVhbCBkcm9wIG1lc3NhZ2UuIFBnb3V0cHV0IG9uIHJlY2Vpdmlu ZyB0aGUgY29tbWFuZCBlbmQsIG9ubHkgc2VuZHMgb3V0CnRoZSBkcm9wIGNvbW1hbmQgb25seSBp ZiBpdCBpcyBmb3Igb25lIG9mIHRoZSByZWxpZHMgbWFya2VkIGZvciBkZWxldGluZy4KClRoZSBy ZWFzb24gd2UgaGF2ZSB0byBkbyB0aGlzIGlzIGJlY2F1c2UsIG9uY2UgdGhlIGxvZ2ljYWwgZGVj b2RlcgpyZWNlaXZlcyB0aGUgJ2NvbW1hbmQgZW5kJyBtZXNzYWdlLCAgdGhlIHJlbGlkIG9mIHRo ZSB0YWJsZSBpcyBubyBsb25nZXIKdmFsaWQgYXMgaXQgaGFzIGJlZW4gZGVsZXRlZCBhcyBwYXJ0 IG9mIGludmFsaWRhdGlvbnMgcmVjZWl2ZWQgZm9yIHRoZQpkcm9wIHRhYmxlIGNvbW1hbmQuIEl0 IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byB2ZXJpZnkgaWYgdGhlIHRhYmxlIGlzCnBhcnQgb2Yg dGhlIHB1YmxpY2F0aW9uIGxpc3Qgb3Igbm90LiBUbyBtYWtlIHRoaXMgcG9zc2libGUsIEkgaGF2 ZSBhZGRlZAp0d28gbW9yZSBlbGVtZW50cyB0byB0aGUgZGRsIHhsb2cgYW5kIGRkbCBtZXNzYWdl LCAocmVsaWQgYW5kIGNtZHR5cGUpLgoKV2UgY291bGQgaGF2ZSBhbHNvIGhhbmRsZWQgYWxsIHRo aXMgb24gdGhlIHN1YnNjcmliZXIgc2lkZSBhcyB3ZWxsLCBidXQKdGhhdCB3b3VsZCBtZWFuIHNl bmRpbmcgc3B1cmlvdXMgZGRsIG1lc3NhZ2VzIGZvciB0YWJsZXMgdGhhdCBhcmUgbm90IHBhcnQK b2YgdGhlIHB1YmxpY2F0aW9uLgoKLSBGb3IgdGFibGVfcmV3cml0ZSBBTFRFUiBUQUJMRSBjb21t YW5kOgooQUxURVIgQ09MVU1OIFRZUEUsIEFERCBDT0xVTU4gREVGQVVMVCwgU0VUIExPR0dFRCwg U0VUIEFDQ0VTUyBNRVRIT0QpCgp3ZSBkZXBhcnNlIHRoZSBjb21tYW5kIGFuZCBXQUwgbG9nIHRo ZSBkZXBhcnNlZCBqc29uIHN0cmluZyBhdAp0YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXIuIFRo ZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBpdCB0bwpzdWJzY3JpYmVyIGlm IHRoZSBhbHRlcmVkIHRhYmxlIGlzIHB1Ymxpc2hlZC4gVGhlbiwgdGhlIFdBTFNlbmRlciB3aWxs CmNvbnZlcnQgdGhlIHVwY29taW5nIHJld3JpdGUgSU5TRVJUcyB0byBVUERBVEVzIGFuZCBzZW5k IHRoZW0gdG8Kc3Vic2NyaWJlciBzbyB0aGF0IHRoZSBkYXRhIGJldHdlZW4gcHVibGlzaGVyIGFu ZCBzdWJzY3JpYmVyIGNhbiBhbHdheXMgYmUKY29uc2lzdGVudC4gTm90ZSB0aGF0IHRoZSB0YWJs ZXMgdGhhdCBwdWJsaXNoIHJld3JpdGUgZGRsIG11c3QgaGF2ZSBhCnJlcGxpY2EgaWRlbnRpdHkg Y29uZmlndXJlZCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlcGxpY2F0ZSB0aGUgdXBjb21pbmcK cmV3cml0ZSBVUERBVEVzLgoKV2UgZG8gdGhpcyB3YXkgYmVjYXVzZSBvZiB0d28gcmVhc29uOgoo MSkgVGhlIGRhdGEgYmVmb3JlIHRoZSByZXdyaXRlIGRkbCBjb3VsZCBhbHJlYWR5IGJlIGRpZmZl cmVudCBhbW9uZwpwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIuIFRvIG1ha2Ugc3VyZSB0aGUgZXh0 cmEgZGF0YSBpbiBzdWJzY3JpYmVyIHdoaWNoCmRvZXNuJ3QgZXhpc3QgaW4gcHVibGlzaGVyIGFs c28gZ2V0IHJld3JpdHRlbiwgd2UgbmVlZCB0byBsZXQgdGhlCnN1YnNjcmliZXIgZXhlY3V0ZSB0 aGUgb3JpZ2luYWwgcmV3cml0ZSBkZGwgdG8gcmV3cml0ZSBhbGwgdGhlIGRhdGEgYXQKZmlyc3Qu CgooMikgdGhlIGRhdGEgYWZ0ZXIgZXhlY3V0aW5nIHJld3JpdGUgZGRsIGNvdWxkIGJlIGRpZmZl cmVudCBhbW9uZwpwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIoZHVlIHRvIGRpZmZlcmVudCBmdW5j dGlvbnMvb3BlcmF0b3JzIHVzZWQgZHVyaW5nCnJld3JpdGUpLCBzbyB3ZSBuZWVkIHRvIHJlcGxp Y2F0ZSB0aGUgcmV3cml0ZSBVUERBVEVzIHRvIGtlZXAgdGhlIGRhdGEKY29uc2lzdGVudC4KClRP IElNUFJPVkU6ClRoaXMgYXBwcm9hY2ggY291bGQgYmUgaW1wcm92ZWQgYnkgbGV0dGluZyB0aGUg c3Vic2NyaWJlciB0cnkgdG8gdXBkYXRlCnRoZSBleHRyYSBkYXRhIGl0c2VsZiBpbnN0ZWFkIG9m IGRvaW5nIGZ1bGx5IHJld3JpdGUgZGRsIGFuZCB1c2UgdGhlCnVwY29taW5nIHJld3JpdGUgVVBE QVRFcyB0byByZXdyaXRlIHRoZSByZXN0IGRhdGEuIFRvIGFjaGlldmUgdGhpcywgd2UKY291bGQg bW9kaWZ5IHRoZSBkZXBhcnNlZCBqc29uIHN0cmluZyB0byB0ZW1wb3JhcmlseSByZW1vdmUgdGhl IHJld3JpdGUKcGFydCBhbmQgYWRkIHNvbWUgbG9naWMgaW4gc3Vic2NyaWJlciB0byB1cGRhdGUg dGhlIGV4dHJhIGRhdGEuCkJlc2lkZXMsIHdlIG1heSBub3QgbmVlZCB0byBzZW5kIHJld3JpdGUg Y2hhbmdlcyBmb3IgYWxsIHR5cGUgb2YgcmV3cml0ZQpkZGwsIGZvciBleGFtcGxlLCBpdCBzZWVt cyBmaW5lIHRvIHNraXAgc2VuZGluZyByZXdyaXRlIGNoYW5nZXMgZm9yIEFMVEVSClRBQkxFIFNF VCBMT0dHRUQgYXMgdGhlIGRhdGEgaW4gdGhlIHRhYmxlIGRvZXNuJ3QgYWN0dWFsbHkgYmUgY2hh bmdlZC4gV2UKY291bGQgdXNlIHRoZSBkZXBhcnNlciBhbmQgZXZlbnQgdHJpZ2dlciB0byBmaWx0 ZXIgdGhlc2UgZGRscyBhbmQgc2tpcApzZW5kaW5nIHJld3JpdGUgY2hhbmdlcyBmb3IgdGhlbS4K LS0tCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCAgICAgICAgfCAgIDI2 ICsKIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbCAgICAgICAgICAgICB8ICAgIDUg KwogY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyAgICAgICAgIHwgICA0OCAr CiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAxMDQ5ICsr KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUgICAg ICAgICAgfCAgICAxICsKIC4uLi9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYyAg ICAgICB8ICAgNTIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkICAg ICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMgICAgICAgICAg ICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAg ICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jICAgICAgICAg IHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAg fCAgMzIzICsrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAg ICAgfCAgICAyICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5j ICB8ICAgODQgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5j ICB8ICAyODMgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMg ICAgICB8ICAgNDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMg ICAgIHwgICA5MyArKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAg ICAgIHwgICAyNCArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxk ICAgfCAgICAyICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAg ICB8ICAgNDMgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAg IHwgIDEzNSArKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAg ICB8ICAyNDAgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YyAgIHwgIDI2OCArKysrLQogc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyAgICAgICAgICAgICAg ICAgICAgIHwgICAyNiArLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAg ICAgICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAg ICAgICAgIHwgICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAg ICAgICAgfCAgIDc4ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAg ICAgICAgfCAgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAg ICAgICB8ICAgIDIgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9ybWdyZGVzYy5jICAgICAgICAgICAg ICAgICB8ICAgIDEgKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgICAzMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmggICAgICAgICAgICAg ICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAg ICAgfCAgIDIwICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAg ICB8ICAgMzAgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oICAgICAg ICB8ICAgMTQgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oICAgICAgICAg IHwgICA2MCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaCAgICAgICAgICAgICAg fCAgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICB8 ICAgIDQgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oICAgICAgIHwg ICAyNyArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oICAgICAgICAgICAgfCAg ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAg MzkgKwogc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWcuaCAgICAgICAgICAgICAgICAgICAgIHwgICAg NCArLQogc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggICAgICAgICAgICAgICAgIHwgIDM4 NiArKystLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICAgICAgIHwg ICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICAgIHwg IDQyMCArKystLS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAg ICAgfCAgICA1ICsKIDQ2IGZpbGVzIGNoYW5nZWQsIDMzODggaW5zZXJ0aW9ucygrKSwgNTA0IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9sb2dpY2FsZGRsbXNnZGVzYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaAoKZGlmZiAtLWdpdCBhL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0IGIvY29udHJpYi90ZXN0X2RlY29kaW5n L2V4cGVjdGVkL2RkbC5vdXQKaW5kZXggOWEyOGI1ZGRjNS4uMGY1MWYyYjQxYSAxMDA2NDQKLS0t IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQKKysrIGIvY29udHJpYi90 ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQKQEAgLTgzMSw2ICs4MzEsMzIgQEAgU0VMRUNU IGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcs IE5VTEwsIE5VTEwsICdpbmMKIC0tLS0tLQogKDAgcm93cykKIAorU0VMRUNUICdkZGwgbXNnMScg RlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cxJywgMTYzOTQsIDEsICdt c2cxJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRsIG1zZzEKKygxIHJvdykKKworU0VM RUNUICdkZGwgbXNnMicgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cy JywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgU0NIRU1BICV7aWZfbm90X2V4aXN0c31zICV7 bmFtZX1JICV7YXV0aG9yaXphdGlvbn1zIiwgIm5hbWUiOiAiZm9vIiwgImF1dGhvcml6YXRpb24i OiB7ImZtdCI6ICJBVVRIT1JJWkFUSU9OICV7YXV0aG9yaXphdGlvbl9yb2xlfUkiLCAicHJlc2Vu dCI6IGZhbHNlLCAiYXV0aG9yaXphdGlvbl9yb2xlIjogbnVsbH0sICJpZl9ub3RfZXhpc3RzIjog IiJ9Jyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRsIG1zZzIKKygxIHJvdykKKworU0VM RUNUICdkZGwgbXNnMycgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cz JywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZf bm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCAoJXt0YWJsZV9lbGVtZW50czosIH1zKSAle2luaGVy aXRzfXMgJXt0YWJsZXNwYWNlfXMgJXtvbl9jb21taXR9cyAle3BhcnRpdGlvbl9ieX1zICV7YWNj ZXNzX21ldGhvZH1zICV7d2l0aF9jbGF1c2V9cyIsICJpZGVudGl0eSI6IHsib2JqbmFtZSI6ICJm b28iLCAic2NoZW1hbmFtZSI6ICJlbGVtZW50X3Rlc3QifSwgImluaGVyaXRzIjogeyJmbXQiOiAi SU5IRVJJVFMgKCV7cGFyZW50czosIH1EKSIsICJwYXJlbnRzIjogbnVsbCwgInByZXNlbnQiOiBm YWxzZX0sICJvbl9jb21taXQiOiB7ImZtdCI6ICJPTiBDT01NSVQgJXtvbl9jb21taXRfdmFsdWV9 cyIsICJwcmVzZW50IjogZmFsc2UsICJvbl9jb21taXRfdmFsdWUiOiBudWxsfSwgInRhYmxlc3Bh Y2UiOiB7ImZtdCI6ICJUQUJMRVNQQUNFICV7dGFibGVzcGFjZX1JIiwgInByZXNlbnQiOiBmYWxz ZSwgInRhYmxlc3BhY2UiOiBudWxsfSwgInBlcnNpc3RlbmNlIjogIiIsICJ3aXRoX2NsYXVzZSI6 IHsiZm10IjogIldJVEgiLCAicHJlc2VudCI6IGZhbHNlfSwgInBhcnRpdGlvbl9ieSI6IHsiZm10 IjogIlBBUlRJVElPTiBCWSAle2RlZmluaXRpb259cyIsICJwcmVzZW50IjogZmFsc2UsICJkZWZp bml0aW9uIjogbnVsbH0sICJhY2Nlc3NfbWV0aG9kIjogeyJmbXQiOiAiVVNJTkcgJXthY2Nlc3Nf bWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYWNjZXNzX21ldGhvZCI6IG51bGx9LCAiaWZf bm90X2V4aXN0cyI6ICIiLCAidGFibGVfZWxlbWVudHMiOiBbeyJmbXQiOiAiJXtuYW1lfUkgJXtj b2x0eXBlfVQgU1RPUkFHRSAle2NvbHN0b3JhZ2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRp b259cyAle25vdF9udWxsfXMgJXtkZWZhdWx0fXMgJXtnZW5lcmF0ZWRfY29sdW1ufXMiLCAibmFt ZSI6ICJpZCIsICJ0eXBlIjogImNvbHVtbiIsICJjb2x0eXBlIjogeyJ0eXBtb2QiOiAiIiwgInR5 cGFycmF5IjogZmFsc2UsICJ0eXBlbmFtZSI6ICJpbnQ0IiwgInNjaGVtYW5hbWUiOiAicGdfY2F0 YWxvZyJ9LCAiZGVmYXVsdCI6IHsiZm10IjogIkRFRkFVTFQiLCAicHJlc2VudCI6IGZhbHNlfSwg Im5vdF9udWxsIjogIiIsICJjb2xsYXRpb24iOiB7ImZtdCI6ICJDT0xMQVRFIiwgInByZXNlbnQi OiBmYWxzZX0sICJjb2xzdG9yYWdlIjogInBsYWluIiwgImNvbXByZXNzaW9uIjogeyJmbXQiOiAi Q09NUFJFU1NJT04gJXtjb21wcmVzc2lvbl9tZXRob2R9SSIsICJwcmVzZW50IjogZmFsc2UsICJj b21wcmVzc2lvbl9tZXRob2QiOiBudWxsfSwgImdlbmVyYXRlZF9jb2x1bW4iOiB7ImZtdCI6ICJH RU5FUkFURUQgQUxXQVlTIEFTIiwgInByZXNlbnQiOiBmYWxzZX19XX19Jyk7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgZGRsIG1zZzMKKygxIHJvdykKKworU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBtZXNzYWdlOiBwcmVmaXg6 IGRkbCBtc2cxLCByZWxpZDogMTYzOTQsIGNtZHR5cGU6IERyb3Agc3RhcnQsIHN6OiA0IGNvbnRl bnQ6bXNnMQorIG1lc3NhZ2U6IHByZWZpeDogZGRsIG1zZzIsIHJlbGlkOiAxNjM5NCwgY21kdHlw ZTogRHJvcCBzdGFydCwgc3o6IDIxNyBjb250ZW50OnsiZm10IjogIkNSRUFURSBTQ0hFTUEgJXtp Zl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkgJXthdXRob3JpemF0aW9ufXMiLCAibmFtZSI6ICJmb28i LCAiYXV0aG9yaXphdGlvbiI6IHsiZm10IjogIkFVVEhPUklaQVRJT04gJXthdXRob3JpemF0aW9u X3JvbGV9SSIsICJwcmVzZW50IjogZmFsc2UsICJhdXRob3JpemF0aW9uX3JvbGUiOiBudWxsfSwg ImlmX25vdF9leGlzdHMiOiAiIn0KKyBtZXNzYWdlOiBwcmVmaXg6IGRkbCBtc2czLCByZWxpZDog MTYzOTQsIGNtZHR5cGU6IERyb3Agc3RhcnQsIHN6OiAxMzk2IGNvbnRlbnQ6eyJmbXQiOiAiQ1JF QVRFICV7cGVyc2lzdGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQg KCV7dGFibGVfZWxlbWVudHM6LCB9cykgJXtpbmhlcml0c31zICV7dGFibGVzcGFjZX1zICV7b25f Y29tbWl0fXMgJXtwYXJ0aXRpb25fYnl9cyAle2FjY2Vzc19tZXRob2R9cyAle3dpdGhfY2xhdXNl fXMiLCAiaWRlbnRpdHkiOiB7Im9iam5hbWUiOiAiZm9vIiwgInNjaGVtYW5hbWUiOiAiZWxlbWVu dF90ZXN0In0sICJpbmhlcml0cyI6IHsiZm10IjogIklOSEVSSVRTICgle3BhcmVudHM6LCB9RCki LCAicGFyZW50cyI6IG51bGwsICJwcmVzZW50IjogZmFsc2V9LCAib25fY29tbWl0IjogeyJmbXQi OiAiT04gQ09NTUlUICV7b25fY29tbWl0X3ZhbHVlfXMiLCAicHJlc2VudCI6IGZhbHNlLCAib25f Y29tbWl0X3ZhbHVlIjogbnVsbH0sICJ0YWJsZXNwYWNlIjogeyJmbXQiOiAiVEFCTEVTUEFDRSAl e3RhYmxlc3BhY2V9SSIsICJwcmVzZW50IjogZmFsc2UsICJ0YWJsZXNwYWNlIjogbnVsbH0sICJw ZXJzaXN0ZW5jZSI6ICIiLCAid2l0aF9jbGF1c2UiOiB7ImZtdCI6ICJXSVRIIiwgInByZXNlbnQi OiBmYWxzZX0sICJwYXJ0aXRpb25fYnkiOiB7ImZtdCI6ICJQQVJUSVRJT04gQlkgJXtkZWZpbml0 aW9ufXMiLCAicHJlc2VudCI6IGZhbHNlLCAiZGVmaW5pdGlvbiI6IG51bGx9LCAiYWNjZXNzX21l dGhvZCI6IHsiZm10IjogIlVTSU5HICV7YWNjZXNzX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxz ZSwgImFjY2Vzc19tZXRob2QiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIiwgInRhYmxlX2Vs ZW1lbnRzIjogW3siZm10IjogIiV7bmFtZX1JICV7Y29sdHlwZX1UIFNUT1JBR0UgJXtjb2xzdG9y YWdlfXMgJXtjb21wcmVzc2lvbn1zICV7Y29sbGF0aW9ufXMgJXtub3RfbnVsbH1zICV7ZGVmYXVs dH1zICV7Z2VuZXJhdGVkX2NvbHVtbn1zIiwgIm5hbWUiOiAiaWQiLCAidHlwZSI6ICJjb2x1bW4i LCAiY29sdHlwZSI6IHsidHlwbW9kIjogIiIsICJ0eXBhcnJheSI6IGZhbHNlLCAidHlwZW5hbWUi OiAiaW50NCIsICJzY2hlbWFuYW1lIjogInBnX2NhdGFsb2cifSwgImRlZmF1bHQiOiB7ImZtdCI6 ICJERUZBVUxUIiwgInByZXNlbnQiOiBmYWxzZX0sICJub3RfbnVsbCI6ICIiLCAiY29sbGF0aW9u IjogeyJmbXQiOiAiQ09MTEFURSIsICJwcmVzZW50IjogZmFsc2V9LCAiY29sc3RvcmFnZSI6ICJw bGFpbiIsICJjb21wcmVzc2lvbiI6IHsiZm10IjogIkNPTVBSRVNTSU9OICV7Y29tcHJlc3Npb25f bWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiY29tcHJlc3Npb25fbWV0aG9kIjogbnVsbH0s ICJnZW5lcmF0ZWRfY29sdW1uIjogeyJmbXQiOiAiR0VORVJBVEVEIEFMV0FZUyBBUyIsICJwcmVz ZW50IjogZmFsc2V9fV19fQorKDMgcm93cykKKwogU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CiAgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90IAogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGlu Zy9zcWwvZGRsLnNxbCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbAppbmRleCA0 Zjc2YmVkNzJjLi4xZWE1YTRiMjcxIDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2Rpbmcv c3FsL2RkbC5zcWwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCkBAIC00 MzEsNiArNDMxLDExIEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jCiAtLSBkb25lLCBmcmVlIGxv Z2ljYWwgcmVwbGljYXRpb24gc2xvdAogU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3Rf Z2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMn LCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKIAorU0VMRUNUICdkZGwgbXNnMScgRlJP TSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cxJywgMTYzOTQsIDEsICdtc2cx Jyk7CitTRUxFQ1QgJ2RkbCBtc2cyJyBGUk9NIHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSgn ZGRsIG1zZzInLCAxNjM5NCwgMSwgJ3siZm10IjogIkNSRUFURSBTQ0hFTUEgJXtpZl9ub3RfZXhp c3RzfXMgJXtuYW1lfUkgJXthdXRob3JpemF0aW9ufXMiLCAibmFtZSI6ICJmb28iLCAiYXV0aG9y aXphdGlvbiI6IHsiZm10IjogIkFVVEhPUklaQVRJT04gJXthdXRob3JpemF0aW9uX3JvbGV9SSIs ICJwcmVzZW50IjogZmFsc2UsICJhdXRob3JpemF0aW9uX3JvbGUiOiBudWxsfSwgImlmX25vdF9l eGlzdHMiOiAiIn0nKTsKK1NFTEVDVCAnZGRsIG1zZzMnIEZST00gcGdfbG9naWNhbF9lbWl0X2Rk bF9tZXNzYWdlKCdkZGwgbXNnMycsIDE2Mzk0LCAxLCAneyJmbXQiOiAiQ1JFQVRFICV7cGVyc2lz dGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQgKCV7dGFibGVfZWxl bWVudHM6LCB9cykgJXtpbmhlcml0c31zICV7dGFibGVzcGFjZX1zICV7b25fY29tbWl0fXMgJXtw YXJ0aXRpb25fYnl9cyAle2FjY2Vzc19tZXRob2R9cyAle3dpdGhfY2xhdXNlfXMiLCAiaWRlbnRp dHkiOiB7Im9iam5hbWUiOiAiZm9vIiwgInNjaGVtYW5hbWUiOiAiZWxlbWVudF90ZXN0In0sICJp bmhlcml0cyI6IHsiZm10IjogIklOSEVSSVRTICgle3BhcmVudHM6LCB9RCkiLCAicGFyZW50cyI6 IG51bGwsICJwcmVzZW50IjogZmFsc2V9LCAib25fY29tbWl0IjogeyJmbXQiOiAiT04gQ09NTUlU ICV7b25fY29tbWl0X3ZhbHVlfXMiLCAicHJlc2VudCI6IGZhbHNlLCAib25fY29tbWl0X3ZhbHVl IjogbnVsbH0sICJ0YWJsZXNwYWNlIjogeyJmbXQiOiAiVEFCTEVTUEFDRSAle3RhYmxlc3BhY2V9 SSIsICJwcmVzZW50IjogZmFsc2UsICJ0YWJsZXNwYWNlIjogbnVsbH0sICJwZXJzaXN0ZW5jZSI6 ICIiLCAid2l0aF9jbGF1c2UiOiB7ImZtdCI6ICJXSVRIIiwgInByZXNlbnQiOiBmYWxzZX0sICJw YXJ0aXRpb25fYnkiOiB7ImZtdCI6ICJQQVJUSVRJT04gQlkgJXtkZWZpbml0aW9ufXMiLCAicHJl c2VudCI6IGZhbHNlLCAiZGVmaW5pdGlvbiI6IG51bGx9LCAiYWNjZXNzX21ldGhvZCI6IHsiZm10 IjogIlVTSU5HICV7YWNjZXNzX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImFjY2Vzc19t ZXRob2QiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIiwgInRhYmxlX2VsZW1lbnRzIjogW3si Zm10IjogIiV7bmFtZX1JICV7Y29sdHlwZX1UIFNUT1JBR0UgJXtjb2xzdG9yYWdlfXMgJXtjb21w cmVzc2lvbn1zICV7Y29sbGF0aW9ufXMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zICV7Z2VuZXJh dGVkX2NvbHVtbn1zIiwgIm5hbWUiOiAiaWQiLCAidHlwZSI6ICJjb2x1bW4iLCAiY29sdHlwZSI6 IHsidHlwbW9kIjogIiIsICJ0eXBhcnJheSI6IGZhbHNlLCAidHlwZW5hbWUiOiAiaW50NCIsICJz Y2hlbWFuYW1lIjogInBnX2NhdGFsb2cifSwgImRlZmF1bHQiOiB7ImZtdCI6ICJERUZBVUxUIiwg InByZXNlbnQiOiBmYWxzZX0sICJub3RfbnVsbCI6ICIiLCAiY29sbGF0aW9uIjogeyJmbXQiOiAi Q09MTEFURSIsICJwcmVzZW50IjogZmFsc2V9LCAiY29sc3RvcmFnZSI6ICJwbGFpbiIsICJjb21w cmVzc2lvbiI6IHsiZm10IjogIkNPTVBSRVNTSU9OICV7Y29tcHJlc3Npb25fbWV0aG9kfUkiLCAi cHJlc2VudCI6IGZhbHNlLCAiY29tcHJlc3Npb25fbWV0aG9kIjogbnVsbH0sICJnZW5lcmF0ZWRf Y29sdW1uIjogeyJmbXQiOiAiR0VORVJBVEVEIEFMV0FZUyBBUyIsICJwcmVzZW50IjogZmFsc2V9 fV19fScpOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3Jl Z3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVt cHR5LXhhY3RzJywgJzEnKTsKKwogU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncmVn cmVzc2lvbl9zbG90Jyk7CiAKIC8qIGNoZWNrIHRoYXQgdGhlIHNsb3QgaXMgZ29uZSAqLwpkaWZm IC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyBiL2NvbnRyaWIv dGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXggNjI4YzZhMjU5NS4uNzYzZDVjMDA3 ZiAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYworKysg Yi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCkBAIC0xNCw5ICsxNCwxMSBA QAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogCisjaW5jbHVkZSAidGNvcC9kZGxfZGVwYXJzZS5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcyLDYgKzc0LDEyIEBAIHN0YXRp YyB2b2lkIHBnX2RlY29kZV9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJ CQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBsc24sCiAJCQkJCQkJICBi b29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkgIFNpemUgc3os IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdfZGVjb2RlX2RkbF9tZXNzYWdl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCisJCQkJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJICBjb25z dCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwKKwkJCQkJCQkJICBEZXBhcnNlZENvbW1hbmRUeXBl IGNtZHR5cGUsCisJCQkJCQkJCSAgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiBzdGF0 aWMgYm9vbCBwZ19kZWNvZGVfZmlsdGVyX3ByZXBhcmUoTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIg KmdpZCk7CkBAIC0xMzUsNiArMTQzLDcgQEAgX1BHX291dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQ bHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5maWx0ZXJfYnlfb3JpZ2luX2NiID0gcGdfZGVjb2Rl X2ZpbHRlcjsKIAljYi0+c2h1dGRvd25fY2IgPSBwZ19kZWNvZGVfc2h1dGRvd247CiAJY2ItPm1l c3NhZ2VfY2IgPSBwZ19kZWNvZGVfbWVzc2FnZTsKKwljYi0+ZGRsX2NiID0gcGdfZGVjb2RlX2Rk bF9tZXNzYWdlOwogCWNiLT5maWx0ZXJfcHJlcGFyZV9jYiA9IHBnX2RlY29kZV9maWx0ZXJfcHJl cGFyZTsKIAljYi0+YmVnaW5fcHJlcGFyZV9jYiA9IHBnX2RlY29kZV9iZWdpbl9wcmVwYXJlX3R4 bjsKIAljYi0+cHJlcGFyZV9jYiA9IHBnX2RlY29kZV9wcmVwYXJlX3R4bjsKQEAgLTc1MCw2ICs3 NTksNDUgQEAgcGdfZGVjb2RlX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAog CU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKK3N0YXRpYyB2b2lkCitwZ19kZWNv ZGVfZGRsX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCisJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgY29uc3QgY2hhciAqcHJl Zml4LCBPaWQgcmVsaWQsCisJCQkJCSAgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLCBTaXpl IHN6LCBjb25zdCBjaGFyICptZXNzYWdlKQoreworCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShj dHgsIHRydWUpOworCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJtZXNzYWdlOiBwcmVmaXg6 ICVzLCByZWxpZDogJXUsICIsCisJCQkJCSBwcmVmaXgsIHJlbGlkKTsKKworCXN3aXRjaChjbWR0 eXBlKQorCXsKKwljYXNlIERDVF9TaW1wbGVDbWQ6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5v dXQsICJjbWR0eXBlOiBTaW1wbGUsICIpOworCQlicmVhazsKKwljYXNlIERDVF9UYWJsZURyb3BT dGFydDoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IERyb3Agc3RhcnQs ICIpOworCQlicmVhazsKKwljYXNlIERDVF9UYWJsZURyb3BFbmQ6CisJCWFwcGVuZFN0cmluZ0lu Zm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wIGVuZCwgIik7CisJCWJyZWFrOworCWNhc2UgRENU X1RhYmxlQWx0ZXI6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBBbHRl ciB0YWJsZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENUX09iamVjdENyZWF0ZToKKwkJYXBwZW5k U3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IENyZWF0ZSwgIik7CisJCWJyZWFrOworCWNh c2UgRENUX09iamVjdERyb3A6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBl OiBEcm9wLCAiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgt Pm91dCwgImNtZHR5cGU6IEludmFsaWQsICIpOworCQlicmVhazsKKwl9CisKKwlhcHBlbmRTdHJp bmdJbmZvKGN0eC0+b3V0LCAic3o6ICV6dSBjb250ZW50OiIsIHN6KTsKKwlhcHBlbmRCaW5hcnlT dHJpbmdJbmZvKGN0eC0+b3V0LCBtZXNzYWdlLCBzeik7CisJT3V0cHV0UGx1Z2luV3JpdGUoY3R4 LCB0cnVlKTsKK30KKwogc3RhdGljIHZvaWQKIHBnX2RlY29kZV9zdHJlYW1fc3RhcnQoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBjNjVmNGFhYmZkLi4zNzIxNGJh YTNkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE0NTcsNiArMTQ1 NywxMDU1IEBAIHRlc3Rfc3ViPSMgU0VMRUNUICogRlJPTSB0MSBPUkRFUiBCWSBpZDsKIAogIDwv c2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tZGRsIj4KKyAgPHRpdGxl PkRETCBSZXBsaWNhdGlvbjwvdGl0bGU+CisgIDxwYXJhPgorICAgIERhdGEgRGVmaW5pdGlvbiBD b21tYW5kcyAoRERMcykgY2FuIGJlIHJlcGxpY2F0ZWQgdXNpbmcgbG9naWNhbCByZXBsaWNhdGlv bi4KKyAgICBXaGlsZSBlbmFibGVkIHRoaXMgZmVhdHVyZSBhdXRvbWF0aWNhbGx5IHJlcGxpY2F0 ZXMgc3VwcG9ydGVkIERETCBjb21tYW5kcworICAgIHRoYXQgYXJlIHN1Y2Nlc3NmdWxseSBleGVj dXRlZCBvbiBhIHB1Ymxpc2hlciB0byBhIHN1YnNjcmliZXIuIFRoaXMgaXMKKyAgICBlc3BlY2lh bGx5IHVzZWZ1bCBpZiB5b3UgaGF2ZSBsb3RzIHNjaGVtYSBjaGFuZ2VzIG92ZXIgdGltZSB0aGF0 IG5lZWQgcmVwbGljYXRpb24uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgICBGb3IgZXhhbXBs ZSwgd2hlbiBlbmFibGVkIGEgQ1JFQVRFIFRBQkxFIGNvbW1hbmQgZXhlY3V0ZWQgb24gdGhlIHB1 Ymxpc2hlciBnZXRzCisgICAgV0FMLWxvZ2dlZCwgYW5kIGZvcndhcmRlZCB0byB0aGUgc3Vic2Ny aWJlciB0byByZXBsYXk7IGEgc3Vic2VxdWVudCAiQUxURVIKKyAgICBTVUJTQ1JJUFRJT04gLi4u IFJFRlJFU0ggUFVCTElDQVRJT04iIGlzIHJ1biBvbiB0aGUgc3Vic2NyaWJlciBkYXRhYmFzZSBz byBhbnkKKyAgICBmb2xsb3dpbmcgRE1MIGNoYW5nZXMgb24gdGhlIG5ldyB0YWJsZSBjYW4gYmUg cmVwbGljYXRlZCB3aXRob3V0IGEgaGl0Y2guCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgICBE REwgcmVwbGljYXRpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCwgaXQgY2FuIGJlIGVuYWJsZWQg YXQgZGlmZmVyZW50IGxldmVscworICAgIHVzaW5nIHRoZSBkZGwgUFVCTElDQVRJT04gb3B0aW9u LiBUaGlzIG9wdGlvbiBjdXJyZW50bHkgaGFzIG9uZSBsZXZlbCBhbmQgYXJlCisgICAgb25seSBh bGxvd2VkIHRvIGJlIHNldCBpZiB0aGUgUFVCTElDQVRJT04gaXMgRk9SIEFMTCBUQUJMRVMgb3Ig Rk9SIFRBQkxFUyBJTiBTQ0hFTUEuCisgIDwvcGFyYT4KKworICA8aXRlbWl6ZWRsaXN0PgorICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgICB0YWJsZTogdGhpcyBvcHRpb24gZW5h YmxlcyByZXBsaWNhdGlvbiBvZiBUYWJsZSBEREwgY29tbWFuZHMsCisgICAgICAgIHdoaWNoIGlu Y2x1ZGU6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIENSRUFURS9BTFRFUi9EUk9QIFRBQkxFCisg ICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBDUkVBVEUgVEFCTEUg QVMKKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAg IDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvaXRl bWl6ZWRsaXN0PgorCisgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0aW9uLW9wdGlvbi1leGFtcGxl cyI+CisgICAgPHRpdGxlPkV4YW1wbGVzIC0gU2V0dXAgRERMIFJlcGxpY2F0aW9uIG9uIHRoZSBQ dWJsaXNoZXI8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBFbmFibGUgdGFibGUgZGRsIHJl cGxpY2F0aW9uIGZvciBhbiBleGlzdGluZyBQdWJsaWNhdGlvbjoKKzxwcm9ncmFtbGlzdGluZz4K K0FMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7Cis8L3Byb2dyYW1s aXN0aW5nPjwvcGFyYT4KKworICA8L3NlY3QyPgorCisgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0 aW9uLXN1cHBvcnRlZC1jb21tYW5kcyI+CisgICAgPHRpdGxlPlN1cHBvcnRlZCBEREwgY29tbWFu ZHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBUaGUgRERMIGNvbW1hbmRzIHN1cHBvcnRl ZCBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBhcmUgbGlzdGVkIGluIHRoZSBmb2xsb3dpbmcKKyAg ICAgIG1hdHJpeC4gTm90ZSB0aGF0IGdsb2JhbCBjb21tYW5kcyBjYW4gYmUgZXhlY3V0ZWQgYXQg YW55IGRhdGFiYXNlIGFuZCBhcmUgY3VycmVudGx5CisgICAgICBub3Qgc3VwcG9ydGVkIGZvciBy ZXBsaWNhdGlvbiwgZ2xvYmFsIGNvbW1hbmRzIGluY2x1ZGUgUk9MRSBzdGF0ZW1lbnRzLCBEYXRh YmFzZQorICAgICAgc3RhdGVtZW50cywgVGFibGVTcGFjZSBzdGF0ZW1lbnRzIGFuZCBzb21lIG9m IHRoZSBHcmFudFN0bXQvUmV2b2tlU3RtdCBpZiB0aGUgdGFyZ2V0CisgICAgICBvYmplY3QgaXMg YSBnbG9iYWwgb2JqZWN0LiBUZW1wb3JhcnkgYW5kIHVubG9nZ2VkIG9iamVjdHMgd2lsbCBub3Qg YmUgcmVwbGljYXRlZC4KKyAgICAgIFVzZXIgc2hvdWxkIHRha2UgY2FyZSBvZiBjcmVhdGluZyB0 aGVzZSBvYmplY3RzIGFzIHRoZXNlIG9iamVjdHMgbWlnaHQgYmUgcmVxdWlyZWQKKyAgICAgIGJ5 IHRoZSBvYmplY3RzIHRoYXQgYXJlIHJlcGxpY2F0ZWQgKGZvciBleGFtcGxlIGNyZWF0aW9uIG9m IHRhYmxlcyB0aGF0IG1pZ2h0CisgICAgICByZWZlciB0byBhbiB1c2VyIGNyZWF0ZWQgdGFibGVz cGFjZSB3aWxsIGZhaWwgaW4gdGhlIHN1YnNjcmliZXIgaWYgdGhlIHVzZXIKKyAgICAgIGNyZWF0 ZWQgdGFibGVzcGFjZXMgYXJlIG5vdCBjcmVhdGVkIGluIHRoZSBzdWJzY3JpYmVyKS4KKyAgICA8 L3BhcmE+CisKKyAgICA8dGFibGUgaWQ9ImRkbC1yZXBsaWNhdGlvbi1ieS1jb21tYW5kLXRhZyI+ CisgICAgICA8dGl0bGU+RERMIFJlcGxpY2F0aW9uIFN1cHBvcnQgYnkgQ29tbWFuZCBUYWc8L3Rp dGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0i Y29sMSIgY29sd2lkdGg9IjIqIi8+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDIiIGNv bHdpZHRoPSIxKiIvPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wzIiBjb2x3aWR0aD0i MSoiLz4KKyAgICAgIDx0aGVhZD4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+Q29tbWFu ZCBUYWc8L2VudHJ5PgorICAgICAgICA8ZW50cnk+Rm9yIFJlcGxpY2F0aW9uPC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5Pk5vdGVzPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgIDwvdGhlYWQ+ CisgICAgICA8dGJvZHk+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5BTFRFUiBBR0dSRUdBVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgQ0FTVDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAg ICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5BTFRFUiBDT0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgQ09OVkVSU0lPTjwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAg ICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5BTFRFUiBEQVRBQkFTRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBERUZBVUxUIFBSSVZJTEVHRVM8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+QUxURVIgRE9NQUlOPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEVWRU5UIFRSSUdHRVI8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+QUxURVIgRVhURU5TSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEZPUkVJR04gREFU QSBXUkFQUEVSPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEZPUkVJR04gVEFCTEU8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxU RVIgRlVOQ1RJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgSU5ERVg8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgTEFO R1VBR0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgTEFSR0UgT0JKRUNUPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE1B VEVSSUFMSVpFRCBWSUVXPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9QRVJBVE9SPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFM VEVSIE9QRVJBVE9SIENMQVNTPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9QRVJBVE9SIEZBTUlMWTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+Cisg ICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5BTFRFUiBQT0xJQ1k8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgUFJPQ0VEVVJFPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkFMVEVSIFBVQkxJQ0FUSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFJPTEU8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwv cm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ QUxURVIgUk9VVElORTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBSVUxFUjwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBT Q0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU0VRVUVOQ0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU0VSVkVS PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkFMVEVSIFNUQVRJU1RJQ1M8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU1VCU0NSSVBU SU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFNZU1RFTTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBUQUJMRTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+Cisg ICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5BTFRFUiBUQUJMRVNQQUNFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFRFWFQgU0VBUkNIIENP TkZJR1VSQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBTRUFSQ0ggRElDVElPTkFSWTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+Cisg ICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5BTFRFUiBURVhUIFNFQVJDSCBQQVJTRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBT RUFSQ0ggVEVNUExBVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVFJBTlNGT1JNPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFM VEVSIFRSSUdHRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVFlQRTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBVU0VS IE1BUFBJTkc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVklFVzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTkFMWVpFPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkJFR0lOPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNBTEw8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q0hFQ0tQT0lOVDwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+Cisg ICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5DTE9TRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DTE9TRSBDVVJTT1I8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q0xPU0Ug Q1VSU09SIEFMTDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DTFVTVEVSPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNPTU1FTlQ8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q09NTUlUPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNPTU1JVCBQUkVQQVJFRDwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DT1BZ PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkNPUFkgRlJPTTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgQUNDRVNTIE1FVEhPRDwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5DUkVBVEUgQUdHUkVHQVRFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBDQVNUPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNSRUFURSBDT0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIENPTlNUUkFJTlQ8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q1JFQVRFIENPTlZFUlNJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIERBVEFCQVNFPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkNSRUFURSBET01BSU48L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEVWRU5UIFRSSUdHRVI8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgRk9SRUlHTiBE QVRBIFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEZPUkVJR04gVEFCTEU8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwv cm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ Q1JFQVRFIEZVTkNUSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBJTkRFWDwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVB VEUgTEFOR1VBR0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkNSRUFURSBPUEVSQVRPUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgT1BFUkFUT1IgQ0xBU1M8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q1JFQVRFIE9QRVJBVE9SIEZBTUlMWTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgUE9MSUNZ PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkNSRUFURSBQUk9DRURVUkU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFBVQkxJQ0FU SU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBST0xFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBSVUxFPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNSRUFURSBTQ0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFNFUVVFTkNFPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkNSRUFURSBTRVJWRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFNUQVRJU1RJQ1M8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIFNVQlNDUklQVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVEFCTEU8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIFRBQkxFIEFTPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBUQUJMRVNQQUNFPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkNSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBU RVhUIFNFQVJDSCBESUNUSU9OQVJZPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBURVhUIFNFQVJDSCBQQVJT RVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNS RUFURSBUUkFOU0ZPUk08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRSSUdHRVI8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JF QVRFIFRZUEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFVTRVIgTUFQUElORzwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVB VEUgVklFVzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5ERUFMTE9DQVRFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRFQUxMT0NBVEUgQUxM PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRFQ0xBUkUgQ1VSU09SPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRFTEVURTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5ESVNDQVJEPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkRJU0NBUkQgQUxMPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRJU0NBUkQgUExB TlM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+RElTQ0FSRCBTRVFVRU5DRVM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RElTQ0FSRCBURU1Q PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRPPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQUNDRVNTIE1FVEhPRDwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5EUk9QIEFHR1JFR0FURTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIENBU1Q8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBD T0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBDT05TVFJBSU5UPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQ09O VkVSU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIERBVEFCQVNFPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRE9NQUlO PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRST1AgRVZFTlQgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIEVYVEVOU0lP TjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1Ag Rk9SRUlHTiBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIEZVTkNUSU9OPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1Ag SU5ERVg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBMQU5HVUFHRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE1BVEVSSUFM SVpFRCBWSUVXPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgT1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBPUEVS QVRPUiBDTEFTUzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE9QRVJBVE9SIEZBTUlMWTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5E Uk9QIE9XTkVEPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgUE9MSUNZPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgUFJPQ0VE VVJFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgUFVCTElDQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBST0xFPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkRST1AgUk9VVElORTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFJVTEU8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwv cm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ RFJPUCBTQ0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBTRVFVRU5DRTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFNF UlZFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFNUQVRJU1RJQ1M8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBTVUJTQ1JJ UFRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRBQkxFU1BBQ0U8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RFJPUCBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRS T1AgVEVYVCBTRUFSQ0ggRElDVElPTkFSWTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIFBB UlNFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRS T1AgVFJBTlNGT1JNPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRZ UEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+RFJPUCBVU0VSIE1BUFBJTkc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWSUVXPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkVYRUNVVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RVhQTEFJTjwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5GRVRDSDwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5HUkFOVDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5HUkFOVCBST0xFPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPklNUE9S VCBGT1JFSUdOIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+TElTVEVOPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkxPQUQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+TE9DSyBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5NRVJHRTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5NT1ZFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPk5PVElGWTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5QUkVQQVJFPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPlBSRVBBUkUgVFJBTlNBQ1RJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+UkVBU1NJR04gT1dORUQ8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+UkVGUkVTSCBNQVRFUklBTElaRUQgVklFVzwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5SRUlOREVY PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPlJFTEVBU0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+UkVTRVQ8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+UkVWT0tF PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPlJFVk9LRSBST0xFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlJPTExCQUNLPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PlJPTExCQUNLIFBSRVBBUkVEPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlNBVkVQT0lOVDwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5TRUNV UklUWSBMQUJFTDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+U0VUIENPTlNUUkFJTlRTPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPlNIT1c8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+U1RBUlQgVFJBTlNBQ1RJT048L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwv cm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ VU5MSVNURU48L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+VVBEQVRFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlZBQ1VVTTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3Nl Y3QyPgorCisgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0aW9uLWRkbC1kZXBhcnNlciI+CisgICAg PHRpdGxlPkRETCBEZXBhcnNlcjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgRERMIGRl cGFyc2VyIHV0aWxpdHkgaXMgaW52b2tlZCBkdXJpbmcgdGhlIHJlcGxpY2F0aW9uIG9mIERETHMu IFRoZSBEREwKKyAgICAgIGRlcGFyc2VyIGlzIGNhcGFibGUgb2YgY29udmVydGluZyBhIERETCBj b21tYW5kIGludG8gZm9ybWF0dGVkIEpTT04gYmxvYiwgd2l0aAorICAgICAgdGhlIG5lY2Vzc2Fy eSBpbmZvcm1hdGlvbiB0byByZWNvbnN0cnVjdCB0aGUgRERMIGNvbW1hbmRzIGF0IHRoZSBkZXN0 aW5hdGlvbi4gVGhlCisgICAgICBiZW5lZml0IG9mIHVzaW5nIHRoZSBkZXBhcnNlciBvdXRwdXQg Y29tcGFyZWQgdG8gdGhlIG9yaWdpbmFsIGNvbW1hbmQgc3RyaW5nCisgICAgICBpbmNsdWRlczoK KyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFy YT4KKyAgICAgICAgICAgIEV2ZXJ5IGRhdGFiYXNlIG9iamVjdCBpbiB0aGUgZGVwYXJzZWQgb3V0 cHV0IGlzIHNjaGVtYS1xdWFsaWZpZWQsIHNvIHRoYXQKKyAgICAgICAgICAgIHRoZXJlIGFyZSBu byBhbWJpZ3VpdGllcyBldmVuIGluIHRoZSBmYWNlIG9mIHNlYXJjaF9wYXRoIGNoYW5nZXMuCisg ICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzdHJ1Y3R1cmVkIEpTT04gYW5k IHRoZSBmb3JtYXR0ZWQgb3V0cHV0IG1ha2VzIGl0IHBvc3NpYmxlIGZvcgorICAgICAgICAgICAg bWFjaGluZSBlZGl0aW5nLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHN1YnNjcmliZXIgaXMg b24gYSBkaWZmZXJlbnQKKyAgICAgICAgICAgIFBHIHZlcnNpb24gYW5kIGhhcyBjZXJ0YWluIERE TCBzeW50YXggZGlmZmVyZW5jZXMgd2hpY2ggbmVlZCB0byBiZQorICAgICAgICAgICAgcmVzb2x2 ZWQgYmVmb3JlIGFwcGx5LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4K KworICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAg ICBUaGUgRERMIGRlcGFyc2VyIGV4cG9zZXMgdHdvIFNRTCBmdW5jdGlvbnM6CisgICAgICA8aXRl bWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgICBkZGxfZGVwYXJzZV90b19qc29uOiBnaXZlbiBhIENvbGxlY3RlZENvbW1hbmQgZnJvbSBl dmVudCB0cmlnZ2VyLAorICAgICAgICAgICAgcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24g b2YgaXQuIFRoZSBjb21tYW5kIGlzIGV4cGFuZGVkIGZ1bGx5CisgICAgICAgICAgICBzbyB0aGF0 IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyBldmVuIGluIHRoZSBmYWNlIG9mIHNlYXJjaF9wYXRo CisgICAgICAgICAgICBjaGFuZ2VzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBkZGxfZGVwYXJz ZV9leHBhbmRfY29tbWFuZDogRXhwYW5kIEpTT04gZm9ybWF0IERETCBnZW5lcmF0ZWQgYnkKKyAg ICAgICAgICAgIGRkbF9kZXBhcnNlX3RvX2pzb24gdG8gYSBwbGFpbiBEREwgY29tbWFuZC4KKyAg ICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlz dD4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJs b2dpY2FsLXJlcGxpY2F0aW9uLWNvbmZsaWN0cyI+CiAgIDx0aXRsZT5Db25mbGljdHM8L3RpdGxl PgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKaW5kZXggZjg4ZDcyZmQ4Ni4uMmZm MDFlNjliZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxl CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQpAQCAtMTgsNiArMTgs NyBAQCBPQkpTID0gXAogCWdpc3RkZXNjLm8gXAogCWhhc2hkZXNjLm8gXAogCWhlYXBkZXNjLm8g XAorCWxvZ2ljYWxkZGxtc2dkZXNjLm8gXAogCWxvZ2ljYWxtc2dkZXNjLm8gXAogCW14YWN0ZGVz Yy5vIFwKIAluYnRkZXNjLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbG9n aWNhbGRkbG1zZ2Rlc2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4w NWU5MzBjOTBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L2xvZ2ljYWxkZGxtc2dkZXNjLmMKQEAgLTAsMCArMSw1MiBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogbG9naWNhbGRkbG1zZ2Rlc2MuYworICoJICBybWdyIGRlc2NyaXB0b3Igcm91dGlu ZXMgZm9yIHJlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2Fn ZS5oIgorCit2b2lkCitsb2dpY2FsZGRsbXNnX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQoreworCWNoYXIJICAgKnJlYyA9IFhMb2dSZWNHZXREYXRhKHJlY29y ZCk7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgflhMUl9JTkZPX01B U0s7CisKKwlpZiAoaW5mbyA9PSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJeworCQl4bF9s b2dpY2FsX2RkbF9tZXNzYWdlICp4bHJlYyA9ICh4bF9sb2dpY2FsX2RkbF9tZXNzYWdlICopIHJl YzsKKwkJY2hhcgkgICAqcHJlZml4ID0geGxyZWMtPm1lc3NhZ2U7CisJCWNoYXIJICAgKm1lc3Nh Z2UgPSB4bHJlYy0+bWVzc2FnZSArIHhscmVjLT5wcmVmaXhfc2l6ZTsKKwkJY2hhcgkgICAqc2Vw ID0gIiI7CisKKwkJQXNzZXJ0KHByZWZpeFt4bHJlYy0+cHJlZml4X3NpemVdICE9ICdcMCcpOwor CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicHJlZml4IFwiJXNcIjsgcGF5bG9hZCAoJXp1IGJ5 dGVzKTogIiwKKwkJCQkJCSBwcmVmaXgsIHhscmVjLT5tZXNzYWdlX3NpemUpOworCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgInJlbGlkICV1IGNtZHR5cGUgJXUiLCB4bHJlYy0+cmVsaWQsIHhscmVj LT5jbWR0eXBlKTsKKwkJLyogV3JpdGUgbWVzc2FnZSBwYXlsb2FkIGFzIGEgc2VyaWVzIG9mIGhl eCBieXRlcyAqLworCQlmb3IgKGludCBjbnQgPSAwOyBjbnQgPCB4bHJlYy0+bWVzc2FnZV9zaXpl OyBjbnQrKykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyUwMlgiLCBzZXAsICh1 bnNpZ25lZCBjaGFyKSBtZXNzYWdlW2NudF0pOworCQkJc2VwID0gIiAiOworCQl9CisJfQorfQor Citjb25zdCBjaGFyICoKK2xvZ2ljYWxkZGxtc2dfaWRlbnRpZnkodWludDggaW5mbykKK3sKKwlp ZiAoKGluZm8gJiB+WExSX0lORk9fTUFTSykgPT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQor CQlyZXR1cm4gIkRETCI7CisKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9tZXNvbi5idWlsZAppbmRleCAxNjZjZWU2N2I2Li43ODFlMmQ3NzEzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIHJtZ3JfZGVz Y19zb3VyY2VzID0gZmlsZXMoCiAgICdnaXN0ZGVzYy5jJywKICAgJ2hhc2hkZXNjLmMnLAogICAn aGVhcGRlc2MuYycsCisgICdsb2dpY2FsZGRsbXNnZGVzYy5jJywKICAgJ2xvZ2ljYWxtc2dkZXNj LmMnLAogICAnbXhhY3RkZXNjLmMnLAogICAnbmJ0ZGVzYy5jJywKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3JtZ3IuYwppbmRleCA3ZDY3ZWRhNWY3Li42NzhlODFhZTAxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vcm1nci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUg ImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5o IgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDQ3NjM3ZjI4YWIuLmQyMDk2 MDJlMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEwMjgsNiArMTAy OCw3IEBAIEdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCkKIAlwdWItPnB1YmFjdGlvbnMucHVidXBk YXRlID0gcHViZm9ybS0+cHVidXBkYXRlOwogCXB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBw dWJmb3JtLT5wdWJkZWxldGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gcHViZm9y bS0+cHVidHJ1bmNhdGU7CisJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSA9IHB1YmZvcm0t PnB1YmRkbF90YWJsZTsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5wdWJ2aWFyb290Owog CiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMK aW5kZXggY2ZjMzZiMDJkMC4uNzFkMmM0M2FmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3Ry aWdnZXIuYwpAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNz YWdlLmgiCiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKICNpbmNsdWRlICJ0Y29w L2RkbF9kZXBhcnNlLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGY0YmE1NzI2OTcuLjY0NDIzZmYzNWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0zOCwxMCArMzgsMTIgQEAKICNp bmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAj aW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVz ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCiAjaW5jbHVkZSAicGFyc2Vy L3BhcnNlX3JlbGF0aW9uLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCkBAIC04MiwyMSArODQsMjUgQEAgc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9w U2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0 aWMgdm9pZAogcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkgIExpc3QgKm9wdGlvbnMsCisJCQkJCQkgIGJvb2wgZm9yX2FsbF90YWJsZXMsCiAJCQkJ CQkgIGJvb2wgKnB1Ymxpc2hfZ2l2ZW4sCiAJCQkJCQkgIFB1YmxpY2F0aW9uQWN0aW9ucyAqcHVi YWN0aW9ucywKIAkJCQkJCSAgYm9vbCAqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4s Ci0JCQkJCQkgIGJvb2wgKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KQorCQkJCQkJICBib29s ICpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCSAgYm9vbCAqZGRsX3R5cGVfZ2l2 ZW4pCiB7CiAJTGlzdENlbGwgICAqbGM7CiAKIAkqcHVibGlzaF9naXZlbiA9IGZhbHNlOwogCSpw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiA9IGZhbHNlOworCSpkZGxfdHlwZV9naXZl biA9IGZhbHNlOwogCiAJLyogZGVmYXVsdHMgKi8KIAlwdWJhY3Rpb25zLT5wdWJpbnNlcnQgPSB0 cnVlOwogCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHViZGVs ZXRlID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJcHViYWN0aW9u cy0+cHViZGRsX3RhYmxlID0gZmFsc2U7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0g ZmFsc2U7CiAKIAkvKiBQYXJzZSBvcHRpb25zICovCkBAIC0xMjMsNyArMTI5LDcgQEAgcGFyc2Vf cHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlwdWJhY3Rpb25zLT5w dWJ0cnVuY2F0ZSA9IGZhbHNlOwogCiAJCQkqcHVibGlzaF9naXZlbiA9IHRydWU7Ci0JCQlwdWJs aXNoID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKKwkJCXB1Ymxpc2ggPSBwc3RyZHVwKGRlZkdldFN0 cmluZyhkZWZlbCkpOwogCiAJCQlpZiAoIVNwbGl0SWRlbnRpZmllclN0cmluZyhwdWJsaXNoLCAn LCcsICZwdWJsaXNoX2xpc3QpKQogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTgsNiArMTY0LDQy IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJKnB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuID0gdHJ1ZTsKIAkJCSpwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwogCQl9CisJCWVsc2UgaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgImRkbCIpID09IDApCisJCXsKKwkJCWNoYXIJICAgKmRkbF9s ZXZlbDsKKwkJCUxpc3QJICAgKmRkbF9saXN0OworCQkJTGlzdENlbGwgICAqbGMzOworCisJCQlp ZiAoKmRkbF90eXBlX2dpdmVuKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBw c3RhdGUpOworCisJCQkvKgorCQkJICogSWYgZGRsIG9wdGlvbiB3YXMgZ2l2ZW4gb25seSB0aGUg ZXhwbGljaXRseSBsaXN0ZWQgZGRsIHR5cGVzCisJCQkgKiBzaG91bGQgYmUgcHVibGlzaGVkLgor CQkJICovCisJCQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSBmYWxzZTsKKworCQkJKmRkbF90 eXBlX2dpdmVuID0gdHJ1ZTsKKwkJCWRkbF9sZXZlbCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CisK KwkJCWlmICghU3BsaXRJZGVudGlmaWVyU3RyaW5nKGRkbF9sZXZlbCwgJywnLCAmZGRsX2xpc3Qp KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCWVycm1zZygiaW52YWxpZCBsaXN0IHN5bnRheCBmb3IgXCJkZGxcIiBvcHRpb24i KSk7CisKKwkJCS8qIFByb2Nlc3MgdGhlIG9wdGlvbiBsaXN0LiAqLworCQkJZm9yZWFjaChsYzMs IGRkbF9saXN0KQorCQkJeworCQkJCWNoYXIJICAgKnB1Ymxpc2hfb3B0ID0gKGNoYXIgKikgbGZp cnN0KGxjMyk7CisKKwkJCQlpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAidGFibGUiKSA9PSAwKQor CQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSB0cnVlOworCQkJCWVsc2UKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJ CQllcnJtc2coInVucmVjb2duaXplZCBcImRkbFwiIHZhbHVlOiBcIiVzXCIiLCBwdWJsaXNoX29w dCkpOworCQkJfQorCQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTU5OSwxNCArNjQxLDU2IEBAIGNoZWNrX3NpbXBs ZV9yb3dmaWx0ZXJfZXhwcihOb2RlICpub2RlLCBQYXJzZVN0YXRlICpwc3RhdGUpCiAJcmV0dXJu IGNoZWNrX3NpbXBsZV9yb3dmaWx0ZXJfZXhwcl93YWxrZXIobm9kZSwgcHN0YXRlKTsKIH0KIAor LyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byB0cmFuZm9ybSBhIHdoZXJlIGNsYXVzZS4KKyAqCisg KiBBbHNvIGNoZWNrIHRoZSBwdWJsaWNhdGlvbiByb3cgZmlsdGVyIGV4cHJlc3Npb24gYW5kIHRo cm93IGFuIGVycm9yIGlmCisgKiBhbnl0aGluZyBub3QgcGVybWl0dGVkIG9yIHVuZXhwZWN0ZWQg aXMgZW5jb3VudGVyZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK0dldFRyYW5zZm9ybVdoZXJlQ2xh dXNlcyhjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkg Tm9kZSAqd2hlcmVDbGF1c2UsIGJvb2wgY2hlY2tfZXhwcikKK3sKKwlOb2RlCSAgICp0cmFuc2Zv cm1lZFdoZXJlQ2xhdXNlID0gTlVMTDsKKwlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlQ YXJzZVN0YXRlICpwc3RhdGU7CisKKwkvKgorCSAqIEEgZnJlc2ggcHN0YXRlIGlzIHJlcXVpcmVk IHNvIHRoYXQgd2Ugb25seSBoYXZlICJ0aGlzIiB0YWJsZSBpbiBpdHMKKwkgKiByYW5nZXRhYmxl CisJICovCisJcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOworCXBzdGF0ZS0+cF9zb3Vy Y2V0ZXh0ID0gcXVlcnlTdHJpbmc7CisJbnNpdGVtID0gYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yUmVs YXRpb24ocHN0YXRlLCByZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2ssIE5V TEwsCisJCQkJCQkJCQkJICAgZmFsc2UsIGZhbHNlKTsKKwlhZGROU0l0ZW1Ub1F1ZXJ5KHBzdGF0 ZSwgbnNpdGVtLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CisKKwl0cmFuc2Zvcm1lZFdoZXJlQ2xhdXNl ID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLAorCQkJCQkJCQkJCQkJICBjb3B5T2JqZWN0 KHdoZXJlQ2xhdXNlKSwKKwkJCQkJCQkJCQkJCSAgRVhQUl9LSU5EX1dIRVJFLAorCQkJCQkJCQkJ CQkJICAiUFVCTElDQVRJT04gV0hFUkUiKTsKKworCS8qIEZpeCB1cCBjb2xsYXRpb24gaW5mb3Jt YXRpb24gKi8KKwlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgdHJhbnNmb3JtZWRXaGVy ZUNsYXVzZSk7CisKKwkvKgorCSAqIFdlIGFsbG93IG9ubHkgc2ltcGxlIGV4cHJlc3Npb25zIGlu IHJvdyBmaWx0ZXJzLiBTZWUKKwkgKiBjaGVja19zaW1wbGVfcm93ZmlsdGVyX2V4cHJfd2Fsa2Vy LgorCSAqLworCWlmIChjaGVja19leHByKQorCQljaGVja19zaW1wbGVfcm93ZmlsdGVyX2V4cHIo dHJhbnNmb3JtZWRXaGVyZUNsYXVzZSwgcHN0YXRlKTsKKworCWZyZWVfcGFyc2VzdGF0ZShwc3Rh dGUpOworCisJcmV0dXJuIHRyYW5zZm9ybWVkV2hlcmVDbGF1c2U7Cit9CisKIC8qCiAgKiBUcmFu c2Zvcm0gdGhlIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb24gZm9yIGFsbCB0aGUgcmVsYXRp b25zIGluIHRoZSBsaXN0LAogICogZW5zdXJpbmcgaXQgaXMgY29lcmNlZCB0byBib29sZWFuIGFu ZCBuZWNlc3NhcnkgY29sbGF0aW9uIGluZm9ybWF0aW9uIGlzCiAgKiBhZGRlZCBpZiByZXF1aXJl ZCwgYW5kIGFkZCBhIG5ldyBuc2l0ZW0vUlRFIGZvciB0aGUgYXNzb2NpYXRlZCByZWxhdGlvbiB0 bwogICogdGhlIFBhcnNlU3RhdGUncyBuYW1lc3BhY2UgbGlzdC4KLSAqCi0gKiBBbHNvIGNoZWNr IHRoZSBwdWJsaWNhdGlvbiByb3cgZmlsdGVyIGV4cHJlc3Npb24gYW5kIHRocm93IGFuIGVycm9y IGlmCi0gKiBhbnl0aGluZyBub3QgcGVybWl0dGVkIG9yIHVuZXhwZWN0ZWQgaXMgZW5jb3VudGVy ZWQuCiAgKi8KIHN0YXRpYyB2b2lkCiBUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMoTGlzdCAqdGFi bGVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKQEAgLTYxNiw5ICs3MDAsNiBAQCBUcmFuc2Zv cm1QdWJXaGVyZUNsYXVzZXMoTGlzdCAqdGFibGVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywK IAogCWZvcmVhY2gobGMsIHRhYmxlcykKIAl7Ci0JCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVt OwotCQlOb2RlCSAgICp3aGVyZWNsYXVzZSA9IE5VTEw7Ci0JCVBhcnNlU3RhdGUgKnBzdGF0ZTsK IAkJUHVibGljYXRpb25SZWxJbmZvICpwcmkgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJz dChsYyk7CiAKIAkJaWYgKHByaS0+d2hlcmVDbGF1c2UgPT0gTlVMTCkKQEAgLTYzOCwzNCArNzE5 LDggQEAgVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKExpc3QgKnRhYmxlcywgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcsCiAJCQkJCSBlcnJkZXRhaWwoIldIRVJFIGNsYXVzZSBjYW5ub3QgYmUgdXNl ZCBmb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSB3aGVuICVzIGlzIGZhbHNlLiIsCiAJCQkJCQkJICAg InB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IikpKTsKIAotCQkvKgotCQkgKiBBIGZyZXNoIHBz dGF0ZSBpcyByZXF1aXJlZCBzbyB0aGF0IHdlIG9ubHkgaGF2ZSAidGhpcyIgdGFibGUgaW4gaXRz Ci0JCSAqIHJhbmdldGFibGUKLQkJICovCi0JCXBzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxM KTsKLQkJcHN0YXRlLT5wX3NvdXJjZXRleHQgPSBxdWVyeVN0cmluZzsKLQkJbnNpdGVtID0gYWRk UmFuZ2VUYWJsZUVudHJ5Rm9yUmVsYXRpb24ocHN0YXRlLCBwcmktPnJlbGF0aW9uLAotCQkJCQkJ CQkJCQkgICBBY2Nlc3NTaGFyZUxvY2ssIE5VTEwsCi0JCQkJCQkJCQkJCSAgIGZhbHNlLCBmYWxz ZSk7Ci0JCWFkZE5TSXRlbVRvUXVlcnkocHN0YXRlLCBuc2l0ZW0sIGZhbHNlLCB0cnVlLCB0cnVl KTsKLQotCQl3aGVyZWNsYXVzZSA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwKLQkJCQkJ CQkJCQkgICBjb3B5T2JqZWN0KHByaS0+d2hlcmVDbGF1c2UpLAotCQkJCQkJCQkJCSAgIEVYUFJf S0lORF9XSEVSRSwKLQkJCQkJCQkJCQkgICAiUFVCTElDQVRJT04gV0hFUkUiKTsKLQotCQkvKiBG aXggdXAgY29sbGF0aW9uIGluZm9ybWF0aW9uICovCi0JCWFzc2lnbl9leHByX2NvbGxhdGlvbnMo cHN0YXRlLCB3aGVyZWNsYXVzZSk7Ci0KLQkJLyoKLQkJICogV2UgYWxsb3cgb25seSBzaW1wbGUg ZXhwcmVzc2lvbnMgaW4gcm93IGZpbHRlcnMuIFNlZQotCQkgKiBjaGVja19zaW1wbGVfcm93Zmls dGVyX2V4cHJfd2Fsa2VyLgotCQkgKi8KLQkJY2hlY2tfc2ltcGxlX3Jvd2ZpbHRlcl9leHByKHdo ZXJlY2xhdXNlLCBwc3RhdGUpOwotCi0JCWZyZWVfcGFyc2VzdGF0ZShwc3RhdGUpOwotCi0JCXBy aS0+d2hlcmVDbGF1c2UgPSB3aGVyZWNsYXVzZTsKKwkJcHJpLT53aGVyZUNsYXVzZSA9IEdldFRy YW5zZm9ybVdoZXJlQ2xhdXNlcyhxdWVyeVN0cmluZywgcHJpLT5yZWxhdGlvbiwKKwkJCQkJCQkJ CQkJCQlwcmktPndoZXJlQ2xhdXNlLCB0cnVlKTsKIAl9CiB9CiAKQEAgLTcyOCw2ICs3ODMsMTQw IEBAIENoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KGNoYXIgKnB1Ym5hbWUsIExpc3QgKnRhYmxl cywKIAl9CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgZXZlbnQgdHJp Z2dlciBmb3IgRERMIHJlcGxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorQ3JlYXRlRERMUmVw bGljYUV2ZW50VHJpZ2dlcihjaGFyICpldmVudG5hbWUsIExpc3QgKmNvbW1hbmRzLCBPaWQgcHVi b2lkKQoreworCUxpc3QJICAgKnRhZ3MgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJT2lkCQkJ dHJpZ2dlcl9pZDsKKwlPYmplY3RBZGRyZXNzIHJlZmVyZW5jZWQ7CisJT2JqZWN0QWRkcmVzcyBw dWJhZGRyZXNzOworCUNyZWF0ZUV2ZW50VHJpZ1N0bXQgKmRkbF90cmlnZ2VyOworCWNoYXIJCXRy aWdnZXJfbmFtZVtOQU1FREFUQUxFTl07CisJY2hhcgkJdHJpZ2dlcl9mdW5jX25hbWVbTkFNRURB VEFMRU5dOworCXN0YXRpYyBjb25zdCBjaGFyICp0cmlnZ2VyX2Z1bmNfcHJlZml4ID0gInB1Ymxp Y2F0aW9uX2RlcGFyc2VfJXMiOworCisJZGRsX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVFdmVu dFRyaWdTdG10KTsKKworCXNucHJpbnRmKHRyaWdnZXJfbmFtZSwgc2l6ZW9mKHRyaWdnZXJfbmFt ZSksIFBVQl9FVkVOVF9UUklHX1BSRUZJWCwKKwkJCSBldmVudG5hbWUsIHB1Ym9pZCk7CisJc25w cmludGYodHJpZ2dlcl9mdW5jX25hbWUsIHNpemVvZih0cmlnZ2VyX2Z1bmNfbmFtZSksIHRyaWdn ZXJfZnVuY19wcmVmaXgsCisJCQkgZXZlbnRuYW1lKTsKKworCWRkbF90cmlnZ2VyLT50cmlnbmFt ZSA9IHBzdHJkdXAodHJpZ2dlcl9uYW1lKTsKKwlkZGxfdHJpZ2dlci0+ZXZlbnRuYW1lID0gZXZl bnRuYW1lOworCWRkbF90cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKHRyaWdnZXJf ZnVuY19uYW1lKTsKKworCWZvcmVhY2gobGMsIGNvbW1hbmRzKQorCXsKKwkJQ29tbWFuZFRhZyBj bWR0YWcgPSBsZmlyc3RfaW50KGxjKTsKKwkJU3RyaW5nCSAgICp0YWcgPSBtYWtlU3RyaW5nKHBz dHJkdXAoR2V0Q29tbWFuZFRhZ05hbWUoY21kdGFnKSkpOworCisJCXRhZ3MgPSBsYXBwZW5kKHRh Z3MsIHRhZyk7CisJfQorCisJZGRsX3RyaWdnZXItPndoZW5jbGF1c2UgPSBsaXN0X21ha2UxKG1h a2VEZWZFbGVtKCJ0YWciLCAoTm9kZSAqKSB0YWdzLCAtMSkpOworCisJdHJpZ2dlcl9pZCA9IENy ZWF0ZUV2ZW50VHJpZ2dlcihkZGxfdHJpZ2dlcik7CisKKwlPYmplY3RBZGRyZXNzU2V0KHB1YmFk ZHJlc3MsIFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHVib2lkKTsKKworCS8qCisJICogUmVnaXN0 ZXIgdGhlIGV2ZW50IHRyaWdnZXJzIGFzIGludGVybmFsbHkgZGVwZW5kZW50IG9uIHRoZSBwdWJs aWNhdGlvbi4KKwkgKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIEV2ZW50VHJpZ2dl clJlbGF0aW9uSWQsIHRyaWdnZXJfaWQpOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNl ZCwgJnB1YmFkZHJlc3MsIERFUEVOREVOQ1lfSU5URVJOQUwpOworfQorCisvKgorICogSWYgRERM IHJlcGxpY2F0aW9uIGlzIGVuYWJsZWQsIGNyZWF0ZSBldmVudCB0cmlnZ2VycyB0byBjYXB0dXJl IGFuZCBsb2cgYW55CisgKiByZWxldmFudCBldmVudHMuCisgKi8KK3N0YXRpYyB2b2lkCitDcmVh dGVERExSZXBsaWNhRXZlbnRUcmlnZ2VycyhQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9ucywg T2lkIHB1Ym9pZCkKK3sKKwlMaXN0CSAgICpzdGFydF9jb21tYW5kcyA9IE5JTDsKKwlMaXN0CSAg ICpyZXdyaXRlX2NvbW1hbmRzID0gTklMOworCUxpc3QJICAgKmluaXRfY29tbWFuZHMgPSBOSUw7 CisJTGlzdAkgICAqZW5kX2NvbW1hbmRzID0gTklMOworCisJaWYgKHB1YmFjdGlvbnMucHViZGRs X3RhYmxlKQorCXsKKwkJc3RhcnRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChzdGFydF9jb21tYW5k cywgQ01EVEFHX0RST1BfVEFCTEUpOworCQlyZXdyaXRlX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQo cmV3cml0ZV9jb21tYW5kcywgQ01EVEFHX0FMVEVSX1RBQkxFKTsKKworCQlpbml0X2NvbW1hbmRz ID0gbGFwcGVuZF9pbnQoaW5pdF9jb21tYW5kcywgQ01EVEFHX0NSRUFURV9UQUJMRV9BUyk7CisJ CWluaXRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChpbml0X2NvbW1hbmRzLCBDTURUQUdfU0VMRUNU X0lOVE8pOworCisJCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01E VEFHX0NSRUFURV9UQUJMRSk7CisJCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21t YW5kcywgQ01EVEFHX0FMVEVSX1RBQkxFKTsKKwkJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQo ZW5kX2NvbW1hbmRzLCBDTURUQUdfRFJPUF9UQUJMRSk7CisJfQorCisJLyogQ3JlYXRlIHRoZSBk ZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciAqLworCWlmIChlbmRfY29tbWFuZHMgIT0gTklM KQorCQlDcmVhdGVERExSZXBsaWNhRXZlbnRUcmlnZ2VyKFBVQl9UUklHX0VWRU5UMSwgZW5kX2Nv bW1hbmRzLCBwdWJvaWQpOworCisJLyogQ3JlYXRlIHRoZSBkZGxfY29tbWFuZF9zdGFydCBldmVu dCB0cmlnZ2VyICovCisJaWYgKHN0YXJ0X2NvbW1hbmRzICE9IE5JTCkKKwkJQ3JlYXRlRERMUmVw bGljYUV2ZW50VHJpZ2dlcihQVUJfVFJJR19FVkVOVDIsIHN0YXJ0X2NvbW1hbmRzLCBwdWJvaWQp OworCisJLyogQ3JlYXRlIHRoZSB0YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXIgKi8KKwlpZiAo cmV3cml0ZV9jb21tYW5kcyAhPSBOSUwpCisJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIo UFVCX1RSSUdfRVZFTlQzLCByZXdyaXRlX2NvbW1hbmRzLCBwdWJvaWQpOworCisJLyogQ3JlYXRl IHRoZSB0YWJsZV9pbml0X3dyaXRlIGV2ZW50IHRyaWdnZXIgKi8KKwlpZiAoaW5pdF9jb21tYW5k cyAhPSBOSUwpCisJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIoUFVCX1RSSUdfRVZFTlQ0 LCBpbml0X2NvbW1hbmRzLCBwdWJvaWQpOworfQorCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRv IGRyb3AgYSBldmVudCB0cmlnZ2VyIGZvciBEREwgcmVwbGljYXRpb24uCisgKi8KK3N0YXRpYyB2 b2lkCitEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcihjaGFyICpldmVudCwgT2lkIHB1Ym9pZCkK K3sKKwljaGFyCQkJdHJpZ2dlcl9uYW1lW05BTUVEQVRBTEVOXTsKKwlPaWQJCQkJZXZ0b2lkOwor CU9iamVjdEFkZHJlc3MJb2JqOworCisJc25wcmludGYodHJpZ2dlcl9uYW1lLCBzaXplb2YodHJp Z2dlcl9uYW1lKSwgUFVCX0VWRU5UX1RSSUdfUFJFRklYLAorCQkJIGV2ZW50LCBwdWJvaWQpOwor CisJZXZ0b2lkID0gZ2V0X2V2ZW50X3RyaWdnZXJfb2lkKHRyaWdnZXJfbmFtZSwgdHJ1ZSk7CisJ aWYgKCFPaWRJc1ZhbGlkKGV2dG9pZCkpCisJCXJldHVybjsKKworCWRlbGV0ZURlcGVuZGVuY3lS ZWNvcmRzRm9yQ2xhc3MoRXZlbnRUcmlnZ2VyUmVsYXRpb25JZCwgZXZ0b2lkLAorCQkJCQkJCQkJ UHVibGljYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJREVQRU5ERU5DWV9JTlRFUk5BTCk7CisK KwkvKgorCSAqIEVuc3VyZSB0aGF0IHRoZSBkZXBlbmRlbmN5IHJlbW92YWwgaXMgdmlzaWJsZSwg c28gdGhhdCB3ZSBjYW4gZHJvcCB0aGUKKwkgKiBldmVudCB0cmlnZ2VyLgorCSAqLworCUNvbW1h bmRDb3VudGVySW5jcmVtZW50KCk7CisKKwlPYmplY3RBZGRyZXNzU2V0KG9iaiwgRXZlbnRUcmln Z2VyUmVsYXRpb25JZCwgZXZ0b2lkKTsKKwlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9SRVNU UklDVCwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7Cit9CisKKy8qCisgKiBEcm9wIGFsbCB0 aGUgZXZlbnQgdHJpZ2dlcnMgd2hpY2ggYXJlIHVzZWQgZm9yIERETCByZXBsaWNhdGlvbi4KKyAq Lworc3RhdGljIHZvaWQKK0Ryb3BERExSZXBsaWNhRXZlbnRUcmlnZ2VycyhPaWQgcHVib2lkKQor eworCURyb3BERExSZXBsaWNhRXZlbnRUcmlnZ2VyKFBVQl9UUklHX0VWRU5UMSwgcHVib2lkKTsK KwlEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcihQVUJfVFJJR19FVkVOVDIsIHB1Ym9pZCk7CisJ RHJvcERETFJlcGxpY2FFdmVudFRyaWdnZXIoUFVCX1RSSUdfRVZFTlQzLCBwdWJvaWQpOworCURy b3BERExSZXBsaWNhRXZlbnRUcmlnZ2VyKFBVQl9UUklHX0VWRU5UNCwgcHVib2lkKTsKK30KKwor CiAvKgogICogQ3JlYXRlIG5ldyBwdWJsaWNhdGlvbi4KICAqLwpAQCAtNzQxLDYgKzkzMCw3IEBA IENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25T dG10ICpzdG10KQogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOwogCUhlYXBU dXBsZQl0dXA7CiAJYm9vbAkJcHVibGlzaF9naXZlbjsKKwlib29sCQlkZGxfdHlwZV9naXZlbjsK IAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDsKQEAg LTc4MSw5ICs5NzEsMTEgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAlwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25z KHBzdGF0ZSwKIAkJCQkJCQkgIHN0bXQtPm9wdGlvbnMsCisJCQkJCQkJICBzdG10LT5mb3JfYWxs X3RhYmxlcywKIAkJCQkJCQkgICZwdWJsaXNoX2dpdmVuLCAmcHViYWN0aW9ucywKIAkJCQkJCQkg ICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiwKLQkJCQkJCQkgICZwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCk7CisJCQkJCQkJICAmcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qs CisJCQkJCQkJICAmZGRsX3R5cGVfZ2l2ZW4pOwogCiAJcHVib2lkID0gR2V0TmV3T2lkV2l0aElu ZGV4KHJlbCwgUHVibGljYXRpb25PYmplY3RJbmRleElkLAogCQkJCQkJCQlBbnVtX3BnX3B1Ymxp Y2F0aW9uX29pZCk7CkBAIC03OTgsNiArOTkwLDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUJvb2xHZXREYXR1 bShwdWJhY3Rpb25zLnB1YmRlbGV0ZSk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVi dHJ1bmNhdGUgLSAxXSA9CiAJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnRydW5jYXRlKTsK Kwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfdGFibGUgLSAxXSA9CisJQm9vbEdl dERhdHVtKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNh dGlvbl9wdWJ2aWFyb290IC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QpOwogCkBAIC04MzUsNiArMTAyOSwxMiBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJewogCQkJTGlz dAkgICAqcmVsczsKIAorCQkJaWYgKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBp ZiBEREwgcmVwbGljYXRpb24gaXMgZW5hYmxlZCIsCisJCQkJCQkJICAgc3RtdC0+cHVibmFtZSkp OworCiAJCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOwogCQkJVHJhbnNmb3JtUHVi V2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJIHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290KTsKQEAgLTg1OCw2ICsxMDU4LDExIEBAIENyZWF0ZVB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQog CQl9CiAJfQogCisJLyoKKwkgKiBDcmVhdGUgZXZlbnQgdHJpZ2dlcnMgdG8gYWxsb3cgbG9nZ2lu ZyBvZiBEREwgc3RhdGVtZW50cy4KKwkgKi8KKwlDcmVhdGVERExSZXBsaWNhRXZlbnRUcmlnZ2Vy cyhwdWJhY3Rpb25zLCBwdWJvaWQpOworCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKIAogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsYXRpb25J ZCwgcHVib2lkLCAwKTsKQEAgLTg4Miw2ICsxMDg3LDcgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlv bnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAlib29s CQlyZXBsYWNlc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CiAJRGF0dW0JCXZhbHVlc1tOYXR0c19w Z19wdWJsaWNhdGlvbl07CiAJYm9vbAkJcHVibGlzaF9naXZlbjsKKwlib29sCQlkZGxfdHlwZV9n aXZlbjsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIAlib29sCQlwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dDsKQEAgLTg5MCwxMSArMTA5NiwxNSBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCUxpc3QJICAgKnJvb3Rf cmVsaWRzID0gTklMOwogCUxpc3RDZWxsICAgKmxjOwogCisJcHViZm9ybSA9IChGb3JtX3BnX3B1 YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwogCXBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMo cHN0YXRlLAogCQkJCQkJCSAgc3RtdC0+b3B0aW9ucywKKwkJCQkJCQkgIHB1YmZvcm0tPnB1YmFs bHRhYmxlcywKIAkJCQkJCQkgICZwdWJsaXNoX2dpdmVuLCAmcHViYWN0aW9ucywKIAkJCQkJCQkg ICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiwKLQkJCQkJCQkgICZwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCk7CisJCQkJCQkJICAmcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qs CisJCQkJCQkJICAmZGRsX3R5cGVfZ2l2ZW4pOwogCiAJcHViZm9ybSA9IChGb3JtX3BnX3B1Ymxp Y2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApAQCAtOTc4LDYgKzExODgsMTggQEAgQWx0ZXJQdWJs aWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwKIAkJfQogCX0KIAorCWlmIChkZGxfdHlwZV9naXZlbiAmJiBwdWJhY3Rpb25zLnB1YmRk bF90YWJsZSkKKwl7CisJCWlmIChyb290X3JlbGlkcyA9PSBOSUwpCisJCQlyb290X3JlbGlkcyA9 IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCSAgUFVC TElDQVRJT05fUEFSVF9ST09UKTsKKworCQlpZiAocm9vdF9yZWxpZHMpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJ CQllcnJtc2coIkRETCByZXBsaWNhdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBpbiBGT1IgQUxMIFRB QkxFUyBvciBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKKwl9CisKIAkvKiBF dmVyeXRoaW5nIG9rLCBmb3JtIGEgbmV3IHR1cGxlLiAqLwogCW1lbXNldCh2YWx1ZXMsIDAsIHNp emVvZih2YWx1ZXMpKTsKIAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKQEAg LTk5OCw2ICsxMjIwLDE5IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCXJlcGxhY2VzW0FudW1fcGdfcHVi bGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IHRydWU7CiAJfQogCisJaWYgKGRkbF90eXBlX2dp dmVuKQorCXsKKwkJLyogUmVjcmVhdGUgdGhlIGV2ZW50IHRyaWdnZXJzIGlmIHRoZSBkZGwgb3B0 aW9uIGlzIGNoYW5nZWQuICovCisJCWlmIChwdWJmb3JtLT5wdWJkZGxfdGFibGUgIT0gcHViYWN0 aW9ucy5wdWJkZGxfdGFibGUpCisJCXsKKwkJCURyb3BERExSZXBsaWNhRXZlbnRUcmlnZ2Vycyhw dWJmb3JtLT5vaWQpOworCQkJQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcnMocHViYWN0aW9u cywgcHViZm9ybS0+b2lkKTsKKwkJfQorCisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1 YmRkbF90YWJsZSAtIDFdID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKTsK KwkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfdGFibGUgLSAxXSA9IHRydWU7 CisJfQorCiAJaWYgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuKQogCXsKIAkJdmFs dWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0gQm9vbEdldERhdHVtKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKQEAgLTExMDMsNiArMTMzOCwxMiBAQCBBbHRlclB1 YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVw LAogCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKKwkJaWYgKHB1YmZv cm0tPnB1YmRkbF90YWJsZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygiY2Fubm90IGFkZCB0YWJs ZSB0byBwdWJsaWNhdGlvbiBcIiVzXCIgaWYgRERMIHJlcGxpY2F0aW9uIGlzIGVuYWJsZWQiLAor CQkJCQkJICAgc3RtdC0+cHVibmFtZSkpOworCiAJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhy ZWxzLCBxdWVyeVN0cmluZywgcHViZm9ybS0+cHVidmlhcm9vdCk7CiAKIAkJcHVibGlzaF9zY2hl bWEgfD0gaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKTsKQEAgLTExMjEsNiArMTM2MiwxMiBA QCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFw VHVwbGUgdHVwLAogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRs YzsKIAorCQlpZiAocHViZm9ybS0+cHViZGRsX3RhYmxlKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNn KCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBpZiBEREwgcmVwbGljYXRp b24gaXMgZW5hYmxlZCIsCisJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CisKIAkJVHJhbnNmb3Jt UHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3JtLT5wdWJ2aWFyb290KTsK IAogCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5wdWJuYW1lLCByZWxzLCBwdWJs aXNoX3NjaGVtYSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv TWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4 IDJkYzI1ZTM3YmIuLmI3OWRkZDhjZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9NYWtlZmlsZQpAQCAtMTYsNiArMTYsOCBAQCBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3Jj ZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAogCWFwcGx5cGFyYWxsZWx3b3JrZXIubyBcCisJ ZGRsbWVzc2FnZS5vIFwKKwlkZGx0cmlnZ2VyLm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5v IFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZGxtZXNzYWdlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1l c3NhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMTFlNTZlNWEz Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxt ZXNzYWdlLmMKQEAgLTAsMCArMSw4NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRs bWVzc2FnZS5jCisgKgkgIExvZ2ljYWwgRERMIG1lc3NhZ2VzLgorICoKKyAqIENvcHlyaWdodCAo YykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3Nh Z2UuYworICoKKyAqIE5PVEVTCisgKgorICogTG9naWNhbCBEREwgbWVzc2FnZXMgYWxsb3cgWExP RyBsb2dnaW5nIG9mIERETCBjb21tYW5kIHN0cmluZ3MgdGhhdAorICogZ2V0IHBhc3NlZCB0byB0 aGUgbG9naWNhbCBkZWNvZGluZyBwbHVnaW4uIEluIG5vcm1hbCBYTE9HIHByb2Nlc3NpbmcgdGhl eQorICogYXJlIHNhbWUgYXMgTk9PUC4KKyAqCisgKiBVbmxpa2UgZ2VuZXJpYyBsb2dpY2FsIG1l c3NhZ2VzLCB0aGVzZSBEREwgbWVzc2FnZXMgaGF2ZSBvbmx5IHRyYW5zYWN0aW9uYWwKKyAqIG1v ZGUuIE5vdGUgYnkgZGVmYXVsdCBERExzIGluIFBvc3RncmVTUUwgYXJlIHRyYW5zYWN0aW9uYWwu CisgKgorICogVGhlc2UgbWVzc2FnZXMgYXJlIHBhcnQgb2YgY3VycmVudCB0cmFuc2FjdGlvbiBh bmQgd2lsbCBiZSBzZW50IHRvCisgKiBkZWNvZGluZyBwbHVnaW4gdXNpbmcgaW4gYSBzYW1lIHdh eSBhcyBETUwgb3BlcmF0aW9ucy4KKyAqCisgKiBFdmVyeSBtZXNzYWdlIGNhcnJpZXMgcHJlZml4 IHRvIGF2b2lkIGNvbmZsaWN0cyBiZXR3ZWVuIGRpZmZlcmVudCBkZWNvZGluZworICogcGx1Z2lu cy4gVGhlIHBsdWdpbiBhdXRob3JzIG11c3QgdGFrZSBleHRyYSBjYXJlIHRvIHVzZSB1bmlxdWUg cHJlZml4LAorICogZ29vZCBvcHRpb25zIHNlZW1zIHRvIGJlIGZvciBleGFtcGxlIHRvIHVzZSB0 aGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNl LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgi CisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisvKgorICogV3Jp dGUgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZSBpbnRvIFhMb2cuCisgKi8KK1hMb2dSZWNQ dHIKK0xvZ0xvZ2ljYWxERExNZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLCBE ZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlLCBz aXplX3Qgc2l6ZSkKK3sKKwl4bF9sb2dpY2FsX2RkbF9tZXNzYWdlIHhscmVjOworCisJIC8qIEVu c3VyZSB3ZSBoYXZlIGEgdmFsaWQgdHJhbnNhY3Rpb24gaWQuICovCisJQXNzZXJ0KElzVHJhbnNh Y3Rpb25TdGF0ZSgpKTsKKwlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOworCisJeGxyZWMuZGJJ ZCA9IE15RGF0YWJhc2VJZDsKKwkvKiBUcmFpbGluZyB6ZXJvIGlzIGNyaXRpY2FsOyBzZWUgbG9n aWNhbGRkbG1zZ19kZXNjICovCisJeGxyZWMucHJlZml4X3NpemUgPSBzdHJsZW4ocHJlZml4KSAr IDE7CisJeGxyZWMubWVzc2FnZV9zaXplID0gc2l6ZTsKKwl4bHJlYy5yZWxpZCA9IHJlbGlkOwor CXhscmVjLmNtZHR5cGUgPSBjbWR0eXBlOworCisJWExvZ0JlZ2luSW5zZXJ0KCk7CisJWExvZ1Jl Z2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIFNpemVPZkxvZ2ljYWxERExNZXNzYWdlKTsKKwlY TG9nUmVnaXN0ZXJEYXRhKHVuY29uc3RpZnkoY2hhciAqLCBwcmVmaXgpLCB4bHJlYy5wcmVmaXhf c2l6ZSk7CisJWExvZ1JlZ2lzdGVyRGF0YSh1bmNvbnN0aWZ5KGNoYXIgKiwgbWVzc2FnZSksIHNp emUpOworCisJLyogQWxsb3cgb3JpZ2luIGZpbHRlcmluZyAqLworCVhMb2dTZXRSZWNvcmRGbGFn cyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKKworCXJldHVybiBYTG9nSW5zZXJ0KFJNX0xPR0lDQUxE RExNU0dfSUQsIFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSk7Cit9CisKKy8qCisgKiBSZWRvIGlz IGJhc2ljYWxseSBqdXN0IG5vb3AgZm9yIGxvZ2ljYWwgZGVjb2RpbmcgZGRsIG1lc3NhZ2VzLgor ICovCit2b2lkCitsb2dpY2FsZGRsbXNnX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCit7 CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgflhMUl9JTkZPX01BU0s7 CisKKwlpZiAoaW5mbyAhPSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJCWVsb2coUEFOSUMs ICJsb2dpY2FsZGRsbXNnX3JlZG86IHVua25vd24gb3AgY29kZSAldSIsIGluZm8pOworCisJLyog VGhpcyBpcyBvbmx5IGludGVyZXN0aW5nIGZvciBsb2dpY2FsIGRlY29kaW5nLCBzZWUgZGVjb2Rl LmMuICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rk bHRyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjEyODIzNDBjMmIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIu YwpAQCAtMCwwICsxLDI4MyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRsdHJpZ2dl ci5jCisgKgkgIExvZ2ljYWwgRERMIG1lc3NhZ2VzLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAy MiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNB VElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwor ICoKKyAqIE5PVEVTCisgKgorICogRGVwYXJzZSB0aGUgZGRsIGNvbW1hbmQgYW5kIGxvZyBpdC4K KyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIK KworI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3Mu aCIKKyNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCisjaW5jbHVkZSAiZnVuY2Fw aS5oIgorI2luY2x1ZGUgImxpYi9pbGlzdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1l c3NhZ2UuaCIKKyNpbmNsdWRlICJ0Y29wL2RkbF9kZXBhcnNlLmgiCisjaW5jbHVkZSAidXRpbHMv Zm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorCitleHRlcm4gRXZl bnRUcmlnZ2VyUXVlcnlTdGF0ZSAqY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlOworCisvKgorICog RGVwYXJzZSB0aGUgZGRsIGNvbW1hbmQgYW5kIGxvZyBpdCBwcmlvciB0bworICogZXhlY3V0aW9u LiBDdXJyZW50bHkgb25seSB1c2VkIGZvciBEUk9QIFRBQkxFIGNvbW1hbmQKKyAqIHNvIHRoYXQg Y2F0YWxvZyBjYW4gYmUgYWNjZXNzZWQgYmVmb3JlIGJlaW5nIGRlbGV0ZWQuCisgKiBUaGlzIGlz IHRvIGNoZWNrIGlmIHRoZSB0YWJsZSBpcyBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgorICogb3Ig bm90LgorICovCitEYXR1bQorcHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9zdGFydChQ R19GVU5DVElPTl9BUkdTKQoreworCUV2ZW50VHJpZ2dlckRhdGEgKnRyaWdkYXRhOworCWNoYXIJ ICAgKmNvbW1hbmQgPSBwc3ByaW50ZigiRHJvcCB0YWJsZSBjb21tYW5kIHN0YXJ0Iik7CisJRHJv cFN0bXQgICAqc3RtdDsKKwlMaXN0Q2VsbCAgICpjZWxsMTsKKworCWlmICghQ0FMTEVEX0FTX0VW RU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0 cmlnZ2VyIG1hbmFnZXIiKTsKKworCXRyaWdkYXRhID0gKEV2ZW50VHJpZ2dlckRhdGEgKikgZmNp bmZvLT5jb250ZXh0OworCXN0bXQgPSAoRHJvcFN0bXQgKikgdHJpZ2RhdGEtPnBhcnNldHJlZTsK KworCS8qIEV4dHJhY3QgdGhlIHJlbGlkIGZyb20gdGhlIHBhcnNlIHRyZWUgKi8KKwlmb3JlYWNo KGNlbGwxLCBzdG10LT5vYmplY3RzKQorCXsKKwkJY2hhcgkJcmVscGVyc2lzdDsKKwkJTm9kZQkg ICAqb2JqZWN0ID0gbGZpcnN0KGNlbGwxKTsKKwkJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCQlS ZWxhdGlvbglyZWxhdGlvbiA9IE5VTEw7CisKKwkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVz cyhzdG10LT5yZW1vdmVUeXBlLAorCQkJCQkJCQkJIG9iamVjdCwKKwkJCQkJCQkJCSAmcmVsYXRp b24sCisJCQkJCQkJCQkgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCSB0cnVlKTsKKwor CQkvKiBPYmplY3QgZG9lcyBub3QgZXhpc3QsIG5vdGhpbmcgdG8gZG8gKi8KKwkJaWYgKCFyZWxh dGlvbikKKwkJCWNvbnRpbnVlOworCisJCXJlbHBlcnNpc3QgPSBnZXRfcmVsX3BlcnNpc3RlbmNl KGFkZHJlc3Mub2JqZWN0SWQpOworCisJCS8qCisJCSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9n IGZvciBjb21tYW5kcyB3aG9zZSB0YXJnZXQgdGFibGUgaXMgYQorCQkgKiB0ZW1wb3Jhcnkgb3Ig dW5sb2dnZWQgdGFibGUuCisJCSAqCisJCSAqIFhYWCBXZSBtYXkgZ2VuZXJhdGUgd2FsIGxvZ3Mg Zm9yIHVubG9nZ2VkIHRhYmxlcyBpbiB0aGUgZnV0dXJlIHNvCisJCSAqIHRoYXQgdW5sb2dnZWQg dGFibGVzIGNhbiBhbHNvIGJlIGNyZWF0ZWQgYW5kIGFsdGVyZWQgb24gdGhlCisJCSAqIHN1YnNj cmliZXIgc2lkZS4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBkaXJlY3RseSByZXBsYXkgdGhl IFNFVAorCQkgKiBMT0dHRUQgY29tbWFuZCBhbmQgdGhlIGluY29taW5nIHJld3JpdGUgbWVzc2Fn ZSB3aXRob3V0IGNyZWF0aW5nIGEKKwkJICogbmV3IHRhYmxlLgorCQkgKi8KKwkJaWYgKHJlbHBl cnNpc3QgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UKQorCQkJTG9nTG9naWNhbERETE1lc3Nh Z2UoImRlcGFyc2UiLCBhZGRyZXNzLm9iamVjdElkLCBEQ1RfVGFibGVEcm9wU3RhcnQsCisJCQkJ CQkJCSBjb21tYW5kLCBzdHJsZW4oY29tbWFuZCkgKyAxKTsKKworCQlpZiAocmVsYXRpb24pCisJ CQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9CisJcmV0dXJuIFBvaW50ZXJHZXRE YXR1bShOVUxMKTsKK30KKworLyoKKyAqIHB1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0 ZQorICoKKyAqIERlcGFyc2UgdGhlIGRkbCB0YWJsZSByZXdyaXRlIGNvbW1hbmQgYW5kIGxvZyBp dC4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0ZShQR19GVU5D VElPTl9BUkdTKQoreworCWNoYXIJCXJlbHBlcnNpc3Q7CisJQ29sbGVjdGVkQ29tbWFuZCAqY21k OworCWNoYXIJICAgKmpzb25fc3RyaW5nOworCisJaWYgKCFDQUxMRURfQVNfRVZFTlRfVFJJR0dF UihmY2luZm8pKQorCQllbG9nKEVSUk9SLCAibm90IGZpcmVkIGJ5IGV2ZW50IHRyaWdnZXIgbWFu YWdlciIpOworCisJY21kID0gY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFu ZDsKKworCUFzc2VydChjbWQgJiYgY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSk7CisKKwlyZWxw ZXJzaXN0ID0gZ2V0X3JlbF9wZXJzaXN0ZW5jZShjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCk7 CisKKwkvKgorCSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9zZSB0 YXJnZXQgdGFibGUgaXMgYSB0ZW1wb3JhcnkKKwkgKiBvciB1bmxvZ2dlZCB0YWJsZS4KKwkgKgor CSAqIFhYWCBXZSBtYXkgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9nZ2VkIHRhYmxlcyBpbiB0 aGUgZnV0dXJlIHNvIHRoYXQKKwkgKiB1bmxvZ2dlZCB0YWJsZXMgY2FuIGFsc28gYmUgY3JlYXRl ZCBhbmQgYWx0ZXJlZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLgorCSAqIFRoaXMgbWFrZXMgaXQg cG9zc2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQgTE9HR0VEIGNvbW1hbmQgYW5kIHRo ZQorCSAqIGluY29taW5nIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHRh YmxlLgorCSAqLworCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkK Kwl7CisJCS8qIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBXQUwgbG9nIGl0IHRvIGFsbG93 IGRlY29kaW5nIG9mIHRoZSBzYW1lLiAqLworCQlqc29uX3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0 eV9jb21tYW5kKGNtZCwgZmFsc2UpOworCisJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQkJ TG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJ ZCwgRENUX1RhYmxlQWx0ZXIsCisJCQkJCQkJCSBqc29uX3N0cmluZywgc3RybGVuKGpzb25fc3Ry aW5nKSArIDEpOworCX0KKworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKy8q CisgKiBEZXBhcnNlIHRoZSBkZGwgY29tbWFuZCBhbmQgbG9nIGl0LiBUaGlzIGZ1bmN0aW9uCisg KiBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29tbWFuZCBidXQgYmVmb3Jl IHRoZQorICogdHJhbnNhY3Rpb24gY29tbWl0cy4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2Rl cGFyc2VfZGRsX2NvbW1hbmRfZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTGlzdENlbGwgICAq bGM7CisJc2xpc3RfaXRlcglpdGVyOworCURlcGFyc2VkQ29tbWFuZFR5cGUgdHlwZTsKKwlPaWQJ CQlyZWxpZDsKKwljaGFyCQlyZWxraW5kOworCisJaWYgKCFDQUxMRURfQVNfRVZFTlRfVFJJR0dF UihmY2luZm8pKQorCQllbG9nKEVSUk9SLCAibm90IGZpcmVkIGJ5IGV2ZW50IHRyaWdnZXIgbWFu YWdlciIpOworCisJZm9yZWFjaChsYywgY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5k TGlzdCkKKwl7CisJCWNoYXIJCXJlbHBlcnNpc3QgPSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ7 CisJCUNvbGxlY3RlZENvbW1hbmQgKmNtZCA9IGxmaXJzdChsYyk7CisJCWNoYXIJICAgKmpzb25f c3RyaW5nOworCisJCS8qIFJld3JpdGUgRERMIGhhcyBiZWVuIGhhbmRsZWQgaW4gdGFibGVfcmV3 cml0ZSB0cmlnZ2VyICovCisJCWlmIChjbWQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlKQorCQl7CisJ CQlSZW5hbWVTdG10ICpyZW5hbWVTdG10ID0gKFJlbmFtZVN0bXQgKikgY21kLT5wYXJzZXRyZWU7 CisKKwkJCWlmIChyZW5hbWVTdG10ICYmIHJlbmFtZVN0bXQtPnJlbGF0aW9uVHlwZSAhPSBPQkpF Q1RfVFlQRSAmJgorCQkJCXJlbmFtZVN0bXQtPnJlbGF0aW9uVHlwZSAhPSBPQkpFQ1RfVEFCTEUp CisJCQkJY29udGludWU7CisJCX0KKworCQlpZiAoY21kLT50eXBlID09IFNDVF9TaW1wbGUgJiYK KwkJCSFPaWRJc1ZhbGlkKGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZCkpCisJCQljb250 aW51ZTsKKworCQlpZiAoY21kLT50eXBlID09IFNDVF9BbHRlclRhYmxlKQorCQl7CisJCQlyZWxp ZCA9IGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkOworCQkJdHlwZSA9IERDVF9UYWJsZUFsdGVy OworCQl9CisJCWVsc2UKKwkJeworCQkJLyogT25seSBTQ1RfU2ltcGxlIGZvciBub3cgKi8KKwkJ CXJlbGlkID0gY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElkOworCQkJdHlwZSA9IERDVF9T aW1wbGVDbWQ7CisJCX0KKworCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5kKHJlbGlkKTsKKwkJ aWYgKHJlbGtpbmQpCisJCQlyZWxwZXJzaXN0ID0gZ2V0X3JlbF9wZXJzaXN0ZW5jZShyZWxpZCk7 CisKKwkJLyoKKwkJICogRG8gbm90IGdlbmVyYXRlIHdhbCBsb2cgZm9yIGNvbW1hbmRzIHdob3Nl IHRhcmdldCB0YWJsZSBpcyBhCisJCSAqIHRlbXBvcmFyeSBvciB1bmxvZ2dlZCB0YWJsZS4KKwkJ ICoKKwkJICogWFhYIFdlIG1heSBnZW5lcmF0ZSB3YWwgbG9ncyBmb3IgdW5sb2dnZWQgdGFibGVz IGluIHRoZSBmdXR1cmUgc28KKwkJICogdGhhdCB1bmxvZ2dlZCB0YWJsZXMgY2FuIGFsc28gYmUg Y3JlYXRlZCBhbmQgYWx0ZXJlZCBvbiB0aGUKKwkJICogc3Vic2NyaWJlciBzaWRlLiBUaGlzIG1h a2VzIGl0IHBvc3NpYmxlIHRvIGRpcmVjdGx5IHJlcGxheSB0aGUgU0VUCisJCSAqIExPR0dFRCBj b21tYW5kIGFuZCB0aGUgaW5jb21pbmcgcmV3cml0ZSBtZXNzYWdlIHdpdGhvdXQgY3JlYXRpbmcg YQorCQkgKiBuZXcgdGFibGUuCisJCSAqLworCQlpZiAocmVscGVyc2lzdCA9PSBSRUxQRVJTSVNU RU5DRV9QRVJNQU5FTlQpCisJCXsKKwkJCS8qCisJCQkgKiBEZXBhcnNlIHRoZSBEREwgY29tbWFu ZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNvZGluZyBvZiB0aGUKKwkJCSAqIHNhbWUuCisJ CQkgKi8KKwkJCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kLCBmYWxz ZSk7CisKKwkJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQkJCUxvZ0xvZ2ljYWxERExNZXNz YWdlKCJkZXBhcnNlIiwgcmVsaWQsIHR5cGUsIGpzb25fc3RyaW5nLAorCQkJCQkJCQkJIHN0cmxl bihqc29uX3N0cmluZykgKyAxKTsKKwkJfQorCX0KKworCXNsaXN0X2ZvcmVhY2goaXRlciwgJihj dXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPlNRTERyb3BMaXN0KSkKKwl7CisJCVNRTERyb3BPYmpl Y3QgKm9iajsKKwkJRHJvcFN0bXQgICAqc3RtdDsKKwkJRXZlbnRUcmlnZ2VyRGF0YSAqdHJpZ2Rh dGE7CisJCWNoYXIJICAgKmNvbW1hbmQ7CisJCURlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZTsK KworCQl0cmlnZGF0YSA9IChFdmVudFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwkJ c3RtdCA9IChEcm9wU3RtdCAqKSB0cmlnZGF0YS0+cGFyc2V0cmVlOworCisJCW9iaiA9IHNsaXN0 X2NvbnRhaW5lcihTUUxEcm9wT2JqZWN0LCBuZXh0LCBpdGVyLmN1cik7CisKKwkJaWYgKHN0cmNt cChvYmotPm9iamVjdHR5cGUsICJ0YWJsZSIpID09IDApCisJCQljbWR0eXBlID0gRENUX1RhYmxl RHJvcEVuZDsKKwkJZWxzZQorCQkJY29udGludWU7CisKKwkJY29tbWFuZCA9IGRlcGFyc2VfZHJv cF9jb21tYW5kKG9iai0+b2JqaWRlbnRpdHksIG9iai0+b2JqZWN0dHlwZSwKKwkJCQkJCQkJCSAg IHN0bXQtPmJlaGF2aW9yKTsKKworCQlpZiAoY29tbWFuZCkKKwkJCUxvZ0xvZ2ljYWxERExNZXNz YWdlKCJkZXBhcnNlIiwgb2JqLT5hZGRyZXNzLm9iamVjdElkLCBjbWR0eXBlLAorCQkJCQkJCQkg Y29tbWFuZCwgc3RybGVuKGNvbW1hbmQpICsgMSk7CisJfQorCisJcmV0dXJuIFBvaW50ZXJHZXRE YXR1bShOVUxMKTsKK30KKworCisvKgorICogcHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9pbml0 X3dyaXRlCisgKgorICogRGVwYXJzZSB0aGUgZGRsIHRhYmxlIGNyZWF0ZSBjb21tYW5kIGFuZCBs b2cgaXQuCisgKi8KK0RhdHVtCitwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUo UEdfRlVOQ1RJT05fQVJHUykKK3sKKwljaGFyCQlyZWxwZXJzaXN0OworCUNvbGxlY3RlZENvbW1h bmQgKmNtZDsKKwljaGFyCSAgICpqc29uX3N0cmluZzsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5U X1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmln Z2VyIG1hbmFnZXIiKTsKKworCWNtZCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVu dENvbW1hbmQ7CisJQXNzZXJ0KGNtZCk7CisKKwlyZWxwZXJzaXN0ID0gZ2V0X3JlbF9wZXJzaXN0 ZW5jZShjbWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQpOworCisJLyoKKwkgKiBEbyBub3Qg Z2VuZXJhdGUgd2FsIGxvZyBmb3IgY29tbWFuZHMgd2hvc2UgdGFyZ2V0IHRhYmxlIGlzIGEgdGVt cG9yYXJ5CisJICogdGFibGUuCisJICoKKwkgKiBXZSB3aWxsIGdlbmVyYXRlIHdhbCBsb2dzIGZv ciB1bmxvZ2dlZCB0YWJsZXMgc28gdGhhdCB1bmxvZ2dlZCB0YWJsZXMKKwkgKiBjYW4gYWxzbyBi ZSBjcmVhdGVkIGFuZCBhbHRlcmVkIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIFRoaXMgbWFrZXMg aXQKKwkgKiBwb3NzaWJsZSB0byBkaXJlY3RseSByZXBsYXkgdGhlIFNFVCBMT0dHRUQgY29tbWFu ZCBhbmQgdGhlIGluY29taW5nCisJICogcmV3cml0ZSBtZXNzYWdlIHdpdGhvdXQgY3JlYXRpbmcg YSBuZXcgdGFibGUuCisJICovCisJaWYgKHJlbHBlcnNpc3QgIT0gUkVMUEVSU0lTVEVOQ0VfUEVS TUFORU5UKQorCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworCisJLyogRGVwYXJzZSB0 aGUgRERMIGNvbW1hbmQgYW5kIFdBTCBsb2cgaXQgdG8gYWxsb3cgZGVjb2Rpbmcgb2YgdGhlIHNh bWUuICovCisJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIGZhbHNl KTsKKworCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgi ZGVwYXJzZSIsIGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZCwgRENUX1NpbXBsZUNtZCwK KwkJCQkJCQkganNvbl9zdHJpbmcsIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsKKworCXJldHVy biBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYwppbmRleCA4ZmU3YmI2NWYxLi5jNjE1YTIzZmU1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVz c2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCkBAIC02 MTMsNiArNjE0LDQ2IEBAIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJCQkJCSAgbWVzc2FnZS0+bWVzc2FnZSAr IG1lc3NhZ2UtPnByZWZpeF9zaXplKTsKIH0KIAorLyoKKyAqIEhhbmRsZSBybWdyIExPR0lDQUxE RExNU0dfSUQgcmVjb3JkcyBmb3IgRGVjb2RlUmVjb3JkSW50b1Jlb3JkZXJCdWZmZXIoKS4KKyAq Lwordm9pZAorbG9naWNhbGRkbF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYpCit7CisJU25hcEJ1aWxkICAqYnVpbGRlciA9IGN0eC0+c25h cHNob3RfYnVpbGRlcjsKKwlYTG9nUmVhZGVyU3RhdGUgKnIgPSBidWYtPnJlY29yZDsKKwlUcmFu c2FjdGlvbklkIHhpZCA9IFhMb2dSZWNHZXRYaWQocik7CisJdWludDgJCWluZm8gPSBYTG9nUmVj R2V0SW5mbyhyKSAmIH5YTFJfSU5GT19NQVNLOworCVJlcE9yaWdpbklkIG9yaWdpbl9pZCA9IFhM b2dSZWNHZXRPcmlnaW4ocik7CisJeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqbWVzc2FnZTsKKwor CWlmIChpbmZvICE9IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwkJZWxvZyhFUlJPUiwgInVu ZXhwZWN0ZWQgUk1fTE9HSUNBTERETE1TR19JRCByZWNvcmQgdHlwZTogJXUiLCBpbmZvKTsKKwor CVJlb3JkZXJCdWZmZXJQcm9jZXNzWGlkKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwg YnVmLT5vcmlncHRyKTsKKworCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3 ZSBhcmUganVzdCBmYXN0LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVj b2RpbmcgZGRsIG1lc3NhZ2VzLgorCSAqLworCWlmIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVp bGRlcikgPCBTTkFQQlVJTERfRlVMTF9TTkFQU0hPVCB8fAorCQljdHgtPmZhc3RfZm9yd2FyZCkK KwkJcmV0dXJuOworCisJbWVzc2FnZSA9ICh4bF9sb2dpY2FsX2RkbF9tZXNzYWdlICopIFhMb2dS ZWNHZXREYXRhKHIpOworCisJaWYgKG1lc3NhZ2UtPmRiSWQgIT0gY3R4LT5zbG90LT5kYXRhLmRh dGFiYXNlIHx8CisJCUZpbHRlckJ5T3JpZ2luKGN0eCwgb3JpZ2luX2lkKSkKKwkJcmV0dXJuOwor CisJaWYgKFNuYXBCdWlsZFByb2Nlc3NDaGFuZ2UoYnVpbGRlciwgeGlkLCBidWYtPm9yaWdwdHIp KQorCQlSZW9yZGVyQnVmZmVyUXVldWVERExNZXNzYWdlKGN0eC0+cmVvcmRlciwgeGlkLCBidWYt PmVuZHB0ciwKKwkJCQkJCQkJCSBtZXNzYWdlLT5tZXNzYWdlLCAvKiBmaXJzdCBwYXJ0IG9mIG1l c3NhZ2UgaXMgcHJlZml4ICovCisJCQkJCQkJCQkgbWVzc2FnZS0+bWVzc2FnZV9zaXplLAorCQkJ CQkJCQkJIG1lc3NhZ2UtPm1lc3NhZ2UgKyBtZXNzYWdlLT5wcmVmaXhfc2l6ZSwKKwkJCQkJCQkJ CSBtZXNzYWdlLT5yZWxpZCwgbWVzc2FnZS0+Y21kdHlwZSk7Cit9CisKIC8qCiAgKiBDb25zb2xp ZGF0ZWQgY29tbWl0IHJlY29yZCBoYW5kbGluZyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgZm9ybSBv ZiBjb21taXQKICAqIHJlY29yZHMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbC5jCmluZGV4IGMzZWM5N2EwYTYuLmY1NmE3MTY1NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiZm1n ci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNv ZGUuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vb3JpZ2luLmgiCkBAIC03Myw2ICs3NCwxMCBAQCBzdGF0aWMgdm9pZCB0cnVuY2F0ZV9j Yl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiBz dGF0aWMgdm9pZCBtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29s IHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIG1lc3Nh Z2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBkZGxfY2Jfd3JhcHBl cihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkg IFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJICBP aWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJICBTaXplIG1l c3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKIC8qIHN0cmVhbWluZyBjYWxsYmFj a3MgKi8KIHN0YXRpYyB2b2lkIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIg KmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCkBAIC05MCw2ICs5NSwxMSBAQCBzdGF0aWMg dm9pZCBzdHJlYW1fY2hhbmdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4bgogc3RhdGljIHZvaWQgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihS ZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICBY TG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJCQkgIGNv bnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2Up Oworc3RhdGljIHZvaWQgc3RyZWFtX2RkbF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hl LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9s c24sCisJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgT2lkIHJlbGlk LCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJIFNpemUgbWVzc2FnZV9z aXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV90cnVuY2F0ZV9j Yl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJ CQkJCQkJCQkgICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sIFJlb3JkZXJC dWZmZXJDaGFuZ2UgKmNoYW5nZSk7CiAKQEAgLTIyMyw2ICsyMzMsNyBAQCBTdGFydHVwRGVjb2Rp bmdDb250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAljdHgtPnJlb3JkZXItPmFw cGx5X3RydW5jYXRlID0gdHJ1bmNhdGVfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPmNvbW1p dCA9IGNvbW1pdF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+bWVzc2FnZSA9IG1lc3NhZ2Vf Y2Jfd3JhcHBlcjsKKwljdHgtPnJlb3JkZXItPmRkbCA9IGRkbF9jYl93cmFwcGVyOwogCiAJLyoK IAkgKiBUbyBzdXBwb3J0IHN0cmVhbWluZywgd2UgcmVxdWlyZSBzdGFydC9zdG9wL2Fib3J0L2Nv bW1pdC9jaGFuZ2UKQEAgLTIzOSw2ICsyNTAsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExp c3QgKm91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jb21t aXRfY2IgIT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jaGFuZ2VfY2IgIT0g TlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9tZXNzYWdlX2NiICE9IE5VTEwpIHx8 CisJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fZGRsX2NiICE9IE5VTEwpIHx8CiAJCShjdHgtPmNh bGxiYWNrcy5zdHJlYW1fdHJ1bmNhdGVfY2IgIT0gTlVMTCk7CiAKIAkvKgpAQCAtMjU2LDYgKzI2 OCw3IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25z LAogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NvbW1pdCA9IHN0cmVhbV9jb21taXRfY2Jfd3JhcHBl cjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9jaGFuZ2UgPSBzdHJlYW1fY2hhbmdlX2NiX3dyYXBw ZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fbWVzc2FnZSA9IHN0cmVhbV9tZXNzYWdlX2NiX3dy YXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zdHJlYW1fZGRsID0gc3RyZWFtX2RkbF9jYl93cmFwcGVy OwogCWN0eC0+cmVvcmRlci0+c3RyZWFtX3RydW5jYXRlID0gc3RyZWFtX3RydW5jYXRlX2NiX3dy YXBwZXI7CiAKIApAQCAtMTIzMyw2ICsxMjQ2LDQ0IEBAIG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9y ZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRf c3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIH0KIAorc3RhdGljIHZvaWQKK2RkbF9jYl93 cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJ CSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIE9p ZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkgIFNpemUgbWVzc2Fn ZV9zaXplLAorCQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKKwlMb2dpY2FsRXJyb3JDYWxsYmFj a1N0YXRlIHN0YXRlOworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJQXNz ZXJ0KCFjdHgtPmZhc3RfZm9yd2FyZCk7CisKKwlpZiAoY3R4LT5jYWxsYmFja3MuZGRsX2NiID09 IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJv ciBjb250ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25h bWUgPSAiZGRsIjsKKwlzdGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBtZXNzYWdlX2xzbjsKKwllcnJj YWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7CisJZXJyY2Fs bGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJy b3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOwor CisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dyaXRlcyA9IHRydWU7CisJ Y3R4LT53cml0ZV94aWQgPSB0eG4gIT0gTlVMTCA/IHR4bi0+eGlkIDogSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IG1lc3NhZ2VfbHNuOworCisJLyogZG8gdGhl IGFjdHVhbCB3b3JrOiBjYWxsIGNhbGxiYWNrICovCisJY3R4LT5jYWxsYmFja3MuZGRsX2NiKGN0 eCwgdHhuLCBtZXNzYWdlX2xzbiwgcHJlZml4LCByZWxpZCwgY21kdHlwZSwKKwkJCQkJCQkJIG1l c3NhZ2Vfc2l6ZSwgbWVzc2FnZSk7CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sg Ki8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7Cit9CisKIHN0 YXRpYyB2b2lkCiBzdHJlYW1fc3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwg UmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJWExvZ1JlY1B0ciBmaXJzdF9sc24pCkBAIC0x NTQ4LDYgKzE1OTksNDggQEAgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVy ICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBl cnJjYWxsYmFjay5wcmV2aW91czsKIH0KIAorc3RhdGljIHZvaWQKK3N0cmVhbV9kZGxfY2Jfd3Jh cHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJ CSBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsIE9p ZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCSBTaXplIG1lc3Nh Z2Vfc2l6ZSwKKwkJCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKwlMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJvckNhbGxi YWNrU3RhdGUgc3RhdGU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlB c3NlcnQoIWN0eC0+ZmFzdF9mb3J3YXJkKTsKKworCS8qIFdlJ3JlIG9ubHkgc3VwcG9zZWQgdG8g Y2FsbCB0aGlzIHdoZW4gc3RyZWFtaW5nIGlzIHN1cHBvcnRlZC4gKi8KKwlBc3NlcnQoY3R4LT5z dHJlYW1pbmcpOworCisJLyogdGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCAqLworCWlmIChjdHgt PmNhbGxiYWNrcy5zdHJlYW1fZGRsX2NiID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1c2gg Y2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4 ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUgPSAic3RyZWFtX2RkbCI7CisJc3RhdGUucmVw b3J0X2xvY2F0aW9uID0gbWVzc2FnZV9sc247CisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBvdXRw dXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLmFyZyA9ICh2b2lkICopICZz dGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJy b3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCS8qIHNldCBvdXRwdXQgc3RhdGUg Ki8KKwljdHgtPmFjY2VwdF93cml0ZXMgPSB0cnVlOworCWN0eC0+d3JpdGVfeGlkID0gdHhuICE9 IE5VTEwgPyB0eG4tPnhpZCA6IEludmFsaWRUcmFuc2FjdGlvbklkOworCWN0eC0+d3JpdGVfbG9j YXRpb24gPSBtZXNzYWdlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxs YmFjayAqLworCWN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxfY2IoY3R4LCB0eG4sIG1lc3NhZ2Vf bHNuLCBwcmVmaXgsIHJlbGlkLAorCQkJCQkJCQkJCWNtZHR5cGUsIG1lc3NhZ2Vfc2l6ZSwgbWVz c2FnZSk7CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250 ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJl YW1fdHJ1bmNhdGVfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCQkJCQkJICAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9uc1td LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5k ZXggZmExYjY0MWEyYi4uOTJmNWY5MzU3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAibm9k ZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3Nh Z2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCkBAIC0zODgsMyArMzg5LDI2IEBAIHBn X2xvZ2ljYWxfZW1pdF9tZXNzYWdlX3RleHQoUEdfRlVOQ1RJT05fQVJHUykKIAkvKiBieXRlYSBh bmQgdGV4dCBhcmUgY29tcGF0aWJsZSAqLwogCXJldHVybiBwZ19sb2dpY2FsX2VtaXRfbWVzc2Fn ZV9ieXRlYShmY2luZm8pOwogfQorCisvKgorICogU1FMIGZ1bmN0aW9uIGZvciB3cml0aW5nIGxv Z2ljYWwgZGVjb2RpbmcgRERMIG1lc3NhZ2UgaW50byBXQUwuCisgKi8KK0RhdHVtCitwZ19sb2dp Y2FsX2VtaXRfZGRsX21lc3NhZ2VfYnl0ZWEoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljaGFyCSAg ICpwcmVmaXggPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCU9pZAkJ CXJlbGlkID0gUEdfR0VUQVJHX09JRCgxKTsKKwlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUg PSBQR19HRVRBUkdfSU5UMTYoMik7CisJY2hhcgkgICAqZGF0YSA9IHRleHRfdG9fY3N0cmluZyhQ R19HRVRBUkdfVEVYVF9QUCgzKSk7CisJWExvZ1JlY1B0cglsc247CisKKwlsc24gPSBMb2dMb2dp Y2FsRERMTWVzc2FnZShwcmVmaXgsIHJlbGlkLCBjbWR0eXBlLCBkYXRhLCBzdHJsZW4oZGF0YSkp OworCVBHX1JFVFVSTl9MU04obHNuKTsKK30KKworRGF0dW0KK3BnX2xvZ2ljYWxfZW1pdF9kZGxf bWVzc2FnZV90ZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogYnl0ZWEgYW5kIHRleHQgYXJl IGNvbXBhdGlibGUgKi8KKwlyZXR1cm4gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlX2J5dGVh KGZjaW5mbyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWls ZAppbmRleCBkNDhjZDRjNTkwLi4wNWU3NzU2OTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKQEAgLTIsNiArMiw4IEBACiAKIGJhY2tlbmRfc291cmNl cyArPSBmaWxlcygKICAgJ2FwcGx5cGFyYWxsZWx3b3JrZXIuYycsCisgICdkZGxtZXNzYWdlLmMn LAorICAnZGRsdHJpZ2dlci5jJywKICAgJ2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAn bG9naWNhbC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBm MzA4NzEzMjc1Li4xYmEzZmViMTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jCkBAIC02NjMsNiArNjYzLDQ3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJp bmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCXBxX3NlbmRi eXRlcyhvdXQsIG1lc3NhZ2UsIHN6KTsKIH0KIAorLyoKKyAqIFJlYWQgRERMIE1FU1NBR0UgZnJv bSBzdHJlYW0KKyAqLworY2hhciAqCitsb2dpY2FscmVwX3JlYWRfZGRsKFN0cmluZ0luZm8gaW4s IFhMb2dSZWNQdHIgKmxzbiwKKwkJCQkJCSAgIGNvbnN0IGNoYXIgKipwcmVmaXgsCisJCQkJCQkg ICBTaXplICpzeikKK3sKKwl1aW50OCBmbGFnczsKKwljaGFyICptc2c7CisKKwlmbGFncyA9IHBx X2dldG1zZ2ludChpbiwgMSk7CisJaWYgKGZsYWdzICE9IDApCisJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgZmxhZ3MgJXUgaW4gZGRsIG1lc3NhZ2UiLCBmbGFncyk7CisKKwkqbHNuID0gcHFf Z2V0bXNnaW50NjQoaW4pOworCSpwcmVmaXggPSBwcV9nZXRtc2dzdHJpbmcoaW4pOworCSpzeiA9 IHBxX2dldG1zZ2ludChpbiwgNCk7CisJbXNnID0gKGNoYXIgKikgcHFfZ2V0bXNnYnl0ZXMoaW4s ICpzeik7CisKKwlyZXR1cm4gbXNnOworfQorCisvKgorICogV3JpdGUgRERMIE1FU1NBR0UgdG8g c3RyZWFtCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfZGRsKFN0cmluZ0luZm8gb3V0LCBY TG9nUmVjUHRyIGxzbiwKKwkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osIGNvbnN0 IGNoYXIgKm1lc3NhZ2UpCit7CisJdWludDgJCWZsYWdzID0gMDsKKworCXBxX3NlbmRieXRlKG91 dCwgTE9HSUNBTF9SRVBfTVNHX0RETCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZsYWdzKTsKKwlw cV9zZW5kaW50NjQob3V0LCBsc24pOworCXBxX3NlbmRzdHJpbmcob3V0LCBwcmVmaXgpOworCXBx X3NlbmRpbnQzMihvdXQsIHN6KTsKKwlwcV9zZW5kYnl0ZXMob3V0LCBtZXNzYWdlLCBzeik7Cit9 CisKIC8qCiAgKiBXcml0ZSByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0cHV0IHN0cmVh bS4KICAqLwpAQCAtMTIzOCw2ICsxMjc5LDggQEAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoTG9n aWNhbFJlcE1zZ1R5cGUgYWN0aW9uKQogCQkJcmV0dXJuICJUWVBFIjsKIAkJY2FzZSBMT0dJQ0FM X1JFUF9NU0dfTUVTU0FHRToKIAkJCXJldHVybiAiTUVTU0FHRSI7CisJCWNhc2UgTE9HSUNBTF9S RVBfTVNHX0RETDoKKwkJCXJldHVybiAiRERMIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQkVH SU5fUFJFUEFSRToKIAkJCXJldHVybiAiQkVHSU4gUFJFUEFSRSI7CiAJCWNhc2UgTE9HSUNBTF9S RVBfTVNHX1BSRVBBUkU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVv cmRlcmJ1ZmZlci5jCmluZGV4IDlmNDQ5NzQ0NzMuLmU4OGViMmY0MmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC05NCw2ICs5NCw3 IEBACiAjaW5jbHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3Jlb3JkZXJidWZmZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCkBAIC01MTYs NiArNTE3LDE0IEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5DaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIs IFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSwKIAkJCQlwZnJlZShjaGFuZ2UtPmRhdGEubXNn Lm1lc3NhZ2UpOwogCQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlID0gTlVMTDsKIAkJCWJyZWFr OworCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQlpZiAoY2hhbmdlLT5kYXRh LmRkbC5wcmVmaXggIT0gTlVMTCkKKwkJCQlwZnJlZShjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCk7 CisJCQljaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCA9IE5VTEw7CisJCQlpZiAoY2hhbmdlLT5kYXRh LmRkbC5tZXNzYWdlICE9IE5VTEwpCisJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdl KTsKKwkJCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSA9IE5VTEw7CisJCQlicmVhazsKIAkJY2Fz ZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgogCQkJaWYgKGNoYW5nZS0+ZGF0 YS5pbnZhbC5pbnZhbGlkYXRpb25zKQogCQkJCXBmcmVlKGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZh bGlkYXRpb25zKTsKQEAgLTg5NSw2ICs5MDQsMzYgQEAgUmVvcmRlckJ1ZmZlclF1ZXVlTWVzc2Fn ZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJfQogfQogCisvKgorICog QSB0cmFuc2FjdGlvbmFsIERETCBtZXNzYWdlIGlzIHF1ZXVlZCB0byBiZSBwcm9jZXNzZWQgdXBv biBjb21taXQuCisgKi8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZURETE1lc3NhZ2UoUmVvcmRl ckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCSBYTG9nUmVjUHRyIGxzbiwg Y29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hh ciAqbWVzc2FnZSwKKwkJCQkJCQkgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5 cGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVJlb3JkZXJCdWZmZXJDaGFuZ2Ug KmNoYW5nZTsKKworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKKworCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocmItPmNvbnRleHQpOworCisJY2hhbmdlID0g UmVvcmRlckJ1ZmZlckdldENoYW5nZShyYik7CisJY2hhbmdlLT5hY3Rpb24gPSBSRU9SREVSX0JV RkZFUl9DSEFOR0VfRERMOworCWNoYW5nZS0+ZGF0YS5kZGwucHJlZml4ID0gcHN0cmR1cChwcmVm aXgpOworCWNoYW5nZS0+ZGF0YS5kZGwucmVsaWQgPSByZWxpZDsKKwljaGFuZ2UtPmRhdGEuZGRs LmNtZHR5cGUgPSBjbWR0eXBlOworCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplID0gbWVz c2FnZV9zaXplOworCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSA9IHBhbGxvYyhtZXNzYWdlX3Np emUpOworCW1lbWNweShjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UsIG1lc3NhZ2UsIG1lc3NhZ2Vf c2l6ZSk7CisKKwlSZW9yZGVyQnVmZmVyUXVldWVDaGFuZ2UocmIsIHhpZCwgbHNuLCBjaGFuZ2Us IGZhbHNlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKwogLyoK ICAqIEFzc2VydFRYTkxzbk9yZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBvZiB0cmFuc2Fj dGlvbiBsaXN0cyBpbiB0aGUgcmVvcmRlcmJ1ZmZlcgpAQCAtMTk5Nyw2ICsyMDM2LDI5IEBAIFJl b3JkZXJCdWZmZXJBcHBseU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsKIH0KIAorLyoKKyAqIEhl bHBlciBmdW5jdGlvbiBmb3IgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4gZm9yIGFwcGx5aW5nIHRo ZSBEREwgbWVzc2FnZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitSZW9yZGVyQnVmZmVyQXBw bHlERExNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJ CQkJCQkJIFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSwgYm9vbCBzdHJlYW1pbmcpCit7CisJ aWYgKHN0cmVhbWluZykKKwkJcmItPnN0cmVhbV9kZGwocmIsIHR4biwgY2hhbmdlLT5sc24sCisJ CQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5k ZGwucmVsaWQsCisJCQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUsCisJCQkJCQkJICBj aGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5kZGwu bWVzc2FnZSk7CisJZWxzZQorCQlyYi0+ZGRsKHJiLCB0eG4sIGNoYW5nZS0+bHNuLAorCQkJCQkg ICBjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5yZWxp ZCwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlLAorCQkJCQkgICBjaGFuZ2UtPmRh dGEuZGRsLm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlKTsK K30KKwogLyoKICAqIEZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBjb21tYW5kIGlkIGFuZCBzbmFwc2hv dCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50CiAgKiBzdHJlYW0gc28gdGhhdCB3ZSBjYW4gcmV1 c2UgdGhlIHNhbWUgd2hpbGUgc2VuZGluZyB0aGUgbmV4dCBzdHJlYW0uCkBAIC0yMzc5LDYgKzI0 NDEsMTAgQEAgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJUmVvcmRlckJ1ZmZlckFwcGx5TWVzc2FnZShyYiwgdHhu LCBjaGFuZ2UsIHN0cmVhbWluZyk7CiAJCQkJCWJyZWFrOwogCisJCQkJY2FzZSBSRU9SREVSX0JV RkZFUl9DSEFOR0VfRERMOgorCQkJCQlSZW9yZGVyQnVmZmVyQXBwbHlERExNZXNzYWdlKHJiLCB0 eG4sIGNoYW5nZSwgc3RyZWFtaW5nKTsKKwkJCQkJYnJlYWs7CisKIAkJCQljYXNlIFJFT1JERVJf QlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT046CiAJCQkJCS8qIEV4ZWN1dGUgdGhlIGludmFsaWRh dGlvbiBtZXNzYWdlcyBsb2NhbGx5ICovCiAJCQkJCVJlb3JkZXJCdWZmZXJFeGVjdXRlSW52YWxp ZGF0aW9ucyhjaGFuZ2UtPmRhdGEuaW52YWwubmludmFsaWRhdGlvbnMsCkBAIC0zODM1LDYgKzM5 MDEsMzkgQEAgUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwg UmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkgICBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vf c2l6ZSk7CiAJCQkJZGF0YSArPSBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZTsKIAorCQkJ CWJyZWFrOworCQkJfQorCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQl7CisJ CQkJY2hhcgkgICAqZGF0YTsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0cmxlbihjaGFuZ2Ut PmRhdGEuZGRsLnByZWZpeCkgKyAxOworCisJCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2Ut PmRhdGEuZGRsLm1lc3NhZ2Vfc2l6ZSArCisJCQkJCXNpemVvZihTaXplKSArIHNpemVvZihPaWQp ICsgc2l6ZW9mKGludCkgKyBzaXplb2YoU2l6ZSk7CisJCQkJUmVvcmRlckJ1ZmZlclNlcmlhbGl6 ZVJlc2VydmUocmIsIHN6KTsKKworCQkJCWRhdGEgPSAoKGNoYXIgKikgcmItPm91dGJ1ZikgKyBz aXplb2YoUmVvcmRlckJ1ZmZlckRpc2tDaGFuZ2UpOworCisJCQkJLyogbWlnaHQgaGF2ZSBiZWVu IHJlYWxsb2NhdGVkIGFib3ZlICovCisJCQkJb25kaXNrID0gKFJlb3JkZXJCdWZmZXJEaXNrQ2hh bmdlICopIHJiLT5vdXRidWY7CisKKwkJCQkvKiB3cml0ZSB0aGUgcHJlZml4LCByZWxpZCBhbmQg Y21kdHlwZSBpbmNsdWRpbmcgdGhlIHNpemUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJnByZWZpeF9z aXplLCBzaXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCW1lbWNw eShkYXRhLCAmY2hhbmdlLT5kYXRhLmRkbC5yZWxpZCwgc2l6ZW9mKE9pZCkpOworCQkJCWRhdGEg Kz0gc2l6ZW9mKE9pZCk7CisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRsLmNtZHR5 cGUsIHNpemVvZihEZXBhcnNlZENvbW1hbmRUeXBlKSk7CisJCQkJZGF0YSArPSBzaXplb2YoaW50 KTsKKwkJCQltZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgsIHByZWZpeF9zaXpl KTsKKwkJCQlkYXRhICs9IHByZWZpeF9zaXplOworCisJCQkJLyogd3JpdGUgdGhlIG1lc3NhZ2Ug aW5jbHVkaW5nIHRoZSBzaXplICovCisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRs Lm1lc3NhZ2Vfc2l6ZSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsK KwkJCQltZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlLAorCQkJCQkgICBjaGFu Z2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJZGF0YSArPSBjaGFuZ2UtPmRhdGEuZGRs Lm1lc3NhZ2Vfc2l6ZTsKKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVS X0NIQU5HRV9JTlZBTElEQVRJT046CkBAIC00MTQ5LDYgKzQyNDgsMTUgQEAgUmVvcmRlckJ1ZmZl ckNoYW5nZVNpemUoUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJCXN6ICs9IHByZWZp eF9zaXplICsgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUgKwogCQkJCQlzaXplb2YoU2l6 ZSkgKyBzaXplb2YoU2l6ZSk7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JV RkZFUl9DSEFOR0VfRERMOgorCQkJeworCQkJCVNpemUJCXByZWZpeF9zaXplID0gc3RybGVuKGNo YW5nZS0+ZGF0YS5kZGwucHJlZml4KSArIDE7CisKKwkJCQlzeiArPSBwcmVmaXhfc2l6ZSArIGNo YW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplICsKKwkJCQkJc2l6ZW9mKFNpemUpICsgc2l6ZW9m KFNpemUpICsgc2l6ZW9mKE9pZCkgKyBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSk7CisKIAkJ CQlicmVhazsKIAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9O OgpAQCAtNDQyNiw2ICs0NTM0LDMzIEBAIFJlb3JkZXJCdWZmZXJSZXN0b3JlQ2hhbmdlKFJlb3Jk ZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCSAgIGNoYW5nZS0+ZGF0 YS5tc2cubWVzc2FnZV9zaXplKTsKIAkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5tc2cubWVzc2Fn ZV9zaXplOwogCisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0RETDoKKwkJCXsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZTsKKworCQkJCS8qIHJlYWQgcHJlZml4 ICovCisJCQkJbWVtY3B5KCZwcmVmaXhfc2l6ZSwgZGF0YSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlk YXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1jcHkoJmNoYW5nZS0+ZGF0YS5kZGwucmVsaWQs IGRhdGEsIHNpemVvZihPaWQpKTsKKwkJCQlkYXRhICs9IHNpemVvZihPaWQpOworCQkJCW1lbWNw eSgmY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlLCBkYXRhLCBzaXplb2YoRGVwYXJzZWRDb21tYW5k VHlwZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKGludCk7CisJCQkJY2hhbmdlLT5kYXRhLmRkbC5w cmVmaXggPSBNZW1vcnlDb250ZXh0QWxsb2MocmItPmNvbnRleHQsIHByZWZpeF9zaXplKTsKKwkJ CQltZW1jcHkoY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgsIGRhdGEsIHByZWZpeF9zaXplKTsKKwkJ CQlBc3NlcnQoY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXhbcHJlZml4X3NpemUgLSAxXSA9PSAnXDAn KTsKKwkJCQlkYXRhICs9IHByZWZpeF9zaXplOworCisJCQkJLyogcmVhZCB0aGUgbWVzc2FnZSAq LworCQkJCW1lbWNweSgmY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUsIGRhdGEsIHNpemVv ZihTaXplKSk7CisJCQkJZGF0YSArPSBzaXplb2YoU2l6ZSk7CisJCQkJY2hhbmdlLT5kYXRhLm1z Zy5tZXNzYWdlID0gTWVtb3J5Q29udGV4dEFsbG9jKHJiLT5jb250ZXh0LAorCQkJCQkJCQkJCQkJ CQkJICBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJbWVtY3B5KGNoYW5nZS0+ ZGF0YS5tc2cubWVzc2FnZSwgZGF0YSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdl X3NpemUpOworCQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7CisKIAkJ CQlicmVhazsKIAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9O OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggM2Q1ODkxMGMx NC4uZGIzNzllNDlmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC0xNjYsNiArMTY2LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5j bHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24u aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgi CkBAIC0xOTEsNyArMTkyLDEwIEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNs dWRlICJ0Y29wL2RkbF9kZXBhcnNlLmgiCisjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIKICNpbmNs dWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9jYXRjYWNoZS5oIgpAQCAtMzI3NCw2ICszMjc4LDIzOCBAQCBhcHBseV9oYW5kbGVfdHJ1 bmNhdGUoU3RyaW5nSW5mbyBzKQogCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiB9CiAKKy8qCisg KiBTcGVjaWFsIGhhbmRsaW5nIGZvciBDUkVBVEUgVEFCTEUgQVMgYW5kIFNFTEVDVCBJTlRPCisg KiB0byBub3QgcG9wdWxhdGUgZGF0YSBmcm9tIHRoZSBzb3VyY2UgdGFibGUgb24gdGhlIHN1YnNj cmliZXIuCisgKiBBbGxvdyB0aGUgZGF0YSB0byBiZSByZXBsaWNhdGVkIHRocm91Z2ggSU5TRVJU cyBvbiB0aGUgcHVibGlzaGVyLgorICovCitzdGF0aWMgdm9pZAorcHJlcHJvY2Vzc19jcmVhdGVf dGFibGUoUmF3U3RtdCAqY29tbWFuZCkKK3sKKwlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CisKKwlj b21tYW5kVGFnID0gQ3JlYXRlQ29tbWFuZFRhZygoTm9kZSAqKSBjb21tYW5kKTsKKworCXN3aXRj aCAoY29tbWFuZFRhZykKKwl7CisJCWNhc2UgQ01EVEFHX0NSRUFURV9UQUJMRV9BUzoKKwkJY2Fz ZSBDTURUQUdfU0VMRUNUX0lOVE86CisJCQl7CisJCQkJQ3JlYXRlVGFibGVBc1N0bXQgKmNhc3Rt dCA9IChDcmVhdGVUYWJsZUFzU3RtdCAqKSBjb21tYW5kLT5zdG10OworCisJCQkJaWYgKGNhc3Rt dC0+b2JqdHlwZSA9PSBPQkpFQ1RfVEFCTEUpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBGb3Jj ZSBza2lwcGluZyBkYXRhIHBvcHVsYXRpb24gdG8gYXZvaWQgZGF0YQorCQkJCQkgKiBpbmNvbnNp c3RlbmN5LiBEYXRhIHNob3VsZCBiZSByZXBsaWNhdGVkIGZyb20gdGhlCisJCQkJCSAqIHB1Ymxp c2hlciBpbnN0ZWFkLgorCQkJCQkgKi8KKwkJCQkJY2FzdG10LT5pbnRvLT5za2lwRGF0YSA9IHRy dWU7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgQ01EVEFHX1NFTEVDVDoKKwkJCXsK KwkJCQlTZWxlY3RTdG10ICpzc3RtdCA9IChTZWxlY3RTdG10ICopIGNvbW1hbmQtPnN0bXQ7CisK KwkJCQlpZiAoc3N0bXQtPmludG9DbGF1c2UgIT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJ CSAqIEZvcmNlIHNraXBwaW5nIGRhdGEgcG9wdWxhdGlvbiB0byBhdm9pZCBkYXRhCisJCQkJCSAq IGluY29uc2lzdGVuY3kuIERhdGEgc2hvdWxkIGJlIHJlcGxpY2F0ZWQgZnJvbSB0aGUKKwkJCQkJ ICogcHVibGlzaGVyIGluc3RlYWQuCisJCQkJCSAqLworCQkJCQlzc3RtdC0+aW50b0NsYXVzZS0+ c2tpcERhdGEgPSB0cnVlOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ YnJlYWs7CisJfQorfQorCisvKgorICogSGFuZGxlIENSRUFURSBUQUJMRSBjb21tYW5kCisgKgor ICogQ2FsbCBBZGRTdWJzY3JpcHRpb25SZWxTdGF0ZSBmb3IgQ1JFQVRFIExBQkVMIGNvbW1hbmQg dG8gc2V0IHRoZSByZWxzdGF0ZSB0bworICogU1VCUkVMX1NUQVRFX1JFQURZIHNvIERNTCBjaGFu Z2VzIG9uIHRoaXMgbmV3IHRhYmxlIGNhbiBiZSByZXBsaWNhdGVkIHdpdGhvdXQKKyAqIGhhdmlu ZyB0byBtYW51YWxseSBydW4gImFsdGVyIHN1YnNjcmlwdGlvbiAuLi4gcmVmcmVzaCBwdWJsaWNh dGlvbiIKKyAqLworc3RhdGljIHZvaWQKK2hhbmRsZV9jcmVhdGVfdGFibGUoUmF3U3RtdCAqY29t bWFuZCkKK3sKKwlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CisJUmFuZ2VWYXIgICAqcnYgPSBOVUxM OworCU9pZAkJCXJlbGlkOworCU9pZAkJCXJlbG5hbWVzcGFjZSA9IEludmFsaWRPaWQ7CisJQ3Jl YXRlU3RtdCAqY3N0bXQ7CisJY2hhcgkgICAqc2NoZW1hbmFtZSA9IE5VTEw7CisJY2hhcgkgICAq cmVsbmFtZSA9IE5VTEw7CisKKwljb21tYW5kVGFnID0gQ3JlYXRlQ29tbWFuZFRhZygoTm9kZSAq KSBjb21tYW5kKTsKKwljc3RtdCA9IChDcmVhdGVTdG10ICopIGNvbW1hbmQtPnN0bXQ7CisJcnYg PSBjc3RtdC0+cmVsYXRpb247CisKKwlpZiAoY29tbWFuZFRhZyA9PSBDTURUQUdfQ1JFQVRFX1RB QkxFKQorCXsKKwkJY3N0bXQgPSAoQ3JlYXRlU3RtdCAqKSBjb21tYW5kLT5zdG10OworCQlydiA9 IGNzdG10LT5yZWxhdGlvbjsKKwl9CisJZWxzZQorCXsKKwkJcmV0dXJuOworCX0KKworCWlmICgh cnYpCisJCXJldHVybjsKKworCXNjaGVtYW5hbWUgPSBydi0+c2NoZW1hbmFtZTsKKwlyZWxuYW1l ID0gcnYtPnJlbG5hbWU7CisKKwlpZiAoc2NoZW1hbmFtZSAhPSBOVUxMKQorCQlyZWxuYW1lc3Bh Y2UgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFuYW1lLCBmYWxzZSk7CisKKwlpZiAocmVsbmFt ZXNwYWNlICE9IEludmFsaWRPaWQpCisJCXJlbGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQocmVsbmFt ZSwgcmVsbmFtZXNwYWNlKTsKKwllbHNlCisJCXJlbGlkID0gUmVsbmFtZUdldFJlbGlkKHJlbG5h bWUpOworCisJaWYgKE9pZElzVmFsaWQocmVsaWQpKQorCXsKKwkJQWRkU3Vic2NyaXB0aW9uUmVs U3RhdGUoTXlTdWJzY3JpcHRpb24tPm9pZCwgcmVsaWQsCisJCQkJCQkJCVNVQlJFTF9TVEFURV9S RUFEWSwKKwkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIpOworCQllcmVwb3J0KERFQlVHMSwKKwkJ CQkoZXJybXNnX2ludGVybmFsKCJ0YWJsZSBcIiVzXCIgYWRkZWQgdG8gc3Vic2NyaXB0aW9uIFwi JXNcIiIsCisJCQkJCQkJCSByZWxuYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwl9Cit9 CisKKy8qCisgKiBIYW5kbGUgRERMIHJlcGxpY2F0aW9uIG1lc3NhZ2VzLgorICovCitzdGF0aWMg dm9pZAorYXBwbHlfaGFuZGxlX2RkbChTdHJpbmdJbmZvIHMpCit7CisJWExvZ1JlY1B0cglsc247 CisJY29uc3QgY2hhciAqcHJlZml4ID0gTlVMTDsKKwljaGFyCSAgICptZXNzYWdlID0gTlVMTDsK KwljaGFyCSAgICpkZGxfY29tbWFuZDsKKwlTaXplCQlzejsKKwlMaXN0CSAgICpwYXJzZXRyZWVf bGlzdDsKKwlMaXN0Q2VsbCAgICpwYXJzZXRyZWVfaXRlbTsKKwlEZXN0UmVjZWl2ZXIgKnJlY2Vp dmVyOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwljb25zdCBjaGFyICpzYXZlX2RlYnVn X3F1ZXJ5X3N0cmluZyA9IGRlYnVnX3F1ZXJ5X3N0cmluZzsKKworCW1lc3NhZ2UgPSBsb2dpY2Fs cmVwX3JlYWRfZGRsKHMsICZsc24sICZwcmVmaXgsICZzeik7CisKKwkvKiBNYWtlIHN1cmUgd2Ug YXJlIGluIGEgdHJhbnNhY3Rpb24gY29tbWFuZCAqLworCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAo KTsKKworCWRkbF9jb21tYW5kID0gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcobWVzc2FnZSk7 CisJZGVidWdfcXVlcnlfc3RyaW5nID0gZGRsX2NvbW1hbmQ7CisKKwkvKiBEZXN0Tm9uZSBmb3Ig bG9naWNhbCByZXBsaWNhdGlvbiAqLworCXJlY2VpdmVyID0gQ3JlYXRlRGVzdFJlY2VpdmVyKERl c3ROb25lKTsKKwlwYXJzZXRyZWVfbGlzdCA9IHBnX3BhcnNlX3F1ZXJ5KGRkbF9jb21tYW5kKTsK KworCWZvcmVhY2gocGFyc2V0cmVlX2l0ZW0sIHBhcnNldHJlZV9saXN0KQorCXsKKwkJTGlzdAkg ICAqcGxhbnRyZWVfbGlzdDsKKwkJTGlzdAkgICAqcXVlcnl0cmVlX2xpc3Q7CisJCVJhd1N0bXQg ICAgKmNvbW1hbmQgPSAoUmF3U3RtdCAqKSBsZmlyc3QocGFyc2V0cmVlX2l0ZW0pOworCQlDb21t YW5kVGFnCWNvbW1hbmRUYWc7CisJCU1lbW9yeUNvbnRleHQgcGVyX3BhcnNldHJlZV9jb250ZXh0 ID0gTlVMTDsKKwkJUG9ydGFsCQlwb3J0YWw7CisJCWJvb2wJCXNuYXBzaG90X3NldCA9IGZhbHNl OworCisJCWNvbW1hbmRUYWcgPSBDcmVhdGVDb21tYW5kVGFnKChOb2RlICopIGNvbW1hbmQpOwor CisJCS8qIElmIHdlIGdvdCBhIGNhbmNlbCBzaWduYWwgaW4gcGFyc2luZyBvciBwcmlvciBjb21t YW5kLCBxdWl0ICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVtb3ZlIGRh dGEgcG9wdWxhdGlvbiBmcm9tIHRoZSBjb21tYW5kICovCisJCXByZXByb2Nlc3NfY3JlYXRlX3Rh YmxlKGNvbW1hbmQpOworCisJCS8qCisJCSAqIFNldCB1cCBhIHNuYXBzaG90IGlmIHBhcnNlIGFu YWx5c2lzL3BsYW5uaW5nIHdpbGwgbmVlZCBvbmUuCisJCSAqLworCQlpZiAoYW5hbHl6ZV9yZXF1 aXJlc19zbmFwc2hvdChjb21tYW5kKSkKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQlzbmFwc2hvdF9zZXQgPSB0cnVlOworCQl9CisKKwkJ LyoKKwkJICogV2UgZG8gdGhlIHdvcmsgZm9yIGVhY2ggcGFyc2V0cmVlIGluIGEgc2hvcnQtbGl2 ZWQgY29udGV4dCwgdG8KKwkJICogbGltaXQgdGhlIG1lbW9yeSB1c2VkIHdoZW4gdGhlcmUgYXJl IG1hbnkgY29tbWFuZHMgaW4gdGhlIHN0cmluZy4KKwkJICovCisJCXBlcl9wYXJzZXRyZWVfY29u dGV4dCA9CisJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJ CQkJCQkJCSAgImV4ZWN1dGVfc3FsX3N0cmluZyBwZXItc3RhdGVtZW50IGNvbnRleHQiLAorCQkJ CQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHBlcl9wYXJzZXRyZWVfY29udGV4dCk7CisKKwkJcXVlcnl0cmVlX2xpc3Qg PSBwZ19hbmFseXplX2FuZF9yZXdyaXRlX2ZpeGVkcGFyYW1zKGNvbW1hbmQsCisJCQkJCQkJCQkJ CQkJCQlkZGxfY29tbWFuZCwKKwkJCQkJCQkJCQkJCQkJCU5VTEwsIDAsIE5VTEwpOworCisJCXBs YW50cmVlX2xpc3QgPSBwZ19wbGFuX3F1ZXJpZXMocXVlcnl0cmVlX2xpc3QsIGRkbF9jb21tYW5k LCAwLCBOVUxMKTsKKworCQkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcnNp bmcvcGxhbm5pbmcgKi8KKwkJaWYgKHNuYXBzaG90X3NldCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisKKwkJcG9ydGFsID0gQ3JlYXRlUG9ydGFsKCJsb2dpY2FsIHJlcGxpY2F0aW9uIiwgdHJ1 ZSwgdHJ1ZSk7CisKKwkJLyoKKwkJICogV2UgZG9uJ3QgaGF2ZSB0byBjb3B5IGFueXRoaW5nIGlu dG8gdGhlIHBvcnRhbCwgYmVjYXVzZSBldmVyeXRoaW5nCisJCSAqIHdlIGFyZSBwYXNzaW5nIGhl cmUgaXMgaW4gQXBwbHlNZXNzYWdlQ29udGV4dCBvciB0aGUKKwkJICogcGVyX3BhcnNldHJlZV9j b250ZXh0LCBhbmQgc28gd2lsbCBvdXRsaXZlIHRoZSBwb3J0YWwgYW55d2F5LgorCQkgKi8KKwkJ UG9ydGFsRGVmaW5lUXVlcnkocG9ydGFsLAorCQkJCQkJICBOVUxMLAorCQkJCQkJICBkZGxfY29t bWFuZCwKKwkJCQkJCSAgY29tbWFuZFRhZywKKwkJCQkJCSAgcGxhbnRyZWVfbGlzdCwKKwkJCQkJ CSAgTlVMTCk7CisKKwkJLyoKKwkJICogU3RhcnQgdGhlIHBvcnRhbC4gIE5vIHBhcmFtZXRlcnMg aGVyZS4KKwkJICovCisJCVBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBz aG90KTsKKworCQkvKgorCQkgKiBTd2l0Y2ggYmFjayB0byB0cmFuc2FjdGlvbiBjb250ZXh0IGZv ciBleGVjdXRpb24uCisJCSAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisKKwkJKHZvaWQpIFBvcnRhbFJ1bihwb3J0YWwsCisJCQkJCQkgRkVUQ0hfQUxMLAorCQkJCQkJ IHRydWUsCisJCQkJCQkgdHJ1ZSwKKwkJCQkJCSByZWNlaXZlciwKKwkJCQkJCSByZWNlaXZlciwK KwkJCQkJCSBOVUxMKTsKKworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCisJCUNvbW1h bmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJLyoKKwkJICogVGFibGUgY3JlYXRlZCBieSBEREwg cmVwbGljYXRpb24gKGRhdGFiYXNlIGxldmVsKSBpcyBhdXRvbWF0aWNhbGx5CisJCSAqIGFkZGVk IHRvIHRoZSBzdWJzY3JpcHRpb24gaGVyZS4KKwkJICovCisJCWhhbmRsZV9jcmVhdGVfdGFibGUo Y29tbWFuZCk7CisKKwkJLyogTm93IHdlIG1heSBkcm9wIHRoZSBwZXItcGFyc2V0cmVlIGNvbnRl eHQsIGlmIG9uZSB3YXMgY3JlYXRlZC4gKi8KKwkJTWVtb3J5Q29udGV4dERlbGV0ZShwZXJfcGFy c2V0cmVlX2NvbnRleHQpOworCX0KKworCWRlYnVnX3F1ZXJ5X3N0cmluZyA9IHNhdmVfZGVidWdf cXVlcnlfc3RyaW5nOworCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7Cit9CiAKIC8qCiAgKiBMb2dp Y2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4KQEAgLTMzMzksNiAr MzU3NSwxMCBAQCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWJyZWFr OwogCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0RETDoKKwkJCWFwcGx5X2hhbmRsZV9kZGwocyk7 CisJCQlicmVhazsKKwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQ6CiAJCQlh cHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KHMpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBlYmFmNTU1ZDU2Li43ZWE5ZmY1MWVj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4 LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVm cmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9y LmgiCiAjaW5jbHVkZSAiZm1nci5oIgpAQCAtNTUsNiArNTYsMTEgQEAgc3RhdGljIHZvaWQgcGdv dXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgYm9vbCB0 cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJIFNpemUgc3osIGNvbnN0 IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdvdXRwdXRfZGRsKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwKKwkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIg bWVzc2FnZV9sc24sCisJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsCisJCQkJ CQkgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJIFNpemUgc3osIGNvbnN0IGNo YXIgKm1lc3NhZ2UpOwogc3RhdGljIGJvb2wgcGdvdXRwdXRfb3JpZ2luX2ZpbHRlcihMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCSAgIFJlcE9yaWdpbklkIG9yaWdpbl9pZCk7 CiBzdGF0aWMgdm9pZCBwZ291dHB1dF9iZWdpbl9wcmVwYXJlX3R4bihMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCkBAIC0yMDcsNiArMjEzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25T eW5jRW50cnkKIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0VHhuRGF0YQogewogCWJvb2wJCXNlbnRf YmVnaW5fdHhuOyAvKiBmbGFnIGluZGljYXRpbmcgd2hldGhlciBCRUdJTiBoYXMgYmVlbiBzZW50 ICovCisJTGlzdAkgICAqZGVsZXRlZF9yZWxpZHM7CiB9IFBHT3V0cHV0VHhuRGF0YTsKIAogLyog TWFwIHVzZWQgdG8gcmVtZW1iZXIgd2hpY2ggcmVsYXRpb24gc2NoZW1hcyB3ZSBzZW50LiAqLwpA QCAtMjU0LDYgKzI2MSw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2Fs bGJhY2tzICpjYikKIAljYi0+Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT50cnVu Y2F0ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdvdXRwdXRf bWVzc2FnZTsKKwljYi0+ZGRsX2NiID0gcGdvdXRwdXRfZGRsOwogCWNiLT5jb21taXRfY2IgPSBw Z291dHB1dF9jb21taXRfdHhuOwogCiAJY2ItPmJlZ2luX3ByZXBhcmVfY2IgPSBwZ291dHB1dF9i ZWdpbl9wcmVwYXJlX3R4bjsKQEAgLTI3MCw2ICsyNzgsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9p bml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21taXRfY2IgPSBw Z291dHB1dF9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hhbmdlX2NiID0gcGdvdXRwdXRf Y2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBnb3V0cHV0X21lc3NhZ2U7CisJY2It PnN0cmVhbV9kZGxfY2IgPSBwZ291dHB1dF9kZGw7CiAJY2ItPnN0cmVhbV90cnVuY2F0ZV9jYiA9 IHBnb3V0cHV0X3RydW5jYXRlOwogCS8qIHRyYW5zYWN0aW9uIHN0cmVhbWluZyAtIHR3by1waGFz ZSBjb21taXQgKi8KIAljYi0+c3RyZWFtX3ByZXBhcmVfY2IgPSBwZ291dHB1dF9zdHJlYW1fcHJl cGFyZV90eG47CkBAIC00MjUsNiArNDM0LDcgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAogCS8qIFRoaXMg cGx1Z2luIHVzZXMgYmluYXJ5IHByb3RvY29sLiAqLwogCW9wdC0+b3V0cHV0X3R5cGUgPSBPVVRQ VVRfUExVR0lOX0JJTkFSWV9PVVRQVVQ7CisJb3B0LT5yZWNlaXZlX3Jld3JpdGVzID0gdHJ1ZTsK IAogCS8qCiAJICogVGhpcyBpcyByZXBsaWNhdGlvbiBzdGFydCBhbmQgbm90IHNsb3QgaW5pdGlh bGl6YXRpb24uCkBAIC01MDUsNiArNTE1LDcgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAogCQkvKiBJbml0 IHB1YmxpY2F0aW9uIHN0YXRlLiAqLwogCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBOSUw7CisJCWRh dGEtPmRlbGV0ZWRfcmVsaWRzID0gTklMOwogCQlwdWJsaWNhdGlvbnNfdmFsaWQgPSBmYWxzZTsK IAogCQkvKgpAQCAtNTMzLDYgKzU0NCwzNCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCX0KIH0KIAorLyog SW5pdGlhbGl6ZSB0aGUgcGVyLXRyYW5zYWN0aW9uIGxldmVsIHZhcmlhYmxlIGZvciB0aGUgZ2l2 ZW4gdHJhbnNhY3Rpb24uICovCitzdGF0aWMgdm9pZAoraW5pdF90eG5fZGF0YShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKK3sKKwlQR091dHB1dFR4 bkRhdGEgKnR4bmRhdGE7CisKKwlpZiAodHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUgIT0gTlVM TCkKKwkJcmV0dXJuOworCisJdHhuZGF0YSA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oY3R4LT5j b250ZXh0LCBzaXplb2YoUEdPdXRwdXRUeG5EYXRhKSk7CisKKwl0eG4tPm91dHB1dF9wbHVnaW5f cHJpdmF0ZSA9IHR4bmRhdGE7Cit9CisKKy8qIENsZWFuIHVwIHRoZSBwZXItdHJhbnNhY3Rpb24g bGV2ZWwgdmFyaWFibGUgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKi8KK3N0YXRpYyB2b2lk CitjbGVhbl90eG5fZGF0YShSZW9yZGVyQnVmZmVyVFhOICp0eG4pCit7CisJUEdPdXRwdXRUeG5E YXRhICp0eG5kYXRhID0gKFBHT3V0cHV0VHhuRGF0YSAqKSB0eG4tPm91dHB1dF9wbHVnaW5fcHJp dmF0ZTsKKworCWlmICh0eG5kYXRhID09IE5VTEwpCisJCXJldHVybjsKKworCWxpc3RfZnJlZSh0 eG5kYXRhLT5kZWxldGVkX3JlbGlkcyk7CisJcGZyZWUodHhuZGF0YSk7CisJdHhuLT5vdXRwdXRf cGx1Z2luX3ByaXZhdGUgPSBOVUxMOworfQorCiAvKgogICogQkVHSU4gY2FsbGJhY2suCiAgKgpA QCAtNTQ2LDEwICs1ODUsNyBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogc3RhdGljIHZvaWQKIHBnb3V0cHV0 X2JlZ2luX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4g KnR4bikKIHsKLQlQR091dHB1dFR4bkRhdGEgKnR4bmRhdGEgPSBNZW1vcnlDb250ZXh0QWxsb2Na ZXJvKGN0eC0+Y29udGV4dCwKLQkJCQkJCQkJCQkJCQkgIHNpemVvZihQR091dHB1dFR4bkRhdGEp KTsKLQotCXR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlID0gdHhuZGF0YTsKKwlpbml0X3R4bl9k YXRhKGN0eCwgdHhuKTsKIH0KIAogLyoKQEAgLTU5NCw4ICs2MzAsNyBAQCBwZ291dHB1dF9jb21t aXRfdHhuKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAogCSAqLwogCXNlbnRfYmVnaW5fdHhuID0gdHhuZGF0YS0+c2VudF9iZWdpbl90eG47CiAJT3V0 cHV0UGx1Z2luVXBkYXRlUHJvZ3Jlc3MoY3R4LCAhc2VudF9iZWdpbl90eG4pOwotCXBmcmVlKHR4 bmRhdGEpOwotCXR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlID0gTlVMTDsKKwljbGVhbl90eG5f ZGF0YSh0eG4pOwogCiAJaWYgKCFzZW50X2JlZ2luX3R4bikKIAl7CkBAIC02MzcsNiArNjcyLDgg QEAgcGdvdXRwdXRfcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7 CiAJbG9naWNhbHJlcF93cml0ZV9wcmVwYXJlKGN0eC0+b3V0LCB0eG4sIHByZXBhcmVfbHNuKTsK IAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworCisJY2xlYW5fdHhuX2RhdGEodHhuKTsK IH0KIAogLyoKQEAgLTE0MTEsNiArMTQ0OCwxOSBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJUmVvcmRlckJ1ZmZl ckNoYW5nZVR5cGUgYWN0aW9uID0gY2hhbmdlLT5hY3Rpb247CiAJVHVwbGVUYWJsZVNsb3QgKm9s ZF9zbG90ID0gTlVMTDsKIAlUdXBsZVRhYmxlU2xvdCAqbmV3X3Nsb3QgPSBOVUxMOworCWJvb2wJ CQl0YWJsZV9yZXdyaXRlID0gZmFsc2U7CisKKwkvKgorCSAqIEZvciBoZWFwIHJld3JpdGVzLCB3 ZSBtaWdodCBuZWVkIHRvIHJlcGxpY2F0ZSB0aGVtIGlmIHRoZSByZXdyaXR0ZW4KKwkgKiB0YWJs ZSBwdWJsaXNoZXMgcmV3cml0ZSBkZGwgbWVzc2FnZS4gU28gZ2V0IHRoZSBhY3R1YWwgcmVsYXRp b24gaGVyZQorCSAqIGFuZCBjaGVjayB0aGUgcHViYWN0aW9uIGxhdGVyLgorCSAqLworCWlmIChy ZWxhdGlvbi0+cmRfcmVsLT5yZWxyZXdyaXRlKQorCXsKKwkJdGFibGVfcmV3cml0ZSA9IHRydWU7 CisJCXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKHJlbGF0aW9uLT5yZF9yZWwtPnJl bHJld3JpdGUpOworCQl0YXJnZXRyZWwgPSByZWxhdGlvbjsKKwl9CiAKIAlpZiAoIWlzX3B1Ymxp c2hhYmxlX3JlbGF0aW9uKHJlbGF0aW9uKSkKIAkJcmV0dXJuOwpAQCAtMTQ1Niw2ICsxNTA2LDEz IEBAIHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkJCUFzc2VydChmYWxzZSk7CiAJfQogCisJLyoKKwkgKiBXZSBkb24n dCBwdWJsaXNoIHRhYmxlIHJld3JpdGUgY2hhbmdlIHVubGVzcyB3ZSBwdWJsaXNoIHRoZSByZXdy aXRlIGRkbAorCSAqIG1lc3NhZ2UuCisJICovCisJaWYgKHRhYmxlX3Jld3JpdGUgJiYgIXJlbGVu dHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJcmV0dXJuOworCiAJLyogQXZvaWQgbGVh a2luZyBtZW1vcnkgYnkgdXNpbmcgYW5kIHJlc2V0dGluZyBvdXIgb3duIGNvbnRleHQgKi8KIAlv bGQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZGF0YS0+Y29udGV4dCk7CiAKQEAgLTE1MDMsNyAr MTU2MCw4IEBAIHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAkgKiBVcGRhdGVzIGNvdWxkIGJlIHRyYW5zZm9ybWVkIHRv IGluc2VydHMgb3IgZGVsZXRlcyBiYXNlZCBvbiB0aGUgcmVzdWx0cwogCSAqIG9mIHRoZSByb3cg ZmlsdGVyIGZvciBvbGQgYW5kIG5ldyB0dXBsZS4KIAkgKi8KLQlpZiAoIXBnb3V0cHV0X3Jvd19m aWx0ZXIodGFyZ2V0cmVsLCBvbGRfc2xvdCwgJm5ld19zbG90LCByZWxlbnRyeSwgJmFjdGlvbikp CisJaWYgKCF0YWJsZV9yZXdyaXRlICYmCisJCSFwZ291dHB1dF9yb3dfZmlsdGVyKHRhcmdldHJl bCwgb2xkX3Nsb3QsICZuZXdfc2xvdCwgcmVsZW50cnksICZhY3Rpb24pKQogCQlnb3RvIGNsZWFu dXA7CiAKIAkvKgpAQCAtMTUyOCw4ICsxNTg2LDE4IEBAIHBnb3V0cHV0X2NoYW5nZShMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlzd2l0Y2ggKGFj dGlvbikKIAl7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOU0VSVDoKLQkJCWxvZ2lj YWxyZXBfd3JpdGVfaW5zZXJ0KGN0eC0+b3V0LCB4aWQsIHRhcmdldHJlbCwgbmV3X3Nsb3QsCi0J CQkJCQkJCQlkYXRhLT5iaW5hcnksIHJlbGVudHJ5LT5jb2x1bW5zKTsKKwkJCS8qCisJCQkgKiBD b252ZXJ0IHRoZSByZXdyaXRlIGluc2VydHMgdG8gdXBkYXRlcyBzbyB0aGF0IHRoZSBzdWJzY3Jp YmVyCisJCQkgKiBjYW4gcmVwbGF5IGl0LiBUaGlzIGlzIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhl IGRhdGEgYmV0d2VlbgorCQkJICogcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGlzIGNvbnNpc3Rl bnQuCisJCQkgKi8KKwkJCWlmICh0YWJsZV9yZXdyaXRlKQorCQkJCWxvZ2ljYWxyZXBfd3JpdGVf dXBkYXRlKGN0eC0+b3V0LCB4aWQsIHRhcmdldHJlbCwKKwkJCQkJCQkJCQlOVUxMLCBuZXdfc2xv dCwgZGF0YS0+YmluYXJ5LAorCQkJCQkJCQkJCXJlbGVudHJ5LT5jb2x1bW5zKTsKKwkJCWVsc2UK KwkJCQlsb2dpY2FscmVwX3dyaXRlX2luc2VydChjdHgtPm91dCwgeGlkLCB0YXJnZXRyZWwsIG5l d19zbG90LAorCQkJCQkJCQkJCWRhdGEtPmJpbmFyeSwgcmVsZW50cnktPmNvbHVtbnMpOwogCQkJ YnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1VQREFURToKIAkJCWxvZ2ljYWxy ZXBfd3JpdGVfdXBkYXRlKGN0eC0+b3V0LCB4aWQsIHRhcmdldHJlbCwgb2xkX3Nsb3QsCkBAIC0x NTUyLDYgKzE2MjAsOSBAQCBjbGVhbnVwOgogCQlhbmNlc3RvciA9IE5VTEw7CiAJfQogCisJaWYg KHRhYmxlX3Jld3JpdGUpCisJCVJlbGF0aW9uQ2xvc2UocmVsYXRpb24pOworCiAJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZCk7CiAJTWVtb3J5Q29udGV4dFJlc2V0KGRhdGEtPmNvbnRleHQpOwog fQpAQCAtMTY2NSw2ICsxNzM2LDE0MCBAQCBwZ291dHB1dF9tZXNzYWdlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCU91dHB1dFBsdWdpbldyaXRl KGN0eCwgdHJ1ZSk7CiB9CiAKKy8qIENoZWNrIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgcHVibGlz aGVkLiAqLworc3RhdGljIGJvb2wKK2lzX29iamVjdF9wdWJsaXNoZWQoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBPaWQgb2JqaWQpCit7CisJUmVsYXRpb24JcmVsYXRpb24gPSBOVUxMOwor CVJlbGF0aW9uU3luY0VudHJ5ICpyZWxlbnRyeTsKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdP dXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJLyogRmlyc3QgY2hl Y2sgdGhlIERETCBjb21tYW5kIGZpbHRlci4gKi8KKwlzd2l0Y2ggKGdldF9yZWxfcmVsa2luZChv YmppZCkpCisJeworCQljYXNlIFJFTEtJTkRfUkVMQVRJT046CisJCQlyZWxhdGlvbiA9IFJlbGF0 aW9uSWRHZXRSZWxhdGlvbihvYmppZCk7CisJCQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRy eShkYXRhLCByZWxhdGlvbik7CisJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKworCQkJLyoK KwkJCSAqIFNraXAgc2VuZGluZyB0aGlzIGRkbCBpZiB3ZSBkb24ndCBwdWJsaXNoIGRkbCBtZXNz YWdlIG9yIHRoZSBkZGwKKwkJCSAqIG5lZWQgdG8gYmUgcHVibGlzaGVkIHZpYSBpdHMgcm9vdCBy ZWxhdGlvbi4KKwkJCSAqLworCQkJaWYgKCFyZWxlbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFi bGUgfHwKKwkJCQlyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCAhPSBvYmppZCkKKwkJCQlyZXR1 cm4gZmFsc2U7CisKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJLyogdW5zdXBwb3J0ZWQgb2Jq ZWN0cyAqLworCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgor ICogU2VuZCB0aGUgZGVjb2RlZCBEREwgb3ZlciB3aXJlLgorICovCitzdGF0aWMgdm9pZAorcGdv dXRwdXRfZGRsKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAorCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkgY29uc3QgY2hhciAqcHJlZml4 LCBPaWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCSBTaXplIHN6LCBj b25zdCBjaGFyICptZXNzYWdlKQoreworCVBHT3V0cHV0VHhuRGF0YSAqdHhuZGF0YSA9IChQR091 dHB1dFR4bkRhdGEgKikgdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwkvKgorCSAqIENo ZWNrIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgcHVibGlzaGVkLiBOb3RlIHRoYXQgZm9yIGRyb3Bw ZWQgb2JqZWN0cywKKwkgKiB3ZSBjYW5ub3QgZ2V0IHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiBm cm9tIHRoZSBjYXRhbG9nLCBzbyB3ZSBza2lwIHRoZQorCSAqIGNoZWNrIGZvciB0aGVtLgorCSAq LworCWlmIChjbWR0eXBlICE9IERDVF9UYWJsZURyb3BFbmQgJiYgIWlzX29iamVjdF9wdWJsaXNo ZWQoY3R4LCByZWxpZCkpCisJCXJldHVybjsKKworCXN3aXRjaCAoY21kdHlwZSkKKwl7CisJCWNh c2UgRENUX1RhYmxlRHJvcFN0YXJ0OgorCQkJeworCQkJCU1lbW9yeUNvbnRleHQJb2xkOworCisJ CQkJaW5pdF90eG5fZGF0YShjdHgsIHR4bik7CisKKwkJCQl0eG5kYXRhID0gKFBHT3V0cHV0VHhu RGF0YSAqKSB0eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKworCQkJCS8qCisJCQkJICogT24g RFJPUCBzdGFydCwgYWRkIHRoZSByZWxpZCB0byBhIGRlbGV0ZWRfcmVsaWQgbGlzdCBpZiB0aGUK KwkJCQkgKiByZWxpZCBpcyBwYXJ0IG9mIGEgcHVibGljYXRpb24gdGhhdCBzdXBwb3J0cyBkZGwK KwkJCQkgKiBwdWJsaWNhdGlvbi4gV2UgbmVlZCB0aGlzIGJlY2F1c2Ugb24gRFJPUCBlbmQsIHRo ZSByZWxpZAorCQkJCSAqIHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkLiBMYXRlciBvbiBEcm9wIGVu ZCwgdmVyaWZ5IHRoYXQgdGhlCisJCQkJICogZHJvcCBpcyBmb3IgYSByZWxpZCB0aGF0IGlzIG9u IHRoZSBkZWxldGVkX3JpZCBsaXN0LCBhbmQKKwkJCQkgKiBvbmx5IHRoZW4gc2VuZCB0aGUgZGRs IG1lc3NhZ2UuCisJCQkJICovCisJCQkJb2xkID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN0eC0+ Y29udGV4dCk7CisJCQkJdHhuZGF0YS0+ZGVsZXRlZF9yZWxpZHMgPSBsYXBwZW5kX29pZCh0eG5k YXRhLT5kZWxldGVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkgIHJlbGlkKTsKKwkJCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkKTsKKwkJCX0KKwkJCXJldHVybjsKKworCQljYXNlIERDVF9UYWJs ZURyb3BFbmQ6CisJCQlpZiAoIWxpc3RfbWVtYmVyX29pZCh0eG5kYXRhLT5kZWxldGVkX3JlbGlk cywgcmVsaWQpKQorCQkJCXJldHVybjsKKworCQkJdHhuZGF0YS0+ZGVsZXRlZF9yZWxpZHMgPSBs aXN0X2RlbGV0ZV9vaWQodHhuZGF0YS0+ZGVsZXRlZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJICBy ZWxpZCk7CisJCQlicmVhazsKKworCQljYXNlIERDVF9UYWJsZUFsdGVyOgorCisJCQkvKgorCQkJ ICogRm9yIHRhYmxlIHJld3JpdGUgZGRsLCB3ZSBmaXJzdCBzZW5kIHRoZSBvcmlnaW5hbCBkZGwg bWVzc2FnZQorCQkJICogdG8gc3Vic2NyaWJlciwgdGhlbiBjb252ZXJ0IHRoZSB1cGNvbWluZyBy ZXdyaXRlIElOU0VSVCB0bworCQkJICogVVBEQVRFIGFuZCBzZW5kIHRoZW0gdG8gc3Vic2NyaWJl ciBzbyB0aGF0IHRoZSBkYXRhIGJldHdlZW4KKwkJCSAqIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJl ciBjYW4gYWx3YXlzIGJlIGNvbnNpc3RlbnQuCisJCQkgKgorCQkJICogV2UgZG8gdGhpcyB3YXkg YmVjYXVzZSBvZiB0d28gcmVhc29uOgorCQkJICoKKwkJCSAqICgxKSBUaGUgZGF0YSBiZWZvcmUg dGhlIHJld3JpdGUgZGRsIGNvdWxkIGFscmVhZHkgYmUgZGlmZmVyZW50CisJCQkgKiBhbW9uZyBw dWJsaXNoZXIgYW5kIHN1YnNjcmliZXIuIFRvIG1ha2Ugc3VyZSB0aGUgZXh0cmEgZGF0YSBpbgor CQkJICogc3Vic2NyaWJlciB3aGljaCBkb2Vzbid0IGV4aXN0IGluIHB1Ymxpc2hlciBhbHNvIGdl dCByZXdyaXR0ZW4sCisJCQkgKiB3ZSBuZWVkIHRvIGxldCB0aGUgc3Vic2NyaWJlciBleGVjdXRl IHRoZSBvcmlnaW5hbCByZXdyaXRlIGRkbAorCQkJICogdG8gcmV3cml0ZSBhbGwgdGhlIGRhdGEg YXQgZmlyc3QuCisJCQkgKgorCQkJICogKDIpIHRoZSBkYXRhIGFmdGVyIGV4ZWN1dGluZyByZXdy aXRlIGRkbCBjb3VsZCBiZSBkaWZmZXJlbnQKKwkJCSAqIGFtb25nIHB1Ymxpc2hlciBhbmQgc3Vi c2NyaWJlcihkdWUgdG8gZGlmZmVyZW50CisJCQkgKiBmdW5jdGlvbnMvb3BlcmF0b3JzIHVzZWQg ZHVyaW5nIHJld3JpdGUpLCBzbyB3ZSBuZWVkIHRvCisJCQkgKiByZXBsaWNhdGUgdGhlIHJld3Jp dGUgVVBEQVRFcyB0byBrZWVwIHRoZSBkYXRhIGNvbnNpc3RlbnQuCisJCQkgKgorCQkJICogVE8g SU1QUk9WRTogV2UgY291bGQgaW1wcm92ZSB0aGlzIGJ5IGxldHRpbmcgdGhlIHN1YnNjcmliZXIK KwkJCSAqIG9ubHkgcmV3cml0ZSB0aGUgZXh0cmEgZGF0YSBpbnN0ZWFkIG9mIGRvaW5nIGZ1bGx5 IHJld3JpdGUgYW5kCisJCQkgKiB1c2UgdGhlIHVwY29taW5nIHJld3JpdGUgVVBEQVRFcyB0byBy ZXdyaXRlIHRoZSByZXN0IGRhdGEuCisJCQkgKiBCZXNpZGVzLCB3ZSBtYXkgbm90IG5lZWQgdG8g c2VuZCByZXdyaXRlIGNoYW5nZXMgZm9yIGFsbCB0eXBlCisJCQkgKiBvZiByZXdyaXRlIGRkbCwg Zm9yIGV4YW1wbGUsIGl0IHNlZW1zIGZpbmUgdG8gc2tpcCBzZW5kaW5nCisJCQkgKiByZXdyaXRl IGNoYW5nZXMgZm9yIEFMVEVSIFRBQkxFIFNFVCBMT0dHRUQgYXMgdGhlIGRhdGEgaW4gdGhlCisJ CQkgKiB0YWJsZSBkb2Vzbid0IGFjdHVhbGx5IGJlIGNoYW5nZWQuCisJCQkgKi8KKwkJCWJyZWFr OworCisJCWNhc2UgRENUX1NpbXBsZUNtZDoKKwkJCS8qIGRvIG5vdGhpbmcgKi8KKwkJCWJyZWFr OworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgdHlwZSAlZCIsIGNt ZHR5cGUpOworCQkJYnJlYWs7CisJfQorCisJLyogU2VuZCBCRUdJTiBpZiB3ZSBoYXZlbid0IHll dCAqLworCWlmICh0eG5kYXRhICYmICF0eG5kYXRhLT5zZW50X2JlZ2luX3R4bikKKwkJcGdvdXRw dXRfc2VuZF9iZWdpbihjdHgsIHR4bik7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4 LCB0cnVlKTsKKwlsb2dpY2FscmVwX3dyaXRlX2RkbChjdHgtPm91dCwgbWVzc2FnZV9sc24sIHBy ZWZpeCwgc3osIG1lc3NhZ2UpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisK IC8qCiAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZGF0YSBpcyBhc3NvY2lhdGVkIHdpdGggYW4gb3Jp Z2luIGFuZCB0aGUgdXNlciBoYXMKICAqIHJlcXVlc3RlZCB0aGUgY2hhbmdlcyB0aGF0IGRvbid0 IGhhdmUgYW4gb3JpZ2luLCBmYWxzZSBvdGhlcndpc2UuCkBAIC0xODEzLDYgKzIwMTgsNyBAQCBw Z291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwK IAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNo ZSh0b3B0eG4tPnhpZCwgZmFsc2UpOworCWNsZWFuX3R4bl9kYXRhKHR4bik7CiB9CiAKIC8qCkBA IC0xODM4LDYgKzIwNDQsNyBAQCBwZ291dHB1dF9zdHJlYW1fY29tbWl0KHN0cnVjdCBMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAog CWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodHhuLT54aWQsIHRydWUpOworCWNsZWFuX3R4bl9kYXRh KHR4bik7CiB9CiAKIC8qCkBAIC0xODU2LDYgKzIwNjMsOCBAQCBwZ291dHB1dF9zdHJlYW1fcHJl cGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCU91dHB1dFBsdWdpblByZXBh cmVXcml0ZShjdHgsIHRydWUpOwogCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX3ByZXBhcmUoY3R4 LT5vdXQsIHR4biwgcHJlcGFyZV9sc24pOwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7 CisKKwljbGVhbl90eG5fZGF0YSh0eG4pOwogfQogCiAvKgpAQCAtMTk0MSw2ICsyMTUwLDI3IEBA IHNldF9zY2hlbWFfc2VudF9pbl9zdHJlYW1lZF90eG4oUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5 LCBUcmFuc2FjdGlvbklkIHhpZCkKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0K IAorLyogUmVsb2FkIHB1YmxpY2F0aW9ucyBpZiBuZWVkZWQuICovCitzdGF0aWMgdm9pZAorcmVs b2FkX3B1YmxpY2F0aW9ucyhQR091dHB1dERhdGEgKmRhdGEpCit7CisJTWVtb3J5Q29udGV4dCBv bGRjdHg7CisKKwlpZiAoIXB1YmxpY2F0aW9uc192YWxpZCkKKwl7CisJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQpOworCQlpZiAoZGF0YS0+cHVibGlj YXRpb25zKQorCQl7CisJCQlsaXN0X2ZyZWVfZGVlcChkYXRhLT5wdWJsaWNhdGlvbnMpOworCQkJ ZGF0YS0+cHVibGljYXRpb25zID0gTklMOworCQl9CisJCWRhdGEtPnB1YmxpY2F0aW9ucyA9IExv YWRQdWJsaWNhdGlvbnMoZGF0YS0+cHVibGljYXRpb25fbmFtZXMpOworCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3R4KTsKKwkJcHVibGljYXRpb25zX3ZhbGlkID0gdHJ1ZTsKKwl9Cit9CisK KwogLyoKICAqIEZpbmQgb3IgY3JlYXRlIGVudHJ5IGluIHRoZSByZWxhdGlvbiBzY2hlbWEgY2Fj aGUuCiAgKgpAQCAtMTk1NSw3ICsyMTg1LDYgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiB7CiAJUmVsYXRpb25TeW5jRW50cnkgKmVu dHJ5OwogCWJvb2wJCWZvdW5kOwotCU1lbW9yeUNvbnRleHQgb2xkY3R4OwogCU9pZAkJCXJlbGlk ID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CiAKIAlBc3NlcnQoUmVsYXRpb25TeW5jQ2Fj aGUgIT0gTlVMTCk7CkBAIC0xOTczLDcgKzIyMDIsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdP dXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnNjaGVtYV9zZW50 ID0gZmFsc2U7CiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklMOwogCQllbnRyeS0+cHViYWN0 aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQotCQkJZW50cnkt PnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBm YWxzZTsKKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVudHJ5LT5wdWJhY3Rpb25z LnB1YnRydW5jYXRlID0KKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSA9IGZhbHNl OwogCQllbnRyeS0+bmV3X3Nsb3QgPSBOVUxMOwogCQllbnRyeS0+b2xkX3Nsb3QgPSBOVUxMOwog CQltZW1zZXQoZW50cnktPmV4cHJzdGF0ZSwgMCwgc2l6ZW9mKGVudHJ5LT5leHByc3RhdGUpKTsK QEAgLTIwMDIsMTkgKzIyMzIsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpk YXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2lu ZChyZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7CiAKLQkJLyogUmVs b2FkIHB1YmxpY2F0aW9ucyBpZiBuZWVkZWQgYmVmb3JlIHVzZS4gKi8KLQkJaWYgKCFwdWJsaWNh dGlvbnNfdmFsaWQpCi0JCXsKLQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNo ZU1lbW9yeUNvbnRleHQpOwotCQkJaWYgKGRhdGEtPnB1YmxpY2F0aW9ucykKLQkJCXsKLQkJCQls aXN0X2ZyZWVfZGVlcChkYXRhLT5wdWJsaWNhdGlvbnMpOwotCQkJCWRhdGEtPnB1YmxpY2F0aW9u cyA9IE5JTDsKLQkJCX0KLQkJCWRhdGEtPnB1YmxpY2F0aW9ucyA9IExvYWRQdWJsaWNhdGlvbnMo ZGF0YS0+cHVibGljYXRpb25fbmFtZXMpOwotCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7Ci0JCQlwdWJsaWNhdGlvbnNfdmFsaWQgPSB0cnVlOwotCQl9CisJCXJlbG9hZF9wdWJsaWNh dGlvbnMoZGF0YSk7CiAKIAkJLyoKIAkJICogUmVzZXQgc2NoZW1hX3NlbnQgc3RhdHVzIGFzIHRo ZSByZWxhdGlvbiBkZWZpbml0aW9uIG1heSBoYXZlCkBAIC0yMDMxLDYgKzIyNDksNyBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJ ZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZh bHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAogCQkvKgog CQkgKiBUdXBsZSBzbG90cyBjbGVhbnVwcy4gKFdpbGwgYmUgcmVidWlsdCBsYXRlciBpZiBuZWVk ZWQpLgpAQCAtMjE0NCw2ICsyMzYzLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0 YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHVidXBk YXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ1cGRhdGU7CiAJCQkJZW50cnktPnB1YmFjdGlvbnMu cHViZGVsZXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGU7CiAJCQkJZW50cnktPnB1YmFj dGlvbnMucHVidHJ1bmNhdGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlOworCQkJCWVu dHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGRsX3Rh YmxlOwogCiAJCQkJLyoKIAkJCQkgKiBXZSB3YW50IHRvIHB1Ymxpc2ggdGhlIGNoYW5nZXMgYXMg dGhlIHRvcC1tb3N0IGFuY2VzdG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL2NtZHRh Zy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYwppbmRleCA0YmQ3MTNhMGI0Li5jZTA5YzVm MjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2NtZHRhZy5jCisrKyBiL3NyYy9iYWNr ZW5kL3Rjb3AvY21kdGFnLmMKQEAgLTI2LDEwICsyNiwxMSBAQCB0eXBlZGVmIHN0cnVjdCBDb21t YW5kVGFnQmVoYXZpb3IKIAljb25zdCBib29sCXRhYmxlX3Jld3JpdGVfb2s7CiAJY29uc3QgYm9v bAlkaXNwbGF5X3Jvd2NvdW50OwkvKiBzaG91bGQgdGhlIG51bWJlciBvZiByb3dzIGFmZmVjdGVk IGJlCiAJCQkJCQkJCQkgKiBzaG93biBpbiB0aGUgY29tbWFuZCBjb21wbGV0aW9uIHN0cmluZyAq LworCWNvbnN0IGJvb2wJZGRsX3JlcGxpY2F0aW9uX29rOwogfSBDb21tYW5kVGFnQmVoYXZpb3I7 CiAKLSNkZWZpbmUgUEdfQ01EVEFHKHRhZywgbmFtZSwgZXZ0cmdvaywgcndyb2ssIHJvd2NudCkg XAotCXsgbmFtZSwgKHVpbnQ4KSAoc2l6ZW9mKG5hbWUpIC0gMSksIGV2dHJnb2ssIHJ3cm9rLCBy b3djbnQgfSwKKyNkZWZpbmUgUEdfQ01EVEFHKHRhZywgbmFtZSwgZXZ0cmdvaywgcndyb2ssIHJv d2NudCwgZGRscmVwbG9rKSBcCisJeyBuYW1lLCAodWludDgpIChzaXplb2YobmFtZSkgLSAxKSwg ZXZ0cmdvaywgcndyb2ssIHJvd2NudCwgZGRscmVwbG9rIH0sCiAKIHN0YXRpYyBjb25zdCBDb21t YW5kVGFnQmVoYXZpb3IgdGFnX2JlaGF2aW9yW0NPTU1BTkRfVEFHX05FWFRUQUddID0gewogI2lu Y2x1ZGUgInRjb3AvY21kdGFnbGlzdC5oIgpAQCAtNTcsNiArNTgsMjEgQEAgR2V0Q29tbWFuZFRh Z05hbWVBbmRMZW4oQ29tbWFuZFRhZyBjb21tYW5kVGFnLCBTaXplICpsZW4pCiAJcmV0dXJuIHRh Z19iZWhhdmlvcltjb21tYW5kVGFnXS5uYW1lOwogfQogCitDb21tYW5kVGFnICoKK0dldENvbW1h bmRUYWdzRm9yRERMUmVwbChpbnQgKm5jb21tYW5kcykKK3sKKwlDb21tYW5kVGFnICpkZGxyZXBs X2NvbW1hbmRzID0gcGFsbG9jMChDT01NQU5EX1RBR19ORVhUVEFHICogc2l6ZW9mKENvbW1hbmRU YWcpKTsKKwkqbmNvbW1hbmRzID0gMDsKKworCWZvcihpbnQgaSA9IDA7IGkgPCBDT01NQU5EX1RB R19ORVhUVEFHOyBpKyspCisJeworCQlpZiAodGFnX2JlaGF2aW9yW2ldLmRkbF9yZXBsaWNhdGlv bl9vaykKKwkJCWRkbHJlcGxfY29tbWFuZHNbKCpuY29tbWFuZHMpKytdID0gKENvbW1hbmRUYWcp IGk7CisJfQorCisJcmV0dXJuIGRkbHJlcGxfY29tbWFuZHM7Cit9CisKIGJvb2wKIGNvbW1hbmRf dGFnX2Rpc3BsYXlfcm93Y291bnQoQ29tbWFuZFRhZyBjb21tYW5kVGFnKQogewpAQCAtNzUsNiAr OTEsMTIgQEAgY29tbWFuZF90YWdfdGFibGVfcmV3cml0ZV9vayhDb21tYW5kVGFnIGNvbW1hbmRU YWcpCiAJcmV0dXJuIHRhZ19iZWhhdmlvcltjb21tYW5kVGFnXS50YWJsZV9yZXdyaXRlX29rOwog fQogCitib29sCitjb21tYW5kX3RhZ19kZGxfcmVwbGljYXRpb25fb2soQ29tbWFuZFRhZyBjb21t YW5kVGFnKQoreworCXJldHVybiB0YWdfYmVoYXZpb3JbY29tbWFuZFRhZ10uZGRsX3JlcGxpY2F0 aW9uX29rOworfQorCiAvKgogICogU2VhcmNoIENvbW1hbmRUYWcgYnkgbmFtZQogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGls aXR5LmMKaW5kZXggNDUwMWNjMzM3Yy4uNTc4YTIyOWZmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTIy NjQsNiArMjI2NCw4IEBAIHN0cmluZ2lmeV9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSwgYm9v bCBpc2dyYW50KQogCQkJcmV0dXJuICJQT0xJQ1kiOwogCQljYXNlIE9CSkVDVF9QUk9DRURVUkU6 CiAJCQlyZXR1cm4gIlBST0NFRFVSRSI7CisJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgorCQkJ cmV0dXJuICJQVUJMSUNBVElPTiI7CiAJCWNhc2UgT0JKRUNUX1JPTEU6CiAJCQlyZXR1cm4gIlJP TEUiOwogCQljYXNlIE9CSkVDVF9ST1VUSU5FOgpAQCAtMjI3Niw2ICsyMjc4LDggQEAgc3RyaW5n aWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlLCBib29sIGlzZ3JhbnQpCiAJCQlyZXR1cm4g IlNFUVVFTkNFIjsKIAkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJCXJldHVybiAiU1RB VElTVElDUyI7CisJCWNhc2UgT0JKRUNUX1NVQlNDUklQVElPTjoKKwkJCXJldHVybiAiU1VCU0NS SVBUSU9OIjsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCQlyZXR1cm4gIlRBQkxFIjsKIAkJY2Fz ZSBPQkpFQ1RfVEFCTEVTUEFDRToKQEAgLTIzMDQsMTAgKzIzMDgsOCBAQCBzdHJpbmdpZnlfb2Jq dHlwZShPYmplY3RUeXBlIG9ianR5cGUsIGJvb2wgaXNncmFudCkKIAkJY2FzZSBPQkpFQ1RfREVG QUNMOgogCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQljYXNlIE9CSkVDVF9QQVJBTUVU RVJfQUNMOgotCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElD QVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6Ci0JCWNhc2Ug T0JKRUNUX1NVQlNDUklQVElPTjoKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJY2Fz ZSBPQkpFQ1RfVFJBTlNGT1JNOgogCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9iamVjdCB0 eXBlICVkIiwgb2JqdHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA0MDE0 MGRlOTU4Li45MTk4ZGEyZWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3 MjAsNiArNTcyMCw3IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVs YXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5w dWJ1cGRhdGUgfD0gcHViZm9ybS0+cHVidXBkYXRlOwogCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1 YmRlbGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHVi dHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJCXB1YmRlc2MtPnB1YmFjdGlvbnMu cHViZGRsX3RhYmxlIHw9IHB1YmZvcm0tPnB1YmRkbF90YWJsZTsKIAogCQkvKgogCQkgKiBDaGVj ayBpZiBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBmaWx0ZXIgZXhwcmVzc2lvbiBhcmUg cGFydApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKaW5kZXggN2E1MDRkZmUyNS4uM2MzYTM0MjY3ZiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdF9kLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdF9tZXRhZGF0YV9kLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wcm9jX2QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3RyaWdnZXJfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZV9kLmgiCkBAIC00 MDY0LDYgKzQwNjUsNyBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1Q dWJsaWNhdGlvbnMpCiAJaW50CQkJaV9wdWJ1cGRhdGU7CiAJaW50CQkJaV9wdWJkZWxldGU7CiAJ aW50CQkJaV9wdWJ0cnVuY2F0ZTsKKwlpbnQJCQlpX3B1YmRkbF90YWJsZTsKIAlpbnQJCQlpX3B1 YnZpYXJvb3Q7CiAJaW50CQkJaSwKIAkJCQludHVwczsKQEAgLTQwNzksMjMgKzQwODEsMjkgQEAg Z2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCXJl c2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCiAJLyogR2V0IHRoZSBwdWJsaWNhdGlvbnMuICovCi0J aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTMwMDAwKQorCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJT RUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgorCQkJCQkJCSAicC5wdWJvd25l ciwgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwg cC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIHAucHViZGRsX3RhYmxlLCBwLnB1YnZpYXJvb3Qg IgorCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CisJZWxzZSBpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxMzAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJ CQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAu cHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1 cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBwLnB1YnZpYXJvb3QgIgorCQkJCQkJ CSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUs IHAucHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBwLnB1YnZpYXJvb3QgIgog CQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZSBpZiAoZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxMTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJ CSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVi b3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRh dGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJ CQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVs ZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgQVMgcHVi dmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNlCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAu b2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHVi YWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBmYWxzZSBB UyBwdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRh YmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMgcHVi dHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIK IAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1 ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpAQCAtNDExMSw2ICs0MTE5 LDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25z KQogCWlfcHVidXBkYXRlID0gUFFmbnVtYmVyKHJlcywgInB1YnVwZGF0ZSIpOwogCWlfcHViZGVs ZXRlID0gUFFmbnVtYmVyKHJlcywgInB1YmRlbGV0ZSIpOwogCWlfcHVidHJ1bmNhdGUgPSBQUWZu dW1iZXIocmVzLCAicHVidHJ1bmNhdGUiKTsKKwlpX3B1YmRkbF90YWJsZSA9IFBRZm51bWJlcihy ZXMsICJwdWJkZGxfdGFibGUiKTsKIAlpX3B1YnZpYXJvb3QgPSBQUWZudW1iZXIocmVzLCAicHVi dmlhcm9vdCIpOwogCiAJcHViaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihQdWJsaWNh dGlvbkluZm8pKTsKQEAgLTQxMzQsNiArNDE0Myw4IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZl ICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMs IGksIGlfcHViZGVsZXRlKSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJ0cnVuY2F0ZSA9 CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnRydW5jYXRlKSwgInQiKSA9PSAw KTsKKwkJcHViaW5mb1tpXS5wdWJkZGxfdGFibGUgPQorCQkJKHN0cmNtcChQUWdldHZhbHVlKHJl cywgaSwgaV9wdWJkZGxfdGFibGUpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YnZpYXJv b3QgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwgInQiKSA9 PSAwKTsKIApAQCAtNDIxMyw3ICs0MjI0LDEwIEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpm b3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8pCiAJCWZpcnN0ID0gZmFsc2U7CiAJ fQogCi0JYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHF1ZXJ5LCAnXCcnKTsKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiciKTsKKworCWlmIChwdWJpbmZvLT5wdWJkZGxfdGFibGUpCisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBkZGwgPSAndGFibGUnIik7CiAKIAlpZiAocHVi aW5mby0+cHVidmlhcm9vdCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSIpOwpAQCAtNzk3Nyw2ICs3OTkxLDUwIEBAIGdl dFRyaWdnZXJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJs ZXMpCiAJZGVzdHJveVBRRXhwQnVmZmVyKHRibG9pZHMpOwogfQogCisvKgorICogZ2V0UHVibGlj YXRpb25FdmVudFRyaWdnZXJzCisgKgkgIGdldCB0aGUgcHVibGljYXRpb24gZXZlbnQgdHJpZ2dl cnMgdGhhdCBzaG91bGQgYmUgc2tpcHBlZAorICovCitzdGF0aWMgdm9pZAorZ2V0UHVibGljYXRp b25FdmVudFRyaWdnZXJzKEFyY2hpdmUgKmZvdXQsIFNpbXBsZVN0cmluZ0xpc3QgKnNraXBUcmln Z2VycykKK3sKKwlQUUV4cEJ1ZmZlciBxdWVyeTsKKwlQR3Jlc3VsdCAgICpyZXM7CisJaW50CQkJ aTsKKwlpbnQJCQludHVwczsKKworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJICJTRUxFQ1Qgb2lkIEZST00gcGdfcHVi bGljYXRpb24gIgorCQkJCQkJICJXSEVSRSBwdWJkZGxfdGFibGUiKTsKKworCXJlcyA9IEV4ZWN1 dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKwludHVwcyA9 IFBRbnR1cGxlcyhyZXMpOworCisJZm9yIChpID0gMDsgaSA8IG50dXBzOyBpKyspCisJeworCQlj aGFyICp0cmlnbmFtZTsKKwkJT2lkIHB1YmlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCAwLCAw KSk7CisKKwkJdHJpZ25hbWUgPSBwc3ByaW50ZihQVUJfRVZFTlRfVFJJR19QUkVGSVgsIFBVQl9U UklHX0VWRU5UMSwgcHViaWQpOworCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKHNraXBUcmln Z2VycywgdHJpZ25hbWUpOworCisJCXRyaWduYW1lID0gcHNwcmludGYoUFVCX0VWRU5UX1RSSUdf UFJFRklYLCBQVUJfVFJJR19FVkVOVDIsIHB1YmlkKTsKKwkJc2ltcGxlX3N0cmluZ19saXN0X2Fw cGVuZChza2lwVHJpZ2dlcnMsIHRyaWduYW1lKTsKKworCQl0cmlnbmFtZSA9IHBzcHJpbnRmKFBV Ql9FVkVOVF9UUklHX1BSRUZJWCwgUFVCX1RSSUdfRVZFTlQzLCBwdWJpZCk7CisJCXNpbXBsZV9z dHJpbmdfbGlzdF9hcHBlbmQoc2tpcFRyaWdnZXJzLCB0cmlnbmFtZSk7CisKKwkJdHJpZ25hbWUg PSBwc3ByaW50ZihQVUJfRVZFTlRfVFJJR19QUkVGSVgsIFBVQl9UUklHX0VWRU5UNCwgcHViaWQp OworCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKHNraXBUcmlnZ2VycywgdHJpZ25hbWUpOwor CX0KKworCVBRY2xlYXIocmVzKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7Cit9CisK IC8qCiAgKiBnZXRFdmVudFRyaWdnZXJzCiAgKgkgIGdldCBpbmZvcm1hdGlvbiBhYm91dCBldmVu dCB0cmlnZ2VycwpAQCAtNzk5Nyw2ICs4MDU1LDcgQEAgZ2V0RXZlbnRUcmlnZ2VycyhBcmNoaXZl ICpmb3V0LCBpbnQgKm51bUV2ZW50VHJpZ2dlcnMpCiAJCQkJaV9ldnRmbmFtZSwKIAkJCQlpX2V2 dGVuYWJsZWQ7CiAJaW50CQkJbnR1cHM7CisJU2ltcGxlU3RyaW5nTGlzdCBza2lwVHJpZ2dlcnMg PSB7TlVMTCwgTlVMTH07CiAKIAkvKiBCZWZvcmUgOS4zLCB0aGVyZSBhcmUgbm8gZXZlbnQgdHJp Z2dlcnMgKi8KIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA8IDkwMzAwKQpAQCAtODAwNSw2ICs4 MDY0LDggQEAgZ2V0RXZlbnRUcmlnZ2VycyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV2ZW50VHJp Z2dlcnMpCiAJCXJldHVybiBOVUxMOwogCX0KIAorCWdldFB1YmxpY2F0aW9uRXZlbnRUcmlnZ2Vy cyhmb3V0LCAmc2tpcFRyaWdnZXJzKTsKKwogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsK IAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtODA0OSw5ICs4MTEwLDE0IEBAIGdl dEV2ZW50VHJpZ2dlcnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FdmVudFRyaWdnZXJzKQogCQll dnRpbmZvW2ldLmV2dGVuYWJsZWQgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V2dGVuYWJsZWQp KTsKIAogCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KLQkJc2VsZWN0 RHVtcGFibGVPYmplY3QoJihldnRpbmZvW2ldLmRvYmopLCBmb3V0KTsKKwkJaWYgKHNpbXBsZV9z dHJpbmdfbGlzdF9tZW1iZXIoJnNraXBUcmlnZ2VycywgZXZ0aW5mb1tpXS5ldnRuYW1lKSkKKwkJ CWV2dGluZm9baV0uZG9iai5kdW1wPSBEVU1QX0NPTVBPTkVOVF9OT05FOworCQllbHNlCisJCQlz ZWxlY3REdW1wYWJsZU9iamVjdCgmKGV2dGluZm9baV0uZG9iaiksIGZvdXQpOwogCX0KIAorCXNp bXBsZV9zdHJpbmdfbGlzdF9kZXN0cm95KCZza2lwVHJpZ2dlcnMpOworCiAJUFFjbGVhcihyZXMp OwogCiAJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IGVkNmNlNDFh ZDcuLmJkNWY4ZmI2NjkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjIwLDYgKzYyMCw3IEBAIHR5cGVkZWYg c3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHViZGVs ZXRlOwogCWJvb2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1YmRkbF90YWJsZTsKIAlib29sCQlw dWJ2aWFyb290OwogfSBQdWJsaWNhdGlvbkluZm87CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwK aW5kZXggYjVjOTc2OTRlMy4uM2JiM2E0YWU5YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwK QEAgLTI4NzYsNyArMjg3Niw3IEBAIG15ICV0ZXN0cyA9ICgKIAkJY3JlYXRlX29yZGVyID0+IDUw LAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIyCiAJCQkJCQkgRk9S IEFMTCBUQUJMRVMKLQkJCQkJCSBXSVRIIChwdWJsaXNoID0gXCdcJyk7JywKKwkJCQkJCSBXSVRI IChwdWJsaXNoID0gXCdcJywgZGRsID0gXCdcJyk7JywKIAkJcmVnZXhwID0+IHFyL14KIAkJCVxR Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIEFMTCBUQUJMRVMgV0lUSCAocHVibGlzaCA9ICcn KTtcRQogCQkJL3htLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMg Yi9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYwppbmRleCA2YjhjMTdiYjRjLi5kYWYxNzMw MjUyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYworKysgYi9zcmMv YmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv bW1hbmRzL2RiY29tbWFuZHNfeGxvZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5k ZXggODNhMzdlZTYwMS4uZTk3N2U2ZjQ2NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTYxODMsNyArNjE4Myw3IEBA IGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlQUUV4cEJ1ZmZlckRhdGEg YnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0 OwotCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKwlzdGF0aWMgY29u c3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCWlmIChwc2V0 LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTYyMDAsMTMgKzYyMDAsMTggQEAgbGlzdFB1Ymxp Y2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCiAJ CQkJCSAgIlNFTEVDVCBwdWJuYW1lIEFTIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9n LnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHB1YmFs bHRhYmxlcyBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAgcHViaW5zZXJ0IEFTIFwiJXNcIixcbiIK LQkJCQkJICAiICBwdWJ1cGRhdGUgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHB1YmRlbGV0ZSBB UyBcIiVzXCIiLAorCQkJCQkgICIgIHB1YmFsbHRhYmxlcyBBUyBcIiVzXCIiLAogCQkJCQkgIGdl dHRleHRfbm9vcCgiTmFtZSIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSwKLQkJCQkJ ICBnZXR0ZXh0X25vb3AoIkFsbCB0YWJsZXMiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkFsbCB0 YWJsZXMiKSk7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCQkJICAiLFxuICBwdWJkZGxfdGFibGUgQVMgXCIlc1wiIiwKKwkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs CisJCQkJCSAgIixcbiAgcHViaW5zZXJ0IEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwdWJ1cGRh dGUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHB1YmRlbGV0ZSBBUyBcIiVzXCIiLAogCQkJCQkg IGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiVXBkYXRlcyIp LAogCQkJCQkgIGdldHRleHRfbm9vcCgiRGVsZXRlcyIpKTsKQEAgLTYyMTgsNyArNjIyMyw2IEBA IGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgcHVidmlhcm9vdCBBUyBcIiVzXCIiLAogCQkJCQkJICBn ZXR0ZXh0X25vb3AoIlZpYSByb290IikpOwotCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwK IAkJCQkJCSAiXG5GUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25cbiIpOwogCkBAIC02MzA4 LDYgKzYzMTIsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQog CVBHcmVzdWx0ICAgKnJlczsKIAlib29sCQloYXNfcHVidHJ1bmNhdGU7CiAJYm9vbAkJaGFzX3B1 YnZpYXJvb3Q7CisJYm9vbAkJaGFzX3B1YmRkbDsKIAogCVBRRXhwQnVmZmVyRGF0YSB0aXRsZTsK IAlwcmludFRhYmxlQ29udGVudCBjb250OwpAQCAtNjMyNCwxMyArNjMyOSwxOSBAQCBkZXNjcmli ZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCiAJaGFzX3B1YnRydW5jYXRlID0g KHBzZXQuc3ZlcnNpb24gPj0gMTEwMDAwKTsKIAloYXNfcHVidmlhcm9vdCA9IChwc2V0LnN2ZXJz aW9uID49IDEzMDAwMCk7CisJaGFzX3B1YmRkbCA9ICAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDAp OwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCiAJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwK IAkJCQkJICAiU0VMRUNUIG9pZCwgcHVibmFtZSxcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9nLnBn X2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgb3duZXIsXG4iCi0JCQkJCSAgIiAgcHViYWxsdGFi bGVzLCBwdWJpbnNlcnQsIHB1YnVwZGF0ZSwgcHViZGVsZXRlIik7CisJCQkJCSAgIiAgcHViYWxs dGFibGVzIik7CisJaWYgKGhhc19wdWJkZGwpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs CisJCQkJCQkJICIsIHB1YmRkbF90YWJsZSIpOworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs CisJCQkJCQkgIiwgIHB1Ymluc2VydCwgcHVidXBkYXRlLCBwdWJkZWxldGUiKTsKIAlpZiAoaGFz X3B1YnRydW5jYXRlKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAogCQkJCQkJCSAiLCBw dWJ0cnVuY2F0ZSIpOwpAQCAtNjM4OCw2ICs2Mzk5LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMo Y29uc3QgY2hhciAqcGF0dGVybikKIAkJCW5jb2xzKys7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkK IAkJCW5jb2xzKys7CisJCWlmIChoYXNfcHViZGRsKQorCQkJbmNvbHMrKzsKIAogCQlpbml0UFFF eHBCdWZmZXIoJnRpdGxlKTsKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJQdWJsaWNh dGlvbiAlcyIpLCBwdWJuYW1lKTsKQEAgLTYzOTUsNiArNjQwOCw4IEBAIGRlc2NyaWJlUHVibGlj YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29u dCwgZ2V0dGV4dF9ub29wKCJPd25lciIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRI ZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiQWxsIHRhYmxlcyIpLCB0cnVlLCBhbGlnbik7CisJ CWlmIChoYXNfcHViZGRsKQorCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9u b29wKCJUYWJsZSBERExzIiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigm Y29udCwgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJs ZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJVcGRhdGVzIiksIHRydWUsIGFsaWduKTsK IAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJEZWxldGVzIiksIHRy dWUsIGFsaWduKTsKQEAgLTY0MTIsNiArNjQyNyw4IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNv bnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1 ZShyZXMsIGksIDcpLCBmYWxzZSwgZmFsc2UpOwogCQlpZiAoaGFzX3B1YnZpYXJvb3QpCiAJCQlw cmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgpLCBmYWxzZSwgZmFs c2UpOworCQlpZiAoaGFzX3B1YmRkbCkKKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdl dHZhbHVlKHJlcywgaSwgOSksIGZhbHNlLCBmYWxzZSk7CiAKIAkJaWYgKCFwdWJhbGx0YWJsZXMp CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKaW5kZXggNDYzYmNiNjdjNS4uYWJjYmU5NzU5MyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3JtZ3JsaXN0LmgKQEAgLTQ3LDMgKzQ3LDQgQEAgUEdfUk1HUihSTV9DT01NSVRfVFNf SUQsICJDb21taXRUcyIsIGNvbW1pdF90c19yZWRvLCBjb21taXRfdHNfZGVzYywgY29tbWl0X3Rz X2kKIFBHX1JNR1IoUk1fUkVQTE9SSUdJTl9JRCwgIlJlcGxpY2F0aW9uT3JpZ2luIiwgcmVwbG9y aWdpbl9yZWRvLCByZXBsb3JpZ2luX2Rlc2MsIHJlcGxvcmlnaW5faWRlbnRpZnksIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwpCiBQR19STUdSKFJNX0dFTkVSSUNfSUQsICJHZW5lcmljIiwgZ2VuZXJp Y19yZWRvLCBnZW5lcmljX2Rlc2MsIGdlbmVyaWNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIGdlbmVy aWNfbWFzaywgTlVMTCkKIFBHX1JNR1IoUk1fTE9HSUNBTE1TR19JRCwgIkxvZ2ljYWxNZXNzYWdl IiwgbG9naWNhbG1zZ19yZWRvLCBsb2dpY2FsbXNnX2Rlc2MsIGxvZ2ljYWxtc2dfaWRlbnRpZnks IE5VTEwsIE5VTEwsIE5VTEwsIGxvZ2ljYWxtc2dfZGVjb2RlKQorUEdfUk1HUihSTV9MT0dJQ0FM RERMTVNHX0lELCAiTG9naWNhbERETE1lc3NhZ2UiLCBsb2dpY2FsZGRsbXNnX3JlZG8sIGxvZ2lj YWxkZGxtc2dfZGVzYywgbG9naWNhbGRkbG1zZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwg bG9naWNhbGRkbF9kZWNvZGUpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA3NDJkZjQ3Mzgx Li4zNzI0MTRhZjBmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTExMTU2LDYgKzExMTU2 LDE0IEBACiAgIHByb25hbWUgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlJywgcHJvdm9sYXRp bGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsCiAgIHByb3JldHR5cGUgPT4gJ3BnX2xzbics IHByb2FyZ3R5cGVzID0+ICdib29sIHRleHQgYnl0ZWEnLAogICBwcm9zcmMgPT4gJ3BnX2xvZ2lj YWxfZW1pdF9tZXNzYWdlX2J5dGVhJyB9LAoreyBvaWQgPT4gJzM4MTMnLCBkZXNjciA9PiAnZW1p dCBhIHRleHR1YWwgbG9naWNhbCBkZWNvZGluZyBtZXNzYWdlJywKKyAgcHJvbmFtZSA9PiAncGdf bG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxl bCA9PiAndScsCisgIHByb3JldHR5cGUgPT4gJ3BnX2xzbicsIHByb2FyZ3R5cGVzID0+ICdib29s IHRleHQgdGV4dCcsCisgIHByb3NyYyA9PiAncGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlX3Rl eHQnIH0sCit7IG9pZCA9PiAnMzgxNCcsIGRlc2NyID0+ICdlbWl0IGEgYmluYXJ5IGxvZ2ljYWwg ZGVjb2RpbmcgbWVzc2FnZScsCisgIHByb25hbWUgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVz c2FnZScsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAorICBwcm9yZXR0 eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAndGV4dCByZWdjbGFzcyBpbnQ0IHRleHQn LAorICBwcm9zcmMgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV9ieXRlYScgfSwKIAog IyBldmVudCB0cmlnZ2VycwogeyBvaWQgPT4gJzM1NjYnLCBkZXNjciA9PiAnbGlzdCBvYmplY3Rz IGRyb3BwZWQgYnkgdGhlIGN1cnJlbnQgY29tbWFuZCcsCkBAIC0xMjA1OSw1ICsxMjA2NywxNyBA QAogeyBvaWQgPT4gJzQ2NDMnLCBkZXNjciA9PiAnZXhwYW5kIEpTT04gZm9ybWF0IERETCB0byBh IHBsYWluIHRleHQgRERMIGNvbW1hbmQnLAogICBwcm9uYW1lID0+ICdkZGxfZGVwYXJzZV9leHBh bmRfY29tbWFuZCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAogICBwcm9hcmd0eXBlcyA9PiAndGV4 dCcsIHByb3NyYyA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQnIH0sCit7IG9pZCA9PiAn NDY0NCcsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIGVuZCcsCisg IHByb25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfZW5kJywgcHJvcmV0 dHlwZSA9PiAnZXZlbnRfdHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4g J3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfZW5kJyB9LAoreyBvaWQgPT4gJzQ2NDUn LCBkZXNjciA9PiAndHJpZ2dlciBmb3IgZGRsIGNvbW1hbmQgZGVwYXJzZSBzdGFydCcsCisgIHBy b25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfc3RhcnQnLCBwcm9yZXR0 eXBlID0+ICdldmVudF90cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAn cHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9zdGFydCcgfSwKK3sgb2lkID0+ICc0NjQ2 JywgZGVzY3IgPT4gJ3RyaWdnZXIgZm9yIGRkbCBjb21tYW5kIGRlcGFyc2UgdGFibGUgcmV3cml0 ZScsCisgIHByb25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0ZScsIHBy b3JldHR5cGUgPT4gJ2V2ZW50X3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3Jj ID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUnIH0sCit7IG9pZCA9PiAnNDY0 NycsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIHRhYmxlIGluaXQn LAorICBwcm9uYW1lID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUnLCBw cm9yZXR0eXBlID0+ICdldmVudF90cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3Ny YyA9PiAncHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9pbml0X3dyaXRlJyB9LAogCiBdCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggNmVjYWEyYTAxZS4uNzRiMjhkNzM1MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTgsOCArMTgsMTcgQEAKICNk ZWZpbmUgUEdfUFVCTElDQVRJT05fSAogCiAjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKLSNp bmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1 YmxpY2F0aW9uX2QuaCIKKyNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisKKy8qIFB1YmxpY2F0 aW9uIHRyaWdnZXIgZXZlbnRzICovCisjZGVmaW5lIFBVQl9UUklHX0VWRU5UMSAiZGRsX2NvbW1h bmRfZW5kIgorI2RlZmluZSBQVUJfVFJJR19FVkVOVDIgImRkbF9jb21tYW5kX3N0YXJ0IgorI2Rl ZmluZSBQVUJfVFJJR19FVkVOVDMgInRhYmxlX3Jld3JpdGUiCisjZGVmaW5lIFBVQl9UUklHX0VW RU5UNCAidGFibGVfaW5pdF93cml0ZSIKKworLyogUHVibGljYXRpb24gZXZlbnQgdHJpZ2dlciBw cmVmaXggKi8KKyNkZWZpbmUgUFVCX0VWRU5UX1RSSUdfUFJFRklYICJwZ19kZXBhcnNlX3RyaWdf JXNfJXUiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlwZ19wdWJsaWNhdGlvbiBkZWZpbml0 aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bwpAQCAtNTQsNiArNjMsOSBAQCBDQVRBTE9HKHBnX3B1 YmxpY2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQogCiAJLyogdHJ1ZSBpZiBwYXJ0 aXRpb24gY2hhbmdlcyBhcmUgcHVibGlzaGVkIHVzaW5nIHJvb3Qgc2NoZW1hICovCiAJYm9vbAkJ cHVidmlhcm9vdDsKKworCS8qIHRydWUgaWYgdGFibGUgZGRscyBhcmUgcHVibGlzaGVkICovCisJ Ym9vbAkJcHViZGRsX3RhYmxlOwogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbjsKIAogLyogLS0t LS0tLS0tLS0tLS0tLQpAQCAtNzIsNiArODQsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlv bkFjdGlvbnMKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHViZGVsZXRlOwogCWJvb2wJCXB1 YnRydW5jYXRlOworCWJvb2wJCXB1YmRkbF90YWJsZTsKIH0gUHVibGljYXRpb25BY3Rpb25zOwog CiB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkRlc2MKQEAgLTEwMywxMyArMTE2LDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHVibGljYXRpb24KIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsK IH0gUHVibGljYXRpb247CiAKLXR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbwotewot CVJlbGF0aW9uCXJlbGF0aW9uOwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwotCUxpc3QJICAgKmNv bHVtbnM7Ci19IFB1YmxpY2F0aW9uUmVsSW5mbzsKLQogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQ dWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlv bkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIExp c3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7CkBAIC0xNDUsMTQgKzE1MSw2 IEBAIGV4dGVybiBMaXN0ICpHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVz dWx0LAogZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJv aWQsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCk7CiAK LWV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRl cm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKLWV4dGVybiBPYmplY3RB ZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVs SW5mbyAqcHJpLAotCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7Ci1leHRlcm4gT2Jq ZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlk LAotCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOwotCi1leHRlcm4gQml0bWFwc2V0ICpw dWJfY29sbGlzdF90b19iaXRtYXBzZXQoQml0bWFwc2V0ICpjb2x1bW5zLCBEYXR1bSBwdWJjb2xz LAotCQkJCQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQ R19QVUJMSUNBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCmlu ZGV4IDcwZDVlMzY4MGEuLmEzZmNhOWU2NGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5oCkBAIC0yMiw2ICsyMiwxMyBAQAogLyogU2FtZSBhcyBNQVhOVU1NRVNTQUdFUyBp biBzaW52YWxhZHQuYyAqLwogI2RlZmluZSBNQVhfUkVMQ0FDSEVfSU5WQUxfTVNHUyA0MDk2CiAK K3R5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbworeworCVJlbGF0aW9uCXJlbGF0aW9u OworCU5vZGUJICAgKndoZXJlQ2xhdXNlOworCUxpc3QJICAgKmNvbHVtbnM7Cit9IFB1YmxpY2F0 aW9uUmVsSW5mbzsKKwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlUHVibGljYXRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogZXh0ZXJuIHZv aWQgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10KTsKIGV4dGVybiB2b2lkIFJlbW92ZVB1YmxpY2F0aW9uQnlJZChPaWQgcHViaWQp OwpAQCAtMzUsNSArNDIsMTIgQEAgZXh0ZXJuIGJvb2wgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRf Y29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJICAgTGlzdCAq YW5jZXN0b3JzLCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIGJvb2wgcHViX2NvbGxpc3RfY29u dGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJ CQkJCQkJCUxpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290KTsKK2V4dGVybiBCaXRtYXBz ZXQgKnB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNvbHVtbnMsIERhdHVtIHB1 YmNvbHMsCisJCQkJCQkJCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KTsKK2V4dGVybiBPYmplY3RB ZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVs SW5mbyAqcHJpLAorCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7CitleHRlcm4gT2Jq ZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlk LAorCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOworZXh0ZXJuIGJvb2wgaXNfcHVibGlz aGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBVQkxJQ0FU SU9OQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNz YWdlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzdkZjZlYTExYQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaApAQCAtMCwwICsxLDYwIEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRkbG1lc3NhZ2UuaAorICoJICAgRXhwb3J0cyBmcm9tIHJl cGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIy LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5k ZWYgUEdfTE9HSUNBTF9ERExfTUVTU0FHRV9ICisjZGVmaW5lIFBHX0xPR0lDQUxfRERMX01FU1NB R0VfSAorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2Rl ZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlYWRlci5oIgorI2luY2x1ZGUgIm5vZGVzL25v ZGVzLmgiCisKKworLyoKKyAqIFN1cHBvcnQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgZGVwYXJzZWQg Y29tbWFuZHMuCisgKi8KK3R5cGVkZWYgZW51bSBEZXBhcnNlZENvbW1hbmRUeXBlCit7CisJRENU X1NpbXBsZUNtZCwKKwlEQ1RfVGFibGVEcm9wU3RhcnQsCisJRENUX1RhYmxlRHJvcEVuZCwKKwlE Q1RfVGFibGVBbHRlciwKKwlEQ1RfT2JqZWN0Q3JlYXRlLAorCURDVF9PYmplY3REcm9wCit9IERl cGFyc2VkQ29tbWFuZFR5cGU7CisKKy8qCisgKiBHZW5lcmljIGxvZ2ljYWwgZGVjb2RpbmcgRERM IG1lc3NhZ2Ugd2FsIHJlY29yZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgeGxfbG9naWNhbF9kZGxf bWVzc2FnZQoreworCU9pZAkJCWRiSWQ7CQkJLyogZGF0YWJhc2UgT2lkIGVtaXR0ZWQgZnJvbSAq LworCVNpemUJCXByZWZpeF9zaXplOwkvKiBsZW5ndGggb2YgcHJlZml4IGluY2x1ZGluZyBudWxs IHRlcm1pbmF0b3IgKi8KKwlPaWQJCQlyZWxpZDsJCQkvKiBpZCBvZiB0aGUgdGFibGUgKi8KKwlE ZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7CS8qIHR5cGUgb2Ygc3FsIGNvbW1hbmQgKi8KKwlT aXplCQltZXNzYWdlX3NpemU7CS8qIHNpemUgb2YgdGhlIG1lc3NhZ2UgKi8KKworCS8qCisJICog cGF5bG9hZCwgaW5jbHVkaW5nIG51bGwtdGVybWluYXRlZCBwcmVmaXggb2YgbGVuZ3RoIHByZWZp eF9zaXplCisJICovCisJY2hhcgkJbWVzc2FnZVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSB4 bF9sb2dpY2FsX2RkbF9tZXNzYWdlOworCisjZGVmaW5lIFNpemVPZkxvZ2ljYWxERExNZXNzYWdl CShvZmZzZXRvZih4bF9sb2dpY2FsX2RkbF9tZXNzYWdlLCBtZXNzYWdlKSkKKworZXh0ZXJuIFhM b2dSZWNQdHIgTG9nTG9naWNhbERETE1lc3NhZ2UoY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVs aWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJCSAgIGNvbnN0IGNoYXIg KmRkbF9tZXNzYWdlLCBzaXplX3Qgc2l6ZSk7CisKKy8qIFJNR1IgQVBJKi8KKyNkZWZpbmUgWExP R19MT0dJQ0FMX0RETF9NRVNTQUdFCTB4MDAKK3ZvaWQJCWxvZ2ljYWxkZGxtc2dfcmVkbyhYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCk7Cit2b2lkCQlsb2dpY2FsZGRsbXNnX2Rlc2MoU3RyaW5nSW5m byBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKK2NvbnN0IGNoYXIgKmxvZ2ljYWxkZGxt c2dfaWRlbnRpZnkodWludDggaW5mbyk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vZGVjb2RlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUu aAppbmRleCAxNGZhOTIxYWI0Li5jOWFjNzA4ZDMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9kZWNvZGUuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUu aApAQCAtMjcsNiArMjcsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgeGFj dF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpi dWYpOwogZXh0ZXJuIHZvaWQgc3RhbmRieV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgbG9naWNhbG1zZ19kZWNv ZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwor ZXh0ZXJuIHZvaWQgbG9naWNhbGRkbF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogCiBleHRlcm4gdm9pZCBMb2dpY2FsRGVjb2RpbmdQ cm9jZXNzUmVjb3JkKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJCQkgWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aAppbmRleCAwZWEyZGY1MDg4Li41ZmIzYmFhZWIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscHJvdG8uaApAQCAtNjYsNiArNjYsNyBAQCB0eXBlZGVmIGVudW0gTG9naWNhbFJlcE1z Z1R5cGUKIAlMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gPSAnUicsCiAJTE9HSUNBTF9SRVBfTVNH X1RZUEUgPSAnWScsCiAJTE9HSUNBTF9SRVBfTVNHX01FU1NBR0UgPSAnTScsCisJTE9HSUNBTF9S RVBfTVNHX0RETCA9ICdMJywKIAlMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRSA9ICdiJywK IAlMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSA9ICdQJywKIAlMT0dJQ0FMX1JFUF9NU0dfQ09NTUlU X1BSRVBBUkVEID0gJ0snLApAQCAtMjQ2LDYgKzI0Nyw5IEBAIGV4dGVybiBMaXN0ICpsb2dpY2Fs cmVwX3JlYWRfdHJ1bmNhdGUoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCSAgYm9vbCAqY2FzY2Fk ZSwgYm9vbCAqcmVzdGFydF9zZXFzKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbWVz c2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAog CQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfZGRs KFN0cmluZ0luZm8gb3V0LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJCQljb25zdCBjaGFyICpw cmVmaXgsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworZXh0ZXJuIGNoYXIgKmxvZ2lj YWxyZXBfcmVhZF9kZGwoU3RyaW5nSW5mbyBpbiwgWExvZ1JlY1B0ciAqbHNuLCBjb25zdCBjaGFy ICoqcHJlZml4LCBTaXplICpzeik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChT dHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWws IEJpdG1hcHNldCAqY29sdW1ucyk7CiBleHRlcm4gTG9naWNhbFJlcFJlbGF0aW9uICpsb2dpY2Fs cmVwX3JlYWRfcmVsKFN0cmluZ0luZm8gaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vb3V0cHV0X3BsdWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0 X3BsdWdpbi5oCmluZGV4IDJkODlkMjY1ODYuLjQ0YmFmNDA3MjAgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKQEAgLTkwLDYgKzkwLDE4IEBAIHR5cGVkZWYgdm9pZCAo KkxvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LAogCQkJCQkJCQkJCVNpemUgbWVzc2FnZV9zaXplLAogCQkJCQkJCQkJCWNvbnN0IGNoYXIg Km1lc3NhZ2UpOwogCisvKgorICogQ2FsbGVkIGZvciB0aGUgbG9naWNhbCBkZWNvZGluZyBEREwg bWVzc2FnZXMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVERExNZXNzYWdlQ0Ip IChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJCSAgIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAor CQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgICBPaWQgcmVsaWQs CisJCQkJCQkJCQkJICAgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSAg IFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwor CiAvKgogICogRmlsdGVyIGNoYW5nZXMgYnkgb3JpZ2luLgogICovCkBAIC0yMDEsNiArMjEzLDE5 IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0IpIChzdHJ1Y3Qg TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4CiAJCQkJCQkJCQkJCSAgU2l6ZSBtZXNzYWdlX3Np emUsCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qCisgKiBDYWxsYmFj ayBmb3Igc3RyZWFtaW5nIGxvZ2ljYWwgZGVjb2RpbmcgRERMIG1lc3NhZ2VzIGZyb20gaW4tcHJv Z3Jlc3MKKyAqIHRyYW5zYWN0aW9ucy4KKyAqLwordHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29k ZVN0cmVhbURETE1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs CisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCQkJIFhMb2dS ZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LAorCQkJ CQkJCQkJCQkJIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkJCSBEZXBhcnNlZENvbW1hbmRUeXBlIGNt ZHR5cGUsCisJCQkJCQkJCQkJCQkgU2l6ZSBtZXNzYWdlX3NpemUsCisJCQkJCQkJCQkJCQkgY29u c3QgY2hhciAqbWVzc2FnZSk7CisKIC8qCiAgKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIHRydW5j YXRlcyBmcm9tIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KICAqLwpAQCAtMjIxLDYgKzI0Niw3 IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNhbGxiYWNrcwogCUxvZ2ljYWxEZWNvZGVU cnVuY2F0ZUNCIHRydW5jYXRlX2NiOwogCUxvZ2ljYWxEZWNvZGVDb21taXRDQiBjb21taXRfY2I7 CiAJTG9naWNhbERlY29kZU1lc3NhZ2VDQiBtZXNzYWdlX2NiOworCUxvZ2ljYWxEZWNvZGVERExN ZXNzYWdlQ0IgZGRsX2NiOwogCUxvZ2ljYWxEZWNvZGVGaWx0ZXJCeU9yaWdpbkNCIGZpbHRlcl9i eV9vcmlnaW5fY2I7CiAJTG9naWNhbERlY29kZVNodXRkb3duQ0Igc2h1dGRvd25fY2I7CiAKQEAg LTIzOSw2ICsyNjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFja3MKIAlM b2dpY2FsRGVjb2RlU3RyZWFtQ29tbWl0Q0Igc3RyZWFtX2NvbW1pdF9jYjsKIAlMb2dpY2FsRGVj b2RlU3RyZWFtQ2hhbmdlQ0Igc3RyZWFtX2NoYW5nZV9jYjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFt TWVzc2FnZUNCIHN0cmVhbV9tZXNzYWdlX2NiOworCUxvZ2ljYWxEZWNvZGVTdHJlYW1ERExNZXNz YWdlQ0Igc3RyZWFtX2RkbF9jYjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFtVHJ1bmNhdGVDQiBzdHJl YW1fdHJ1bmNhdGVfY2I7CiB9IE91dHB1dFBsdWdpbkNhbGxiYWNrczsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0LmgKaW5kZXggYjRhODAxNTQwMy4uYTJjZjk5YjRlNCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9wZ291dHB1dC5oCkBAIC0yNSw2ICsyNSw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0 cHV0RGF0YQogCXVpbnQzMgkJcHJvdG9jb2xfdmVyc2lvbjsKIAlMaXN0CSAgICpwdWJsaWNhdGlv bl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CisJTGlzdAkgICAqZGVsZXRlZF9yZWxp ZHM7CiAJYm9vbAkJYmluYXJ5OwogCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQltZXNzYWdlczsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBlMzdmNTEyMGViLi4y NWEwNjFhYzcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVm ZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0x MSw2ICsxMSw4IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVk ZSAibGliL2lsaXN0LmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZXMuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWwuaCIKICNpbmNs dWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKQEAgLTY1 LDYgKzY3LDcgQEAgdHlwZWRlZiBlbnVtIFJlb3JkZXJCdWZmZXJDaGFuZ2VUeXBlCiAJUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX0lOU0VSVCwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfVVBEQVRFLAog CVJFT1JERVJfQlVGRkVSX0NIQU5HRV9ERUxFVEUsCisJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RE TCwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfTUVTU0FHRSwKIAlSRU9SREVSX0JVRkZFUl9DSEFO R0VfSU5WQUxJREFUSU9OLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9TTkFQU0hP VCwKQEAgLTEzOSw2ICsxNDIsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlckNoYW5n ZQogCQkJY2hhcgkgICAqbWVzc2FnZTsKIAkJfQkJCW1zZzsKIAorCQkvKiBEREwgKi8KKwkJc3Ry dWN0CisJCXsKKwkJCWNoYXIJICAgKnByZWZpeDsKKwkJCVNpemUJCW1lc3NhZ2Vfc2l6ZTsKKwkJ CWNoYXIJICAgKm1lc3NhZ2U7CisJCQlPaWQJCQlyZWxpZDsKKwkJCURlcGFyc2VkQ29tbWFuZFR5 cGUgY21kdHlwZTsKKwkJfQkJCWRkbDsKKwogCQkvKiBOZXcgc25hcHNob3QsIHNldCB3aGVuIGFj dGlvbiA9PSAqX0lOVEVSTkFMX1NOQVBTSE9UICovCiAJCVNuYXBzaG90CXNuYXBzaG90OwogCkBA IC00NzAsNiArNDgzLDE2IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJNZXNzYWdlQ0Ip IChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIFNpemUg c3osCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIERETCBtZXNzYWdlIGNh bGxiYWNrIHNpZ25hdHVyZSAqLwordHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlckRETE1lc3Nh Z2VDQikgKFJlb3JkZXJCdWZmZXIgKnJiLAorCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKKwkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkJCSAg IGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgICBPaWQgcmVsaWQsCisJCQkJCQkJCQkJ ICAgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSAgIFNpemUgc3osCisJ CQkJCQkJCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8qIGJlZ2luIHByZXBhcmUgY2Fs bGJhY2sgc2lnbmF0dXJlICovCiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyQmVnaW5QcmVw YXJlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4g KnR4bik7CkBAIC01MzYsNiArNTU5LDE3IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJT dHJlYW1NZXNzYWdlQ0IpICgKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUg c3osCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIHN0cmVhbSBEREwg bWVzc2FnZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZm ZXJTdHJlYW1ERExNZXNzYWdlQ0IpICgKKwkJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyICpyYiwK KwkJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJCQkgWExvZ1Jl Y1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJ CQkJCQkJCQkgT2lkIHJlbGlkLAorCQkJCQkJCQkJCQkJIERlcGFyc2VkQ29tbWFuZFR5cGUgY21k dHlwZSwKKwkJCQkJCQkJCQkJCSBTaXplIHN6LAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm1l c3NhZ2UpOworCiAvKiBzdHJlYW0gdHJ1bmNhdGUgY2FsbGJhY2sgc2lnbmF0dXJlICovCiB0eXBl ZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQikgKAogCQkJCQkJCQkJCQkg ICBSZW9yZGVyQnVmZmVyICpyYiwKQEAgLTU5Miw2ICs2MjYsNyBAQCBzdHJ1Y3QgUmVvcmRlckJ1 ZmZlcgogCVJlb3JkZXJCdWZmZXJBcHBseVRydW5jYXRlQ0IgYXBwbHlfdHJ1bmNhdGU7CiAJUmVv cmRlckJ1ZmZlckNvbW1pdENCIGNvbW1pdDsKIAlSZW9yZGVyQnVmZmVyTWVzc2FnZUNCIG1lc3Nh Z2U7CisJUmVvcmRlckJ1ZmZlckRETE1lc3NhZ2VDQiBkZGw7CiAKIAkvKgogCSAqIENhbGxiYWNr cyB0byBiZSBjYWxsZWQgd2hlbiBzdHJlYW1pbmcgYSB0cmFuc2FjdGlvbiBhdCBwcmVwYXJlIHRp bWUuCkBAIC02MTEsNiArNjQ2LDcgQEAgc3RydWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9yZGVyQnVm ZmVyU3RyZWFtQ29tbWl0Q0Igc3RyZWFtX2NvbW1pdDsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtQ2hh bmdlQ0Igc3RyZWFtX2NoYW5nZTsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNCIHN0cmVh bV9tZXNzYWdlOworCVJlb3JkZXJCdWZmZXJTdHJlYW1ERExNZXNzYWdlQ0Igc3RyZWFtX2RkbDsK IAlSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNhdGU7CiAKIAkvKgpA QCAtNjk2LDYgKzczMiw5IEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2Uo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJICBTbmFwc2hv dCBzbmFwLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSAgYm9vbCB0cmFuc2FjdGlvbmFsLCBj b25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBj aGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZURETE1lc3NhZ2Uo UmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJ CQkgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkJCQkgY29u c3QgY2hhciAqbWVzc2FnZSwgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUp OwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCVhMb2dSZWNQdHIgY29tbWl0X2xzbiwgWExvZ1JlY1B0 ciBlbmRfbHNuLAogCQkJCQkJCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZSwgUmVwT3JpZ2luSWQg b3JpZ2luX2lkLCBYTG9nUmVjUHRyIG9yaWdpbl9sc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdGNvcC9jbWR0YWcuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnLmgKaW5kZXggMWU3NTE0 ZGNmZi4uMDc2YzI3ZTY0MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWcuaAor KysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCkBAIC0xNiw3ICsxNiw3IEBACiAvKiBidWZm ZXIgc2l6ZSByZXF1aXJlZCBmb3IgY29tbWFuZCBjb21wbGV0aW9uIHRhZ3MgKi8KICNkZWZpbmUg Q09NUExFVElPTl9UQUdfQlVGU0laRQk2NAogCi0jZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUs IGV2dHJnb2ssIHJ3cm9rLCByb3djbnQpIFwKKyNkZWZpbmUgUEdfQ01EVEFHKHRhZywgbmFtZSwg ZXZ0cmdvaywgcndyb2ssIHJvd2NudCwgZGRscmVwbG9rKSBcCiAJdGFnLAogCiB0eXBlZGVmIGVu dW0gQ29tbWFuZFRhZwpAQCAtNTMsOSArNTMsMTEgQEAgQ29weVF1ZXJ5Q29tcGxldGlvbihRdWVy eUNvbXBsZXRpb24gKmRzdCwgY29uc3QgUXVlcnlDb21wbGV0aW9uICpzcmMpCiBleHRlcm4gdm9p ZCBJbml0aWFsaXplUXVlcnlDb21wbGV0aW9uKFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwogZXh0ZXJu IGNvbnN0IGNoYXIgKkdldENvbW1hbmRUYWdOYW1lKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBl eHRlcm4gY29uc3QgY2hhciAqR2V0Q29tbWFuZFRhZ05hbWVBbmRMZW4oQ29tbWFuZFRhZyBjb21t YW5kVGFnLCBTaXplICpsZW4pOworZXh0ZXJuIENvbW1hbmRUYWcgKkdldENvbW1hbmRUYWdzRm9y RERMUmVwbChpbnQgKm5jb21tYW5kcyk7CiBleHRlcm4gYm9vbCBjb21tYW5kX3RhZ19kaXNwbGF5 X3Jvd2NvdW50KENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gYm9vbCBjb21tYW5kX3Rh Z19ldmVudF90cmlnZ2VyX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gYm9vbCBj b21tYW5kX3RhZ190YWJsZV9yZXdyaXRlX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CitleHRl cm4gYm9vbCBjb21tYW5kX3RhZ19kZGxfcmVwbGljYXRpb25fb2soQ29tbWFuZFRhZyBjb21tYW5k VGFnKTsKIGV4dGVybiBDb21tYW5kVGFnIEdldENvbW1hbmRUYWdFbnVtKGNvbnN0IGNoYXIgKmNv bW1hbmRuYW1lKTsKIGV4dGVybiBTaXplIEJ1aWxkUXVlcnlDb21wbGV0aW9uU3RyaW5nKGNoYXIg KmJ1ZmYsIGNvbnN0IFF1ZXJ5Q29tcGxldGlvbiAqcWMsCiAJCQkJCQkJCQkgICBib29sIG5hbWVv bmx5KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggZTczOGFjMWMwOS4uMThiNjllNGJiMyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv dGNvcC9jbWR0YWdsaXN0LmgKQEAgLTIzLDE5NiArMjMsMTk2IEBACiAgKiB0ZXh0dWFsIG5hbWUs IHNvIHRoYXQgd2UgY2FuIGJzZWFyY2ggb24gaXQ7IHNlZSBHZXRDb21tYW5kVGFnRW51bSgpLgog ICovCiAKLS8qIHN5bWJvbCBuYW1lLCB0ZXh0dWFsIG5hbWUsIGV2ZW50X3RyaWdnZXJfb2ssIHRh YmxlX3Jld3JpdGVfb2ssIHJvd2NvdW50ICovCi1QR19DTURUQUcoQ01EVEFHX1VOS05PV04sICI/ Pz8iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9BQ0NFU1Nf TUVUSE9ELCAiQUxURVIgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQUxURVJfQUdHUkVHQVRFLCAiQUxURVIgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DQVNULCAiQUxURVIgQ0FTVCIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09MTEFUSU9OLCAiQUxU RVIgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9DT05TVFJBSU5ULCAiQUxURVIgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQUxURVJfQ09OVkVSU0lPTiwgIkFMVEVSIENPTlZFUlNJT04iLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0RBVEFCQVNFLCAiQUxURVIg REFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9E RUZBVUxUX1BSSVZJTEVHRVMsICJBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0RPTUFJTiwgIkFMVEVSIERPTUFJTiIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfRVZFTlRfVFJJR0dF UiwgIkFMVEVSIEVWRU5UIFRSSUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19BTFRFUl9FWFRFTlNJT04sICJBTFRFUiBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAiQUxU RVIgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0FMVEVSX0ZPUkVJR05fVEFCTEUsICJBTFRFUiBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9GVU5DVElPTiwgIkFMVEVSIEZV TkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9JTkRF WCwgIkFMVEVSIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19B TFRFUl9MQU5HVUFHRSwgIkFMVEVSIExBTkdVQUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9MQVJHRV9PQkpFQ1QsICJBTFRFUiBMQVJHRSBPQkpFQ1QiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX01BVEVSSUFMSVpFRF9W SUVXLCAiQUxURVIgTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCB0cnVlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1IsICJBTFRFUiBPUEVSQVRPUiIsIHRydWUsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1JfQ0xBU1MsICJBTFRFUiBP UEVSQVRPUiBDTEFTUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxU RVJfT1BFUkFUT1JfRkFNSUxZLCAiQUxURVIgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9QT0xJQ1ksICJBTFRFUiBQT0xJQ1kiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1BST0NFRFVSRSwgIkFM VEVSIFBST0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxU RVJfUFVCTElDQVRJT04sICJBTFRFUiBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQUxURVJfUk9MRSwgIkFMVEVSIFJPTEUiLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ST1VUSU5FLCAiQUxURVIgUk9VVElORSIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfUlVMRSwgIkFMVEVS IFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1NDSEVN QSwgIkFMVEVSIFNDSEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QUxURVJfU0VRVUVOQ0UsICJBTFRFUiBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQUxURVJfU0VSVkVSLCAiQUxURVIgU0VSVkVSIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TVEFUSVNUSUNTLCAiQUxURVIgU1RBVElT VElDUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfU1VCU0NS SVBUSU9OLCAiQUxURVIgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19BTFRFUl9TWVNURU0sICJBTFRFUiBTWVNURU0iLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UQUJMRSwgIkFMVEVSIFRBQkxFIiwgdHJ1ZSwg dHJ1ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RBQkxFU1BBQ0UsICJBTFRFUiBU QUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJf VEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJ T04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VB UkNIX0RJQ1RJT05BUlksICJBTFRFUiBURVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9QQVJTRVIsICJB TFRFUiBURVhUIFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiQUxURVIgVEVYVCBTRUFSQ0ggVEVN UExBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RSQU5T Rk9STSwgIkFMVEVSIFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQUxURVJfVFJJR0dFUiwgIkFMVEVSIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RZUEUsICJBTFRFUiBUWVBFIiwgdHJ1ZSwgdHJ1ZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1VTRVJfTUFQUElORywgIkFMVEVSIFVTRVIg TUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVklF VywgIkFMVEVSIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FO QUxZWkUsICJBTkFMWVpFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QkVHSU4sICJCRUdJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NB TEwsICJDQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ0hFQ0tQ T0lOVCwgIkNIRUNLUE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19DTE9TRSwgIkNMT1NFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf Q0xPU0VfQ1VSU09SLCAiQ0xPU0UgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQ0xPU0VfQ1VSU09SX0FMTCwgIkNMT1NFIENVUlNPUiBBTEwiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DTFVTVEVSLCAiQ0xVU1RFUiIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NPTU1FTlQsICJDT01NRU5UIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DT01NSVQsICJDT01NSVQiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DT01NSVRfUFJFUEFSRUQsICJDT01N SVQgUFJFUEFSRUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DT1BZ LCAiQ09QWSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09QWV9GUk9N LCAiQ09QWSBGUk9NIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JF QVRFX0FDQ0VTU19NRVRIT0QsICJDUkVBVEUgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0FHR1JFR0FURSwgIkNSRUFURSBBR0dSRUdB VEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9DQVNULCAi Q1JFQVRFIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFU RV9DT0xMQVRJT04sICJDUkVBVEUgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19DUkVBVEVfQ09OU1RSQUlOVCwgIkNSRUFURSBDT05TVFJBSU5UIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09OVkVSU0lPTiwgIkNS RUFURSBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfREFUQUJBU0UsICJDUkVBVEUgREFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRE9NQUlOLCAiQ1JFQVRFIERPTUFJTiIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0VWRU5UX1RSSUdHRVIsICJDUkVB VEUgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0NSRUFURV9FWFRFTlNJT04sICJDUkVBVEUgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJDUkVBVEUg Rk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0NSRUFURV9GT1JFSUdOX1RBQkxFLCAiQ1JFQVRFIEZPUkVJR04gVEFCTEUiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9GVU5DVElPTiwgIkNSRUFURSBG VU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0lO REVYLCAiQ1JFQVRFIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfTEFOR1VBR0UsICJDUkVBVEUgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9NQVRFUklBTElaRURfVklFVywgIkNSRUFURSBNQVRF UklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JF QVRFX09QRVJBVE9SLCAiQ1JFQVRFIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfQ0xBU1MsICJDUkVBVEUgT1BFUkFUT1IgQ0xB U1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVSQVRP Ul9GQU1JTFksICJDUkVBVEUgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUE9MSUNZLCAiQ1JFQVRFIFBPTElDWSIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BST0NFRFVSRSwgIkNSRUFURSBQ Uk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9Q VUJMSUNBVElPTiwgIkNSRUFURSBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JPTEUsICJDUkVBVEUgUk9MRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9ST1VUSU5FLCAiQ1JFQVRFIFJPVVRJTkUi LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9SVUxFLCAiQ1JF QVRFIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9T Q0hFTUEsICJDUkVBVEUgU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfU0VRVUVOQ0UsICJDUkVBVEUgU0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9TRVJWRVIsICJDUkVBVEUgU0VSVkVSIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU1RBVElTVElDUywgIkNS RUFURSBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfU1VCU0NSSVBUSU9OLCAiQ1JFQVRFIFNVQlNDUklQVElPTiIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxFLCAiQ1JFQVRFIFRBQkxFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVfQVMsICJDUkVB VEUgVEFCTEUgQVMiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFU RV9UQUJMRVNQQUNFLCAiQ1JFQVRFIFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkNSRUFU RSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfRElDVElPTkFSWSwgIkNSRUFURSBURVhUIFNF QVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfVEVYVF9TRUFSQ0hfUEFSU0VSLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VBUkNIX1RF TVBMQVRFLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJBTlNGT1JNLCAiQ1JFQVRFIFRSQU5TRk9STSIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSSUdHRVIsICJD UkVBVEUgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JF QVRFX1RZUEUsICJDUkVBVEUgVFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX1VTRVJfTUFQUElORywgIkNSRUFURSBVU0VSIE1BUFBJTkciLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9WSUVXLCAiQ1JFQVRFIFZJRVci LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEUsICJERUFM TE9DQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FU RV9BTEwsICJERUFMTE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0RFQ0xBUkVfQ1VSU09SLCAiREVDTEFSRSBDVVJTT1IiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19ERUxFVEUsICJERUxFVEUiLCBmYWxzZSwgZmFsc2UsIHRy dWUpCi1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkQsICJESVNDQVJEIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9BTEwsICJESVNDQVJEIEFMTCIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfUExBTlMsICJESVNDQVJE IFBMQU5TIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9T RVFVRU5DRVMsICJESVNDQVJEIFNFUVVFTkNFUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RJU0NBUkRfVEVNUCwgIkRJU0NBUkQgVEVNUCIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RPLCAiRE8iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19EUk9QX0FDQ0VTU19NRVRIT0QsICJEUk9QIEFDQ0VTUyBNRVRIT0Qi LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQUdHUkVHQVRFLCAi RFJPUCBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RS T1BfQ0FTVCwgIkRST1AgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfRFJPUF9DT0xMQVRJT04sICJEUk9QIENPTExBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfRFJPUF9DT05TVFJBSU5ULCAiRFJPUCBDT05TVFJBSU5UIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0NPTlZFUlNJT04sICJEUk9Q IENPTlZFUlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1Bf REFUQUJBU0UsICJEUk9QIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfRFJPUF9ET01BSU4sICJEUk9QIERPTUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfRFJPUF9FVkVOVF9UUklHR0VSLCAiRFJPUCBFVkVOVCBUUklHR0VS IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9FWFRFTlNJT04s ICJEUk9QIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf RFJPUF9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlHTl9UQUJMRSwg IkRST1AgRk9SRUlHTiBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfRFJPUF9GVU5DVElPTiwgIkRST1AgRlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0RST1BfSU5ERVgsICJEUk9QIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0xBTkdVQUdFLCAiRFJPUCBMQU5HVUFHRSIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9NQVRFUklBTElaRURfVklF VywgIkRST1AgTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX0RST1BfT1BFUkFUT1IsICJEUk9QIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX09QRVJBVE9SX0NMQVNTLCAiRFJPUCBPUEVSQVRP UiBDTEFTUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9PUEVS QVRPUl9GQU1JTFksICJEUk9QIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfRFJPUF9PV05FRCwgIkRST1AgT1dORUQiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUE9MSUNZLCAiRFJPUCBQT0xJQ1kiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUFJPQ0VEVVJFLCAiRFJPUCBQ Uk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUFVC TElDQVRJT04sICJEUk9QIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19EUk9QX1JPTEUsICJEUk9QIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19EUk9QX1JPVVRJTkUsICJEUk9QIFJPVVRJTkUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUlVMRSwgIkRST1AgUlVMRSIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TQ0hFTUEsICJEUk9QIFNDSEVN QSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TRVFVRU5DRSwg IkRST1AgU0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RS T1BfU0VSVkVSLCAiRFJPUCBTRVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0RST1BfU1RBVElTVElDUywgIkRST1AgU1RBVElTVElDUyIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TVUJTQ1JJUFRJT04sICJEUk9QIFNVQlNDUklQ VElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9UQUJMRSwg IkRST1AgVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1Bf VEFCTEVTUEFDRSwgIkRST1AgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkRST1AgVEVYVCBT RUFSQ0ggQ09ORklHVVJBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfRFJPUF9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAiRFJPUCBURVhUIFNFQVJDSCBESUNUSU9O QVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VB UkNIX1BBUlNFUiwgIkRST1AgVEVYVCBTRUFSQ0ggUEFSU0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiRFJPUCBURVhU IFNFQVJDSCBURU1QTEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf RFJPUF9UUkFOU0ZPUk0sICJEUk9QIFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfRFJPUF9UUklHR0VSLCAiRFJPUCBUUklHR0VSIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RZUEUsICJEUk9QIFRZUEUiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVVNFUl9NQVBQSU5HLCAiRFJPUCBV U0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1Bf VklFVywgIkRST1AgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf RVhFQ1VURSwgIkVYRUNVVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19FWFBMQUlOLCAiRVhQTEFJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0ZFVENILCAiRkVUQ0giLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFH X0dSQU5ULCAiR1JBTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0dS QU5UX1JPTEUsICJHUkFOVCBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfSU1QT1JUX0ZPUkVJR05fU0NIRU1BLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1BIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19JTlNFUlQsICJJTlNFUlQiLCBmYWxz ZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX0xJU1RFTiwgIkxJU1RFTiIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0xPQUQsICJMT0FEIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfTE9DS19UQUJMRSwgIkxPQ0sgVEFCTEUiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19NRVJHRSwgIk1FUkdFIiwgZmFs c2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19NT1ZFLCAiTU9WRSIsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfTk9USUZZLCAiTk9USUZZIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUFJFUEFSRSwgIlBSRVBBUkUiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19QUkVQQVJFX1RSQU5TQUNUSU9OLCAiUFJF UEFSRSBUUkFOU0FDVElPTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X1JFQVNTSUdOX09XTkVELCAiUkVBU1NJR04gT1dORUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19SRUZSRVNIX01BVEVSSUFMSVpFRF9WSUVXLCAiUkVGUkVTSCBNQVRF UklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUkVJ TkRFWCwgIlJFSU5ERVgiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19S RUxFQVNFLCAiUkVMRUFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X1JFU0VULCAiUkVTRVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19S RVZPS0UsICJSRVZPS0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1JF Vk9LRV9ST0xFLCAiUkVWT0tFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19ST0xMQkFDSywgIlJPTExCQUNLIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfUk9MTEJBQ0tfUFJFUEFSRUQsICJST0xMQkFDSyBQUkVQQVJFRCIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NBVkVQT0lOVCwgIlNBVkVQT0lOVCIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFQ1VSSVRZX0xBQkVMLCAi U0VDVVJJVFkgTEFCRUwiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NF TEVDVCwgIlNFTEVDVCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VM RUNUX0ZPUl9LRVlfU0hBUkUsICJTRUxFQ1QgRk9SIEtFWSBTSEFSRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfTk9fS0VZX1VQREFURSwgIlNFTEVD VCBGT1IgTk8gS0VZIFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX1NFTEVDVF9GT1JfU0hBUkUsICJTRUxFQ1QgRk9SIFNIQVJFIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9VUERBVEUsICJTRUxFQ1QgRk9SIFVQ REFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9JTlRP LCAiU0VMRUNUIElOVE8iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NF VCwgIlNFVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFVF9DT05T VFJBSU5UUywgIlNFVCBDT05TVFJBSU5UUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX1NIT1csICJTSE9XIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfU1RBUlRfVFJBTlNBQ1RJT04sICJTVEFSVCBUUkFOU0FDVElPTiIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJVTkNBVEUgVEFC TEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19VTkxJU1RFTiwgIlVO TElTVEVOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfVVBEQVRFLCAi VVBEQVRFIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19WQUNVVU0sICJW QUNVVU0iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorLyogc3ltYm9sIG5hbWUsIHRleHR1YWwgbmFt ZSwgZXZlbnRfdHJpZ2dlcl9vaywgdGFibGVfcmV3cml0ZV9vaywgcm93Y291bnQsIGRkbHJlcGxv ayAqLworUEdfQ01EVEFHKENNRFRBR19VTktOT1dOLCAiPz8/IiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0FDQ0VTU19NRVRIT0QsICJBTFRFUiBB Q0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfQUxURVJfQUdHUkVHQVRFLCAiQUxURVIgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DQVNULCAiQUxURVIgQ0FTVCIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09MTEFUSU9OLCAi QUxURVIgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9DT05TVFJBSU5ULCAiQUxURVIgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0NPTlZFUlNJT04sICJBTFRFUiBD T05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9EQVRBQkFTRSwgIkFMVEVSIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0RFRkFVTFRfUFJJVklMRUdFUywgIkFMVEVSIERF RkFVTFQgUFJJVklMRUdFUyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfQUxURVJfRE9NQUlOLCAiQUxURVIgRE9NQUlOIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9FVkVOVF9UUklHR0VSLCAiQUxURVIgRVZFTlQg VFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9FWFRFTlNJT04sICJBTFRFUiBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAiQUxURVIg Rk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fVEFCTEUsICJBTFRFUiBGT1JFSUdOIFRBQkxFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9GVU5DVElPTiwg IkFMVEVSIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9JTkRFWCwgIkFMVEVSIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9MQU5HVUFHRSwgIkFMVEVSIExBTkdVQUdFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9MQVJHRV9PQkpF Q1QsICJBTFRFUiBMQVJHRSBPQkpFQ1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9NQVRFUklBTElaRURfVklFVywgIkFMVEVSIE1BVEVSSUFMSVpF RCBWSUVXIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVS X09QRVJBVE9SLCAiQUxURVIgT1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SX0NMQVNTLCAiQUxURVIgT1BFUkFUT1IgQ0xB U1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX09Q RVJBVE9SX0ZBTUlMWSwgIkFMVEVSIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfUE9MSUNZLCAiQUxURVIgUE9MSUNZIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9QUk9DRURV UkUsICJBTFRFUiBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0FMVEVSX1BVQkxJQ0FUSU9OLCAiQUxURVIgUFVCTElDQVRJT04iLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1JPTEUsICJBTFRFUiBS T0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVS X1JPVVRJTkUsICJBTFRFUiBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9SVUxFLCAiQUxURVIgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfU0NIRU1BLCAiQUxURVIgU0NIRU1BIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TRVFVRU5D RSwgIkFMVEVSIFNFUVVFTkNFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19BTFRFUl9TRVJWRVIsICJBTFRFUiBTRVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1NUQVRJU1RJQ1MsICJBTFRFUiBTVEFUSVNU SUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9T VUJTQ1JJUFRJT04sICJBTFRFUiBTVUJTQ1JJUFRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TWVNURU0sICJBTFRFUiBTWVNURU0iLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVEFCTEUsICJB TFRFUiBUQUJMRSIsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9UQUJMRVNQQUNFLCAiQUxURVIgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9DT05GSUdVUkFUSU9O LCAiQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwg dHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfRElDVElPTkFSWSwgIkFM VEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX1BBUlNFUiwgIkFMVEVSIFRFWFQgU0VB UkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdf QUxURVJfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJBTFRFUiBURVhUIFNFQVJDSCBURU1QTEFURSIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVFJBTlNG T1JNLCAiQUxURVIgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfVFJJR0dFUiwgIkFMVEVSIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RZUEUsICJBTFRFUiBUWVBFIiwg dHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1VTRVJfTUFQ UElORywgIkFMVEVSIFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQUxURVJfVklFVywgIkFMVEVSIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FOQUxZWkUsICJBTkFMWVpFIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0JFR0lOLCAiQkVHSU4iLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0FMTCwgIkNBTEwiLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0hFQ0tQT0lOVCwg IkNIRUNLUE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfQ0xPU0UsICJDTE9TRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19DTE9TRV9DVVJTT1IsICJDTE9TRSBDVVJTT1IiLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0xPU0VfQ1VSU09SX0FMTCwgIkNMT1NFIENVUlNP UiBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0xV U1RFUiwgIkNMVVNURVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfQ09NTUVOVCwgIkNPTU1FTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0NPTU1JVCwgIkNPTU1JVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQorUEdfQ01EVEFHKENNRFRBR19DT01NSVRfUFJFUEFSRUQsICJDT01NSVQgUFJFUEFSRUQiLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ09QWSwgIkNPUFki LCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DT1BZX0ZST00s ICJDT1BZIEZST00iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX0FDQ0VTU19NRVRIT0QsICJDUkVBVEUgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0FHR1JFR0FURSwgIkNS RUFURSBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0NSRUFURV9DQVNULCAiQ1JFQVRFIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9DT0xMQVRJT04sICJDUkVBVEUgQ09MTEFUSU9OIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09OU1RS QUlOVCwgIkNSRUFURSBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NPTlZFUlNJT04sICJDUkVBVEUgQ09OVkVSU0lPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0RBVEFCQVNF LCAiQ1JFQVRFIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX0NSRUFURV9ET01BSU4sICJDUkVBVEUgRE9NQUlOIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRVZFTlRfVFJJR0dFUiwgIkNSRUFU RSBFVkVOVCBUUklHR0VSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0NSRUFURV9FWFRFTlNJT04sICJDUkVBVEUgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9SRUlHTl9EQVRBX1dSQVBQ RVIsICJDUkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9GT1JFSUdOX1RBQkxFLCAiQ1JFQVRFIEZPUkVJ R04gVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NS RUFURV9GVU5DVElPTiwgIkNSRUFURSBGVU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0lOREVYLCAiQ1JFQVRFIElOREVYIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfTEFOR1VBR0UsICJD UkVBVEUgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0NSRUFURV9NQVRFUklBTElaRURfVklFVywgIkNSRUFURSBNQVRFUklBTElaRUQgVklFVyIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJB VE9SLCAiQ1JFQVRFIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfQ0xBU1MsICJDUkVBVEUgT1BFUkFUT1IgQ0xBU1Mi LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVS QVRPUl9GQU1JTFksICJDUkVBVEUgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUE9MSUNZLCAiQ1JFQVRFIFBPTElDWSIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BST0NF RFVSRSwgIkNSRUFURSBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0NSRUFURV9QVUJMSUNBVElPTiwgIkNSRUFURSBQVUJMSUNBVElPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JPTEUsICJD UkVBVEUgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfUk9VVElORSwgIkNSRUFURSBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JVTEUsICJDUkVBVEUgUlVMRSIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NDSEVNQSwgIkNS RUFURSBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X0NSRUFURV9TRVFVRU5DRSwgIkNSRUFURSBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwg dHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NFUlZFUiwgIkNSRUFURSBTRVJWRVIiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9TVEFUSVNU SUNTLCAiQ1JFQVRFIFNUQVRJU1RJQ1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0NSRUFURV9TVUJTQ1JJUFRJT04sICJDUkVBVEUgU1VCU0NSSVBUSU9OIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxF LCAiQ1JFQVRFIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfVEFCTEVfQVMsICJDUkVBVEUgVEFCTEUgQVMiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVTUEFDRSwgIkNSRUFURSBU QUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0NSRUFURV9URVhUX1NFQVJDSF9DT05GSUdVUkFUSU9OLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIENP TkZJR1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X0NSRUFURV9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIERJQ1RJ T05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFU RV9URVhUX1NFQVJDSF9QQVJTRVIsICJDUkVBVEUgVEVYVCBTRUFSQ0ggUEFSU0VSIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hf VEVNUExBVEUsICJDUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9UUkFOU0ZPUk0sICJDUkVBVEUgVFJB TlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVB VEVfVFJJR0dFUiwgIkNSRUFURSBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFlQRSwgIkNSRUFURSBUWVBFIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVVNFUl9NQVBQSU5HLCAiQ1JF QVRFIFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX1ZJRVcsICJDUkVBVEUgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FURSwgIkRFQUxMT0NBVEUiLCBmYWxzZSwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FURV9BTEwsICJERUFM TE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19ERUNMQVJFX0NVUlNPUiwgIkRFQ0xBUkUgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RFTEVURSwgIkRFTEVURSIsIGZhbHNlLCBmYWxzZSwg dHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RJU0NBUkQsICJESVNDQVJEIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfQUxMLCAiRElT Q0FSRCBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdf RElTQ0FSRF9QTEFOUywgIkRJU0NBUkQgUExBTlMiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9TRVFVRU5DRVMsICJESVNDQVJEIFNFUVVFTkNF UyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ESVNDQVJE X1RFTVAsICJESVNDQVJEIFRFTVAiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfRE8sICJETyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01E VEFHKENNRFRBR19EUk9QX0FDQ0VTU19NRVRIT0QsICJEUk9QIEFDQ0VTUyBNRVRIT0QiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfQUdHUkVHQVRFLCAi RFJPUCBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0RST1BfQ0FTVCwgIkRST1AgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9DT0xMQVRJT04sICJEUk9QIENPTExBVElPTiIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9DT05TVFJBSU5ULCAiRFJP UCBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfRFJPUF9DT05WRVJTSU9OLCAiRFJPUCBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0RBVEFCQVNFLCAiRFJPUCBEQVRBQkFTRSIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0RPTUFJ TiwgIkRST1AgRE9NQUlOIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19EUk9QX0VWRU5UX1RSSUdHRVIsICJEUk9QIEVWRU5UIFRSSUdHRVIiLCBmYWxzZSwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9FWFRFTlNJT04sICJEUk9Q IEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdf RFJPUF9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlHTl9U QUJMRSwgIkRST1AgRk9SRUlHTiBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9GVU5DVElPTiwgIkRST1AgRlVOQ1RJT04iLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfSU5ERVgsICJEUk9QIElOREVY IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0xBTkdV QUdFLCAiRFJPUCBMQU5HVUFHRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9NQVRFUklBTElaRURfVklFVywgIkRST1AgTUFURVJJQUxJWkVEIFZJRVci LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFU T1IsICJEUk9QIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19EUk9QX09QRVJBVE9SX0NMQVNTLCAiRFJPUCBPUEVSQVRPUiBDTEFTUyIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9PUEVSQVRPUl9GQU1J TFksICJEUk9QIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9PV05FRCwgIkRST1AgT1dORUQiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1BPTElDWSwgIkRST1AgUE9MSUNZIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1BST0NFRFVS RSwgIkRST1AgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19EUk9QX1BVQkxJQ0FUSU9OLCAiRFJPUCBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9ST0xFLCAiRFJPUCBST0xFIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfUk9VVElO RSwgIkRST1AgUk9VVElORSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfRFJPUF9SVUxFLCAiRFJPUCBSVUxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19EUk9QX1NDSEVNQSwgIkRST1AgU0NIRU1BIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1NFUVVFTkNFLCAiRFJPUCBTRVFV RU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9T RVJWRVIsICJEUk9QIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9TVEFUSVNUSUNTLCAiRFJPUCBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1NVQlNDUklQVElPTiwgIkRST1Ag U1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfRFJPUF9UQUJMRSwgIkRST1AgVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0RST1BfVEFCTEVTUEFDRSwgIkRST1AgVEFCTEVTUEFDRSIsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNI X0NPTkZJR1VSQVRJT04sICJEUk9QIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfRElD VElPTkFSWSwgIkRST1AgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9QQVJTRVIsICJEUk9Q IFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9URU1QTEFURSwgIkRST1AgVEVYVCBTRUFSQ0ggVEVN UExBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1Bf VFJBTlNGT1JNLCAiRFJPUCBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0RST1BfVFJJR0dFUiwgIkRST1AgVFJJR0dFUiIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9UWVBFLCAiRFJPUCBUWVBFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1VTRVJfTUFQ UElORywgIkRST1AgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19EUk9QX1ZJRVcsICJEUk9QIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0VYRUNVVEUsICJFWEVDVVRFIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0VYUExBSU4sICJFWFBMQUlOIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0ZFVENILCAiRkVUQ0gi LCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19HUkFOVCwgIkdS QU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19HUkFOVF9S T0xFLCAiR1JBTlQgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19JTVBPUlRfRk9SRUlHTl9TQ0hFTUEsICJJTVBPUlQgRk9SRUlHTiBTQ0hFTUEiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0lOU0VSVCwgIklOU0VS VCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0xJU1RFTiwg IkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19M T0FELCAiTE9BRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19MT0NLX1RBQkxFLCAiTE9DSyBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19NRVJHRSwgIk1FUkdFIiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfTU9WRSwgIk1PVkUiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZh bHNlKQorUEdfQ01EVEFHKENNRFRBR19OT1RJRlksICJOT1RJRlkiLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUFJFUEFSRSwgIlBSRVBBUkUiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUFJFUEFSRV9UUkFOU0FDVElP TiwgIlBSRVBBUkUgVFJBTlNBQ1RJT04iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfUkVBU1NJR05fT1dORUQsICJSRUFTU0lHTiBPV05FRCIsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19SRUZSRVNIX01BVEVSSUFMSVpF RF9WSUVXLCAiUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSwg dHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVJTkRFWCwgIlJFSU5ERVgiLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVMRUFTRSwgIlJFTEVBU0UiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVTRVQsICJSRVNFVCIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19SRVZPS0UsICJS RVZPS0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX1JFVk9L RV9ST0xFLCAiUkVWT0tFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfUk9MTEJBQ0ssICJST0xMQkFDSyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQorUEdfQ01EVEFHKENNRFRBR19ST0xMQkFDS19QUkVQQVJFRCwgIlJPTExCQUNLIFBSRVBB UkVEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NBVkVQ T0lOVCwgIlNBVkVQT0lOVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19TRUNVUklUWV9MQUJFTCwgIlNFQ1VSSVRZIExBQkVMIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1QsICJTRUxFQ1QiLCBmYWxzZSwgZmFs c2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX0tFWV9TSEFSRSwg IlNFTEVDVCBGT1IgS0VZIFNIQVJFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfTk9fS0VZX1VQREFURSwgIlNFTEVDVCBGT1IgTk8gS0VZ IFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19T RUxFQ1RfRk9SX1NIQVJFLCAiU0VMRUNUIEZPUiBTSEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX1VQREFURSwgIlNFTEVDVCBGT1Ig VVBEQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NF TEVDVF9JTlRPLCAiU0VMRUNUIElOVE8iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19TRVQsICJTRVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfU0VUX0NPTlNUUkFJTlRTLCAiU0VUIENPTlNUUkFJTlRTIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NIT1csICJTSE9XIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NUQVJUX1RSQU5TQUNU SU9OLCAiU1RBUlQgVFJBTlNBQ1RJT04iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfVFJVTkNBVEVfVEFCTEUsICJUUlVOQ0FURSBUQUJMRSIsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19VTkxJU1RFTiwgIlVOTElTVEVO IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1VQREFURSwg IlVQREFURSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1ZB Q1VVTSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAz MWY4NGU5MGViLi5kNzUzMzRhODE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMTcsMTAgKzE3LDEyIEBACiAjaW5j bHVkZSAiYWNjZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2lu ZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgogI2luY2x1ZGUgIm5v ZGVzL2JpdG1hcHNldC5oIgorI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVk ZSAicGFydGl0aW9uaW5nL3BhcnRkZWZzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9wcnMybG9jay5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2suaCIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CmluZGV4IGMwMGUyODM2MWMuLjFjNmYzMzA5NWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dApAQCAtNjIyMyw5ICs2MjIzLDkgQEAgTGlzdCBvZiBzY2hlbWFzCiAoMCByb3dzKQogCiBc ZFJwICJuby5zdWNoLnB1YmxpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBwdWJsaWNhdGlvbnMKLSBOYW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBwdWJsaWNhdGlvbnMKKyBOYW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAoMCByb3dzKQogCiBcZFJzICJuby5z dWNoLnN1YnNjcmlwdGlvbiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQKaW5kZXggNDI3Zjg3ZWEwNy4uN2Q4Njk3N2IyOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTMwLDIwICszMCwyMCBAQCBFUlJPUjogIGNvbmZsaWN0 aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IC4uLnViX3h4eCBXSVRIIChwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVlJywgcHVibGlzaF92aS4uLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFxkUnAK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1 YmxpY2F0aW9ucwotICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg ICB8IGYKLSB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cGliX2lu c190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyB0ZXN0 cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYK ICgyIHJvd3MpCiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBTRVQgKHB1Ymxp c2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZScpOwogXGRScAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAg IE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0 cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVm YXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisg ICAgICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgogKDIgcm93cykKIAogLS0tIGFk ZGluZyB0YWJsZXMKQEAgLTg3LDEwICs4NywxMCBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNh dGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CkBAIC05OSwyMCArOTksMjAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoK IC0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3Agc2NoZW1hIGZyb20gJ0ZPUiBUQUJMRScgcHVibGlj YXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgogCiAt LSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9u CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTEy MywxMCArMTIzLDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cl90Ymxfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBUQUJMRSBwdWJfdGVz dC50ZXN0cHViX25vcGs7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1 Yl9mb3JfdGJsX3NjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgpAQCAtMTM1LDEwICsxMzUsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHNob3VsZCBi ZSBhYmxlIHRvIGFkZCBhIHRhYmxlIG9mIHRoZSBzYW1lIHNjaGVtYSB0byB0aGUgc2NoZW1hIHB1 YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBBREQgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJf bm9wayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xNDcsMTAgKzE0NywxMCBAQCBUYWJsZXMg ZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCB0aGUgdGFibGUKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1 Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAtMTYx LDEwICsxNjEsMTAgQEAgRVJST1I6ICByZWxhdGlvbiAidGVzdHB1Yl9ub3BrIiBpcyBub3QgcGFy dCBvZiB0aGUgcHVibGljYXRpb24KIC0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCB0YWJsZSB0byBz Y2hlbWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNF VCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2No ZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNj aGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3Qu dGVzdHB1Yl9ub3BrIgogCkBAIC0xODYsMTAgKzE4NiwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgICAg InRlc3RwdWJfZm9yYWxsdGFibGVzIgogCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJs ZXMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRh YmxlcworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0 ZXN0cHViX3RibDI7CkBAIC0yMDEsMTkgKzIwMSwxOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi NCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogXGRScCsgdGVzdHB1YjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIzCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1YmxpYy50ZXN0cHViX3RibDMiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgogCiBcZFJw KyB0ZXN0cHViNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGlj LnRlc3RwdWJfdGJsMyIKIApAQCAtMjM0LDEwICsyMzQsMTAgQEAgVVBEQVRFIHRlc3RwdWJfcGFy dGVkMSBTRVQgYSA9IDE7CiAtLSBvbmx5IHBhcmVudCBpcyBsaXN0ZWQgYXMgYmVpbmcgaW4gcHVi bGljYXRpb24sIG5vdCB0aGUgcGFydGl0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnBhcnRlZCBBREQgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRl ZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y cGFydGVkCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zv cnBhcnRlZAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGlj LnRlc3RwdWJfcGFydGVkIgogCkBAIC0yNTIsMTAgKzI1MiwxMCBAQCBBTFRFUiBUQUJMRSB0ZXN0 cHViX3BhcnRlZCBERVRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcGFydGVkMTsKIFVQREFURSB0ZXN0 cHViX3BhcnRlZDEgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0 ZWQgU0VUIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogXGRScCsgdGVzdHB1 Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JwYXJ0ZWQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJsZXM6CiAg ICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjg0LDEwICsyODQsMTAgQEAgU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJsMiBXSEVSRSAoYyA8PiAn dGVzdCcgQU5EIGQgPCA1KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1 Yl9yZl90YmwyIiBXSEVSRSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMw MCwxMCArMzAwLDEwIEBAIFRhYmxlczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQURE IFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDEwMDAgQU5EIGUgPCAyMDAwKTsKIFxk UnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVSRSAo KGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMxOSwxMCArMzE5LDEwIEBAIFB1 YmxpY2F0aW9uczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0 cHViX3JmX3RibDI7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJf cmZfdGJsMyIgV0hFUkUgKChlID4gMTAwMCkgQU5EIChlIDwgMjAwMCkpCkBAIC0zMzAsMTAgKzMz MCwxMCBAQCBUYWJsZXM6CiAtLSByZW1vdmUgdGVzdHB1Yl9yZl90YmwxIGFuZCBhZGQgdGVzdHB1 Yl9yZl90YmwzIGFnYWluIChhbm90aGVyIFdIRVJFIGV4cHJlc3Npb24pCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMzAwIEFO RCBlIDwgNTAwKTsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAzMDApIEFORCAo ZSA8IDUwMCkpCiAKQEAgLTM2NiwxMCArMzY2LDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDEgRk9SIFRBQkxF IHRlc3RwdWJfcmZfdGJsMSwgT05MWSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCA5OTkpIFdJ VEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRS cCsgdGVzdHB1Yl9zeW50YXgxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfc3ludGF4MQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxl czoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZf dGJsMyIgV0hFUkUgKGUgPCA5OTkpCkBAIC0zNzksMTAgKzM3OSwxMCBAQCBTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgy IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3Jm X3RibDUgV0hFUkUgKGggPCA5OTkpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1Yl9zeW50YXgyCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIK ICAgICAidGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGggPCA5OTkp CkBAIC00OTcsMTAgKzQ5NywxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWEyOwogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjYgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWEyLCBUQUJMRSB0ZXN0 cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2IFdIRVJFIChpIDwgOTkpOwogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWI2Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNgotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzOgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2IiBXSEVS RSAoaSA8IDk5KQogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTcxNCwxMCArNzE0LDEwIEBAIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxlX2lucyBXSVRIIChwdWJsaXNoID0gJ2luc2Vy dCwgdHJ1bmNhdGUnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX3RhYmxlX2lucyBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChhKTsJCS0tIG9r CiBcZFJwKyB0ZXN0cHViX3RhYmxlX2lucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfdGFibGVfaW5zCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX3RhYmxlX2lucworICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8 IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsNSIgKGEpCiAKQEAgLTg5MSwxMCAr ODkxLDEwIEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEgaW50LCBi IGludCwgYyBpbnQsIFBSSU1BUlkgS0VZIChhLGMpKTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJs X2JvdGhfZmlsdGVycyBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJfdGJsX2Jv dGhfZmlsdGVyc19wa2V5OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMg QUREIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyAoYSxjKSBXSEVSRSAoYyAhPSAxKTsK IFxkUnArIHRlc3RwdWJfYm90aF9maWx0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2JvdGhfZmlsdGVycwotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYm90aF9maWx0ZXJzCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIiAo YSwgYykgV0hFUkUgKGMgPD4gMSkKIApAQCAtMTA5OSwxMCArMTA5OSwxMCBAQCBFUlJPUjogIHJl bGF0aW9uICJ0ZXN0cHViX3RibDEiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uICJ0 ZXN0cHViX2ZvcnRibAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGJsIEZPUiBUQUJM RSB0ZXN0cHViX3RibDE7CiBFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRibCIgYWxy ZWFkeSBleGlzdHMKIFxkUnArIHRlc3RwdWJfZm9ydGJsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGJsCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1Ymxp Yy50ZXN0cHViX3RibDEiCkBAIC0xMTQwLDEwICsxMTQwLDEwIEBAIFB1YmxpY2F0aW9uczoKICAg ICAidGVzdHB1Yl9mb3J0YmwiCiAKIFxkUnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIK ICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKQEAgLTEyMjEsMTAgKzEyMjEsMTAgQEAgUkVWT0tF IENSRUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uIEZST00gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyMjsKIERST1AgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJs MTsKIFxkUnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBm CiAoMSByb3cpCiAKIC0tIGZhaWwgLSBtdXN0IGJlIG93bmVyIG9mIHB1YmxpY2F0aW9uCkBAIC0x MjM0LDIwICsxMjM0LDIwIEBAIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbiB0 ZXN0cHViX2RlZmF1bHQKIFJFU0VUIFJPTEU7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Rl ZmF1bHQgUkVOQU1FIFRPIHRlc3RwdWJfZm9vOwogXGRScCB0ZXN0cHViX2ZvbwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0g ICAgTmFtZSAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9mb28g fCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgTmFtZSAgICAg fCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyB0ZXN0cHViX2ZvbyB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgog KDEgcm93KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb28gUkVOQU1FIFRPIHRlc3RwdWJfZGVmYXVsdDsKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIyOwogXGRScCB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwdWJfZGVmYXVsdCB8 IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgdGVzdHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy MiB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhZGRpbmcgc2NoZW1hcyBhbmQgdGFibGVz CkBAIC0xMjYzLDE5ICsxMjYzLDE5IEBAIENSRUFURSBUQUJMRSAiQ1VSUkVOVF9TQ0hFTUEiLiJD VVJSRU5UX1NDSEVNQSIoaWQgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0 MSIKIAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIyX2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MiwgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTI4OSw0NCAr MTI4OSw0NCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjZfZm9yc2NoZW1hIEZPUiBUQUJM RVMgSU4gU0NIRU1BICJDVVJSRU5UX1NDSEVNQSIsIENVUgogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9ydGFibGUgRk9SIFRBQkxFICJDVVJSRU5UX1NDSEVNQSIuIkNVUlJFTlRfU0NIRU1B IjsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoK ICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9T Q0hFTUEiCiAKIFxkUnArIHRlc3RwdWI1X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIK ICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjZfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9T Q0hFTUEiCiAgICAgInB1YmxpYyIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJDVVJSRU5UX1NDSEVNQS5DVVJS RU5UX1NDSEVNQSIKIApAQCAtMTM2MCwxMCArMTM2MCwxMCBAQCBFUlJPUjogIHNjaGVtYSAidGVz dHB1Yl92aWV3IiBkb2VzIG5vdCBleGlzdAogLS0gZHJvcHBpbmcgdGhlIHNjaGVtYSBzaG91bGQg cmVmbGVjdCB0aGUgY2hhbmdlIGluIHB1YmxpY2F0aW9uCiBEUk9QIFNDSEVNQSBwdWJfdGVzdDM7 CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xMzcxLDIwICsxMzcxLDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSByZW5h bWluZyB0aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGljYXRpb24K IEFMVEVSIFNDSEVNQSBwdWJfdGVzdDEgUkVOQU1FIHRvIHB1Yl90ZXN0MV9yZW5hbWVkOwogXGRS cCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MV9yZW5hbWVkIgogICAgICJwdWJf dGVzdDIiCiAKIEFMVEVSIFNDSEVNQSBwdWJfdGVzdDFfcmVuYW1lZCBSRU5BTUUgdG8gcHViX3Rl c3QxOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHVi X3Rlc3QyIgpAQCAtMTM5MiwxMCArMTM5MiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0g YWx0ZXIgcHVibGljYXRpb24gYWRkIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFf Zm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKIFxkUnArIHRlc3RwdWIx X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MDQsMTAg KzE0MDQsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwog RVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJw KyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBA IC0xNDE2LDEwICsxNDE2LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwog RVJST1I6ICBzY2hlbWEgInB1Yl90ZXN0MSIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRp b24gInRlc3RwdWIxX2ZvcnNjaGVtYSIKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJw dWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MjcsMTAgKzE0MjcsMTAgQEAgVGFibGVz IGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1YmxpY2F0aW9uIGRyb3Agc2NoZW1hCiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MjsKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE0 MzgsMTAgKzE0MzgsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogRVJS T1I6ICB0YWJsZXMgZnJvbSBzY2hlbWEgInB1Yl90ZXN0MiIgYXJlIG5vdCBwYXJ0IG9mIHRoZSBw dWJsaWNhdGlvbgogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApA QCAtMTQ0OSwyOSArMTQ0OSwyOSBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3Rl bnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90 IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCiAtLSBk cm9wIGFsbCBzY2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJP UCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIGFsdGVyIHB1 YmxpY2F0aW9uIHNldCBtdWx0aXBsZSBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIx X2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MjsKIFxk UnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIK QEAgLTE0ODAsMTAgKzE0ODAsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3Rl bnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90 IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJw dWJfdGVzdDIiCkBAIC0xNDkyLDEwICsxNDkyLDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAt LSByZW1vdmluZyB0aGUgZHVwbGljYXRlIHNjaGVtYXMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MTsK IFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE1NzQsMTgg KzE1NzQsMTggQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgogKDEgcm93KQogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VU IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2No ZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNj aGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgInB1Yl90ZXN0MSIKIApAQCAtMTU5NSwyMCArMTU5NSwyMCBAQCBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rl c3QxLCBUQQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hIEZP UiBUQUJMRSBwdWJfdGVzdDIudGJsMSwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1h X2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3Jz Y2hlbWFfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1Yl90ZXN0Mi50YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgog CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEiCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA4NTJlZTYwOTM0 Li4zMjhjMDE2N2M2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTYyLDYgKzU2Miw3 IEBAIERlZkVsZW1BY3Rpb24KIERlZmF1bHRBQ0xJbmZvCiBEZWZpbmVTdG10CiBEZWxldGVTdG10 CitEZXBhcnNlZENvbW1hbmRUeXBlCiBEZXBlbmRlbmN5R2VuZXJhdG9yCiBEZXBlbmRlbmN5R2Vu ZXJhdG9yRGF0YQogRGVwZW5kZW5jeVR5cGUKQEAgLTE0NTMsNiArMTQ1NCw4IEBAIExvZ2ljYWxE ZWNvZGVCZWdpblByZXBhcmVDQgogTG9naWNhbERlY29kZUNoYW5nZUNCCiBMb2dpY2FsRGVjb2Rl Q29tbWl0Q0IKIExvZ2ljYWxEZWNvZGVDb21taXRQcmVwYXJlZENCCitMb2dpY2FsRGVjb2RlRERM TWVzc2FnZUNCCitMb2dpY2FsRGVjb2RlU3RyZWFtRERMTWVzc2FnZUNCCiBMb2dpY2FsRGVjb2Rl RmlsdGVyQnlPcmlnaW5DQgogTG9naWNhbERlY29kZUZpbHRlclByZXBhcmVDQgogTG9naWNhbERl Y29kZU1lc3NhZ2VDQgpAQCAtMjMxMCw2ICsyMzEzLDggQEAgUmVvcmRlckJ1ZmZlckNoYW5nZQog UmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUKIFJlb3JkZXJCdWZmZXJDb21taXRDQgogUmVvcmRlckJ1 ZmZlckNvbW1pdFByZXBhcmVkQ0IKK1Jlb3JkZXJCdWZmZXJERExNZXNzYWdlQ0IKK1Jlb3JkZXJC dWZmZXJTdHJlYW1ERExNZXNzYWdlQ0IKIFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlCiBSZW9yZGVy QnVmZmVySXRlclRYTkVudHJ5CiBSZW9yZGVyQnVmZmVySXRlclRYTlN0YXRlCi0tIAoyLjMwLjAu d2luZG93cy4yCgo= --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0003-Deparser-for-INDEX-DDL-commands-2023_04_07-2.patch" Content-Description: 0003-Deparser-for-INDEX-DDL-commands-2023_04_07-2.patch Content-Disposition: attachment; filename="0003-Deparser-for-INDEX-DDL-commands-2023_04_07-2.patch"; size=14845; creation-date="Fri, 07 Apr 2023 03:17:30 GMT"; modification-date="Fri, 07 Apr 2023 03:22:33 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ZWEzMDI3NjRjNTAzMzY2OGY5MWU4ZGJlYTIzYjJhMmI1Njg4ODYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTk6MTI6MzIgKzA4MDAKU3ViamVjdDogW1BBVENIIDMv Nl0gRGVwYXJzZXIgZm9yIElOREVYIERETCBjb21tYW5kcwoKLS0tCiBkb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sIHwgIDEyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf ZGVwYXJzZS5jICAgIHwgMzc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDM4NCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDM3MjE0YmFhM2QuLjc1YjM5NTIyMmIgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTUwMCw2ICsxNTAwLDEyIEBAIHRlc3Rf c3ViPSMgU0VMRUNUICogRlJPTSB0MSBPUkRFUiBCWSBpZDsKICAgICAgICAgPC9pdGVtaXplZGxp c3Q+CiAgICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAg ICA8cGFyYT4KKyAgICAgICAgaW5kZXg6IHRoaXMgb3B0aW9uIGVuYWJsZXMgcmVwbGljYXRpb24g b2YgSW5kZXggRERMIGNvbW1hbmRzLAorICAgICAgICB3aGljaCBpbmNsdWRlIENSRUFURS9BTFRF Ui9EUk9QIElOREVYLgorICAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CiAgIDwvaXRlbWl6 ZWRsaXN0PgogCiAgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0aW9uLW9wdGlvbi1leGFtcGxlcyI+ CkBAIC0xNjA0LDcgKzE2MTAsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9 ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgSU5ERVg8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAg ICAgIDxyb3c+CkBAIC0xODg0LDcgKzE4OTAsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBT RVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIElOREVYPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjEzOSw3ICsyMTQ1LDcgQEAgQUxURVIgUFVCTElDQVRJ T04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVy YWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9kZGxfZGVwYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2RlcGFyc2UuYwpp bmRleCA2ZWZlODQ0OThmLi44M2YyZWVlYjBlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNl LmMKQEAgLTEwMzcsNiArMTAzNywyNDQgQEAgb2J0YWluQ29uc3RyYWludHMoTGlzdCAqZWxlbWVu dHMsIE9pZCByZWxhdGlvbklkLCBPaWQgZG9tYWluSWQsCiAJcmV0dXJuIGVsZW1lbnRzOwogfQog CisvKgorICogUmV0dXJuIGFuIGluZGV4IGRlZmluaXRpb24sIHNwbGl0IGludG8gc2V2ZXJhbCBw aWVjZXMuCisgKgorICogQSBsYXJnZSBhbW91bnQgb2YgY29kZSBpcyBkdXBsaWNhdGVkIGZyb20g IHBnX2dldF9pbmRleGRlZl93b3JrZXIsIGJ1dAorICogY29udHJvbCBmbG93IGlzIGRpZmZlcmVu dCBlbm91Z2ggdGhhdCBpdCBkb2Vzbid0IHNlZW0gd29ydGgga2VlcGluZyB0aGVtCisgKiB0b2dl dGhlci4KKyAqLworc3RhdGljIHZvaWQKK3BnX2dldF9pbmRleGRlZl9kZXRhaWxlZChPaWQgaW5k ZXhyZWxpZCwKKwkJCQkJCSBjaGFyICoqaW5kZXhfYW0sCisJCQkJCQkgY2hhciAqKmRlZmluaXRp b24sCisJCQkJCQkgY2hhciAqKnJlbG9wdGlvbnMsCisJCQkJCQkgY2hhciAqKnRhYmxlc3BhY2Us CisJCQkJCQkgY2hhciAqKndoZXJlQ2xhdXNlKQoreworCUhlYXBUdXBsZQlodF9pZHg7CisJSGVh cFR1cGxlCWh0X2lkeHJlbDsKKwlIZWFwVHVwbGUJaHRfYW07CisJRm9ybV9wZ19pbmRleCBpZHhy ZWM7CisJRm9ybV9wZ19jbGFzcyBpZHhyZWxyZWM7CisJRm9ybV9wZ19hbQlhbXJlYzsKKwlJbmRl eEFtUm91dGluZSAqYW1yb3V0aW5lOworCUxpc3QJICAgKmluZGV4cHJzOworCUxpc3RDZWxsICAg KmluZGV4cHJfaXRlbTsKKwlMaXN0CSAgICpjb250ZXh0OworCU9pZAkJCWluZHJlbGlkOworCWlu dAkJCWtleW5vOworCURhdHVtCQlpbmRjb2xsRGF0dW07CisJRGF0dW0JCWluZGNsYXNzRGF0dW07 CisJRGF0dW0JCWluZG9wdGlvbkRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlvaWR2ZWN0b3IgICpp bmRjb2xsYXRpb247CisJb2lkdmVjdG9yICAqaW5kY2xhc3M7CisJaW50MnZlY3RvciAqaW5kb3B0 aW9uOworCVN0cmluZ0luZm9EYXRhIGRlZmluaXRpb25CdWY7CisKKwkqdGFibGVzcGFjZSA9IE5V TEw7CisJKndoZXJlQ2xhdXNlID0gTlVMTDsKKworCS8qIEZldGNoIHRoZSBwZ19pbmRleCB0dXBs ZSBieSB0aGUgT2lkIG9mIHRoZSBpbmRleCAqLworCWh0X2lkeCA9IFNlYXJjaFN5c0NhY2hlMShJ TkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKGluZGV4cmVsaWQpKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQoaHRfaWR4KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IGluZGV4IHdpdGggT0lEICV1IiwgaW5kZXhyZWxpZCk7CisJaWR4cmVjID0gKEZvcm1fcGdfaW5k ZXgpIEdFVFNUUlVDVChodF9pZHgpOworCisJaW5kcmVsaWQgPSBpZHhyZWMtPmluZHJlbGlkOwor CUFzc2VydChpbmRleHJlbGlkID09IGlkeHJlYy0+aW5kZXhyZWxpZCk7CisKKwkvKiBNdXN0IGdl dCBpbmRjb2xsYXRpb24sIGluZGNsYXNzLCBhbmQgaW5kb3B0aW9uIHRoZSBoYXJkIHdheSAqLwor CWluZGNvbGxEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihJTkRFWFJFTElELCBodF9pZHgsCisJCQkJ CQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kY29sbGF0aW9uLCAmaXNudWxsKTsKKwlBc3NlcnQoIWlz bnVsbCk7CisJaW5kY29sbGF0aW9uID0gKG9pZHZlY3RvciAqKSBEYXR1bUdldFBvaW50ZXIoaW5k Y29sbERhdHVtKTsKKworCWluZGNsYXNzRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJ RCwgaHRfaWR4LAorCQkJCQkJCQkJQW51bV9wZ19pbmRleF9pbmRjbGFzcywgJmlzbnVsbCk7CisJ QXNzZXJ0KCFpc251bGwpOworCWluZGNsYXNzID0gKG9pZHZlY3RvciAqKSBEYXR1bUdldFBvaW50 ZXIoaW5kY2xhc3NEYXR1bSk7CisKKwlpbmRvcHRpb25EYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihJ TkRFWFJFTElELCBodF9pZHgsCisJCQkJCQkJCQkgQW51bV9wZ19pbmRleF9pbmRvcHRpb24sICZp c251bGwpOworCUFzc2VydCghaXNudWxsKTsKKwlpbmRvcHRpb24gPSAoaW50MnZlY3RvciAqKSBE YXR1bUdldFBvaW50ZXIoaW5kb3B0aW9uRGF0dW0pOworCisJLyogRmV0Y2ggdGhlIHBnX2NsYXNz IHR1cGxlIG9mIHRoZSBpbmRleCByZWxhdGlvbiAqLworCWh0X2lkeHJlbCA9IFNlYXJjaFN5c0Nh Y2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0oaW5kZXhyZWxpZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZChodF9pZHhyZWwpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgcmVsYXRpb24gd2l0aCBPSUQgJXUiLCBpbmRleHJlbGlkKTsKKwlpZHhyZWxyZWMgPSAo Rm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKGh0X2lkeHJlbCk7CisKKwkvKiBGZXRjaCB0aGUgcGdf YW0gdHVwbGUgb2YgdGhlIGluZGV4JyBhY2Nlc3MgbWV0aG9kICovCisJaHRfYW0gPSBTZWFyY2hT eXNDYWNoZTEoQU1PSUQsIE9iamVjdElkR2V0RGF0dW0oaWR4cmVscmVjLT5yZWxhbSkpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZChodF9hbSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBhY2Nlc3MgbWV0aG9kIHdpdGggT0lEICV1IiwKKwkJCSBpZHhyZWxyZWMtPnJl bGFtKTsKKwlhbXJlYyA9IChGb3JtX3BnX2FtKSBHRVRTVFJVQ1QoaHRfYW0pOworCisJLyoKKwkg KiBHZXQgdGhlIGluZGV4IGV4cHJlc3Npb25zLCBpZiBhbnkuICAoTk9URTogd2UgZG8gbm90IHVz ZSB0aGUgcmVsY2FjaGUKKwkgKiB2ZXJzaW9ucyBvZiB0aGUgZXhwcmVzc2lvbnMgYW5kIHByZWRp Y2F0ZSwgYmVjYXVzZSB3ZSB3YW50IHRvIGRpc3BsYXkKKwkgKiBub24tY29uc3QtZm9sZGVkIGV4 cHJlc3Npb25zLikKKwkgKi8KKwlpZiAoIWhlYXBfYXR0aXNudWxsKGh0X2lkeCwgQW51bV9wZ19p bmRleF9pbmRleHBycywgTlVMTCkpCisJeworCQlEYXR1bQkJZXhwcnNEYXR1bTsKKwkJY2hhcgkg ICAqZXhwcnNTdHJpbmc7CisKKwkJZXhwcnNEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihJTkRFWFJF TElELCBodF9pZHgsCisJCQkJCQkJCQkgQW51bV9wZ19pbmRleF9pbmRleHBycywgJmlzbnVsbCk7 CisJCUFzc2VydCghaXNudWxsKTsKKwkJZXhwcnNTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KGV4cHJzRGF0dW0pOworCQlpbmRleHBycyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShleHByc1N0 cmluZyk7CisJCXBmcmVlKGV4cHJzU3RyaW5nKTsKKwl9CisJZWxzZQorCQlpbmRleHBycyA9IE5J TDsKKworCWluZGV4cHJfaXRlbSA9IGxpc3RfaGVhZChpbmRleHBycyk7CisKKwljb250ZXh0ID0g ZGVwYXJzZV9jb250ZXh0X2ZvcihnZXRfcmVsX25hbWUoaW5kcmVsaWQpLCBpbmRyZWxpZCk7CisK Kwlpbml0U3RyaW5nSW5mbygmZGVmaW5pdGlvbkJ1Zik7CisKKwkvKiBPdXRwdXQgaW5kZXggQU0g Ki8KKwkqaW5kZXhfYW0gPSBwc3RyZHVwKHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihhbXJlYy0+ YW1uYW1lKSkpOworCisJLyogRmV0Y2ggdGhlIGluZGV4IEFNJ3MgQVBJIHN0cnVjdCAqLworCWFt cm91dGluZSA9IEdldEluZGV4QW1Sb3V0aW5lKGFtcmVjLT5hbWhhbmRsZXIpOworCisJLyoKKwkg KiBPdXRwdXQgaW5kZXggZGVmaW5pdGlvbi4gIE5vdGUgdGhlIG91dGVyIHBhcmVucyBtdXN0IGJl IHN1cHBsaWVkIGJ5CisJICogY2FsbGVyLgorCSAqLworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmRlZmluaXRpb25CdWYsICIoIik7CisJZm9yIChrZXlubyA9IDA7IGtleW5vIDwgaWR4cmVjLT5p bmRuYXR0czsga2V5bm8rKykKKwl7CisJCUF0dHJOdW1iZXIJYXR0bnVtID0gaWR4cmVjLT5pbmRr ZXkudmFsdWVzW2tleW5vXTsKKwkJaW50MTYJCW9wdCA9IGluZG9wdGlvbi0+dmFsdWVzW2tleW5v XTsKKwkJT2lkCQkJa2V5Y29sdHlwZTsKKwkJT2lkCQkJa2V5Y29sY29sbGF0aW9uOworCisJCS8q IFByaW50IElOQ0xVREUgdG8gZGl2aWRlIGtleSBhbmQgbm9uLWtleSBhdHRycy4gKi8KKwkJaWYg KGtleW5vID09IGlkeHJlYy0+aW5kbmtleWF0dHMpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmRlZmluaXRpb25CdWYsICIpIElOQ0xVREUgKCIpOworCQl9CisJCWVsc2UKKwkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmRlZmluaXRpb25CdWYsIGtleW5vID09IDAgPyAiIiA6ICIs ICIpOworCisJCWlmIChhdHRudW0gIT0gMCkKKwkJeworCQkJLyogU2ltcGxlIGluZGV4IGNvbHVt biAqLworCQkJY2hhcgkgICAqYXR0bmFtZTsKKwkJCWludDMyCQlrZXljb2x0eXBtb2Q7CisKKwkJ CWF0dG5hbWUgPSBnZXRfYXR0bmFtZShpbmRyZWxpZCwgYXR0bnVtLCBmYWxzZSk7CisJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0aW9uQnVmLCBxdW90ZV9pZGVudGlmaWVyKGF0dG5h bWUpKTsKKwkJCWdldF9hdHR0eXBldHlwbW9kY29sbChpbmRyZWxpZCwgYXR0bnVtLAorCQkJCQkJ CQkgICZrZXljb2x0eXBlLCAma2V5Y29sdHlwbW9kLAorCQkJCQkJCQkgICZrZXljb2xjb2xsYXRp b24pOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogRXhwcmVzc2lvbmFsIGluZGV4ICovCisJCQlO b2RlCSAgICppbmRleGtleTsKKwkJCWNoYXIJICAgKnN0cjsKKworCQkJaWYgKGluZGV4cHJfaXRl bSA9PSBOVUxMKQorCQkJCWVsb2coRVJST1IsICJ0b28gZmV3IGVudHJpZXMgaW4gaW5kZXhwcnMg bGlzdCIpOworCQkJaW5kZXhrZXkgPSAoTm9kZSAqKSBsZmlyc3QoaW5kZXhwcl9pdGVtKTsKKwkJ CWluZGV4cHJfaXRlbSA9IGxuZXh0KGluZGV4cHJzLCBpbmRleHByX2l0ZW0pOworCisJCQkvKiBE ZXBhcnNlICovCisJCQlzdHIgPSBkZXBhcnNlX2V4cHJlc3Npb24oaW5kZXhrZXksIGNvbnRleHQs IGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qIE5lZWQgcGFyZW5zIGlmIGl0J3Mgbm90IGEgYmFyZSBm dW5jdGlvbiBjYWxsICovCisJCQlpZiAoaW5kZXhrZXkgJiYgSXNBKGluZGV4a2V5LCBGdW5jRXhw cikgJiYKKwkJCQkoKEZ1bmNFeHByICopIGluZGV4a2V5KS0+ZnVuY2Zvcm1hdCA9PSBDT0VSQ0Vf RVhQTElDSVRfQ0FMTCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0aW9uQnVm LCBzdHIpOworCQkJZWxzZQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJmRlZmluaXRpb25CdWYsICIo JXMpIiwgc3RyKTsKKworCQkJa2V5Y29sdHlwZSA9IGV4cHJUeXBlKGluZGV4a2V5KTsKKwkJCWtl eWNvbGNvbGxhdGlvbiA9IGV4cHJDb2xsYXRpb24oaW5kZXhrZXkpOworCQl9CisKKwkJLyogUHJp bnQgYWRkaXRpb25hbCBkZWNvcmF0aW9uIGZvciAoc2VsZWN0ZWQpIGtleSBjb2x1bW5zLCBldmVu IGlmIGRlZmF1bHQgKi8KKwkJaWYgKGtleW5vIDwgaWR4cmVjLT5pbmRua2V5YXR0cykKKwkJewor CQkJT2lkIGluZGNvbGwgPSBpbmRjb2xsYXRpb24tPnZhbHVlc1trZXlub107CisJCQlpZiAoT2lk SXNWYWxpZChpbmRjb2xsKSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZkZWZpbml0aW9uQnVmLCAi IENPTExBVEUgJXMiLAorCQkJCQkJCQlnZW5lcmF0ZV9jb2xsYXRpb25fbmFtZSgoaW5kY29sbCkp KTsKKworCQkJLyogQWRkIHRoZSBvcGVyYXRvciBjbGFzcyBuYW1lLCBldmVuIGlmIGRlZmF1bHQg Ki8KKwkJCWdldF9vcGNsYXNzX25hbWUoaW5kY2xhc3MtPnZhbHVlc1trZXlub10sIEludmFsaWRP aWQsICZkZWZpbml0aW9uQnVmKTsKKworCQkJLyogQWRkIG9wdGlvbnMgaWYgcmVsZXZhbnQgKi8K KwkJCWlmIChhbXJvdXRpbmUtPmFtY2Fub3JkZXIpCisJCQl7CisJCQkJLyogSWYgaXQgc3VwcG9y dHMgc29ydCBvcmRlcmluZywgcmVwb3J0IERFU0MgYW5kIE5VTExTIG9wdHMgKi8KKwkJCQlpZiAo b3B0ICYgSU5ET1BUSU9OX0RFU0MpCisJCQkJeworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZkZWZpbml0aW9uQnVmLCAiIERFU0MiKTsKKwkJCQkJLyogTlVMTFMgRklSU1QgaXMgdGhlIGRl ZmF1bHQgaW4gdGhpcyBjYXNlICovCisJCQkJCWlmICghKG9wdCAmIElORE9QVElPTl9OVUxMU19G SVJTVCkpCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0aW9uQnVmLCAiIE5V TExTIExBU1QiKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaWYgKG9wdCAmIElORE9Q VElPTl9OVUxMU19GSVJTVCkKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmRlZmluaXRp b25CdWYsICIgTlVMTFMgRklSU1QiKTsKKwkJCQl9CisJCQl9CisKKwkJCS8qIFhYWCBleGNsdWRl T3BzIHRoaW5neSB3YXMgaGVyZTsgZG8gd2UgbmVlZCBhbnl0aGluZz8gKi8KKwkJfQorCX0KKwlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0aW9uQnVmLCAiKSIpOworCSpkZWZpbml0aW9u ID0gZGVmaW5pdGlvbkJ1Zi5kYXRhOworCisJLyogT3V0cHV0IHJlbG9wdGlvbnMgKi8KKwkqcmVs b3B0aW9ucyA9IGZsYXR0ZW5fcmVsb3B0aW9ucyhpbmRleHJlbGlkKTsKKworCS8qIE91dHB1dCB0 YWJsZXNwYWNlICovCisJeworCQlPaWQJCQl0YmxzcGM7CisKKwkJdGJsc3BjID0gZ2V0X3JlbF90 YWJsZXNwYWNlKGluZGV4cmVsaWQpOworCQlpZiAoT2lkSXNWYWxpZCh0YmxzcGMpKQorCQkJKnRh Ymxlc3BhY2UgPSBwc3RyZHVwKHF1b3RlX2lkZW50aWZpZXIoZ2V0X3RhYmxlc3BhY2VfbmFtZSh0 YmxzcGMpKSk7CisJfQorCisJLyogUmVwb3J0IGluZGV4IHByZWRpY2F0ZSwgaWYgYW55ICovCisJ aWYgKCFoZWFwX2F0dGlzbnVsbChodF9pZHgsIEFudW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVMTCkp CisJeworCQlOb2RlCSAgICpub2RlOworCQlEYXR1bQkJcHJlZERhdHVtOworCQljaGFyCSAgICpw cmVkU3RyaW5nOworCisJCS8qIENvbnZlcnQgdGV4dCBzdHJpbmcgdG8gbm9kZSB0cmVlICovCisJ CXByZWREYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihJTkRFWFJFTElELCBodF9pZHgsCisJCQkJCQkJ CQlBbnVtX3BnX2luZGV4X2luZHByZWQsICZpc251bGwpOworCQlBc3NlcnQoIWlzbnVsbCk7CisJ CXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHByZWREYXR1bSk7CisJCW5vZGUgPSAo Tm9kZSAqKSBzdHJpbmdUb05vZGUocHJlZFN0cmluZyk7CisJCXBmcmVlKHByZWRTdHJpbmcpOwor CisJCS8qIERlcGFyc2UgKi8KKwkJKndoZXJlQ2xhdXNlID0gZGVwYXJzZV9leHByZXNzaW9uKG5v ZGUsIGNvbnRleHQsIGZhbHNlLCBmYWxzZSk7CisJfQorCisJLyogQ2xlYW4gdXAgKi8KKwlSZWxl YXNlU3lzQ2FjaGUoaHRfaWR4KTsKKwlSZWxlYXNlU3lzQ2FjaGUoaHRfaWR4cmVsKTsKKwlSZWxl YXNlU3lzQ2FjaGUoaHRfYW0pOworfQorCiAvKgogICogT2J0YWluIHRoZSBkZXBhcnNlZCBkZWZh dWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4gY29sdW1uIG9mIHRoZSBnaXZlbiB0YWJsZS4KICAqCkBA IC0xOTUwLDYgKzIxODgsMTAyIEBAIGRlcGFyc2VfVGFibGVFbGVtZW50cyhSZWxhdGlvbiByZWxh dGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywgTGlzdCAqZHBjb250ZXh0LAogCXJldHVybiBlbGVt ZW50czsKIH0KIAorLyoKKyAqIERlcGFyc2UgYW4gSW5kZXhTdG10LgorICoKKyAqIEdpdmVuIGFu IGluZGV4IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4g T2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIElm IHRoZSBpbmRleCBjb3JyZXNwb25kcyB0byBhIGNvbnN0cmFpbnQsIE5VTEwgaXMgcmV0dXJuZWQu CisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle3VuaXF1ZX1zIElOREVYICV7Y29u Y3VycmVudGx5fXMgJXtpZl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkgT04KKyAqICV7b25seX1zICV7 dGFibGV9RCBVU0lORyAle2luZGV4X2FtfXMgJXtkZWZpbml0aW9ufXMgJXtudWxsc19ub3RfZGlz dGluY3R9cworICogJXt3aXRofXMgJXt0YWJsZXNwYWNlfXMgJXt3aGVyZV9jbGF1c2V9cworICov CitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0luZGV4U3RtdChPaWQgb2JqZWN0SWQsIE5vZGUg KnBhcnNldHJlZSkKK3sKKwlJbmRleFN0bXQgICpub2RlID0gKEluZGV4U3RtdCAqKSBwYXJzZXRy ZWU7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJUmVsYXRpb24J aWR4cmVsOworCVJlbGF0aW9uCWhlYXByZWw7CisJY2hhcgkgICAqaW5kZXhfYW07CisJY2hhcgkg ICAqZGVmaW5pdGlvbjsKKwljaGFyCSAgICpyZWxvcHRpb25zOworCWNoYXIJICAgKnRhYmxlc3Bh Y2U7CisJY2hhcgkgICAqd2hlcmVDbGF1c2U7CisKKwlpZiAobm9kZS0+cHJpbWFyeSB8fCBub2Rl LT5pc2NvbnN0cmFpbnQpCisJeworCQkvKgorCQkgKiBJbmRleGVzIGZvciBQUklNQVJZIEtFWSBh bmQgb3RoZXIgY29uc3RyYWludHMgYXJlIG91dHB1dAorCQkgKiBzZXBhcmF0ZWx5OyByZXR1cm4g ZW1wdHkgaGVyZS4KKwkJICovCisJCXJldHVybiBOVUxMOworCX0KKworCWlkeHJlbCA9IHJlbGF0 aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJaGVhcHJlbCA9IHJlbGF0aW9u X29wZW4oaWR4cmVsLT5yZF9pbmRleC0+aW5kcmVsaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlw Z19nZXRfaW5kZXhkZWZfZGV0YWlsZWQob2JqZWN0SWQsCisJCQkJCQkJICZpbmRleF9hbSwgJmRl ZmluaXRpb24sICZyZWxvcHRpb25zLAorCQkJCQkJCSAmdGFibGVzcGFjZSwgJndoZXJlQ2xhdXNl KTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgJXt1bmlxdWV9cyBJTkRFWCAle2Nv bmN1cnJlbnRseX1zICV7aWZfbm90X2V4aXN0c31zICV7bmFtZX1JIE9OICV7b25seX1zICV7dGFi bGV9RCBVU0lORyAle2luZGV4X2FtfXMgJXtkZWZpbml0aW9ufXMiLCA4LAorCQkJCQkJICJ1bmlx dWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnVuaXF1ZSA/ICJVTklRVUUiIDogIiIs CisJCQkJCQkgImNvbmN1cnJlbnRseSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+Y29u Y3VycmVudCA/ICJDT05DVVJSRU5UTFkiIDogIiIsCisJCQkJCQkgImlmX25vdF9leGlzdHMiLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPmlmX25vdF9leGlzdHMgPyAiSUYgTk9UIEVYSVNU UyIgOiAiIiwKKwkJCQkJCSAib25seSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+cmVs YXRpb24tPmluaCA/ICIiIDogIk9OTFkiLAorCQkJCQkJICJuYW1lIiwgT2JqVHlwZVN0cmluZywK KwkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpZHhyZWwpLAorCQkJCQkJICJ0YWJsZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKGhlYXByZWwt PnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShoZWFwcmVsKSksCisJCQkJCQkgImluZGV4X2FtIiwgT2JqVHlwZVN0cmluZywgaW5kZXhf YW0sCisJCQkJCQkgImRlZmluaXRpb24iLCBPYmpUeXBlU3RyaW5nLCBkZWZpbml0aW9uKTsKKwor CS8qIG51bGxzX25vdF9kaXN0aW5jdCAqLworCWlmIChub2RlLT5udWxsc19ub3RfZGlzdGluY3Qp CisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJldCwgIk5VTExTIE5PVCBESVNUSU5DVCIpOworCWVs c2UKKwkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcocmV0LCAiTlVMTFMgRElTVElOQ1QiKTsKKworCS8q IHJlbG9wdGlvbnMgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIldJVEgiKTsKKwlpZiAocmVs b3B0aW9ucykKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwgIigle29wdHN9cykiLCAi b3B0cyIsIHJlbG9wdGlvbnMpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmop OworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7d2l0aH1zIiwgdG1wX29iaik7CisKKwkv KiB0YWJsZXNwYWNlICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJUQUJMRVNQQUNFIik7CisJ aWYgKHRhYmxlc3BhY2UpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle3RhYmxl c3BhY2V9cyIsICJ0YWJsZXNwYWNlIiwgdGFibGVzcGFjZSk7CisJZWxzZQorCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wX29iaik7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt0YWJsZXNw YWNlfXMiLCB0bXBfb2JqKTsKKworCS8qIFdIRVJFIGNsYXVzZSAqLworCXRtcF9vYmogPSBuZXdf b2JqdHJlZSgiV0hFUkUiKTsKKwlpZiAod2hlcmVDbGF1c2UpCisJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHRtcF9vYmosICIle3doZXJlfXMiLCAid2hlcmUiLCB3aGVyZUNsYXVzZSk7CisJZWxzZQor CQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0 LCAiJXt3aGVyZV9jbGF1c2V9cyIsIHRtcF9vYmopOworCisJdGFibGVfY2xvc2UoaWR4cmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworCXRhYmxlX2Nsb3NlKGhlYXByZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwlyZXR1cm4gcmV0OworfQorCiAvKgogICogRGVwYXJzZSBhIENyZWF0ZVN0bXQgKENSRUFU RSBUQUJMRSkuCiAgKgpAQCAtMzE2Nyw2ICszNTAxLDcgQEAgZGVwYXJzZV9SZW5hbWVTdG10KE9i amVjdEFkZHJlc3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlKQogCSAqLwogCXN3aXRjaCAobm9k ZS0+cmVuYW1lVHlwZSkKIAl7CisJCWNhc2UgT0JKRUNUX0lOREVYOgogCQljYXNlIE9CSkVDVF9U QUJMRToKIAkJCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihhZGRyZXNzLm9iamVjdElkLCBBY2Nl c3NTaGFyZUxvY2spOwogCQkJc2NoZW1hSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlv bik7CkBAIC0zMjQ5LDYgKzM1ODQsNDAgQEAgZGVwYXJzZV9SZW5hbWVTdG10KE9iamVjdEFkZHJl c3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlKQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBE ZXBhcnNlIGEgQWx0ZXJPYmplY3REZXBlbmRzU3RtdCAoQUxURVIgLi4uIERFUEVORFMgT04gLi4u KS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgSU5ERVggJXtpZGVudGl0eX1EICV7 bm99cyBERVBFTkRTIE9OIEVYVEVOU0lPTiAle25ld25hbWV9SQorICovCitzdGF0aWMgT2JqVHJl ZSAqCitkZXBhcnNlX0FsdGVyRGVwZW5kU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJl ZSkKK3sKKwlBbHRlck9iamVjdERlcGVuZHNTdG10ICpub2RlID0gKEFsdGVyT2JqZWN0RGVwZW5k c1N0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldCA9IE5VTEw7CisKKwlpZiAobm9k ZS0+b2JqZWN0VHlwZSA9PSBPQkpFQ1RfSU5ERVgpCisJeworCQlPYmpUcmVlICAgICpxdWFsaWZp ZWQ7CisJCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihvYmplY3RJZCwgQWNjZXNz U2hhcmVMb2NrKTsKKworCQlxdWFsaWZpZWQgPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVs YXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkgbm9kZS0+cmVsYXRpb24t PnJlbG5hbWUpOworCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsK KworCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgSU5ERVggJXtpZGVudGl0eX1EICV7bm99 cyBERVBFTkRTIE9OIEVYVEVOU0lPTiAle25ld25hbWV9SSIsIDMsCisJCQkJCQkJICJpZGVudGl0 eSIsIE9ialR5cGVPYmplY3QsIHF1YWxpZmllZCwKKwkJCQkJCQkgIm5vIiwgT2JqVHlwZVN0cmlu ZywKKwkJCQkJCQkgbm9kZS0+cmVtb3ZlID8gIk5PIiA6ICIiLAorCQkJCQkJCSAibmV3bmFtZSIs IE9ialR5cGVTdHJpbmcsIHN0clZhbChub2RlLT5leHRuYW1lKSk7CisJfQorCWVsc2UKKwkJZWxv ZyhMT0csICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlIGluIGRlcGFyc2UgY29tbWFuZDogJWQiLAor CQkJIChpbnQpIG5vZGVUYWcocGFyc2V0cmVlKSk7CisKKwlyZXR1cm4gcmV0OworfQorCiAvKgog ICogSGFuZGxlIGRlcGFyc2luZyBvZiBzaW1wbGUgY29tbWFuZHMuCiAgKgpAQCAtMzI3MSw2ICsz NjQwLDkgQEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJ LyogVGhpcyBzd2l0Y2ggbmVlZHMgdG8gaGFuZGxlIGV2ZXJ5dGhpbmcgdGhhdCBQcm9jZXNzVXRp bGl0eVNsb3cgZG9lcyAqLwogCXN3aXRjaCAobm9kZVRhZyhwYXJzZXRyZWUpKQogCXsKKwkJY2Fz ZSBUX0FsdGVyT2JqZWN0RGVwZW5kc1N0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckRlcGVu ZFN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKIAkJY2FzZSBUX0FsdGVyT2JqZWN0U2NoZW1h U3RtdDoKIAkJCXJldHVybiBkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3RtdChjbWQtPmQuc2lt cGxlLmFkZHJlc3MsCiAJCQkJCQkJCQkJCQkgcGFyc2V0cmVlLApAQCAtMzI4Miw2ICszNjU0LDkg QEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJCWNhc2Ug VF9DcmVhdGVTdG10OgogCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU3RtdChvYmplY3RJZCwgcGFy c2V0cmVlKTsKIAorCQljYXNlIFRfSW5kZXhTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfSW5kZXhT dG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCiAJCWNhc2UgVF9SZW5hbWVTdG10OgogCQkJcmV0 dXJuIGRlcGFyc2VfUmVuYW1lU3RtdChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsIHBhcnNldHJlZSk7 CiAKLS0gCjIuMzAuMC53aW5kb3dzLjIKCg== --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0004-DDL-replication-for-index-DDL-commands-2023_04_07-2.patch" Content-Description: 0004-DDL-replication-for-index-DDL-commands-2023_04_07-2.patch Content-Disposition: attachment; filename="0004-DDL-replication-for-index-DDL-commands-2023_04_07-2.patch"; size=79185; creation-date="Fri, 07 Apr 2023 03:17:30 GMT"; modification-date="Fri, 07 Apr 2023 03:22:34 GMT" Content-Transfer-Encoding: base64 RnJvbSAyMGM3NWVkNmE5MmFkN2FjZWI3MDEyYWM5NGFlYjA2NjJkMWE2MjRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUaHUsIDYgQXByIDIwMjMgMjA6MTI6MjAgKzA4MDAKU3ViamVjdDogW1BBVENIIDQv Nl0gRERMIHJlcGxpY2F0aW9uIGZvciBpbmRleCBEREwgY29tbWFuZHMKCi0tLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgICAgfCAgMjkgKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jIHwgIDEzICstCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyAgICB8ICAzMiArLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgfCAgNzkgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMzYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAg ICAgICAgICAgICAgICAgICAgIHwgIDIxICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmggICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNz YWdlLmggICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91 dCAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRp b24ub3V0ICAgIHwgNDIwICsrKysrKysrKy0tLS0tLS0tLS0KIDEzIGZpbGVzIGNoYW5nZWQsIDM5 NyBpbnNlcnRpb25zKCspLCAyNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jCmluZGV4IGQyMDk2MDJlMjguLjFhMzEwNWUwMjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEwMjksNiArMTAyOSw3IEBAIEdldFB1YmxpY2F0aW9uKE9p ZCBwdWJpZCkKIAlwdWItPnB1YmFjdGlvbnMucHViZGVsZXRlID0gcHViZm9ybS0+cHViZGVsZXRl OwogCXB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IHB1YmZvcm0tPnB1YnRydW5jYXRlOwog CXB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBwdWJmb3JtLT5wdWJkZGxfdGFibGU7CisJ cHViLT5wdWJhY3Rpb25zLnB1YmRkbF9pbmRleCA9IHB1YmZvcm0tPnB1YmRkbF9pbmRleDsKIAlw dWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5wdWJ2aWFyb290OwogCiAJUmVsZWFzZVN5c0NhY2hl KHR1cCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDY0NDIzZmYz NWYuLmUzYWFkMWM4ODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBA IC0xMDMsNiArMTAzLDcgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJcHViYWN0aW9ucy0+cHViZGVsZXRlID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJ0 cnVuY2F0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHViZGRsX3RhYmxlID0gZmFsc2U7CisJcHVi YWN0aW9ucy0+cHViZGRsX2luZGV4ID0gZmFsc2U7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290ID0gZmFsc2U7CiAKIAkvKiBQYXJzZSBvcHRpb25zICovCkBAIC0xNzgsNiArMTc5LDcgQEAg cGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkgKiBzaG91 bGQgYmUgcHVibGlzaGVkLgogCQkJICovCiAJCQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSBm YWxzZTsKKwkJCXB1YmFjdGlvbnMtPnB1YmRkbF9pbmRleCA9IGZhbHNlOwogCiAJCQkqZGRsX3R5 cGVfZ2l2ZW4gPSB0cnVlOwogCQkJZGRsX2xldmVsID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKQEAg LTE5NCw2ICsxOTYsOCBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAogCQkJCWlmIChzdHJjbXAocHVibGlzaF9vcHQsICJ0YWJsZSIpID09IDApCiAJCQkJ CXB1YmFjdGlvbnMtPnB1YmRkbF90YWJsZSA9IHRydWU7CisJCQkJZWxzZSBpZiAoc3RyY21wKHB1 Ymxpc2hfb3B0LCAiaW5kZXgiKSA9PSAwKQorCQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfaW5kZXgg PSB0cnVlOwogCQkJCWVsc2UKIAkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQllcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTg1Niw2ICs4NjAsMTUgQEAgQ3JlYXRlRERMUmVwbGlj YUV2ZW50VHJpZ2dlcnMoUHVibGljYXRpb25BY3Rpb25zIHB1YmFjdGlvbnMsIE9pZCBwdWJvaWQp CiAJCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0RST1Bf VEFCTEUpOwogCX0KIAorCWlmIChwdWJhY3Rpb25zLnB1YmRkbF9pbmRleCkKKwl7CisJCXN0YXJ0 X2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoc3RhcnRfY29tbWFuZHMsIENNRFRBR19EUk9QX0lOREVY KTsKKworCQllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChlbmRfY29tbWFuZHMsIENNRFRBR19D UkVBVEVfSU5ERVgpOworCQllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChlbmRfY29tbWFuZHMs IENNRFRBR19BTFRFUl9JTkRFWCk7CisJCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9j b21tYW5kcywgQ01EVEFHX0RST1BfSU5ERVgpOworCX0KKwogCS8qIENyZWF0ZSB0aGUgZGRsX2Nv bW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIgKi8KIAlpZiAoZW5kX2NvbW1hbmRzICE9IE5JTCkKIAkJ Q3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcihQVUJfVFJJR19FVkVOVDEsIGVuZF9jb21tYW5k cywgcHVib2lkKTsKQEAgLTk5Miw2ICsxMDA1LDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUJvb2xHZXREYXR1 bShwdWJhY3Rpb25zLnB1YnRydW5jYXRlKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9w dWJkZGxfdGFibGUgLSAxXSA9CiAJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX3RhYmxl KTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfaW5kZXggLSAxXSA9CisJQm9v bEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX2luZGV4KTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJs aWNhdGlvbl9wdWJ2aWFyb290IC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QpOwogCkBAIC0xMDI5LDcgKzEwNDQsNyBAQCBDcmVhdGVQdWJsaWNhdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJewogCQkJ TGlzdAkgICAqcmVsczsKIAotCQkJaWYgKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQorCQkJaWYg KHB1YmFjdGlvbnMucHViZGRsX3RhYmxlIHx8IHB1YmFjdGlvbnMucHViZGRsX2luZGV4KQogCQkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAogCQkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwi JXNcIiBpZiBEREwgcmVwbGljYXRpb24gaXMgZW5hYmxlZCIsCkBAIC0xMTg4LDcgKzEyMDMsNyBA QCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQl9CiAJfQogCi0JaWYgKGRkbF90eXBlX2dpdmVuICYmIHB1YmFj dGlvbnMucHViZGRsX3RhYmxlKQorCWlmIChkZGxfdHlwZV9naXZlbiAmJiAocHViYWN0aW9ucy5w dWJkZGxfdGFibGUgfHwgcHViYWN0aW9ucy5wdWJkZGxfaW5kZXgpKQogCXsKIAkJaWYgKHJvb3Rf cmVsaWRzID09IE5JTCkKIAkJCXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMo cHViZm9ybS0+b2lkLApAQCAtMTIyMyw3ICsxMjM4LDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlv bnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAlpZiAo ZGRsX3R5cGVfZ2l2ZW4pCiAJewogCQkvKiBSZWNyZWF0ZSB0aGUgZXZlbnQgdHJpZ2dlcnMgaWYg dGhlIGRkbCBvcHRpb24gaXMgY2hhbmdlZC4gKi8KLQkJaWYgKHB1YmZvcm0tPnB1YmRkbF90YWJs ZSAhPSBwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJaWYgKHB1YmZvcm0tPnB1YmRkbF90YWJs ZSAhPSBwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8fAorCQkJcHViZm9ybS0+cHViZGRsX2luZGV4 ICE9IHB1YmFjdGlvbnMucHViZGRsX2luZGV4KQogCQl7CiAJCQlEcm9wRERMUmVwbGljYUV2ZW50 VHJpZ2dlcnMocHViZm9ybS0+b2lkKTsKIAkJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXJz KHB1YmFjdGlvbnMsIHB1YmZvcm0tPm9pZCk7CkBAIC0xMjMxLDYgKzEyNDcsOSBAQCBBbHRlclB1 YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LAogCiAJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF90YWJsZSAtIDFd ID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKTsKIAkJcmVwbGFjZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfdGFibGUgLSAxXSA9IHRydWU7CisKKwkJdmFsdWVzW0Fu dW1fcGdfcHVibGljYXRpb25fcHViZGRsX2luZGV4IC0gMV0gPSBCb29sR2V0RGF0dW0ocHViYWN0 aW9ucy5wdWJkZGxfaW5kZXgpOworCQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRk bF9pbmRleCAtIDFdID0gdHJ1ZTsKIAl9CiAKIAlpZiAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3RfZ2l2ZW4pCkBAIC0xMzM4LDcgKzEzNTcsNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFs dGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCiAJaWYgKHN0bXQtPmFj dGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKLQkJaWYgKHB1YmZvcm0tPnB1YmRkbF90YWJsZSkK KwkJaWYgKHB1YmZvcm0tPnB1YmRkbF90YWJsZSB8fCBwdWJmb3JtLT5wdWJkZGxfaW5kZXgpCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAogCQkJCQllcnJtc2coImNhbm5vdCBhZGQgdGFibGUgdG8gcHVibGljYXRpb24gXCIl c1wiIGlmIERETCByZXBsaWNhdGlvbiBpcyBlbmFibGVkIiwKQEAgLTEzNjIsNyArMTM4MSw3IEBA IEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBU dXBsZSB0dXAsCiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxj OwogCi0JCWlmIChwdWJmb3JtLT5wdWJkZGxfdGFibGUpCisJCWlmIChwdWJmb3JtLT5wdWJkZGxf dGFibGUgfHwgcHViZm9ybS0+cHViZGRsX2luZGV4KQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJZXJybXNnKCJj YW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBpZiBEREwgcmVwbGljYXRpb24g aXMgZW5hYmxlZCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RkbHRyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dl ci5jCmluZGV4IDEyODIzNDBjMmIuLmZiMzVjYzJjN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jCkBAIC04MSw4ICs4MSwxNyBAQCBwdWJsaWNhdGlv bl9kZXBhcnNlX2RkbF9jb21tYW5kX3N0YXJ0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqIG5ldyB0 YWJsZS4KIAkJICovCiAJCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVO VCkKLQkJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgYWRkcmVzcy5vYmplY3RJZCwg RENUX1RhYmxlRHJvcFN0YXJ0LAorCQl7CisJCQlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7 CisKKwkJCWlmIChzdG10LT5yZW1vdmVUeXBlID09IE9CSkVDVF9UQUJMRSkKKwkJCQljbWR0eXBl ID0gRENUX1RhYmxlRHJvcFN0YXJ0OworCQkJZWxzZQorCQkJCWNtZHR5cGUgPSBEQ1RfT2JqZWN0 RHJvcFN0YXJ0OworCisJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIGFkZHJlc3Mu b2JqZWN0SWQsIGNtZHR5cGUsCiAJCQkJCQkJCSBjb21tYW5kLCBzdHJsZW4oY29tbWFuZCkgKyAx KTsKKwkJfQogCiAJCWlmIChyZWxhdGlvbikKIAkJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xv Y2spOwpAQCAtMjI1LDYgKzIzNCw4IEBAIHB1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRf ZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJaWYgKHN0cmNtcChvYmotPm9iamVjdHR5cGUsICJ0 YWJsZSIpID09IDApCiAJCQljbWR0eXBlID0gRENUX1RhYmxlRHJvcEVuZDsKKwkJZWxzZSBpZiAo c3RyY21wKG9iai0+b2JqZWN0dHlwZSwgImluZGV4IikgPT0gMCkKKwkJCWNtZHR5cGUgPSBEQ1Rf T2JqZWN0RHJvcEVuZDsKIAkJZWxzZQogCQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggZjU2YTcxNjU2Ny4uNTMzZTI3ZmIwNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTc1LDkgKzc1LDkg QEAgc3RhdGljIHZvaWQgbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwg Ym9vbCB0cmFuc2FjdGlvbmFsLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBt ZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogc3RhdGljIHZvaWQgZGRsX2NiX3dy YXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKLQkJCQkJ CQkJICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBjb25zdCBjaGFyICpwcmVmaXgsCi0JCQkJCQkJ CSAgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCi0JCQkJCQkJCSAgU2l6 ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCQkJCQkJICAgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJICAgT2lkIHJlbGlkLCBE ZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkgICBTaXplIG1lc3NhZ2Vfc2l6ZSwg Y29uc3QgY2hhciAqbWVzc2FnZSk7CiAKIC8qIHN0cmVhbWluZyBjYWxsYmFja3MgKi8KIHN0YXRp YyB2b2lkIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCkBAIC05NiwxMCArOTYsMTAgQEAgc3RhdGljIHZvaWQgc3RyZWFt X21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRY TiAqdHgKIAkJCQkJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlv bmFsLAogCQkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBj b25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV9kZGxfY2Jfd3JhcHBlcihS ZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAotCQkJCQkJCQkJCSBY TG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAotCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsCi0J CQkJCQkJCQkJIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAotCQkJCQkJ CQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CisJCQkJCQkJCSAg WExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsCisJ CQkJCQkJCSAgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJ CSAgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogc3RhdGljIHZvaWQg c3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJCSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxh dGlvbnNbXSwgUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKTsKIApAQCAtMTI0OCwxMCArMTI0 OCwxMCBAQCBtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAogc3RhdGljIHZvaWQKIGRkbF9jYl93cmFwcGVyKFJlb3JkZXJCdWZm ZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCi0JCQkJCSAgWExvZ1JlY1B0ciBtZXNz YWdlX2xzbiwKLQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJzZWRD b21tYW5kVHlwZSBjbWR0eXBlLAotCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLAotCQkJCQkgIGNv bnN0IGNoYXIgKm1lc3NhZ2UpCisJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJICAg Y29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlw ZSwKKwkJCSAgIFNpemUgbWVzc2FnZV9zaXplLAorCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSkK IHsKIAlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOwog CUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUgc3RhdGU7CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBk ZGxfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAogCiAJLyogZG8gdGhlIGFjdHVhbCB3b3JrOiBjYWxsIGNhbGxiYWNrICovCiAJY3R4LT5jYWxs YmFja3MuZGRsX2NiKGN0eCwgdHhuLCBtZXNzYWdlX2xzbiwgcHJlZml4LCByZWxpZCwgY21kdHlw ZSwKLQkJCQkJCQkJIG1lc3NhZ2Vfc2l6ZSwgbWVzc2FnZSk7CisJCQkJCQkgIG1lc3NhZ2Vfc2l6 ZSwgbWVzc2FnZSk7CiAKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJv cl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CkBAIC0xNjAxLDEwICsxNjAx LDEwIEBAIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAogc3RhdGljIHZvaWQKIHN0cmVhbV9kZGxfY2Jfd3JhcHBl cihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAotCQkJCQkJCSBY TG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAotCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCBy ZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAotCQkJCQkJCSBTaXplIG1lc3NhZ2Vf c2l6ZSwKLQkJCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSkKKwkJCQkJICBYTG9nUmVjUHRyIG1l c3NhZ2VfbHNuLAorCQkJCQkgIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLCBEZXBhcnNl ZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCSAgU2l6ZSBtZXNzYWdlX3NpemUsCisJCQkJCSAg Y29uc3QgY2hhciAqbWVzc2FnZSkKIHsKIAlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHggPSBj YWNoZS0+cHJpdmF0ZV9kYXRhOwogCUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUgc3RhdGU7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA3ZWE5ZmY1 MWVjLi45YTU0Y2JkMTUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKQEAgLTIxOSwxMCArMjE5LDIwIEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0VHhu RGF0YQogLyogTWFwIHVzZWQgdG8gcmVtZW1iZXIgd2hpY2ggcmVsYXRpb24gc2NoZW1hcyB3ZSBz ZW50LiAqLwogc3RhdGljIEhUQUIgKlJlbGF0aW9uU3luY0NhY2hlID0gTlVMTDsKIAorLyogU3Ry dWN0IHRvIGNhY2hlIHRoZSBwdWJsaXNoZWQgRERMLiAqLwordHlwZWRlZiBzdHJ1Y3QgRERMU3lu Y0NhY2hlCit7CisJYm9vbAkJdmFsaWQ7CisJYm9vbAkJcHViaW5kZXg7Cit9IERETFN5bmNDYWNo ZTsKKworc3RhdGljIERETFN5bmNDYWNoZSAqZGRsY2FjaGUgPSBOVUxMOworCiBzdGF0aWMgdm9p ZCBpbml0X3JlbF9zeW5jX2NhY2hlKE1lbW9yeUNvbnRleHQgY2FjaGVjdHgpOwogc3RhdGljIHZv aWQgY2xlYW51cF9yZWxfc3luY19jYWNoZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBpc19jb21t aXQpOwogc3RhdGljIFJlbGF0aW9uU3luY0VudHJ5ICpnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRw dXREYXRhICpkYXRhLAogCQkJCQkJCQkJCQkgUmVsYXRpb24gcmVsYXRpb24pOworc3RhdGljIHZv aWQgYnVpbGRfZGRsX3N5bmNfY2FjaGUoUEdPdXRwdXREYXRhICpkYXRhKTsKIHN0YXRpYyB2b2lk IHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlkKTsKIHN0YXRp YyB2b2lkIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hl aWQsCiAJCQkJCQkJCQkJICB1aW50MzIgaGFzaHZhbHVlKTsKQEAgLTE3NjAsNiArMTc3MCwyNyBA QCBpc19vYmplY3RfcHVibGlzaGVkKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT2lkIG9i amlkKQogCQkJCXJlbGVudHJ5LT5wdWJsaXNoX2FzX3JlbGlkICE9IG9iamlkKQogCQkJCXJldHVy biBmYWxzZTsKIAorCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9JTkRFWDoKKwkJCWJ1aWxkX2Rk bF9zeW5jX2NhY2hlKGRhdGEpOworCisJCQlpZiAoIWRkbGNhY2hlLT5wdWJpbmRleCkKKwkJCQly ZXR1cm4gZmFsc2U7CisKKwkJCS8qIEdldCB0aGUgdGFibGUgT0lEIHRoYXQgdGhlIGluZGV4IGlz IGZvci4gKi8KKwkJCXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKG9iamlkKTsKKwkJ CW9iamlkID0gcmVsYXRpb24tPnJkX2luZGV4LT5pbmRyZWxpZDsKKwkJCVJlbGF0aW9uQ2xvc2Uo cmVsYXRpb24pOworCisJCQkvKiBGaWx0ZXIgdGhlIGluZGV4IERETHMgaWYgdGhlIGluZGV4J3Mg dGFibGUgd2FzIG5vdCBwdWJsaXNoZWQuICovCisJCQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRS ZWxhdGlvbihvYmppZCk7CisJCQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRhLCBy ZWxhdGlvbik7CisJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKworCQkJaWYgKCFyZWxlbnRy eS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfHwKKwkJCQlyZWxlbnRyeS0+cHVibGlzaF9hc19y ZWxpZCAhPSBvYmppZCkKKwkJCQlyZXR1cm4gZmFsc2U7CisKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgogCQkJLyogdW5zdXBwb3J0ZWQgb2JqZWN0cyAqLwpAQCAtMTc4NSwxMiArMTgxNiwxNCBAQCBw Z291dHB1dF9kZGwoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCiAJICogd2UgY2Fubm90IGdldCB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gZnJvbSB0 aGUgY2F0YWxvZywgc28gd2Ugc2tpcCB0aGUKIAkgKiBjaGVjayBmb3IgdGhlbS4KIAkgKi8KLQlp ZiAoY21kdHlwZSAhPSBEQ1RfVGFibGVEcm9wRW5kICYmICFpc19vYmplY3RfcHVibGlzaGVkKGN0 eCwgcmVsaWQpKQorCWlmIChjbWR0eXBlICE9IERDVF9UYWJsZURyb3BFbmQgJiYgY21kdHlwZSAh PSBEQ1RfT2JqZWN0RHJvcEVuZCAmJgorCQkhaXNfb2JqZWN0X3B1Ymxpc2hlZChjdHgsIHJlbGlk KSkKIAkJcmV0dXJuOwogCiAJc3dpdGNoIChjbWR0eXBlKQogCXsKIAkJY2FzZSBEQ1RfVGFibGVE cm9wU3RhcnQ6CisJCWNhc2UgRENUX09iamVjdERyb3BTdGFydDoKIAkJCXsKIAkJCQlNZW1vcnlD b250ZXh0CW9sZDsKIApAQCAtMTgxNCw2ICsxODQ3LDcgQEAgcGdvdXRwdXRfZGRsKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJcmV0dXJuOwog CiAJCWNhc2UgRENUX1RhYmxlRHJvcEVuZDoKKwkJY2FzZSBEQ1RfT2JqZWN0RHJvcEVuZDoKIAkJ CWlmICghbGlzdF9tZW1iZXJfb2lkKHR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzLCByZWxpZCkpCiAJ CQkJcmV0dXJuOwogCkBAIC0xOTM2LDYgKzE5NzAsOSBAQCBwdWJsaWNhdGlvbl9pbnZhbGlkYXRp b25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAkgKiBpcyBj aGVja2VkIGl0IHdpbGwgYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgcHVibGljYXRpb24gc2V0dGlu Z3MuCiAJICovCiAJcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoYXJnLCBjYWNoZWlkLCBo YXNodmFsdWUpOworCisJaWYgKGRkbGNhY2hlICE9IE5VTEwpCisJCWRkbGNhY2hlLT52YWxpZCA9 IGZhbHNlOwogfQogCiAvKgpAQCAtMjIwMyw3ICsyMjQwLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5 KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5zdHJlYW1l ZF90eG5zID0gTklMOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHVi YWN0aW9ucy5wdWJ1cGRhdGUgPQogCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50 cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPQotCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGRs X3RhYmxlID0gZmFsc2U7CisJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBlbnRy eS0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXggPSBmYWxzZTsKIAkJZW50cnktPm5ld19zbG90ID0g TlVMTDsKIAkJZW50cnktPm9sZF9zbG90ID0gTlVMTDsKIAkJbWVtc2V0KGVudHJ5LT5leHByc3Rh dGUsIDAsIHNpemVvZihlbnRyeS0+ZXhwcnN0YXRlKSk7CkBAIC0yMjUwLDYgKzIyODcsNyBAQCBn ZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikK IAkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rp b25zLnB1YnRydW5jYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJs ZSA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXggPSBmYWxzZTsKIAog CQkvKgogCQkgKiBUdXBsZSBzbG90cyBjbGVhbnVwcy4gKFdpbGwgYmUgcmVidWlsdCBsYXRlciBp ZiBuZWVkZWQpLgpAQCAtMjM2NCw2ICsyNDAyLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJZW50cnktPnB1YmFjdGlvbnMu cHViZGVsZXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGU7CiAJCQkJZW50cnktPnB1YmFj dGlvbnMucHVidHJ1bmNhdGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlOwogCQkJCWVu dHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGRsX3Rh YmxlOworCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF9pbmRleCB8PSBwdWItPnB1YmFjdGlv bnMucHViZGRsX2luZGV4OwogCiAJCQkJLyoKIAkJCQkgKiBXZSB3YW50IHRvIHB1Ymxpc2ggdGhl IGNoYW5nZXMgYXMgdGhlIHRvcC1tb3N0IGFuY2VzdG9yCkBAIC0yNDI4LDYgKzI0NjcsNDIgQEAg Z2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24p CiAJcmV0dXJuIGVudHJ5OwogfQogCisvKgorICogVGhpcyBsb29rcyB1cCBhbGwgcHVibGljYXRp b25zIGFuZCBidWlsZCB0aGUgY2FjaGUgYWJvdXQgd2hpY2ggRERMcyB0bworICogcHVibGlzaC4K KyAqLworc3RhdGljIHZvaWQKK2J1aWxkX2RkbF9zeW5jX2NhY2hlKFBHT3V0cHV0RGF0YSAqZGF0 YSkKK3sKKwlMaXN0Q2VsbAkgKmxjOworCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJaWYgKGRk bGNhY2hlID09IE5VTEwpCisJeworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2Fj aGVNZW1vcnlDb250ZXh0KTsKKwkJZGRsY2FjaGUgPSAoRERMU3luY0NhY2hlICopIHBhbGxvYzAo c2l6ZW9mKERETFN5bmNDYWNoZSkpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsK Kwl9CisKKwlpZiAoZGRsY2FjaGUtPnZhbGlkKQorCQlyZXR1cm47CisKKwlkZGxjYWNoZS0+cHVi aW5kZXggPSBmYWxzZTsKKworCXJlbG9hZF9wdWJsaWNhdGlvbnMoZGF0YSk7CisKKwlmb3JlYWNo KGxjLCBkYXRhLT5wdWJsaWNhdGlvbnMpCisJeworCQlQdWJsaWNhdGlvbiAqcHViID0gbGZpcnN0 KGxjKTsKKworCQlkZGxjYWNoZS0+cHViaW5kZXggfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRkbF9p bmRleDsKKwl9CisKKwlkZGxjYWNoZS0+dmFsaWQgPSB0cnVlOworCisJcmV0dXJuOworfQorCiAv KgogICogQ2xlYW51cCBsaXN0IG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBhbmQgdXBkYXRlIHRo ZSBzY2hlbWFfc2VudCBmbGFnLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4 IDkxOThkYTJlYjEuLjEyMjU5YzlkZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpA QCAtNTcyMSw2ICs1NzIxLDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlv biByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlwdWJkZXNjLT5wdWJhY3Rp b25zLnB1YmRlbGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJCXB1YmRlc2MtPnB1YmFjdGlv bnMucHVidHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CiAJCXB1YmRlc2MtPnB1YmFj dGlvbnMucHViZGRsX3RhYmxlIHw9IHB1YmZvcm0tPnB1YmRkbF90YWJsZTsKKwkJcHViZGVzYy0+ cHViYWN0aW9ucy5wdWJkZGxfaW5kZXggfD0gcHViZm9ybS0+cHViZGRsX2luZGV4OwogCiAJCS8q CiAJCSAqIENoZWNrIGlmIGFsbCBjb2x1bW5zIHJlZmVyZW5jZWQgaW4gdGhlIGZpbHRlciBleHBy ZXNzaW9uIGFyZSBwYXJ0CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAzYzNhMzQyNjdmLi5jMzRkMzNiOWExIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKQEAgLTQwNjYsNiArNDA2Niw3IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZl ICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlpbnQJCQlpX3B1YmRlbGV0ZTsKIAlpbnQJ CQlpX3B1YnRydW5jYXRlOwogCWludAkJCWlfcHViZGRsX3RhYmxlOworCWludAkJCWlfcHViZGRs X2luZGV4OwogCWludAkJCWlfcHVidmlhcm9vdDsKIAlpbnQJCQlpLAogCQkJCW50dXBzOwpAQCAt NDA4NSwyNSArNDA4NiwyNSBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpu dW1QdWJsaWNhdGlvbnMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAi U0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVib3du ZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUs IHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBwLnB1YmRkbF90YWJsZSwgcC5wdWJ2aWFyb290 ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAu cHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBwLnB1YmRkbF90YWJsZSwgcC5wdWJkZGxfaW5kZXgs IHAucHVidmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNl IGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwg IgogCQkJCQkJCSAicC5wdWJvd25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHVi aW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIGFz IHAucHViZGRsX3RhYmxlLCBwLnB1YnZpYXJvb3QgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMs IHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZh bHNlIGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBhcyBwLnB1YmRkbF9pbmRleCwgcC5wdWJ2aWFy b290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UgaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTEwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwK IAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJ ICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAu cHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxf dGFibGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAu cHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNl IGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBhcyBwLnB1YmRkbF9pbmRleCwgZmFsc2UgQVMgcHVi dmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNlCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAu b2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHVi YWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBmYWxzZSBB UyBwdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIEFTIHB1YnZpYXJv b3QgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwg cC5wdWJkZWxldGUsIGZhbHNlIEFTIHB1YnRydW5jYXRlLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJs ZSwgZmFsc2UgYXMgcC5wdWJkZGxfaW5kZXgsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgogCQkJCQkJ CSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91 dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CkBAIC00MTIwLDYgKzQxMjEsNyBAQCBn ZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaV9w dWJkZWxldGUgPSBQUWZudW1iZXIocmVzLCAicHViZGVsZXRlIik7CiAJaV9wdWJ0cnVuY2F0ZSA9 IFBRZm51bWJlcihyZXMsICJwdWJ0cnVuY2F0ZSIpOwogCWlfcHViZGRsX3RhYmxlID0gUFFmbnVt YmVyKHJlcywgInB1YmRkbF90YWJsZSIpOworCWlfcHViZGRsX2luZGV4ID0gUFFmbnVtYmVyKHJl cywgInB1YmRkbF9pbmRleCIpOwogCWlfcHVidmlhcm9vdCA9IFBRZm51bWJlcihyZXMsICJwdWJ2 aWFyb290Iik7CiAKIAlwdWJpbmZvID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKFB1YmxpY2F0 aW9uSW5mbykpOwpAQCAtNDE0NSw2ICs0MTQ3LDggQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywg aSwgaV9wdWJ0cnVuY2F0ZSksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHViZGRsX3RhYmxl ID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZGRsX3RhYmxlKSwgInQiKSA9 PSAwKTsKKwkJcHViaW5mb1tpXS5wdWJkZGxfaW5kZXggPQorCQkJKHN0cmNtcChQUWdldHZhbHVl KHJlcywgaSwgaV9wdWJkZGxfaW5kZXgpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YnZp YXJvb3QgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwgInQi KSA9PSAwKTsKIApAQCAtNDIyNiw4ICs0MjMwLDI4IEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZl ICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8pCiAKIAlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiciKTsKIAotCWlmIChwdWJpbmZvLT5wdWJkZGxfdGFibGUpCi0JCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBkZGwgPSAndGFibGUnIik7CisJaWYgKHB1Ymlu Zm8tPnB1YmRkbF90YWJsZSB8fCBwdWJpbmZvLT5wdWJkZGxfaW5kZXgpCisJeworCQlmaXJzdCA9 IHRydWU7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBkZGwgPSAnIik7CisKKwkJ aWYgKHB1YmluZm8tPnB1YmRkbF90YWJsZSkKKwkJeworCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICJ0YWJsZSIpOworCQkJZmlyc3QgPSBmYWxzZTsKKwkJfQorCisJCWlmIChwdWJpbmZv LT5wdWJkZGxfaW5kZXgpCisJCXsKKwkJCWlmICghZmlyc3QpCisJCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsICIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgImlu ZGV4Iik7CisJCQlmaXJzdCA9IGZhbHNlOworCQl9CisKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICInIik7CisJfQogCiAJaWYgKHB1YmluZm8tPnB1YnZpYXJvb3QpCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUi KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCmluZGV4IGJkNWY4ZmI2NjkuLjlhZTZhMzhlMDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApA QCAtNjIxLDYgKzYyMSw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29s CQlwdWJkZWxldGU7CiAJYm9vbAkJcHVidHJ1bmNhdGU7CiAJYm9vbAkJcHViZGRsX3RhYmxlOwor CWJvb2wJCXB1YmRkbF9pbmRleDsKIAlib29sCQlwdWJ2aWFyb290OwogfSBQdWJsaWNhdGlvbklu Zm87CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKaW5kZXggZTk3N2U2ZjQ2NC4uNzA2OGRjMDM4OCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTYx ODMsNyArNjE4Myw3IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlQ UUV4cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1ZXJ5T3B0IG15 b3B0ID0gcHNldC5wb3B0OwotCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10g PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2V9OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10g PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQog CXsKQEAgLTYyMDUsOSArNjIwNSwxMyBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBh dHRlcm4pCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpLAogCQkJCQkgIGdldHRleHRfbm9v cCgiQWxsIHRhYmxlcyIpKTsKIAlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJewogCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJICAiLFxuICBwdWJkZGxfdGFibGUgQVMgXCIl c1wiIiwKLQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIikpOworCQkJCQkJICAiLFxu ICBwdWJkZGxfdGFibGUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJkZGxfaW5kZXggQVMg XCIlc1wiXG4iLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIlRhYmxlIERETHMiKSwKKwkJCQkJCSAg Z2V0dGV4dF9ub29wKCJJbmRleCBERExzIikpOworCX0KIAlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LAogCQkJCQkgICIsXG4gIHB1Ymluc2VydCBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgcHVidXBk YXRlIEFTIFwiJXNcIixcbiIKQEAgLTYzMzksNyArNjM0Myw4IEBAIGRlc2NyaWJlUHVibGljYXRp b25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCSAgIiAgcHViYWxsdGFibGVzIik7CiAJaWYg KGhhc19wdWJkZGwpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCi0JCQkJCQkJICIsIHB1 YmRkbF90YWJsZSIpOworCQkJCQkJCSAiLCBwdWJkZGxfdGFibGUsIHB1YmRkbF9pbmRleCIpOwor CiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKIAkJCQkJCSAiLCAgcHViaW5zZXJ0LCBwdWJ1 cGRhdGUsIHB1YmRlbGV0ZSIpOwogCWlmIChoYXNfcHVidHJ1bmNhdGUpCkBAIC02NDAwLDcgKzY0 MDUsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQlpZiAo aGFzX3B1YnZpYXJvb3QpCiAJCQluY29scysrOwogCQlpZiAoaGFzX3B1YmRkbCkKLQkJCW5jb2xz Kys7CisJCQluY29scyArPSAyOwogCiAJCWluaXRQUUV4cEJ1ZmZlcigmdGl0bGUpOwogCQlwcmlu dGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlB1YmxpY2F0aW9uICVzIiksIHB1Ym5hbWUpOwpAQCAt NjQwOSw3ICs2NDE0LDEwIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiT3duZXIiKSwg dHJ1ZSwgYWxpZ24pOwogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3Ao IkFsbCB0YWJsZXMiKSwgdHJ1ZSwgYWxpZ24pOwogCQlpZiAoaGFzX3B1YmRkbCkKKwkJewogCQkJ cHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIiksIHRy dWUsIGFsaWduKTsKKwkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgi SW5kZXggRERMcyIpLCB0cnVlLCBhbGlnbik7CisJCX0KIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigm Y29udCwgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJs ZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJVcGRhdGVzIiksIHRydWUsIGFsaWduKTsK IAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJEZWxldGVzIiksIHRy dWUsIGFsaWduKTsKQEAgLTY0MjgsNyArNjQzNiwxMCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhj b25zdCBjaGFyICpwYXR0ZXJuKQogCQlpZiAoaGFzX3B1YnZpYXJvb3QpCiAJCQlwcmludFRhYmxl QWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgpLCBmYWxzZSwgZmFsc2UpOwogCQlp ZiAoaGFzX3B1YmRkbCkKKwkJewogCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFs dWUocmVzLCBpLCA5KSwgZmFsc2UsIGZhbHNlKTsKKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250 LCBQUWdldHZhbHVlKHJlcywgaSwgMTApLCBmYWxzZSwgZmFsc2UpOworCQl9CiAKIAkJaWYgKCFw dWJhbGx0YWJsZXMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA3 NGIyOGQ3MzUwLi40Njc3MzFjNjFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5o CkBAIC02Niw2ICs2Niw5IEBAIENBVEFMT0cocGdfcHVibGljYXRpb24sNjEwNCxQdWJsaWNhdGlv blJlbGF0aW9uSWQpCiAKIAkvKiB0cnVlIGlmIHRhYmxlIGRkbHMgYXJlIHB1Ymxpc2hlZCAqLwog CWJvb2wJCXB1YmRkbF90YWJsZTsKKworCS8qIHRydWUgaWYgaW5kZXggZGRscyBhcmUgcHVibGlz aGVkICovCisJYm9vbAkJcHViZGRsX2luZGV4OwogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbjsK IAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtODUsNiArODgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQ dWJsaWNhdGlvbkFjdGlvbnMKIAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJcHVidHJ1bmNhdGU7 CiAJYm9vbAkJcHViZGRsX3RhYmxlOworCWJvb2wJCXB1YmRkbF9pbmRleDsKIH0gUHVibGljYXRp b25BY3Rpb25zOwogCiB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkRlc2MKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2RkbG1lc3NhZ2UuaAppbmRleCA3N2RmNmVhMTFhLi4xYTRhY2E4ZGQ1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oCkBAIC0yNiw3ICsyNiw4IEBAIHR5cGVkZWYgZW51 bSBEZXBhcnNlZENvbW1hbmRUeXBlCiAJRENUX1RhYmxlRHJvcEVuZCwKIAlEQ1RfVGFibGVBbHRl ciwKIAlEQ1RfT2JqZWN0Q3JlYXRlLAotCURDVF9PYmplY3REcm9wCisJRENUX09iamVjdERyb3BT dGFydCwKKwlEQ1RfT2JqZWN0RHJvcEVuZAogfSBEZXBhcnNlZENvbW1hbmRUeXBlOwogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggMWM2ZjMzMDk1Yy4uM2U2ZDI3OTFjOCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CkBAIC02MjIzLDkgKzYyMjMsOSBAQCBMaXN0 IG9mIHNjaGVtYXMKICgwIHJvd3MpCiAKIFxkUnAgIm5vLnN1Y2gucHVibGljYXRpb24iCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotIE5h bWUgfCBPd25lciB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHB1YmxpY2F0aW9ucworIE5hbWUgfCBPd25lciB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQogKDAgcm93cykKIAogXGRScyAibm8uc3VjaC5zdWJzY3JpcHRpb24iCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDdkODY5NzdiMjkuLmVi Y2ZmNDFjMGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRp b24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBA IC0zMCwyMCArMzAsMjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9u cwogTElORSAxOiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAn dHJ1ZScsIHB1Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAg ICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9u cworICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgICB8IGYKKyB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiAoMiByb3dzKQogCiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRl LCBkZWxldGUnKTsKIFxkUnAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAg fCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBm ICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5hbWUg ICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHBpYl9pbnNfdHJ1 bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwg ZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgICB8IGYKICgyIHJvd3MpCiAKIC0tLSBhZGRpbmcgdGFibGVzCkBAIC04 NywxMCArODcsMTAgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tIHNob3VsZCBiZSBh YmxlIHRvIGFkZCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBc ZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVz dHB1Yl90YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTk5LDIwICs5OSwyMCBAQCBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEgZnJvbSAn Rk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJs ZSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxl CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJ bmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgogCiAtLSBzaG91 bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0IgogCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSBGT1IgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCwgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JfdGJsX3NjaGVt YQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hv dWxkIGJlIGFibGUgdG8gYWRkIGEgdGFibGUgb2YgdGhlIHNhbWUgc2NoZW1hIHRvIHRoZSBzY2hl bWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEFERCBU QUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4 IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CkBAIC0xNDcsMTAgKzE0NywxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0g c2hvdWxkIGJlIGFibGUgdG8gZHJvcCB0aGUgdGFibGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yc2NoZW1hIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVz dHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVi X3Rlc3QiCiAKQEAgLTE2MSwxMCArMTYxLDEwIEBAIEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJf bm9wayIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCiAtLSBzaG91bGQgYmUgYWJsZSB0 byBzZXQgdGFibGUgdG8gc2NoZW1hIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVz dHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHVi X25vcGsiCiAKQEAgLTE4NiwxMCArMTg2LDEwIEBAIFB1YmxpY2F0aW9uczoKICAgICAidGVzdHB1 Yl9mb3JhbGx0YWJsZXMiCiAKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxl cwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CkBAIC0yMDEsMTkgKzIwMSwx OSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsK IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7 CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgog ICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKIAog XGRScCsgdGVzdHB1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWI0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgogCkBA IC0yMzQsMTAgKzIzNCwxMCBAQCBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsKIC0t IG9ubHkgcGFyZW50IGlzIGxpc3RlZCBhcyBiZWluZyBpbiBwdWJsaWNhdGlvbiwgbm90IHRoZSBw YXJ0aXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIEFERCBUQUJMRSB0 ZXN0cHViX3BhcnRlZDsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl czoKICAgICAicHVibGljLnRlc3RwdWJfcGFydGVkIgogCkBAIC0yNTIsMTAgKzI1MiwxMCBAQCBB TFRFUiBUQUJMRSB0ZXN0cHViX3BhcnRlZCBERVRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcGFydGVk MTsKIFVQREFURSB0ZXN0cHViX3BhcnRlZDEgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JwYXJ0ZWQgU0VUIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUp OwogXGRScCsgdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI4NCwxMCArMjg0LDEwIEBAIFNFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgVEFC TEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDIgV0hFUkUgKGMgPD4gJ3Rlc3QnIEFO RCBkIDwgNSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Jm X3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8PiAndGVzdCc6 OnRleHQpIEFORCAoZCA8IDUpKQpAQCAtMzAwLDEwICszMDAsMTAgQEAgVGFibGVzOgogCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChl ID4gMTAwMCBBTkQgZSA8IDIwMDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJw dWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVS RSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMxOSwxMCArMzE5LDEwIEBA IFB1YmxpY2F0aW9uczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0 ZXN0cHViX3JmX3RibDI7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+ IDEwMDApIEFORCAoZSA8IDIwMDApKQpAQCAtMzMwLDEwICszMzAsMTAgQEAgVGFibGVzOgogLS0g cmVtb3ZlIHRlc3RwdWJfcmZfdGJsMSBhbmQgYWRkIHRlc3RwdWJfcmZfdGJsMyBhZ2FpbiAoYW5v dGhlciBXSEVSRSBleHByZXNzaW9uKQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRB QkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA+IDMwMCBBTkQgZSA8IDUwMCk7CiBcZFJwKyB0 ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu ZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgo ZSA+IDMwMCkgQU5EIChlIDwgNTAwKSkKIApAQCAtMzY2LDEwICszNjYsMTAgQEAgU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3lu dGF4MSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCBPTkxZIHRlc3RwdWJfcmZfdGJsMyBXSEVS RSAoZSA8IDk5OSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX3N5bnRheDEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAi cHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hF UkUgKGUgPCA5OTkpCkBAIC0zNzksMTAgKzM3OSwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyIEZPUiBUQUJM RSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUgV0hF UkUgKGggPCA5OTkpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogXGRScCsgdGVzdHB1Yl9zeW50YXgyCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHVi X3JmX3RibDUiIFdIRVJFIChoIDwgOTk5KQpAQCAtNDk3LDEwICs0OTcsMTAgQEAgQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1h MjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHRlc3Rw dWJfcmZfc2NoZW1hMiwgVEFCTEUgdGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiBX SEVSRSAoaSA8IDk5KTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHVi NgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjYKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjYKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXM6CiAgICAgInRlc3RwdWJfcmZfc2NoZW1hMi50ZXN0cHViX3JmX3RibDYiIFdI RVJFIChpIDwgOTkpCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAtNzE0LDEwICs3MTQsMTAgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIFdJVEggKHB1Ymxpc2ggPSAnaW5z ZXJ0LCB0cnVuY2F0ZScpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEpOwkJLS0g b2sKIFxkUnArIHRlc3RwdWJfdGFibGVfaW5zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfdGFibGVfaW5zCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX3RhYmxlX2lucworICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi bGljLnRlc3RwdWJfdGJsNSIgKGEpCiAKQEAgLTg5MSwxMCArODkxLDEwIEBAIENSRUFURSBUQUJM RSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEgaW50LCBiIGludCwgYyBpbnQsIFBSSU1BUlkg S0VZIChhLGMpKTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyBSRVBMSUNB IElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVyc19wa2V5OwogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMgQUREIFRBQkxFIHRlc3RwdWJfdGJs X2JvdGhfZmlsdGVycyAoYSxjKSBXSEVSRSAoYyAhPSAxKTsKIFxkUnArIHRlc3RwdWJfYm90aF9m aWx0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2JvdGhfZmlsdGVycwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Jv dGhfZmlsdGVycworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsX2Jv dGhfZmlsdGVycyIgKGEsIGMpIFdIRVJFIChjIDw+IDEpCiAKQEAgLTEwOTksMTAgKzEwOTksMTAg QEAgRVJST1I6ICByZWxhdGlvbiAidGVzdHB1Yl90YmwxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBw dWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YmwKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRibCBGT1IgVEFCTEUgdGVzdHB1Yl90YmwxOwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1 Yl9mb3J0YmwiIGFscmVhZHkgZXhpc3RzCiBcZFJwKyB0ZXN0cHViX2ZvcnRibAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwK LSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAgICAicHVibGljLnRlc3RwdWJf dGJsMSIKQEAgLTExNDAsMTAgKzExNDAsMTAgQEAgUHVibGljYXRpb25zOgogICAgICJ0ZXN0cHVi X2ZvcnRibCIKIAogXGRScCsgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKQEAgLTEy MjEsMTAgKzEyMjEsMTAgQEAgUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uIEZS T00gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIERST1AgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7 CiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMTsKIFxkUnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZh dWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0CisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwg ZgogKDEgcm93KQogCiAtLSBmYWlsIC0gbXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbgpAQCAt MTIzNCwyMCArMTIzNCwyMCBAQCBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24g dGVzdHB1Yl9kZWZhdWx0CiBSRVNFVCBST0xFOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9k ZWZhdWx0IFJFTkFNRSBUTyB0ZXN0cHViX2ZvbzsKIFxkUnAgdGVzdHB1Yl9mb28KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0 aW9ucwotICAgIE5hbWUgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9mb28gfCByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICBOYW1lICAgICB8ICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXgg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHB1Yl9mb28gfCByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBi YWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv byBSRU5BTUUgVE8gdGVzdHB1Yl9kZWZhdWx0OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9k ZWZhdWx0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBcZFJwIHRlc3RwdWJf ZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1 Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMiB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2YgcHVibGljYXRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhZGRpbmcgc2NoZW1h cyBhbmQgdGFibGVzCkBAIC0xMjYzLDE5ICsxMjYzLDE5IEBAIENSRUFURSBUQUJMRSAiQ1VSUkVO VF9TQ0hFTUEiLiJDVVJSRU5UX1NDSEVNQSIoaWQgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IElu ZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QxLCBwdWJfdGVzdDIsIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIy X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJ bmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJw dWJfdGVzdDIiCkBAIC0xMjg5LDQ0ICsxMjg5LDQ0IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViNl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgIkNVUlJFTlRfU0NIRU1BIiwgQ1VS CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFCTEUgIkNVUlJFTlRf U0NIRU1BIi4iQ1VSUkVOVF9TQ0hFTUEiOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxk UnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoK ICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogCiBcZFJwKyB0ZXN0cHVi NV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWI1X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJF TlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWI2X2ZvcnNjaGVtYQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2X2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjZfZm9yc2NoZW1hCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRl eCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEiCiAgICAg InB1YmxpYyIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAgLTEzNjAsMTAgKzEzNjAsMTAg QEAgRVJST1I6ICBzY2hlbWEgInRlc3RwdWJfdmlldyIgZG9lcyBub3QgZXhpc3QKIC0tIGRyb3Bw aW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJsaWNhdGlvbgog RFJPUCBTQ0hFTUEgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2No ZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0 MiIKQEAgLTEzNzEsMjAgKzEzNzEsMjAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbmFt aW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJsaWNhdGlvbgog QUxURVIgU0NIRU1BIHB1Yl90ZXN0MSBSRU5BTUUgdG8gcHViX3Rlc3QxX3JlbmFtZWQ7CiBcZFJw KyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgInB1Yl90ZXN0MV9yZW5hbWVkIgogICAgICJwdWJfdGVzdDIiCiAKIEFMVEVSIFNDSEVNQSBw dWJfdGVzdDFfcmVuYW1lZCBSRU5BTUUgdG8gcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjJfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEi CiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzOTIsMTAgKzEzOTIsMTAgQEAgVGFibGVzIGZyb20gc2No ZW1hczoKIC0tIGFsdGVyIHB1YmxpY2F0aW9uIGFkZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJw KyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQwNCwxMCArMTQwNCwxMCBAQCBU YWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1h IEFERCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVt YSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2Zv cnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3Qx IgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDE2LDEwICsxNDE2LDEwIEBAIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QxOwogRVJST1I6ICBzY2hlbWEgInB1Yl90ZXN0MSIgaXMgYWxyZWFk eSBtZW1iZXIgb2YgcHVibGljYXRpb24gInRlc3RwdWIxX2ZvcnNjaGVtYSIKIFxkUnArIHRlc3Rw dWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVi X3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDI3LDEwICsxNDI3LDEwIEBAIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBkcm9wIHNjaGVtYQogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTQzOCwxMCArMTQzOCwxMCBAQCBUYWJsZXMg ZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1Ag VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBFUlJPUjogIHRhYmxlcyBmcm9tIHNjaGVtYSAi cHViX3Rlc3QyIiBhcmUgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCiBcZFJwKyB0ZXN0cHVi MV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90 ZXN0MSIKIApAQCAtMTQ0OSwyOSArMTQ0OSwyOSBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBu b25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEi IGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogLS0gZHJvcCBhbGwgc2NoZW1h cwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKICgx IHJvdykKIAogLS0gYWx0ZXIgcHVibGljYXRpb24gc2V0IG11bHRpcGxlIHNjaGVtYQogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MSwgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAg LTE0ODAsMTAgKzE0ODAsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRf c2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4 aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQ5MiwxMCArMTQ5 MiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVtb3ZpbmcgdGhlIGR1cGxpY2F0ZSBz Y2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAt MTU3NCwxOCArMTU3NCwxOCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQog CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE1OTUsMjAgKzE1OTUsMjAg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgVEEKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlX2ZvcnNjaGVtYSBGT1IgVEFCTEUgcHViX3Rlc3QyLnRibDEsIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QxOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJf Zm9yc2NoZW1hX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi X3Rlc3QyLnRibDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIFxk UnArIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl czoKICAgICAicHViX3Rlc3QyLnRibDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgotLSAKMi4zMC4w LndpbmRvd3MuMgoK --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0006-Deparser-and-DDL-replication-for-the-rest-2023_04_07-2.patch" Content-Description: 0006-Deparser-and-DDL-replication-for-the-rest-2023_04_07-2.patch Content-Disposition: attachment; filename="0006-Deparser-and-DDL-replication-for-the-rest-2023_04_07-2.patch"; size=387820; creation-date="Fri, 07 Apr 2023 03:17:30 GMT"; modification-date="Fri, 07 Apr 2023 03:22:35 GMT" Content-Transfer-Encoding: base64 RnJvbSBiMDcyNDgyZDFlYmFmYmM2ZDk5ZWJkMTEwMDFmMWE3YzY2Mjk2NDg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUaHUsIDYgQXByIDIwMjMgMjA6MzM6MDIgKzA4MDAKU3ViamVjdDogW1BBVENIIDYv Nl0gRGVwYXJzZXIgYW5kIERETCByZXBsaWNhdGlvbiBmb3IgdGhlIHJlc3QgY29tbWFuZHMuCgot LS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgICAgICAgIHwgICAgNSAr LQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgfCAgMjExICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jICAgICAgICAgICAgICAgICB8ICAgIDkgKy0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgIHwgICAgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgICAgICAgICB8ICAgMjEgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMgICAgICAgICAgIHwgNjY0MSArKysrKysr KysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyAgICAgICAg IHwgICAzNCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICB8 ICAgNjMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgICAgICAgICAgICAgIHwg ICAgNiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYyB8ICAg ODggKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgIHwgICAy MCArLQogc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyAgICAgICAgICAgICAgICAgICAgfCAgIDEw ICstCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgICAgICB8ICAgIDQg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgICAgICAgICAgICAgIHwgICA1MSAr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICB8ICAyOTMgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgIHwgICAgMSArCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMv YmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgIHwgICAgNCArCiBzcmMvaW5j bHVkZS9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmggICAgICAgICB8ICAgIDMgKy0KIHNyYy9pbmNs dWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVk ZS90Y29wL2NtZHRhZy5oICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRl L3Rjb3AvZGRsX2RlcGFyc2UuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS90 Y29wL2RlcGFyc2VfdXRpbGl0eS5oICAgICAgICAgICB8ICAgIDggKwogc3JjL2luY2x1ZGUvdXRp bHMvYWNsLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3V0aWxz L2FjbGNoa19pbnRlcm5hbC5oICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9i dWlsdGlucy5oICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVs ZXV0aWxzLmggICAgICAgICAgICAgICAgfCAgIDEwICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQgICAgICAgICAgIHwgICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQgICAgfCAgNDIwICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N1YnNjcmlwdGlvbi5vdXQgICB8ICAxNDQgKy0KIDMyIGZpbGVzIGNoYW5nZWQsIDc0NDcgaW5z ZXJ0aW9ucygrKSwgNjUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9k ZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNv ZGluZy5jCmluZGV4IDc2M2Q1YzAwN2YuLmRhNWI0MWRmNTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv dGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5n L3Rlc3RfZGVjb2RpbmcuYwpAQCAtNzc0LDkgKzc3NCwxMSBAQCBwZ19kZWNvZGVfZGRsX21lc3Nh Z2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJ CWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBTaW1wbGUsICIpOwogCQlicmVh azsKIAljYXNlIERDVF9UYWJsZURyb3BTdGFydDoKKwljYXNlIERDVF9PYmplY3REcm9wU3RhcnQ6 CiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wIHN0YXJ0LCAiKTsK IAkJYnJlYWs7CiAJY2FzZSBEQ1RfVGFibGVEcm9wRW5kOgorCWNhc2UgRENUX09iamVjdERyb3BF bmQ6CiAJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wIGVuZCwgIik7 CiAJCWJyZWFrOwogCWNhc2UgRENUX1RhYmxlQWx0ZXI6CkBAIC03ODUsOSArNzg3LDYgQEAgcGdf ZGVjb2RlX2RkbF9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAogCWNhc2UgRENUX09iamVjdENyZWF0ZToKIAkJYXBwZW5kU3RyaW5nSW5m byhjdHgtPm91dCwgImNtZHR5cGU6IENyZWF0ZSwgIik7CiAJCWJyZWFrOwotCWNhc2UgRENUX09i amVjdERyb3A6Ci0JCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wLCAi KTsKLQkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNt ZHR5cGU6IEludmFsaWQsICIpOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9s b2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCmluZGV4IDc1YjM5NTIyMmIuLjEwYjNkNWY1ZjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbApAQCAtMTQ4MCw2ICsxNDgwLDExIEBAIHRlc3Rfc3ViPSMgU0VMRUNU ICogRlJPTSB0MSBPUkRFUiBCWSBpZDsKICAgPC9wYXJhPgogCiAgIDxpdGVtaXplZGxpc3Q+Cisg ICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgIGFsbDogdGhpcyBvcHRpb24gZW5h YmxlcyByZXBsaWNhdGlvbiBvZiBhbGwgc3VwcG9ydGVkIERETCBjb21tYW5kcy4KKyAgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgogICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAg ICAgICB0YWJsZTogdGhpcyBvcHRpb24gZW5hYmxlcyByZXBsaWNhdGlvbiBvZiBUYWJsZSBEREwg Y29tbWFuZHMsCkBAIC0xNTUwLDIyICsxNTU1LDIyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHVi IFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICA8dGJvZHk+CiAgICAgICAgPHJvdz4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBBR0dSRUdBVEU8L2xpdGVyYWw+ PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xp dGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAg ICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+QUxURVIgQ0FTVDwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBDT0xMQVRJT048L2xpdGVyYWw+ PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xp dGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAg ICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+QUxURVIgQ09OVkVSU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K QEAgLTE1NzUsMTIgKzE1ODAsMTIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwg PSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIERFRkFVTFQgUFJJVklMRUdFUzwvbGl0ZXJhbD48 L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5BTFRFUiBET01BSU48L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0x NTkwLDIyICsxNTk1LDIyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3Rh YmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBFWFRFTlNJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAg ICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgRk9S RUlHTiBEQVRBIFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgRk9SRUlHTiBUQUJMRTwvbGl0 ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5BTFRFUiBGVU5DVElPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KQEAgLTE2MTUsNyArMTYyMCw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRs ID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBMQU5HVUFHRTwvbGl0ZXJhbD48L2VudHJ5Pgot ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2Vu dHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KQEAgLTE2MjUsMzIgKzE2MzAsMzIgQEAgQUxURVIgUFVCTElDQVRJT04g bXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE1BVEVSSUFMSVpFRCBW SUVXPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9QRVJBVE9SPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9Q RVJBVE9SIENMQVNTPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9QRVJBVE9SIEZBTUlMWTwvbGl0ZXJh bD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAg ICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5BTFRFUiBQT0xJQ1k8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgUFJPQ0VEVVJFPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMTY2NSwzMiArMTY3MCwzMiBAQCBBTFRF UiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIg Uk9VVElORTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBSVUxFUjwvbGl0ZXJhbD48L2VudHJ5PgotICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBT Q0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU0VRVUVOQ0U8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIg U0VSVkVSPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFNUQVRJU1RJQ1M8L2xpdGVyYWw+PC9lbnRyeT4K LSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9l bnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93 PgogICAgICAgIDxyb3c+CkBAIC0xNzE1LDIyICsxNzIwLDIyIEBAIEFMVEVSIFBVQkxJQ0FUSU9O IG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBURVhUIFNFQVJDSCBD T05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlk8 L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBTRUFSQ0ggUEFSU0VSPC9saXRlcmFsPjwvZW50cnk+ Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwv ZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFM VEVSIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgpAQCAtMTc0MCwyMiArMTc0NSwyMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRk bCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5Pgot ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2Vu dHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRF UiBUWVBFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFVTRVIgTUFQUElORzwvbGl0ZXJhbD48L2VudHJ5 PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5B TFRFUiBWSUVXPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMTgwMCw3ICsx ODA1LDcgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAg ICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNPTU1FTlQ8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0xODI1 LDMyICsxODMwLDMyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxl Jyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgQUNDRVNTIE1FVEhPRDwvbGl0ZXJhbD48L2VudHJ5PgotICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUg QUdHUkVHQVRFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBDQVNUPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFU RSBDT0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIENPTlNUUkFJTlQ8L2xpdGVyYWw+PC9l bnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVy YWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAg IDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIENPTlZFUlNJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBA IC0xODYwLDcgKzE4NjUsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0 YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIERPTUFJTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAg ICAgPHJvdz4KQEAgLTE4NzAsMjIgKzE4NzUsMjIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIg U0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBFWFRFTlNJT048L2xpdGVyYWw+ PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xp dGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAg ICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q1JFQVRFIEZPUkVJR04gREFUQSBXUkFQUEVSPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBG T1JFSUdOIFRBQkxFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBGVU5DVElPTjwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTE4OTUsMzcgKzE5MDAsMzcgQEAgQUxURVIgUFVCTElD QVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8 cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBMQU5HVUFH RTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgTUFURVJJQUxJWkVEIFZJRVc8L2xpdGVyYWw+PC9lbnRy eT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+ PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwv cm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ Q1JFQVRFIE9QRVJBVE9SPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBPUEVSQVRPUiBDTEFTUzwvbGl0 ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5DUkVBVEUgT1BFUkFUT1IgRkFNSUxZPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBQ T0xJQ1k8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFBST0NFRFVSRTwvbGl0ZXJhbD48L2VudHJ5Pgot ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2Vu dHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KQEAgLTE5NDAsMjcgKzE5NDUsMjcgQEAgQUxURVIgUFVCTElDQVRJT04g bXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBSVUxFPC9saXRlcmFs PjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9s aXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAg ICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNSRUFURSBTQ0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFNFUVVFTkNFPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkNSRUFURSBTRVJWRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFNUQVRJU1RJQ1M8 L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0xOTg1LDQ3ICsxOTkwLDQ3IEBA IEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9y b3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5D UkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAg ICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVEVY VCBTRUFSQ0ggRElDVElPTkFSWTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVEVYVCBTRUFSQ0ggUEFS U0VSPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBURVhUIFNFQVJDSCBURU1QTEFURTwvbGl0ZXJhbD48 L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5DUkVBVEUgVFJBTlNGT1JNPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBUUklHR0VSPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkNSRUFURSBUWVBFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBVU0VSIE1BUFBJTkc8 L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CkBAIC0yMDU1LDcgKzIwNjAsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRk bCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RElTQ0FSRCBBTEw8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CkBAIC0yMDgwLDMyICsyMDg1LDMyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15 cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIEFDQ0VTUyBNRVRIT0Q8L2xp dGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Plg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RFJPUCBBR0dSRUdBVEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBDQVNUPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkRST1AgQ09MTEFUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQ09OU1RSQUlOVDwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIENPTlZFUlNJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAg IDxyb3c+CkBAIC0yMTE1LDcgKzIxMjAsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQg KGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBET01BSU48L2xpdGVyYWw+PC9lbnRyeT4K LSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9l bnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93 PgogICAgICAgIDxyb3c+CkBAIC0yMTI1LDIyICsyMTMwLDIyIEBAIEFMVEVSIFBVQkxJQ0FUSU9O IG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIEVYVEVOU0lPTjwvbGl0 ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5EUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1Ag Rk9SRUlHTiBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIEZVTkNUSU9OPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjE1MCwyNyArMjE1NSwyNyBAQCBBTFRFUiBQVUJMSUNB VElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBMQU5HVUFHRTwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIE1BVEVSSUFMSVpFRCBWSUVXPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1Ag T1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBPUEVSQVRPUiBDTEFTUzwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5EUk9QIE9QRVJBVE9SIEZBTUlMWTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K QEAgLTIxODAsMTIgKzIxODUsMTIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwg PSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgUE9MSUNZPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgUFJP Q0VEVVJFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjIwMCwzMiArMjIw NSwzMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAg ICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+RFJPUCBST1VUSU5FPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgUlVMRTwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5EUk9QIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFNFUVVFTkNFPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkRST1AgU0VSVkVSPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgU1RBVElTVElDUzwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTIyNDUsNDcgKzIyNTAsNDcgQEAgQUxURVIgUFVCTElD QVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8 cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVEVYVCBTRUFS Q0ggQ09ORklHVVJBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIERJQ1RJT05B Ulk8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBURVhUIFNFQVJDSCBQQVJTRVI8L2xpdGVyYWw+PC9lbnRy eT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+ PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwv cm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ RFJPUCBURVhUIFNFQVJDSCBURU1QTEFURTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRSQU5TRk9STTwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIFRSSUdHRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBUWVBFPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkRST1AgVVNFUiBNQVBQSU5HPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8 cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVklFVzwvbGl0 ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTIzMDUsNyArMjMxMCw3IEBAIEFMVEVS IFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5HUkFOVDwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTIzMTUsNyArMjMyMCw3IEBAIEFM VEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5JTVBP UlQgRk9SRUlHTiBTQ0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0y MzcwLDcgKzIzNzUsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJs ZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+UkVGUkVTSCBNQVRFUklBTElaRUQgVklFVzwvbGl0ZXJhbD48L2VudHJ5 PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAgICAgICAgPHJvdz4KQEAgLTIzOTAsNyArMjM5NSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9O IG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5SRVZPS0U8L2xpdGVyYWw+PC9l bnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVy YWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAg IDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0yNDE1LDcgKzI0MjAsNyBAQCBBTFRFUiBQVUJMSUNB VElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+U0VDVVJJVFkgTEFCRUw8 L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCA0 NWNkY2QzZGM2Li40YjVhM2JhOTUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2Fj bGNoay5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKQEAgLTEyOSw3ICsxMjks NiBAQCBzdGF0aWMgdm9pZCBleHBhbmRfYWxsX2NvbF9wcml2aWxlZ2VzKE9pZCB0YWJsZV9vaWQs IEZvcm1fcGdfY2xhc3MgY2xhc3NGb3JtLAogCQkJCQkJCQkJICBBY2xNb2RlICpjb2xfcHJpdmls ZWdlcywKIAkJCQkJCQkJCSAgaW50IG51bV9jb2xfcHJpdmlsZWdlcyk7CiBzdGF0aWMgQWNsTW9k ZSBzdHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0IGNoYXIgKnByaXZuYW1lKTsKLXN0YXRpYyBjb25z dCBjaGFyICpwcml2aWxlZ2VfdG9fc3RyaW5nKEFjbE1vZGUgcHJpdmlsZWdlKTsKIHN0YXRpYyBB Y2xNb2RlIHJlc3RyaWN0X2FuZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2 YWlsX2dvcHRpb25zLAogCQkJCQkJCQkJCWJvb2wgYWxsX3ByaXZzLCBBY2xNb2RlIHByaXZpbGVn ZXMsCiAJCQkJCQkJCQkJT2lkIG9iamVjdElkLCBPaWQgZ3JhbnRvcklkLApAQCAtMzg1LDExICsz ODQsMTAgQEAgRXhlY3V0ZUdyYW50U3RtdChHcmFudFN0bXQgKnN0bXQpCiAJTGlzdENlbGwgICAq Y2VsbDsKIAljb25zdCBjaGFyICplcnJvcm1zZzsKIAlBY2xNb2RlCQlhbGxfcHJpdmlsZWdlczsK KwlPaWQJCQlncmFudG9yID0gSW52YWxpZE9pZDsKIAogCWlmIChzdG10LT5ncmFudG9yKQogCXsK LQkJT2lkCQkJZ3JhbnRvcjsKLQogCQlncmFudG9yID0gZ2V0X3JvbGVzcGVjX29pZChzdG10LT5n cmFudG9yLCBmYWxzZSk7CiAKIAkJLyoKQEAgLTQwOCw2ICs0MDYsOSBAQCBFeGVjdXRlR3JhbnRT dG10KEdyYW50U3RtdCAqc3RtdCkKIAlpc3RtdC5pc19ncmFudCA9IHN0bXQtPmlzX2dyYW50Owog CWlzdG10Lm9ianR5cGUgPSBzdG10LT5vYmp0eXBlOwogCisJLyogQ29weSB0aGUgZ3JhbnRvciBp ZCBuZWVkZWQgZm9yIERETCBkZXBhcnNpbmcgb2YgR3JhbnQgKi8KKwlpc3RtdC5ncmFudG9yX3Vp ZCA9IGdyYW50b3I7CisKIAkvKiBDb2xsZWN0IHRoZSBPSURzIG9mIHRoZSB0YXJnZXQgb2JqZWN0 cyAqLwogCXN3aXRjaCAoc3RtdC0+dGFyZ3R5cGUpCiAJewpAQCAtMjYyMiw3ICsyNjIzLDcgQEAg c3RyaW5nX3RvX3ByaXZpbGVnZShjb25zdCBjaGFyICpwcml2bmFtZSkKIAlyZXR1cm4gMDsJCQkJ CS8qIGFwcGVhc2UgY29tcGlsZXIgKi8KIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKgorY29uc3Qg Y2hhciAqCiBwcml2aWxlZ2VfdG9fc3RyaW5nKEFjbE1vZGUgcHJpdmlsZWdlKQogewogCXN3aXRj aCAocHJpdmlsZWdlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDFhMzEw NWUwMjUuLmJiOGVlNjA1YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAg LTEwMjgsNiArMTAyOCw3IEBAIEdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCkKIAlwdWItPnB1YmFj dGlvbnMucHVidXBkYXRlID0gcHViZm9ybS0+cHVidXBkYXRlOwogCXB1Yi0+cHViYWN0aW9ucy5w dWJkZWxldGUgPSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YnRydW5j YXRlID0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF9hbGwg PSBwdWJmb3JtLT5wdWJkZGxfYWxsOwogCXB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBw dWJmb3JtLT5wdWJkZGxfdGFibGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF9pbmRleCA9IHB1 YmZvcm0tPnB1YmRkbF9pbmRleDsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5wdWJ2aWFy b290OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCmluZGV4IGM5MWZlNjZkOWIuLjI4 NWE1ZGNmOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKQEAgLTUwLDkgKzUw LDIxIEBAIHR5cGVkZWYgc3RydWN0CiAKIC8qCiAgKiBDUkVBVEUgQ09MTEFUSU9OCisgKgorICog cHN0YXRlOiBwYXJzZSBzdGF0ZS4KKyAqIG5hbWVzOiBxdWFsaWZpZWQgY29sbGF0aW9uIG5hbWVz IChhIGxpc3Qgb2YgU3RyaW5nKS4KKyAqIHBhcmFtZXRlcnM6IGNvbGxhdGlvbiBhdHRyaWJ1dGVz IChhIGxpc3Qgb2YgRGVmRWxlbSkuCisgKiBpZl9ub3RfZXhpc3RzOiBpZiB0cnVlLCBkb24ndCBm YWlsIG9uIGR1cGxpY2F0ZSBuYW1lLCBqdXN0IHByaW50IGEgbm90aWNlCisgKiBhbmQgcmV0dXJu IEludmFsaWRPaWQuCisgKiBmcm9tX2V4aXN0aW5nX2NvbGxpZDogb3V0cHV0IGFyZ3VtZW50IHdo aWNoLCBpZiBub3QgTlVMTCwgaXMgc2V0IHRvIHRoZQorICogYWRkcmVzcyBvZiBleGlzdGluZyBj b2xsYXRpb24gdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgaW4gY2FzZSBvZgorICogQ1JFQVRFIENP TExBVElPTiBhbnlfbmFtZSBGUk9NIGV4aXN0aW5nX2NvbGxhdGlvbi4KKyAqCisgKiBJZiBzdWNj ZXNzZnVsLCByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXcgY29sbGF0aW9uLgogICovCiBP YmplY3RBZGRyZXNzCi1EZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpu YW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZXhpc3RzKQorRGVmaW5lQ29sbGF0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsCisJ CQkJYm9vbCBpZl9ub3RfZXhpc3RzLCBPYmplY3RBZGRyZXNzICpmcm9tX2V4aXN0aW5nX2NvbGxp ZCkKIHsKIAljaGFyCSAgICpjb2xsTmFtZTsKIAlPaWQJCQljb2xsTmFtZXNwYWNlOwpAQCAtMTQz LDYgKzE1NSwxMyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpu YW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHApKQogCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxh dGlvbiAldSIsIGNvbGxpZCk7CiAKKwkJLyoKKwkJICogTWFrZSBmcm9tIGV4aXN0aW5nIGNvbGxh dGlvbmlkIGF2YWlsYWJsZSB0byBjYWxsZXJzIGZvciBzdGF0ZW1lbnRzCisJCSAqIHN1Y2ggYXMg Q1JFQVRFIENPTExBVElPTiBhbnlfbmFtZSBGUk9NIGV4aXN0aW5nX2NvbGxhdGlvbi4KKwkJICov CisJCWlmIChmcm9tX2V4aXN0aW5nX2NvbGxpZCAmJiBPaWRJc1ZhbGlkKGNvbGxpZCkpCisJCQlP YmplY3RBZGRyZXNzU2V0KCpmcm9tX2V4aXN0aW5nX2NvbGxpZCwgQ29sbGF0aW9uUmVsYXRpb25J ZCwgY29sbGlkKTsKKwogCQljb2xscHJvdmlkZXIgPSAoKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRT VFJVQ1QodHApKS0+Y29sbHByb3ZpZGVyOwogCQljb2xsaXNkZXRlcm1pbmlzdGljID0gKChGb3Jt X3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxpc2RldGVybWluaXN0aWM7CiAJCWNv bGxlbmNvZGluZyA9ICgoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCkpLT5jb2xsZW5j b2Rpbmc7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2RlcGFyc2UuYwppbmRleCA1ZDg1MDcwYTg1Li5mYTRl ZjdiOTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMKQEAgLTU5LDYgKzU5LDggQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19w b2xpY3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3B1YmxpY2F0aW9uX3JlbC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25f bmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcmV3cml0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VxdWVuY2UuaCIKQEAg LTcxLDYgKzczLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgor I2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUg ImZvcmVpZ24vZm9yZWlnbi5oIgpAQCAtMTU5LDYgKzE2Miw3IEBAIGJvb2wJCXZlcmJvc2UgPSB0 cnVlOwogCiBzdGF0aWMgdm9pZCBhcHBlbmRfYXJyYXlfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNo YXIgKnN1Yl9mbXQsIExpc3QgKmFycmF5KTsKIHN0YXRpYyB2b2lkIGFwcGVuZF9ib29sX29iamVj dChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBib29sIHZhbHVlKTsKK3N0YXRpYyB2b2lk IGFwcGVuZF9mbG9hdF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgZmxvYXQ4 IHZhbHVlKTsKIHN0YXRpYyB2b2lkIGFwcGVuZF9udWxsX29iamVjdChPYmpUcmVlICp0cmVlLCBj aGFyICpzdWJfZm10KTsKIHN0YXRpYyB2b2lkIGFwcGVuZF9vYmplY3Rfb2JqZWN0KE9ialRyZWUg KnRyZWUsIGNoYXIgKnN1Yl9mbXQsIE9ialRyZWUgKnZhbHVlKTsKIHN0YXRpYyBjaGFyICphcHBl bmRfb2JqZWN0X3RvX2Zvcm1hdF9zdHJpbmcoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCk7 CkBAIC0xNjgsMTEgKzE3MiwyMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRfc3RyaW5nX29iamVjdChP YmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBjaGFyICpuYW1lLAogc3RhdGljIHZvaWQgZm9y bWF0X3R5cGVfZGV0YWlsZWQoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLAogCQkJCQkJCQkg T2lkICpuc3BpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBlbW9kc3RyLAogCQkJCQkJCQkg Ym9vbCAqdHlwYXJyYXkpOworc3RhdGljIExpc3QgKkZ1bmN0aW9uR2V0RGVmYXVsdHModGV4dCAq cHJvYXJnZGVmYXVsdHMpOwogc3RhdGljIE9iakVsZW0gKm5ld19vYmplY3QoT2JqVHlwZSB0eXBl LCBjaGFyICpuYW1lKTsKIHN0YXRpYyBPYmpUcmVlICpuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVf aWQoT2lkIGNsYXNzSWQsIE9pZCBvYmplY3RJZCk7CitzdGF0aWMgT2JqVHJlZSAqbmV3X29ianRy ZWVfZm9yX3JvbGVzcGVjKFJvbGVTcGVjICpzcGVjKTsKIHN0YXRpYyBPYmpFbGVtICpuZXdfb2Jq ZWN0X29iamVjdChPYmpUcmVlICp2YWx1ZSk7CiBzdGF0aWMgT2JqVHJlZSAqbmV3X29ianRyZWVf VkEoY2hhciAqZm10LCBpbnQgbnVtb2JqcywuLi4pOworc3RhdGljIE9ialRyZWUgKm5ld19vYmp0 cmVlKGNoYXIgKmZtdCk7CitzdGF0aWMgT2JqRWxlbSAqbmV3X3N0cmluZ19vYmplY3QoY2hhciAq dmFsdWUpOwogc3RhdGljIEpzb25iVmFsdWUgKm9ianRyZWVfdG9fanNvbmJfcmVjKE9ialRyZWUg KnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKm93bmVyKTsKK3N0YXRpYyB2b2lk IHBnX2dldF9pbmRleGRlZl9kZXRhaWxlZChPaWQgaW5kZXhyZWxpZCwKKwkJCQkJCQkJCSBjaGFy ICoqaW5kZXhfYW0sCisJCQkJCQkJCQkgY2hhciAqKmRlZmluaXRpb24sCisJCQkJCQkJCQkgY2hh ciAqKnJlbG9wdGlvbnMsCisJCQkJCQkJCQkgY2hhciAqKnRhYmxlc3BhY2UsCisJCQkJCQkJCQkg Y2hhciAqKndoZXJlQ2xhdXNlKTsKIHN0YXRpYyBjaGFyICpSZWxhdGlvbkdldENvbHVtbkRlZmF1 bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG5vLAogCQkJCQkJCQkJICBMaXN0ICpkcGNv bnRleHQsIExpc3QgKipleHBycyk7CiAKQEAgLTE4MCw4ICsxOTQsMTggQEAgc3RhdGljIE9ialRy ZWUgKmRlcGFyc2VfQ29sdW1uRGVmKFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICpkcGNvbnRleHQs IGJvb2wgY29tcG8KIAkJCQkJCQkJICBDb2x1bW5EZWYgKmNvbGRlZiwgYm9vbCBpc19hbHRlciwg TGlzdCAqKmV4cHJzKTsKIHN0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0NvbHVtbklkZW50aXR5KE9p ZCBzZXFyZWxpZCwgY2hhciBpZGVudGl0eSwgYm9vbCBhbHRlcl90YWJsZSk7CiBzdGF0aWMgT2Jq VHJlZSAqZGVwYXJzZV9Db2x1bW5TZXRPcHRpb25zKEFsdGVyVGFibGVDbWQgKnN1YmNtZCk7Citz dGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9EZWZpbmVTdG10X0FnZ3JlZ2F0ZShPaWQgb2JqZWN0SWQs IERlZmluZVN0bXQgKmRlZmluZSk7CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9EZWZpbmVTdG10 X0NvbGxhdGlvbihPaWQgb2JqZWN0SWQsIERlZmluZVN0bXQgKmRlZmluZSwKKwkJCQkJCQkJCQkJ IE9iamVjdEFkZHJlc3MgZnJvbUNvbGxpZCk7CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9EZWZp bmVTdG10X09wZXJhdG9yKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lKTsKK3N0YXRp YyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfVHlwZShPaWQgb2JqZWN0SWQsIERlZmluZVN0 bXQgKmRlZmluZSk7CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9EZWZpbmVTdG10X1RTQ29uZmln KE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lLCBPYmplY3RBZGRyZXNzIGNvcGllZCk7 CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9EZWZpbmVTdG10X1RTUGFyc2VyKE9pZCBvYmplY3RJ ZCwgRGVmaW5lU3RtdCAqZGVmaW5lKTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0 bXRfVFNEaWN0aW9uYXJ5KE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lKTsKK3N0YXRp YyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfVFNUZW1wbGF0ZShPaWQgb2JqZWN0SWQsIERl ZmluZVN0bXQgKmRlZmluZSk7CiAKIHN0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZkVsZW0oRGVm RWxlbSAqZWxlbSwgYm9vbCBpc19yZXNldCk7CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9GdW5j dGlvblNldChWYXJpYWJsZVNldEtpbmQga2luZCwgY2hhciAqbmFtZSwgY2hhciAqdmFsdWUpOwog c3RhdGljIE9ialRyZWUgKmRlcGFyc2VfT25Db21taXRDbGF1c2UoT25Db21taXRBY3Rpb24gb3B0 aW9uKTsKIHN0YXRpYyBPYmpUcmVlICpkZXBhcnNlX1JlbFNldE9wdGlvbnMoQWx0ZXJUYWJsZUNt ZCAqc3ViY21kKTsKIApAQCAtMTkwLDYgKzIxNCw3IEBAIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAq ZGVwYXJzZV9TZXFfQ3ljbGUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3Rh CiBzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX0luY3JlbWVudEJ5KEZvcm1fcGdf c2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSk7CiBzdGF0aWMgaW5saW5lIE9iakVs ZW0gKmRlcGFyc2VfU2VxX01pbnZhbHVlKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBh bHRlcl90YWJsZSk7CiBzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX01heHZhbHVl KEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSk7CitzdGF0aWMgT2Jq RWxlbSAqZGVwYXJzZV9TZXFfT3duZWRCeShPaWQgc2VxdWVuY2VJZCwgYm9vbCBhbHRlcl90YWJs ZSk7CiBzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX1Jlc3RhcnQoaW50NjQgbGFz dF92YWx1ZSk7CiBzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX1N0YXJ0d2l0aChG b3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpOwogc3RhdGljIGlubGlu ZSBPYmpFbGVtICpkZXBhcnNlX1NlcV9BcyhGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpOwpAQCAt MjAxLDEwICsyMjYsMTUgQEAgc3RhdGljIGlubGluZSBPYmpFbGVtICpkZXBhcnNlX1R5cGVfVHlw bW9kX091dChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CiBzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRl cGFyc2VfVHlwZV9BbmFseXplKEZvcm1fcGdfdHlwZSB0eXBGb3JtKTsKIHN0YXRpYyBpbmxpbmUg T2JqRWxlbSAqZGVwYXJzZV9UeXBlX1N1YnNjcmlwdChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CiAK K3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0Zkd09wdGlvbnMoTGlzdCAqb3B0aW9ucywgY2hhciAq Y29sbmFtZSwKKwkJCQkJCQkJICAgYm9vbCBhbHRlcmNvbG9wdGlvbnMpOworCiBzdGF0aWMgTGlz dCAqZGVwYXJzZV9JbmhSZWxhdGlvbnMoT2lkIG9iamVjdElkKTsKIHN0YXRpYyBMaXN0ICpkZXBh cnNlX1RhYmxlRWxlbWVudHMoUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKnRhYmxlRWxlbWVudHMs IExpc3QgKmRwY29udGV4dCwKIAkJCQkJCQkJICAgYm9vbCB0eXBlZCwgYm9vbCBjb21wb3NpdGUp OwogCitzdGF0aWMgY2hhciAqRG9tYWluR2V0RGVmYXVsdChIZWFwVHVwbGUgZG9tVHVwLCBib29s IG1pc3Npbmdfb2spOworCiAvKgogICogQXBwZW5kIHByZXNlbnQgYXMgZmFsc2UgdG8gYSB0cmVl LgogICovCkBAIC0yMTQsNiArMjQ0LDQyIEBAIGFwcGVuZF9ub3RfcHJlc2VudChPYmpUcmVlICp0 cmVlKQogCWFwcGVuZF9ib29sX29iamVjdCh0cmVlLCAicHJlc2VudCIsIGZhbHNlKTsKIH0KIAor LyoKKyAqIEFwcGVuZCBhbiBpbnQzMiBwYXJhbWV0ZXIgdG8gYSB0cmVlLgorICovCitzdGF0aWMg dm9pZAorYXBwZW5kX2ludF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgaW50 MzIgdmFsdWUpCit7CisJT2JqRWxlbSAgICAqcGFyYW07CisJY2hhcgkgICAqb2JqZWN0X25hbWU7 CisKKwlBc3NlcnQoc3ViX2ZtdCk7CisKKwlvYmplY3RfbmFtZSA9IGFwcGVuZF9vYmplY3RfdG9f Zm9ybWF0X3N0cmluZyh0cmVlLCBzdWJfZm10KTsKKworCXBhcmFtID0gbmV3X29iamVjdChPYmpU eXBlSW50ZWdlciwgb2JqZWN0X25hbWUpOworCXBhcmFtLT52YWx1ZS5mbHQgPSB2YWx1ZTsKKwlh cHBlbmRfcHJlbWFkZV9vYmplY3QodHJlZSwgcGFyYW0pOworfQorCisvKgorICogQXBwZW5kIGEg ZmxvYXQ4IHBhcmFtZXRlciB0byBhIHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfZmxv YXRfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGZsb2F0OCB2YWx1ZSkKK3sK KwlPYmpFbGVtICAgICpwYXJhbTsKKwljaGFyCSAgICpvYmplY3RfbmFtZTsKKworCUFzc2VydChz dWJfZm10KTsKKworCW9iamVjdF9uYW1lID0gYXBwZW5kX29iamVjdF90b19mb3JtYXRfc3RyaW5n KHRyZWUsIHN1Yl9mbXQpOworCisJcGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVGbG9hdCwgb2Jq ZWN0X25hbWUpOworCXBhcmFtLT52YWx1ZS5mbHQgPSB2YWx1ZTsKKwlhcHBlbmRfcHJlbWFkZV9v YmplY3QodHJlZSwgcGFyYW0pOworfQorCiAvKgogICogQXBwZW5kIGFuIGFycmF5IHBhcmFtZXRl ciB0byBhIHRyZWUuCiAgKi8KQEAgLTQyMCw2ICs0ODYsMzQgQEAgYXBwZW5kX3N0cmluZ19vYmpl Y3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgY2hhciAqIG9iamVjdF9uYW1lLAogCWFw cGVuZF9wcmVtYWRlX29iamVjdCh0cmVlLCBwYXJhbSk7CiB9CiAKKy8qCisgKiBBcHBlbmQgYSBO VUxMLW9yLXF1b3RlZC1saXRlcmFsIGNsYXVzZS4gIFVzZWZ1bCBmb3IgQ09NTUVOVCBhbmQgU0VD VVJJVFkKKyAqIExBQkVMLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiAle251bGx9cyAle2xp dGVyYWx9cworICovCitzdGF0aWMgdm9pZAorYXBwZW5kX2xpdGVyYWxfb3JfbnVsbChPYmpUcmVl ICpwYXJlbnQsIGNoYXIgKmVsZW1uYW1lLCBjaGFyICp2YWx1ZSkKK3sKKwlPYmpUcmVlICAgICp0 b3A7CisJT2JqVHJlZSAgICAqcGFydDsKKworCXRvcCA9IG5ld19vYmp0cmVlKCIiKTsKKwlwYXJ0 ID0gbmV3X29ianRyZWVfVkEoIk5VTEwiLCAxLAorCQkJCQkJICAicHJlc2VudCIsIE9ialR5cGVC b29sLCAhdmFsdWUpOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRvcCwgIiV7bnVsbH1zIiwgcGFy dCk7CisKKwlwYXJ0ID0gbmV3X29ianRyZWVfVkEoIiIsIDEsCisJCQkJCQkgICJwcmVzZW50Iiwg T2JqVHlwZUJvb2wsIHZhbHVlICE9IE5VTEwpOworCisJaWYgKHZhbHVlKQorCQlhcHBlbmRfc3Ry aW5nX29iamVjdChwYXJ0LCAiJXt2YWx1ZX1MIiwgInZhbHVlIiwgdmFsdWUpOworCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHRvcCwgIiV7bGl0ZXJhbH1zIiwgcGFydCk7CisKKwlhcHBlbmRfb2JqZWN0 X29iamVjdChwYXJlbnQsIGVsZW1uYW1lLCB0b3ApOworfQorCiAvKgogICogU2ltaWxhciB0byBm b3JtYXRfdHlwZV9leHRlbmRlZCwgZXhjZXB0IHdlIHJldHVybiBlYWNoIGJpdCBvZiBpbmZvcm1h dGlvbgogICogc2VwYXJhdGVseToKQEAgLTUyMiw2ICs2MTYsMzEgQEAgZm9ybWF0X3R5cGVfZGV0 YWlsZWQoT2lkIHR5cGVfb2lkLCBpbnQzMiB0eXBlbW9kLAogCVJlbGVhc2VTeXNDYWNoZSh0dXBs ZSk7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWVzIG9mIGFyZ3VtZW50cyB0 byBhIGZ1bmN0aW9uLCBhcyBhIGxpc3Qgb2YKKyAqIGRlcGFyc2VkIGV4cHJlc3Npb25zLgorICov CitzdGF0aWMgTGlzdCAqCitGdW5jdGlvbkdldERlZmF1bHRzKHRleHQgKnByb2FyZ2RlZmF1bHRz KQoreworCUxpc3QJICAgKm5vZGVkZWZzOworCUxpc3QJICAgKnN0cmRlZnMgPSBOSUw7CisJTGlz dENlbGwgICAqY2VsbDsKKworCW5vZGVkZWZzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHRleHRf dG9fY3N0cmluZyhwcm9hcmdkZWZhdWx0cykpOworCWlmICghSXNBKG5vZGVkZWZzLCBMaXN0KSkK KwkJZWxvZyhFUlJPUiwgInByb2FyZ2RlZmF1bHRzIGlzIG5vdCBhIGxpc3QiKTsKKworCWZvcmVh Y2goY2VsbCwgbm9kZWRlZnMpCisJeworCQlOb2RlCSAgICpvbmVkZWYgPSBsZmlyc3QoY2VsbCk7 CisKKwkJc3RyZGVmcyA9IGxhcHBlbmQoc3RyZGVmcywgZGVwYXJzZV9leHByZXNzaW9uKG9uZWRl ZiwgTklMLCBmYWxzZSwgZmFsc2UpKTsKKwl9CisKKwlyZXR1cm4gc3RyZGVmczsKK30KKwogLyoK ICAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBSRUxQRVJT SVNURU5DRSB2YWx1ZS4KICAqLwpAQCAtNzExLDYgKzgzMCw1NyBAQCBuZXdfb2JqdHJlZV9mb3Jf dHlwZShPaWQgdHlwZUlkLCBpbnQzMiB0eXBtb2QpCiAJCQkJCQkgICJ0eXBhcnJheSIsIE9ialR5 cGVCb29sLCB0eXBlX2FycmF5KTsKIH0KIAorLyoKKyAqIEhlbHBlciByb3V0aW5lIGZvciAle31S IG9iamVjdHMsIHdpdGggcm9sZSBzcGVjaWZpZWQgYnkgUm9sZVNwZWMgbm9kZS4KKyAqIFNwZWNp YWwgdmFsdWVzIHN1Y2ggYXMgUk9MRVNQRUNfQ1VSUkVOVF9VU0VSIGFyZSBleHBhbmRlZCB0byB0 aGVpciBmaW5hbAorICogbmFtZXMuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVl X2Zvcl9yb2xlc3BlYyhSb2xlU3BlYyAqc3BlYykKK3sKKwljaGFyCSAgICpyb2xldHlwZTsKKwor CWlmIChzcGVjLT5yb2xldHlwZSAhPSBST0xFU1BFQ19QVUJMSUMpCisJCXJvbGV0eXBlID0gZ2V0 X3JvbGVzcGVjX25hbWUoc3BlYyk7CisJZWxzZQorCQlyb2xldHlwZSA9IHBzdHJkdXAoIiIpOwor CisJcmV0dXJuIG5ld19vYmp0cmVlX1ZBKE5VTEwsIDIsCisJCQkJCQkgICJpc19wdWJsaWMiLCBP YmpUeXBlQm9vbCwgc3BlYy0+cm9sZXR5cGUgPT0gUk9MRVNQRUNfUFVCTElDLAorCQkJCQkJICAi cm9sZW5hbWUiLCBPYmpUeXBlU3RyaW5nLCByb2xldHlwZSk7Cit9CisKKy8qCisgKiBIZWxwZXIg cm91dGluZSBmb3IgJXt9UiBvYmplY3RzLCB3aXRoIHJvbGUgc3BlY2lmaWVkIGJ5IE9JRC4gKEFD TF9JRF9QVUJMSUMKKyAqIG1lYW5zIHRvIHVzZSAicHVibGljIikuCisgKi8KK3N0YXRpYyBPYmpU cmVlICoKK25ld19vYmp0cmVlX2Zvcl9yb2xlX2lkKE9pZCByb2xlb2lkKQoreworCU9ialRyZWUg ICAgKnJvbGU7CisKKwlpZiAocm9sZW9pZCAhPSBBQ0xfSURfUFVCTElDKQorCXsKKwkJSGVhcFR1 cGxlCXJvbHR1cDsKKwkJY2hhcgkgICAqcm9sZV9uYW1lOworCisJCXJvbHR1cCA9IFNlYXJjaFN5 c0NhY2hlMShBVVRIT0lELCBPYmplY3RJZEdldERhdHVtKHJvbGVvaWQpKTsKKwkJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHJvbHR1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igcm9sZSB3aXRoIE9JRCAldSIsIHJvbGVvaWQpOworCisJCXJvbGVfbmFtZSA9IE5hbWVT dHIoKChGb3JtX3BnX2F1dGhpZCkgR0VUU1RSVUNUKHJvbHR1cCkpLT5yb2xuYW1lKTsKKwkJcm9s ZSA9IG5ld19vYmp0cmVlX1ZBKCIle3JvbGVuYW1lfUkiLCAxLAorCQkJCQkJCSAgInJvbGVuYW1l IiwgT2JqVHlwZVN0cmluZywgcHN0cmR1cChyb2xlX25hbWUpKTsKKworCQlSZWxlYXNlU3lzQ2Fj aGUocm9sdHVwKTsKKwl9CisJZWxzZQorCQlyb2xlID0gbmV3X29ianRyZWVfVkEoIiV7cm9sZW5h bWV9SSIsIDEsCisJCQkJCQkJICAicm9sZW5hbWUiLCBPYmpUeXBlU3RyaW5nLCAicHVibGljIik7 CisKKwlyZXR1cm4gcm9sZTsKK30KKwogLyoKICAqIEFsbG9jYXRlIGEgbmV3IG9iamVjdCB0cmVl IHRvIHN0b3JlIHBhcmFtZXRlciB2YWx1ZXMgLS0gdmFyYXJncyB2ZXJzaW9uLgogICoKQEAgLTc4 OCw2ICs5NTgsMjIgQEAgbmV3X29ianRyZWVfVkEoY2hhciAqZm10LCBpbnQgbnVtb2JqcywuLi4p CiAJcmV0dXJuIHRyZWU7CiB9CiAKKy8qCisgKiBBbGxvY2F0ZSBhIG5ldyBzdHJpbmcgb2JqZWN0 LgorICovCitzdGF0aWMgT2JqRWxlbSAqCituZXdfc3RyaW5nX29iamVjdChjaGFyICp2YWx1ZSkK K3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKworCUFzc2VydCh2YWx1ZSk7CisKKwlwYXJhbSA9IG5l d19vYmplY3QoT2JqVHlwZVN0cmluZywgTlVMTCk7CisJcGFyYW0tPnZhbHVlLnN0cmluZyA9IHZh bHVlOworCisJcmV0dXJuIHBhcmFtOworfQorCiAvKgogICogUHJvY2VzcyB0aGUgcHJlLWJ1aWx0 IGZvcm1hdCBzdHJpbmcgZnJvbSB0aGUgT2JqVHJlZSBpbnRvIHRoZSBvdXRwdXQgcGFyc2UKICAq IHN0YXRlLgpAQCAtMTk1MCw2ICsyMTM2LDgzIEBAIGRlcGFyc2VfU2VxX01pbnZhbHVlKEZvcm1f cGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKIAlyZXR1cm4gbmV3X29iamVj dF9vYmplY3QocmV0KTsKIH0KIAorLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIE9XTkVEIEJZ IGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIE9XTkVEIEJZICV7b3duZXJ9RAor ICovCitzdGF0aWMgT2JqRWxlbSAqCitkZXBhcnNlX1NlcV9Pd25lZEJ5KE9pZCBzZXF1ZW5jZUlk LCBib29sIGFsdGVyX3RhYmxlKQoreworCU9ialRyZWUgICAgKnJldCA9IE5VTEw7CisJUmVsYXRp b24JZGVwUmVsOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEga2V5c1szXTsKKwlI ZWFwVHVwbGUJdHVwbGU7CisKKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQs IEFjY2Vzc1NoYXJlTG9jayk7CisJU2NhbktleUluaXQoJmtleXNbMF0sCisJCQkJQW51bV9wZ19k ZXBlbmRfY2xhc3NpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJ T2JqZWN0SWRHZXREYXR1bShSZWxhdGlvblJlbGF0aW9uSWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5 c1sxXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9vYmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShzZXF1ZW5jZUlkKSk7CisJU2Nhbktl eUluaXQoJmtleXNbMl0sCisJCQkJQW51bV9wZ19kZXBlbmRfb2Jqc3ViaWQsCisJCQkJQlRFcXVh bFN0cmF0ZWd5TnVtYmVyLCBGX0lOVDRFUSwKKwkJCQlJbnQzMkdldERhdHVtKDApKTsKKworCXNj YW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oZGVwUmVsLCBEZXBlbmREZXBlbmRlckluZGV4SWQsIHRy dWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXlzKTsKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0 dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJT2lkCQkJb3duZXJJZDsKKwkJ Rm9ybV9wZ19kZXBlbmQgZGVwZm9ybTsKKwkJT2JqVHJlZSAgICAqdG1wX29iajsKKwkJY2hhcgkg ICAqY29sbmFtZTsKKworCQlkZXBmb3JtID0gKEZvcm1fcGdfZGVwZW5kKSBHRVRTVFJVQ1QodHVw bGUpOworCisJCS8qIE9ubHkgY29uc2lkZXIgQVVUTyBkZXBlbmRlbmNpZXMgb24gcGdfY2xhc3Mg Ki8KKwkJaWYgKGRlcGZvcm0tPmRlcHR5cGUgIT0gREVQRU5ERU5DWV9BVVRPKQorCQkJY29udGlu dWU7CisJCWlmIChkZXBmb3JtLT5yZWZjbGFzc2lkICE9IFJlbGF0aW9uUmVsYXRpb25JZCkKKwkJ CWNvbnRpbnVlOworCQlpZiAoZGVwZm9ybS0+cmVmb2Jqc3ViaWQgPD0gMCkKKwkJCWNvbnRpbnVl OworCisJCW93bmVySWQgPSBkZXBmb3JtLT5yZWZvYmppZDsKKwkJY29sbmFtZSA9IGdldF9hdHRu YW1lKG93bmVySWQsIGRlcGZvcm0tPnJlZm9ianN1YmlkLCBmYWxzZSk7CisJCWlmIChjb2xuYW1l ID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWVfZm9yX3F1 YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwgb3duZXJJZCk7CisJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHRtcF9vYmosICJhdHRybmFtZSIsICJhdHRybmFtZSIsIGNvbG5hbWUpOworCQlyZXQg PSBuZXdfb2JqdHJlZV9WQSgiT1dORUQgQlkgJXtvd25lcn1EIiwgMiwKKwkJCQkJCQkgImNsYXVz ZSIsIE9ialR5cGVTdHJpbmcsICJvd25lZCIsCisJCQkJCQkJICJvd25lciIsIE9ialR5cGVPYmpl Y3QsIHRtcF9vYmopOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJcmVsYXRpb25f Y2xvc2UoZGVwUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyoKKwkgKiBJZiB0aGVyZSdzIG5v IG93bmVyIGNvbHVtbiwgZW1pdCBhbiBlbXB0eSBPV05FRCBCWSBlbGVtZW50LCBzZXQgdXAgc28K KwkgKiB0aGF0IGl0IHdvbid0IHByaW50IGFueXRoaW5nLgorCSAqLworCWlmICghcmV0KQorCQkv KiBYWFggdGhpcyBzaG91bGRuJ3QgaGFwcGVuIC4uLiAqLworCQlyZXQgPSBuZXdfb2JqdHJlZV9W QSgiT1dORUQgQlkgJXtvd25lcn1EIiwgMywKKwkJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJp bmcsICJvd25lZCIsCisJCQkJCQkJICJvd25lciIsIE9ialR5cGVOdWxsLAorCQkJCQkJCSAicHJl c2VudCIsIE9ialR5cGVCb29sLCBmYWxzZSk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3Qo cmV0KTsKK30KKwogLyoKICAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIFJFU1RBUlQgb3B0aW9uLgog ICoKQEAgLTIyMTQsNiArMjQ3Nyw2NCBAQCBkZXBhcnNlX1RhYmxlRWxlbWVudHMoUmVsYXRpb24g cmVsYXRpb24sIExpc3QgKnRhYmxlRWxlbWVudHMsIExpc3QgKmRwY29udGV4dCwKIAlyZXR1cm4g ZWxlbWVudHM7CiB9CiAKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlU2VxU3RtdC4KKyAqCisgKiBH aXZlbiBhIHNlcXVlbmNlIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCBy ZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFNFUVVFTkNF ICV7aWRlbnRpdHl9RCAle2RlZmluaXRpb246IH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2Rl cGFyc2VfQ3JlYXRlU2VxU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlP YmpUcmVlICAgICpyZXQ7CisJUmVsYXRpb24JcmVsYXRpb247CisJTGlzdAkgICAqZWxlbXMgPSBO SUw7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOworCVNlcXVlbmNlX3ZhbHVlcyAqc2VxdmFs dWVzOworCUNyZWF0ZVNlcVN0bXQgKmNyZWF0ZVNlcVN0bXQgPSAoQ3JlYXRlU2VxU3RtdCAqKSBw YXJzZXRyZWU7CisKKwkvKgorCSAqIFNlcXVlbmNlIGZvciBJREVOVElUWSBDT0xVTU4gb3V0cHV0 IHNlcGFyYXRlbHkgKHZpYSBDUkVBVEUgVEFCTEUgb3IKKwkgKiBBTFRFUiBUQUJMRSk7IHJldHVy biBlbXB0eSBoZXJlLgorCSAqLworCWlmIChjcmVhdGVTZXFTdG10LT5mb3JfaWRlbnRpdHkpCisJ CXJldHVybiBOVUxMOworCisJc2VxdmFsdWVzID0gZ2V0X3NlcXVlbmNlX3ZhbHVlcyhvYmplY3RJ ZCk7CisJc2VxZm9ybSA9IHNlcXZhbHVlcy0+c2VxZm9ybTsKKworCS8qIERlZmluaXRpb24gZWxl bWVudHMgKi8KKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX0NhY2hlKHNlcWZv cm0sIGZhbHNlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9DeWNsZShz ZXFmb3JtLCBmYWxzZSkpOworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9TZXFfSW5j cmVtZW50Qnkoc2VxZm9ybSwgZmFsc2UpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFy c2VfU2VxX01pbnZhbHVlKHNlcWZvcm0sIGZhbHNlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1z LCBkZXBhcnNlX1NlcV9NYXh2YWx1ZShzZXFmb3JtLCBmYWxzZSkpOworCWVsZW1zID0gbGFwcGVu ZChlbGVtcywgZGVwYXJzZV9TZXFfU3RhcnR3aXRoKHNlcWZvcm0sIGZhbHNlKSk7CisJZWxlbXMg PSBsYXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9SZXN0YXJ0KHNlcXZhbHVlcy0+bGFzdF92YWx1 ZSkpOworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9TZXFfQXMoc2VxZm9ybSkpOwor CisJLyogV2UgcHVycG9zZWZ1bGx5IGRvIG5vdCBlbWl0IE9XTkVEIEJZIGhlcmUgKi8KKworCXJl bGF0aW9uID0gcmVsYXRpb25fb3BlbihvYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJl dCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFNFUVVFTkNFICV7aWZf bm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCAle2RlZmluaXRpb246IH1zIiwgNCwKKwkJCQkJCSAi cGVyc2lzdGVuY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIGdldF9wZXJzaXN0ZW5jZV9zdHIo cmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpLAorCQkJCQkJICJpZl9ub3RfZXhpc3Rz IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBjcmVhdGVTZXFTdG10LT5pZl9ub3RfZXhpc3RzID8g IklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwK KwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsYXRpb24tPnJkX3JlbC0+cmVsbmFt ZXNwYWNlLAorCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikp LAorCQkJCQkJICJkZWZpbml0aW9uIiwgT2JqVHlwZUFycmF5LCBlbGVtcyk7CisKKwlyZWxhdGlv bl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisK IC8qCiAgKiBEZXBhcnNlIGFuIEluZGV4U3RtdC4KICAqCkBAIC0yNTU5LDcgKzI4ODAsNyBAQCBk ZXBhcnNlX0FsdGVyUmVsYXRpb24oQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCiAJQXNzZXJ0KGNt ZC0+dHlwZSA9PSBTQ1RfQWx0ZXJUYWJsZSk7CiAJc3RtdCA9IChBbHRlclRhYmxlU3RtdCAqKSBj bWQtPnBhcnNldHJlZTsKLQlBc3NlcnQoSXNBKHN0bXQsIEFsdGVyVGFibGVTdG10KSk7CisJQXNz ZXJ0KElzQShzdG10LCBBbHRlclRhYmxlU3RtdCkgfHwgSXNBKHN0bXQsIFZpZXdTdG10KSk7CiAK IAkvKgogCSAqIEFMVEVSIFRBQkxFIHN1YmNvbW1hbmRzIGdlbmVyYXRlZCBmb3IgVGFibGVMaWtl Q2xhdXNlIGlzIHByb2Nlc3NlZCBpbgpAQCAtMjYwMiw4ICsyOTIzLDEwIEBAIGRlcGFyc2VfQWx0 ZXJSZWxhdGlvbihDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJCQllbG9nKEVSUk9SLCAidW5leHBl Y3RlZCByZWxraW5kICVkIiwgcmVsLT5yZF9yZWwtPnJlbGtpbmQpOwogCX0KIAotCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fUQiLCAyLAorCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fUQiLCAzLAogCQkJ CQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywgcmVsdHlwZSwKKwkJCQkJCSAib25seSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkgc3RtdC0+cmVsYXRpb24tPmluaCA/ICIiIDogIk9OTFkiLAog CQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCiAJCQkJCQkgbmV3X29ianRyZWVfZm9y X3F1YWxuYW1lKHJlbC0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCiAJCQkJCQkJCQkJCQkgIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKQEAgLTMwMzUsMTMgKzMzNTgsMTIgQEAgZGVwYXJz ZV9BbHRlclJlbGF0aW9uKENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAkJCQl9CiAJCQkJYnJlYWs7 CiAKLSNpZmRlZiBUT0RPTElTVAogCQkJY2FzZSBBVF9BbHRlckNvbHVtbkdlbmVyaWNPcHRpb25z OgogCQkJCXRtcF9vYmogPSBkZXBhcnNlX0Zkd09wdGlvbnMoKExpc3QgKikgc3ViY21kLT5kZWYs Ci0JCQkJCQkJCQkJCXN1YmNtZC0+bmFtZSk7CisJCQkJCQkJCQkJCXN1YmNtZC0+bmFtZSwgdHJ1 ZSk7CiAJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOwogCQkJCWJyZWFrOwotI2VuZGlmCisKIAkJCWNhc2UgQVRfQ2hhbmdlT3duZXI6CiAJ CQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJPV05FUiBUTyAle293bmVyfUkiLCAyLAogCQkJ CQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImNoYW5nZSBvd25lciIsCkBAIC0zNDMyLDYg KzM3NTQsMjAwIEBAIGRlcGFyc2VfZHJvcF9jb21tYW5kKGNvbnN0IGNoYXIgKm9iamlkZW50aXR5 LCBjb25zdCBjaGFyICpvYmplY3R0eXBlLAogCXJldHVybiBjb21tYW5kOwogfQogCisvKgorICog RGVwYXJzZSBhbiBBbHRlckNvbGxhdGlvblN0bXQgKEFMVEVSIENPTExBVElPTikKKyAqCisgKiBH aXZlbiBhIGNvbGxhdGlvbiBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwg cmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAq CisgKiBWZXJib3NlIHN5bnRheDoKKyAqIEFMVEVSIENPTExBVElPTiAle2lkZW50aXR5fU8gUkVG UkVTSCBWRVJTSU9OCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJDb2xsYXRp b24oT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2JqVHJlZSAgICAqcmV0Owor CUhlYXBUdXBsZQljb2xUdXA7CisJRm9ybV9wZ19jb2xsYXRpb24gY29sRm9ybTsKKworCWNvbFR1 cCA9IFNlYXJjaFN5c0NhY2hlMShDT0xMT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBs b29rdXAgZmFpbGVkIGZvciBjb2xsYXRpb24gd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJY29s Rm9ybSA9IChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKGNvbFR1cCk7CisKKwlyZXQgPSBu ZXdfb2JqdHJlZV9WQSgiQUxURVIgQ09MTEFUSU9OICV7aWRlbnRpdHl9TyBSRUZSRVNIIFZFUlNJ T04iLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lKGNvbEZvcm0tPmNvbGxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkg IE5hbWVTdHIoY29sRm9ybS0+Y29sbG5hbWUpKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUoY29sVHVw KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBIYW5kbGUgZGVwYXJzaW5nIHNldHRpbmcg b2YgRnVuY3Rpb24KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogUkVTRVQgQUxMCisgKiBPUgor ICogU0VUICV7c2V0X25hbWV9SSBUTyAle3NldF92YWx1ZX1zCisgKiBPUgorICogUkVTRVQgJXtz ZXRfbmFtZX1JCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRnVuY3Rpb25TZXQoVmFy aWFibGVTZXRLaW5kIGtpbmQsIGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlKQoreworCU9ialRyZWUg ICAgKnJldDsKKworCWlmIChraW5kID09IFZBUl9SRVNFVF9BTEwpCisJCXJldCA9IG5ld19vYmp0 cmVlKCJSRVNFVCBBTEwiKTsKKwllbHNlIGlmIChraW5kID09IFZBUl9TRVRfVkFMVUUpCisJewor CQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiU0VUICV7c2V0X25hbWV9SSIsIDEsCisJCQkJCQkJICJz ZXRfbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5hbWUpOworCisJCS8qCisJCSAqIFNvbWUgR1VDIHZh cmlhYmxlIG5hbWVzIGFyZSAnTElTVCcgdHlwZSBhbmQgaGVuY2UgbXVzdCBub3QgYmUKKwkJICog cXVvdGVkLgorCQkgKi8KKwkJaWYgKEdldENvbmZpZ09wdGlvbkZsYWdzKG5hbWUsIHRydWUpICYg R1VDX0xJU1RfUVVPVEUpCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJUTyAle3NldF92 YWx1ZX1zIiwgInNldF92YWx1ZSIsIHZhbHVlKTsKKwkJZWxzZQorCQkJYXBwZW5kX3N0cmluZ19v YmplY3QocmV0LCAiVE8gJXtzZXRfdmFsdWV9TCIsICJzZXRfdmFsdWUiLCB2YWx1ZSk7CisJfQor CWVsc2UKKwkJcmV0ID0gbmV3X29ianRyZWVfVkEoIlJFU0VUICV7c2V0X25hbWV9SSIsIDEsCisJ CQkJCQkJICJzZXRfbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5hbWUpOworCisJcmV0dXJuIHJldDsK K30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJGdW5jdGlvblN0bXQgKEFMVEVSIEZVTkNUSU9O L1JPVVRJTkUvUFJPQ0VEVVJFKQorICoKKyAqIEdpdmVuIGEgZnVuY3Rpb24gT0lEIGFuZCB0aGUg cGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNl bnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXg6CisgKiBBTFRF UiBGVU5DVElPTi9ST1VUSU5FL1BST0NFRFVSRSAle3NpZ25hdHVyZX1zICV7ZGVmaW5pdGlvbjog fXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckZ1bmN0aW9uKE9pZCBvYmpl Y3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyRnVuY3Rpb25TdG10ICpub2RlID0gKEFs dGVyRnVuY3Rpb25TdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJl ZSAgICAqc2lnbjsKKwlIZWFwVHVwbGUJcHJvY1R1cDsKKwlGb3JtX3BnX3Byb2MgcHJvY0Zvcm07 CisJTGlzdAkgICAqcGFyYW1zID0gTklMOworCUxpc3QJICAgKmVsZW1zID0gTklMOworCUxpc3RD ZWxsICAgKmNlbGw7CisJaW50CQkJaTsKKworCS8qIEdldCB0aGUgcGdfcHJvYyB0dXBsZSAqLwor CXByb2NUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgb2JqZWN0SWQpOworCWlmICghSGVh cFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIGZ1bmN0aW9uIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXByb2NGb3JtID0gKEZv cm1fcGdfcHJvYykgR0VUU1RSVUNUKHByb2NUdXApOworCisJaWYgKHByb2NGb3JtLT5wcm9raW5k ID09IFBST0tJTkRfUFJPQ0VEVVJFKQorCQlyZXQgPSBuZXdfb2JqdHJlZSgiQUxURVIgUFJPQ0VE VVJFIik7CisJZWxzZQorCQlyZXQgPSBuZXdfb2JqdHJlZShub2RlLT5vYmp0eXBlID09IE9CSkVD VF9ST1VUSU5FID8KKwkJCQkJCSAgIkFMVEVSIFJPVVRJTkUiIDogIkFMVEVSIEZVTkNUSU9OIik7 CisKKwkvKgorCSAqIEFMVEVSIEZVTkNUSU9OIGRvZXMgbm90IGNoYW5nZSBzaWduYXR1cmUgc28g d2UgY2FuIHVzZSBjYXRhbG9nIHRvIGdldAorCSAqIGlucHV0IHR5cGUgT2lkcy4KKwkgKi8KKwlm b3IgKGkgPSAwOyBpIDwgcHJvY0Zvcm0tPnByb25hcmdzOyBpKyspCisJeworCQlPYmpUcmVlICAg ICp0bXBfb2JqOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiJXt0eXBlfVQiLCAxLAor CQkJCQkJCQkidHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl90 eXBlKHByb2NGb3JtLT5wcm9hcmd0eXBlcy52YWx1ZXNbaV0sIC0xKSk7CisJCXBhcmFtcyA9IGxh cHBlbmQocGFyYW1zLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJfQorCisJc2lnbiA9 IG5ld19vYmp0cmVlX1ZBKCIle2lkZW50aXR5fUQgKCV7YXJndW1lbnRzOiwgfXMpIiwgMiwKKwkJ CQkJCSAgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSAgbmV3X29ianRyZWVfZm9y X3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsIG9iamVjdElkKSwKKwkJCQkJCSAgImFy Z3VtZW50cyIsIE9ialR5cGVBcnJheSwgcGFyYW1zKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0 KHJldCwgIiV7c2lnbmF0dXJlfXMiLCBzaWduKTsKKworCWZvcmVhY2goY2VsbCwgbm9kZS0+YWN0 aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwp OworCQlPYmpUcmVlICAgICp0bXBfb2JqID0gTlVMTDsKKworCQlpZiAoc3RyY21wKGRlZmVsLT5k ZWZuYW1lLCAidm9sYXRpbGl0eSIpID09IDApCisJCQl0bXBfb2JqID0gbmV3X29ianRyZWUoc3Ry VmFsKGRlZmVsLT5hcmcpKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic3Ry aWN0IikgPT0gMCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZShib29sVmFsKGRlZmVsLT5hcmcp ID8KKwkJCQkJCQkJICJSRVRVUk5TIE5VTEwgT04gTlVMTCBJTlBVVCIgOgorCQkJCQkJCQkgIkNB TExFRCBPTiBOVUxMIElOUFVUIik7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwg InNlY3VyaXR5IikgPT0gMCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZShib29sVmFsKGRlZmVs LT5hcmcpID8KKwkJCQkJCQkJICJTRUNVUklUWSBERUZJTkVSIiA6ICJTRUNVUklUWSBJTlZPS0VS Iik7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImxlYWtwcm9vZiIpID09IDAp CisJCQl0bXBfb2JqID0gbmV3X29ianRyZWUoYm9vbFZhbChkZWZlbC0+YXJnKSA/CisJCQkJCQkJ CSAiTEVBS1BST09GIiA6ICJOT1QgTEVBS1BST09GIik7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZl bC0+ZGVmbmFtZSwgImNvc3QiKSA9PSAwKQorCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJD T1NUICV7Y29zdH1uIiwgMSwKKwkJCQkJCQkJCSJjb3N0IiwgT2JqVHlwZUZsb2F0LAorCQkJCQkJ CQkJZGVmR2V0TnVtZXJpYyhkZWZlbCkpOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5h bWUsICJyb3dzIikgPT0gMCkKKwkJeworCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJST1dTIik7 CisJCQlpZiAoZGVmR2V0TnVtZXJpYyhkZWZlbCkgPT0gMCkKKwkJCQlhcHBlbmRfbm90X3ByZXNl bnQodG1wX29iaik7CisJCQllbHNlCisJCQkJYXBwZW5kX2Zsb2F0X29iamVjdCh0bXBfb2JqLCAi JXtyb3dzfW4iLAorCQkJCQkJCQkJZGVmR2V0TnVtZXJpYyhkZWZlbCkpOworCQl9CisJCWVsc2Ug aWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInNldCIpID09IDApCisJCXsKKwkJCVZhcmlhYmxl U2V0U3RtdCAqc3N0bXQgPSAoVmFyaWFibGVTZXRTdG10ICopIGRlZmVsLT5hcmc7CisJCQljaGFy CSAgICp2YWx1ZSA9IEV4dHJhY3RTZXRWYXJpYWJsZUFyZ3Moc3N0bXQpOworCisJCQl0bXBfb2Jq ID0gZGVwYXJzZV9GdW5jdGlvblNldChzc3RtdC0+a2luZCwgc3N0bXQtPm5hbWUsIHZhbHVlKTsK KwkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJzdXBwb3J0IikgPT0gMCkK KwkJeworCQkJT2lkCQkJYXJndHlwZXNbMV07CisKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgi U1VQUE9SVCIpOworCisJCQlBc3NlcnQocHJvY0Zvcm0tPnByb3N1cHBvcnQpOworCisJCQkvKgor CQkJICogV2Ugc2hvdWxkIHF1YWxpZnkgdGhlIHN1cHBvcnQgZnVuY3Rpb24ncyBuYW1lIGlmIGl0 IHdvdWxkbid0IGJlCisJCQkgKiByZXNvbHZlZCBieSBsb29rdXAgaW4gdGhlIGN1cnJlbnQgc2Vh cmNoIHBhdGguCisJCQkgKi8KKwkJCWFyZ3R5cGVzWzBdID0gSU5URVJOQUxPSUQ7CisJCQlhcHBl bmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtuYW1lfXMiLCAibmFtZSIsCisJCQkJCQkJCSBn ZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKHByb2NGb3JtLT5wcm9zdXBwb3J0LCAxLAorCQkJCQkJCQkJ CQkJCQlOSUwsIGFyZ3R5cGVzLAorCQkJCQkJCQkJCQkJCQlmYWxzZSwgTlVMTCwKKwkJCQkJCQkJ CQkJCQkJRVhQUl9LSU5EX05PTkUpKTsKKwkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRl Zm5hbWUsICJwYXJhbGxlbCIpID09IDApCisJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlBB UkFMTEVMICV7dmFsdWV9cyIsIDEsCisJCQkJCQkJCQkidmFsdWUiLCBPYmpUeXBlU3RyaW5nLCBz dHJWYWwoZGVmZWwtPmFyZykpOworCisJCWVsZW1zID0gbGFwcGVuZChlbGVtcywgbmV3X29iamVj dF9vYmplY3QodG1wX29iaikpOworCX0KKworCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXtk ZWZpbml0aW9uOiB9cyIsIGVsZW1zKTsKKworCVJlbGVhc2VTeXNDYWNoZShwcm9jVHVwKTsKKwor CXJldHVybiByZXQ7Cit9CisKIC8qCiAgKiBEZXBhcnNlIGFuIEFsdGVyT2JqZWN0U2NoZW1hU3Rt dCAoQUxURVIgLi4uIFNFVCBTQ0hFTUEgY29tbWFuZCkKICAqCkBAIC0zNDc3LDIyICszOTkzLDQ5 OSBAQCBkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3Ms IE5vZGUgKnBhcnNldHJlZSwKIH0KIAogLyoKLSAqIERlcGFyc2UgYW4gQWx0ZXJPd25lclN0bXQg KEFMVEVSIC4uLiBPV05FUiBUTyAuLi4pLgotICoKLSAqIEdpdmVuIHRoZSBvYmplY3QgYWRkcmVz cyBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KLSAqIE9ialRy ZWUgcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICogRGVwYXJzZSBhIEdSQU5UL1JF Vk9LRSBjb21tYW5kLgogICoKICAqIFZlcmJvc2Ugc3ludGF4Ci0gKiBBTFRFUiAle29ianR5cGV9 cyAle2lkZW50aXR5fXMgT1dORVIgVE8gJXtuZXdvd25lcn1JCisgKiBHUkFOVCAle3ByaXZpbGVn ZXM6LCB9cyBPTiIgJXtvYmp0eXBlfXMgJXtwcml2dGFyZ2V0OiwgfXMgVE8gJXtncmFudGVlczos IH1zCisgKiAle2dyYW50X29wdGlvbn1zIEdSQU5URUQgQlkgJXtyb2xlbmFtZX1zCisgKiAJCU9S CisgKiBSRVZPS0UgJXtwcml2aWxlZ2VzOiwgfXMgT04iICV7b2JqdHlwZX1zICV7cHJpdnRhcmdl dDosIH1zCisgKiBGUk9NICV7Z3JhbnRlZXM6LCB9cyAle2dyYW50X29wdGlvbn1zICV7Y2FzY2Fk ZX1zCiAgKi8KIHN0YXRpYyBPYmpUcmVlICoKLWRlcGFyc2VfQWx0ZXJPd25lclN0bXQoT2JqZWN0 QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCitkZXBhcnNlX0dyYW50U3RtdChDb2xs ZWN0ZWRDb21tYW5kICpjbWQpCiB7Ci0JQWx0ZXJPd25lclN0bXQgKm5vZGUgPSAoQWx0ZXJPd25l clN0bXQgKikgcGFyc2V0cmVlOworCUludGVybmFsR3JhbnQgKmlzdG10OworCU9ialRyZWUgICAg KnJldDsKKwlMaXN0CSAgICpsaXN0ID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJT2lkCQkJ Y2xhc3NJZDsKKwlPYmpUcmVlICAgICp0bXA7CiAKLQlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkFM VEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBPV05FUiBUTyAle25ld293bmVyfUkiLCAzLAot CQkJCQkJICAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCi0JCQkJCQkgIHN0cmluZ2lmeV9vYmp0 eXBlKG5vZGUtPm9iamVjdFR5cGUsIGZhbHNlKSwKKwkvKiBEb24ndCBkZXBhcnNlIFNRTCBjb21t YW5kcyBnZW5lcmF0ZWQgd2hpbGUgY3JlYXRpbmcgZXh0ZW5zaW9uICovCisJaWYgKGNtZC0+aW5f ZXh0ZW5zaW9uKQorCQlyZXR1cm4gTlVMTDsKKworCWlzdG10ID0gY21kLT5kLmdyYW50LmlzdG10 OworCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgbm8gb2JqZWN0cyBmcm9tICJBTEwgLi4uIElOIFND SEVNQSIgdG8gYmUgZ3JhbnRlZCwgdGhlbgorCSAqIG5vdGhpbmcgdG8gZG8uCisJICovCisJaWYg KGlzdG10LT5vYmplY3RzID09IE5JTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlzd2l0Y2ggKGlzdG10 LT5vYmp0eXBlKQorCXsKKwkJY2FzZSBPQkpFQ1RfQ09MVU1OOgorCQljYXNlIE9CSkVDVF9UQUJM RToKKwkJY2FzZSBPQkpFQ1RfU0VRVUVOQ0U6CisJCQljbGFzc0lkID0gUmVsYXRpb25SZWxhdGlv bklkOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX0RPTUFJTjoKKwkJY2FzZSBPQkpFQ1RfVFlQ RToKKwkJCWNsYXNzSWQgPSBUeXBlUmVsYXRpb25JZDsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVD VF9GRFc6CisJCQljbGFzc0lkID0gRm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZDsKKwkJCWJy ZWFrOworCQljYXNlIE9CSkVDVF9GT1JFSUdOX1NFUlZFUjoKKwkJCWNsYXNzSWQgPSBGb3JlaWdu U2VydmVyUmVsYXRpb25JZDsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9GVU5DVElPTjoKKwkJ Y2FzZSBPQkpFQ1RfUFJPQ0VEVVJFOgorCQljYXNlIE9CSkVDVF9ST1VUSU5FOgorCQkJY2xhc3NJ ZCA9IFByb2NlZHVyZVJlbGF0aW9uSWQ7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfTEFOR1VB R0U6CisJCQljbGFzc0lkID0gTGFuZ3VhZ2VSZWxhdGlvbklkOworCQkJYnJlYWs7CisJCWNhc2Ug T0JKRUNUX0xBUkdFT0JKRUNUOgorCQkJY2xhc3NJZCA9IExhcmdlT2JqZWN0UmVsYXRpb25JZDsK KwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9TQ0hFTUE6CisJCQljbGFzc0lkID0gTmFtZXNwYWNl UmVsYXRpb25JZDsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9EQVRBQkFTRToKKwkJY2FzZSBP QkpFQ1RfVEFCTEVTUEFDRToKKwkJCWNsYXNzSWQgPSBJbnZhbGlkT2lkOworCQkJZWxvZyhFUlJP UiwgImdsb2JhbCBvYmplY3RzIG5vdCBzdXBwb3J0ZWQiKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0 OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgT0JKRUNUIHZhbHVlICVkIiwgaXN0bXQtPm9ianR5 cGUpOworCX0KKworCS8qIEdSQU5UIFRPIG9yIFJFVk9LRSBGUk9NICovCisJcmV0ID0gbmV3X29i anRyZWUoaXN0bXQtPmlzX2dyYW50ID8gIkdSQU5UIiA6ICJSRVZPS0UiKTsKKworCS8qIEJ1aWxk IGEgbGlzdCBvZiBwcml2aWxlZ2VzIHRvIGdyYW50L3Jldm9rZSAqLworCWlmIChpc3RtdC0+YWxs X3ByaXZzKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWUoIkFMTCBQUklWSUxFR0VTIik7CisJCWxp c3QgPSBsaXN0X21ha2UxKG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKwllbHNlCisJewor CQljaGFyICpwcml2OworCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfSU5TRVJUKQorCQl7 CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2VfdG9fc3RyaW5nKEFDTF9JTlNFUlQpOworCQkJ bGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlm IChpc3RtdC0+cHJpdmlsZWdlcyAmIEFDTF9TRUxFQ1QpCisJCXsKKwkJCXByaXYgPSAoY2hhciAq KXByaXZpbGVnZV90b19zdHJpbmcoQUNMX1NFTEVDVCk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0 LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYgKGlzdG10LT5wcml2aWxlZ2Vz ICYgQUNMX1VQREFURSkKKwkJeworCQkJcHJpdiA9IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmlu ZyhBQ0xfVVBEQVRFKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0 KHByaXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfREVMRVRFKQorCQl7 CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2VfdG9fc3RyaW5nKEFDTF9ERUxFVEUpOworCQkJ bGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlm IChpc3RtdC0+cHJpdmlsZWdlcyAmIEFDTF9UUlVOQ0FURSkKKwkJeworCQkJcHJpdiA9IChjaGFy ICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xfVFJVTkNBVEUpOworCQkJbGlzdCA9IGxhcHBlbmQo bGlzdCwgbmV3X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlmIChpc3RtdC0+cHJpdmls ZWdlcyAmIEFDTF9SRUZFUkVOQ0VTKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2Vf dG9fc3RyaW5nKEFDTF9SRUZFUkVOQ0VTKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19z dHJpbmdfb2JqZWN0KHByaXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xf VFJJR0dFUikKKwkJeworCQkJcHJpdiA9IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xf VFJJR0dFUik7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2 KSk7CisJCX0KKwkJaWYgKGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX0VYRUNVVEUpCisJCXsKKwkJ CXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0VYRUNVVEUpOworCQkJbGlz dCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlmIChp c3RtdC0+cHJpdmlsZWdlcyAmIEFDTF9VU0FHRSkKKwkJeworCQkJcHJpdiA9IChjaGFyICopcHJp dmlsZWdlX3RvX3N0cmluZyhBQ0xfVVNBR0UpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlmIChpc3RtdC0+cHJpdmlsZWdlcyAmIEFD TF9DUkVBVEUpCisJCXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNM X0NSRUFURSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2 KSk7CisJCX0KKwkJaWYgKGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX0NSRUFURV9URU1QKQorCQl7 CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2VfdG9fc3RyaW5nKEFDTF9DUkVBVEVfVEVNUCk7 CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0K KwkJaWYgKGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX0NPTk5FQ1QpCisJCXsKKwkJCXByaXYgPSAo Y2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0NPTk5FQ1QpOworCQkJbGlzdCA9IGxhcHBl bmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlmIChpc3RtdC0+cHJp dmlsZWdlcyAmIEFDTF9NQUlOVEFJTikKKwkJeworCQkJcHJpdiA9IChjaGFyICopcHJpdmlsZWdl X3RvX3N0cmluZyhBQ0xfTUFJTlRBSU4pOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0 cmluZ19vYmplY3QocHJpdikpOworCQl9CisKKwkJaWYgKCFpc3RtdC0+aXNfZ3JhbnQgJiYgaXN0 bXQtPmdyYW50X29wdGlvbikKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7Z3JhbnRf b3B0aW9ufXMiLCAiZ3JhbnRfb3B0aW9uIiwKKwkJCQkJCQkJIGlzdG10LT5ncmFudF9vcHRpb24g PyAiR1JBTlQgT1BUSU9OIEZPUiIgOiAiIik7CisKKwkJaWYgKGlzdG10LT5jb2xfcHJpdnMgIT0g TklMKQorCQl7CisJCQlMaXN0Q2VsbCAgICpvY2VsbDsKKworCQkJZm9yZWFjaChvY2VsbCwgaXN0 bXQtPmNvbF9wcml2cykKKwkJCXsKKwkJCQlBY2Nlc3NQcml2ICpwcml2ID0gbGZpcnN0KG9jZWxs KTsKKwkJCQlMaXN0CSAgICpjb2xzID0gTklMOworCisJCQkJZm9yZWFjaChjZWxsLCBwcml2LT5j b2xzKQorCQkJCXsKKwkJCQkJU3RyaW5nCSAgICpjb2xuYW1lID0gbGZpcnN0X25vZGUoU3RyaW5n LCBjZWxsKTsKKworCQkJCQljb2xzID0gbGFwcGVuZChjb2xzLAorCQkJCQkJCQkgICBuZXdfc3Ry aW5nX29iamVjdChzdHJWYWwoY29sbmFtZSkpKTsKKwkJCQl9CisKKwkJCQl0bXAgPSBuZXdfb2Jq dHJlZV9WQSgiKCV7Y29sczosIH1zKSAle3ByaXZ9cyIsIDIsCisJCQkJCQkJCQkgImNvbHMiLCBP YmpUeXBlQXJyYXksIGNvbHMsCisJCQkJCQkJCQkgInByaXYiLCBPYmpUeXBlU3RyaW5nLAorCQkJ CQkJCQkJICBwcml2LT5wcml2X25hbWUgPyBwcml2LT5wcml2X25hbWUgOiAiQUxMIFBSSVZJTEVH RVMiKTsKKworCQkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkp OworCQkJfQorCQl9CisJfQorCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXtwcml2aWxlZ2Vz OiwgfXMgT04iLCBsaXN0KTsKKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7b2JqdHlw ZX1zIiwgIm9ianR5cGUiLAorCQkJCQkJIChjaGFyICopc3RyaW5naWZ5X29ianR5cGUoaXN0bXQt Pm9ianR5cGUsIHRydWUpKTsKKworCS8qIFRhcmdldCBvYmplY3RzLiAgV2UgdXNlIG9iamVjdCBp ZGVudGl0aWVzIGhlcmUgKi8KKwlsaXN0ID0gTklMOworCWZvcmVhY2goY2VsbCwgaXN0bXQtPm9i amVjdHMpCisJeworCQlPaWQJCQlvYmppZCA9IGxmaXJzdF9vaWQoY2VsbCk7CisJCU9iamVjdEFk ZHJlc3MgYWRkcjsKKworCQlhZGRyLmNsYXNzSWQgPSBjbGFzc0lkOworCQlhZGRyLm9iamVjdElk ID0gb2JqaWQ7CisJCWFkZHIub2JqZWN0U3ViSWQgPSAwOworCisJCXRtcCA9IG5ld19vYmp0cmVl X1ZBKCIle2lkZW50aXR5fXMiLCAxLAorCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5n LAorCQkJCQkJCSBnZXRPYmplY3RJZGVudGl0eSgmYWRkciwgZmFsc2UpKTsKKworCQlsaXN0ID0g bGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwl9CisJYXBwZW5kX2FycmF5 X29iamVjdChyZXQsICIle3ByaXZ0YXJnZXQ6LCB9cyIsIGxpc3QpOworCisJYXBwZW5kX2Zvcm1h dF9zdHJpbmcocmV0LCBpc3RtdC0+aXNfZ3JhbnQgPyAiVE8iIDogIkZST00iKTsKKworCS8qIExp c3Qgb2YgZ3JhbnRlZXMgKi8KKwlsaXN0ID0gTklMOworCWZvcmVhY2goY2VsbCwgaXN0bXQtPmdy YW50ZWVzKQorCXsKKwkJT2lkCQkJZ3JhbnRlZSA9IGxmaXJzdF9vaWQoY2VsbCk7CisKKwkJdG1w ID0gbmV3X29ianRyZWVfZm9yX3JvbGVfaWQoZ3JhbnRlZSk7CisJCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKworCWFwcGVuZF9hcnJheV9vYmplY3Qo cmV0LCAiJXtncmFudGVlczosIH1zIiwgbGlzdCk7CisKKwkvKiBUaGUgd29yZGluZyBvZiB0aGUg Z3JhbnQgb3B0aW9uIGlzIHZhcmlhYmxlIC4uLiAqLworCWlmIChpc3RtdC0+aXNfZ3JhbnQpCisJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7Z3JhbnRfb3B0aW9ufXMiLCAiZ3JhbnRfb3B0 aW9uIiwKKwkJCQkJCQkgaXN0bXQtPmdyYW50X29wdGlvbiA/ICJXSVRIIEdSQU5UIE9QVElPTiIg OiAiIik7CisKKwlpZiAoaXN0bXQtPmdyYW50b3JfdWlkKQorCXsKKwkJSGVhcFR1cGxlCXJvbHR1 cDsKKwkJY2hhcgkgICAqcm9sZW5hbWU7CisKKwkJcm9sdHVwID0gU2VhcmNoU3lzQ2FjaGUxKEFV VEhPSUQsIE9iamVjdElkR2V0RGF0dW0oaXN0bXQtPmdyYW50b3JfdWlkKSk7CisJCWlmICghSGVh cFR1cGxlSXNWYWxpZChyb2x0dXApKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHJvbGUgd2l0aCBPSUQgJXUiLAorCQkJCSBpc3RtdC0+Z3JhbnRvcl91aWQpOworCisJ CXJvbGVuYW1lID0gTmFtZVN0cigoKEZvcm1fcGdfYXV0aGlkKSBHRVRTVFJVQ1Qocm9sdHVwKSkt PnJvbG5hbWUpOworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJHUkFOVEVEIEJZICV7cm9s ZW5hbWV9cyIsCisJCQkJCQkJICJyb2xlbmFtZSIsIHJvbGVuYW1lKTsKKwkJUmVsZWFzZVN5c0Nh Y2hlKHJvbHR1cCk7CisJfQorCisJaWYgKCFpc3RtdC0+aXNfZ3JhbnQpCisJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHJldCwgIiV7Y2FzY2FkZX1zIiwgImNhc2NhZGUiLAorCQkJCQkJCSBpc3RtdC0+ YmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFID8gIkNBU0NBREUiIDogIiIpOworCisJcmV0dXJuIHJl dDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJPcGVyYXRvclN0bXQgKEFMVEVSIE9QRVJB VE9SIC4uLiBTRVQgLi4uKS4KKyAqCisgKiBHaXZlbiBhbiBvcGVyYXRvciBPSUQgYW5kIHRoZSBw YXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2Vu dGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIg T1BFUkFUT1IgJXtpZGVudGl0eX1PICgle2xlZnRfdHlwZX1ULCAle3JpZ2h0X3R5cGV9VCkKKyAq IFNFVCAoJXtlbGVtczosIH1zKQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVy T3BlcmF0b3JTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUhlYXBUdXBs ZQlvcHJUdXA7CisJQWx0ZXJPcGVyYXRvclN0bXQgKm5vZGUgPSAoQWx0ZXJPcGVyYXRvclN0bXQg KikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlGb3JtX3BnX29wZXJhdG9yIG9wckZv cm07CisJTGlzdENlbGwgICAqY2VsbDsKKwlMaXN0CSAgICpsaXN0ID0gTklMOworCisJb3ByVHVw ID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3ByVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCW9wckZv cm0gPSAoRm9ybV9wZ19vcGVyYXRvcikgR0VUU1RSVUNUKG9wclR1cCk7CisKKwlyZXQgPSBuZXdf b2JqdHJlZV9WQSgiQUxURVIgT1BFUkFUT1IgJXtpZGVudGl0eX1PIiwgMSwKKwkJCQkJCSAiaWRl bnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShv cHJGb3JtLT5vcHJuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIob3ByRm9ybS0+b3By bmFtZSkpKTsKKworCS8qIExFRlRBUkcgKi8KKwlpZiAoT2lkSXNWYWxpZChvcHJGb3JtLT5vcHJs ZWZ0KSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiKCV7bGVmdF90eXBlfVQiLAorCQkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZShvcHJGb3JtLT5vcHJsZWZ0LCAtMSkpOworCWVsc2UK KwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiKCV7bGVmdF90eXBlfXMiLCAibGVmdF90eXBl IiwgIk5PTkUiKTsKKworCS8qIFJJR0hUQVJHICovCisJQXNzZXJ0KE9pZElzVmFsaWQob3ByRm9y bS0+b3BybGVmdCkpOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiwgJXtyaWdodF90eXBl fVQpIiwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZShvcHJGb3JtLT5vcHJyaWdodCwgLTEp KTsKKworCWZvcmVhY2goY2VsbCwgbm9kZS0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmVs ZW0gPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisJCU9ialRyZWUgICAgKnRtcF9vYmogPSBO VUxMOworCisJCWlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgInJlc3RyaWN0IikgPT0gMCkKKwkJ eworCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJSRVNUUklDVD0iLCAxLAorCQkJCQkJCQkJ ImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJyZXN0cmljdCIpOworCQkJaWYgKE9pZElzVmFsaWQo b3ByRm9ybS0+b3BycmVzdCkpCisJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7 cHJvY2VkdXJlfUQiLAorCQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9j ZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCSBvcHJGb3JtLT5vcHJyZXN0KSk7CisJ CQllbHNlCisJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwgIiV7cHJvY2VkdXJlfXMi LCAicHJvY2VkdXJlIiwKKwkJCQkJCQkJCSAiTk9ORSIpOworCQl9CisJCWVsc2UgaWYgKHN0cmNt cChlbGVtLT5kZWZuYW1lLCAiam9pbiIpID09IDApCisJCXsKKwkJCXRtcF9vYmogPSBuZXdfb2Jq dHJlZV9WQSgiSk9JTj0iLCAxLAorCQkJCQkJCQkJImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJq b2luIik7CisJCQlpZiAoT2lkSXNWYWxpZChvcHJGb3JtLT5vcHJqb2luKSkKKwkJCQlhcHBlbmRf b2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJCQkgbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJ CQkJIG9wckZvcm0tPm9wcmpvaW4pKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRfc3RyaW5nX29iamVj dCh0bXBfb2JqLCAiJXtwcm9jZWR1cmV9cyIsICJwcm9jZWR1cmUiLAorCQkJCQkJCQkJICJOT05F Iik7CisJCX0KKworCQlBc3NlcnQodG1wX29iaik7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5l d19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwl9CisKKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJl dCwgIlNFVCAoJXtlbGVtczosIH1zKSIsIGxpc3QpOworCisJUmVsZWFzZVN5c0NhY2hlKG9wclR1 cCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBTFRFUiBPUEVSQVRP UiBGQU1JTFkgQUREL0RST1AgY29tbWFuZC4KKyAqCisgKiBHaXZlbiB0aGUgQ29sbGVjdGVkQ29t bWFuZCwgcmV0dXJuIGFuIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBBbHRlcgorICogT3BlcmF0 b3IgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgT1BFUkFUT1IgRkFN SUxZICV7aWRlbnRpdHl9RCBVU0lORyAle2FtbmFtZX1JIEFERC9EUk9QICV7aXRlbXM6LH1zCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJPcEZhbWlseShDb2xsZWN0ZWRDb21t YW5kICpjbWQpCit7CisJT2JqVHJlZSAgICAqcmV0OworCUFsdGVyT3BGYW1pbHlTdG10ICpzdG10 ID0gKEFsdGVyT3BGYW1pbHlTdG10ICopIGNtZC0+cGFyc2V0cmVlOworCUhlYXBUdXBsZQlmdHA7 CisJRm9ybV9wZ19vcGZhbWlseSBvcGZGb3JtOworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJTGlz dENlbGwgICAqY2VsbDsKKworCS8qIERvbid0IGRlcGFyc2UgU1FMIGNvbW1hbmRzIGdlbmVyYXRl ZCB3aGlsZSBjcmVhdGluZyBleHRlbnNpb24gKi8KKwlpZiAoY21kLT5pbl9leHRlbnNpb24pCisJ CXJldHVybiBOVUxMOworCisJZnRwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRkFNSUxZT0lELAorCQkJ CQkJICBPYmplY3RJZEdldERhdHVtKGNtZC0+ZC5vcGZhbS5hZGRyZXNzLm9iamVjdElkKSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGZ0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBvcGVyYXRvciBmYW1pbHkgd2l0aCBPSUQgJXUiLAorCQkJIGNtZC0+ZC5vcGZh bS5hZGRyZXNzLm9iamVjdElkKTsKKwlvcGZGb3JtID0gKEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNU UlVDVChmdHApOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIE9QRVJBVE9SIEZBTUlM WSAle2lkZW50aXR5fUQgVVNJTkcgJXthbW5hbWV9SSIsIDIsCisJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUob3BmRm9ybS0+ b3BmbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKG9wZkZvcm0tPm9wZm5hbWUpKSwK KwkJCQkJCSAiYW1uYW1lIiwgT2JqVHlwZVN0cmluZywgc3RtdC0+YW1uYW1lKTsKKworCWZvcmVh Y2goY2VsbCwgY21kLT5kLm9wZmFtLm9wZXJhdG9ycykKKwl7CisJCU9wRmFtaWx5TWVtYmVyICpv cGVyID0gbGZpcnN0KGNlbGwpOworCQlPYmpUcmVlICAgICp0bXBfb2JqOworCisJCS8qCisJCSAq IFZlcmJvc2Ugc3ludGF4CisJCSAqCisJCSAqIE9QRVJBVE9SICV7bnVtfW4gJXtvcGVyYXRvcn1P KCV7bHR5cGV9VCwgJXtydHlwZX1UKSAle3B1cnBvc2V9cworCQkgKi8KKwkJdG1wX29iaiA9IG5l d19vYmp0cmVlX1ZBKCJPUEVSQVRPUiAle251bX1uIiwgMSwKKwkJCQkJCQkJIm51bSIsIE9ialR5 cGVJbnRlZ2VyLCBvcGVyLT5udW1iZXIpOworCisJCS8qIEFkZCB0aGUgb3BlcmF0b3IgbmFtZTsg dGhlIERST1AgY2FzZSBkb2Vzbid0IGhhdmUgdGhpcyAqLworCQlpZiAoIXN0bXQtPmlzRHJvcCkK KwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle29wZXJhdG9yfU8iLAorCQkJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJCQkJ CQkJCQkJCQkJCSBvcGVyLT5vYmplY3QpKTsKKworCQkvKiBBZGQgdGhlIHR5cGVzICovCisJCWFw cGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIoJXtsdHlwZX1ULCIsCisJCQkJCQkJIG5ld19v Ymp0cmVlX2Zvcl90eXBlKG9wZXItPmxlZnR0eXBlLCAtMSkpOworCQlhcHBlbmRfb2JqZWN0X29i amVjdCh0bXBfb2JqLCAiJXtydHlwZX1UKSIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBl KG9wZXItPnJpZ2h0dHlwZSwgLTEpKTsKKworCQkvKiBBZGQgdGhlIEZPUiBTRUFSQ0ggLyBGT1Ig T1JERVIgQlkgY2xhdXNlOyBub3QgaW4gdGhlIERST1AgY2FzZSAqLworCQlpZiAoIXN0bXQtPmlz RHJvcCkKKwkJeworCQkJaWYgKG9wZXItPnNvcnRmYW1pbHkgPT0gSW52YWxpZE9pZCkKKwkJCQlh cHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtwdXJwb3NlfXMiLCAicHVycG9zZSIsCisJ CQkJCQkJCQkgIkZPUiBTRUFSQ0giKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlPYmpUcmVlICAgICpv cmRlcmJ5X29iajsKKworCQkJCW9yZGVyYnlfb2JqID0gbmV3X29ianRyZWVfVkEoIkZPUiBPUkRF UiBCWSAle29wZmFtaWx5fUQiLCAxLAorCQkJCQkJCQkJCQkib3BmYW1pbHkiLCBPYmpUeXBlT2Jq ZWN0LAorCQkJCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoT3BlcmF0b3JGYW1p bHlSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCQkJb3Blci0+c29ydGZhbWlseSkpOworCQkJ CWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3B1cnBvc2V9cyIsIG9yZGVyYnlfb2Jq KTsKKwkJCX0KKwkJfQorCisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0 KHRtcF9vYmopKTsKKwl9CisKKwlmb3JlYWNoKGNlbGwsIGNtZC0+ZC5vcGZhbS5wcm9jZWR1cmVz KQorCXsKKwkJT3BGYW1pbHlNZW1iZXIgKnByb2MgPSBsZmlyc3QoY2VsbCk7CisJCU9ialRyZWUg ICAgKnRtcF9vYmo7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJGVU5DVElPTiAle251 bX1uICgle2x0eXBlfVQsICV7cnR5cGV9VCkiLCAzLAorCQkJCQkJCQkibnVtIiwgT2JqVHlwZUlu dGVnZXIsIHByb2MtPm51bWJlciwKKwkJCQkJCQkJImx0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJ CQkJCQkJbmV3X29ianRyZWVfZm9yX3R5cGUocHJvYy0+bGVmdHR5cGUsIC0xKSwKKwkJCQkJCQkJ InJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3R5cGUocHJv Yy0+cmlnaHR0eXBlLCAtMSkpOworCisJCS8qCisJCSAqIEFkZCB0aGUgZnVuY3Rpb24gbmFtZSBh bmQgYXJnIHR5cGVzOyB0aGUgRFJPUCBjYXNlIGRvZXNuJ3QgaGF2ZQorCQkgKiB0aGlzCisJCSAq LworCQlpZiAoIXN0bXQtPmlzRHJvcCkKKwkJeworCQkJSGVhcFR1cGxlCXByb2NUdXA7CisJCQlG b3JtX3BnX3Byb2MgcHJvY0Zvcm07CisJCQlPaWQJCSAgICpwcm9hcmd0eXBlczsKKwkJCUxpc3QJ ICAgKmFyZ2xpc3QgPSBOSUw7CisJCQlpbnQJCQlpOworCisJCQlwcm9jVHVwID0gU2VhcmNoU3lz Q2FjaGUxKFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0ocHJvYy0+b2JqZWN0KSk7CisJCQlpZiAo IUhlYXBUdXBsZUlzVmFsaWQocHJvY1R1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHByb2NlZHVyZSB3aXRoIE9JRCAldSIsCisJCQkJCSBwcm9jLT5vYmplY3Qp OworCQkJcHJvY0Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY1R1cCk7CisKKwkJ CXByb2FyZ3R5cGVzID0gcHJvY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlczsKKwkJCWZvciAoaSA9 IDA7IGkgPCBwcm9jRm9ybS0+cHJvbmFyZ3M7IGkrKykKKwkJCXsKKwkJCQlPYmpUcmVlICAgICph cmc7CisKKwkJCQlhcmcgPSBuZXdfb2JqdHJlZV9mb3JfdHlwZShwcm9hcmd0eXBlc1tpXSwgLTEp OworCQkJCWFyZ2xpc3QgPSBsYXBwZW5kKGFyZ2xpc3QsIG5ld19vYmplY3Rfb2JqZWN0KGFyZykp OworCQkJfQorCisJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtmdW5jdGlvbn1E IiwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShwcm9jRm9ybS0+cHJvbmFtZXNw YWNlLAorCQkJCQkJCQkJCQkJCQkgIE5hbWVTdHIocHJvY0Zvcm0tPnByb25hbWUpKSk7CisKKwkJ CWFwcGVuZF9mb3JtYXRfc3RyaW5nKHRtcF9vYmosICIoIik7CisJCQlhcHBlbmRfYXJyYXlfb2Jq ZWN0KHRtcF9vYmosICIle2FyZ3R5cGVzOiwgfVQiLCBhcmdsaXN0KTsKKwkJCWFwcGVuZF9mb3Jt YXRfc3RyaW5nKHRtcF9vYmosICIpIik7CisKKwkJCVJlbGVhc2VTeXNDYWNoZShwcm9jVHVwKTsK KwkJfQorCisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmop KTsKKwl9CisKKwlpZiAoc3RtdC0+aXNEcm9wKQorCQlhcHBlbmRfZm9ybWF0X3N0cmluZyhyZXQs ICJEUk9QIik7CisJZWxzZQorCQlhcHBlbmRfZm9ybWF0X3N0cmluZyhyZXQsICJBREQiKTsKKwor CWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXtpdGVtczosIH1zIiwgbGlzdCk7CisKKwlSZWxl YXNlU3lzQ2FjaGUoZnRwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFu IEFsdGVyT3duZXJTdG10IChBTFRFUiAuLi4gT1dORVIgVE8gLi4uKS4KKyAqCisgKiBHaXZlbiB0 aGUgb2JqZWN0IGFkZHJlc3MgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0 dXJuIGFuCisgKiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisg KiBWZXJib3NlIHN5bnRheAorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIE9XTkVS IFRPICV7bmV3b3duZXJ9SQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyT3du ZXJTdG10KE9iamVjdEFkZHJlc3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVy T3duZXJTdG10ICpub2RlID0gKEFsdGVyT3duZXJTdG10ICopIHBhcnNldHJlZTsKKworCXJldHVy biBuZXdfb2JqdHJlZV9WQSgiQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIE9XTkVSIFRP ICV7bmV3b3duZXJ9SSIsIDMsCisJCQkJCQkgICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCSAgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+b2JqZWN0VHlwZSwgZmFsc2UpLAogCQkJCQkJ ICAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLAogCQkJCQkJICBnZXRPYmplY3RJZGVudGl0eSgm YWRkcmVzcywgZmFsc2UpLAogCQkJCQkJICAibmV3b3duZXIiLCBPYmpUeXBlU3RyaW5nLApAQCAt MzUwMCwxNDggKzQ0OTMsNTM4NSBAQCBkZXBhcnNlX0FsdGVyT3duZXJTdG10KE9iamVjdEFkZHJl c3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlKQogfQogCiAvKgotICogRGVwYXJzZSBhIFJlbmFt ZVN0bXQuCisgKiBEZXBhcnNlIGFuIEFsdGVyU2VxU3RtdC4KKyAqCisgKiBHaXZlbiBhIHNlcXVl bmNlIE9JRCBhbmQgYSBwYXJzZSB0cmVlIHRoYXQgbW9kaWZpZWQgaXQsIHJldHVybiBhbiBPYmpU cmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBz eW50YXgKKyAqIEFMVEVSIFNFUVVFTkNFICV7aWRlbnRpdHl9RCAle2RlZmluaXRpb246IH1zCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwg Tm9kZSAqcGFyc2V0cmVlKQoreworCU9ialRyZWUgICAgKnJldDsKKwlSZWxhdGlvbglyZWxhdGlv bjsKKwlMaXN0CSAgICplbGVtcyA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCUZvcm1fcGdf c2VxdWVuY2Ugc2VxZm9ybTsKKwlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVlczsKKwlBbHRlclNl cVN0bXQgKmFsdGVyU2VxU3RtdCA9IChBbHRlclNlcVN0bXQgKikgcGFyc2V0cmVlOworCisJLyoK KwkgKiBTZXF1ZW5jZSBmb3IgSURFTlRJVFkgQ09MVU1OIG91dHB1dCBzZXBhcmF0ZWx5ICh2aWEg Q1JFQVRFIFRBQkxFIG9yCisJICogQUxURVIgVEFCTEUpOyByZXR1cm4gZW1wdHkgaGVyZS4KKwkg Ki8KKwlpZiAoYWx0ZXJTZXFTdG10LT5mb3JfaWRlbnRpdHkpCisJCXJldHVybiBOVUxMOworCisJ c2VxdmFsdWVzID0gZ2V0X3NlcXVlbmNlX3ZhbHVlcyhvYmplY3RJZCk7CisJc2VxZm9ybSA9IHNl cXZhbHVlcy0+c2VxZm9ybTsKKworCWZvcmVhY2goY2VsbCwgKChBbHRlclNlcVN0bXQgKikgcGFy c2V0cmVlKS0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmVsZW0gPSAoRGVmRWxlbSAqKSBs Zmlyc3QoY2VsbCk7CisJCU9iakVsZW0gICAgKm5ld2VsbTsKKworCQlpZiAoc3RyY21wKGVsZW0t PmRlZm5hbWUsICJjYWNoZSIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1NlcV9DYWNoZShz ZXFmb3JtLCBmYWxzZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiY3ljbGUi KSA9PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9TZXFfQ3ljbGUoc2VxZm9ybSwgZmFsc2UpOwor CQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImluY3JlbWVudCIpID09IDApCisJCQlu ZXdlbG0gPSBkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeShzZXFmb3JtLCBmYWxzZSk7CisJCWVsc2Ug aWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAibWludmFsdWUiKSA9PSAwKQorCQkJbmV3ZWxtID0g ZGVwYXJzZV9TZXFfTWludmFsdWUoc2VxZm9ybSwgZmFsc2UpOworCQllbHNlIGlmIChzdHJjbXAo ZWxlbS0+ZGVmbmFtZSwgIm1heHZhbHVlIikgPT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfU2Vx X01heHZhbHVlKHNlcWZvcm0sIGZhbHNlKTsKKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5h bWUsICJzdGFydCIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1NlcV9TdGFydHdpdGgoc2Vx Zm9ybSwgZmFsc2UpOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgInJlc3RhcnQi KSA9PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9TZXFfUmVzdGFydChzZXF2YWx1ZXMtPmxhc3Rf dmFsdWUpOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgIm93bmVkX2J5IikgPT0g MCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfU2VxX093bmVkQnkob2JqZWN0SWQsIGZhbHNlKTsKKwkJ ZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJhcyIpID09IDApCisJCQluZXdlbG0gPSBk ZXBhcnNlX1NlcV9BcyhzZXFmb3JtKTsKKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgImludmFsaWQg c2VxdWVuY2Ugb3B0aW9uICVzIiwgZWxlbS0+ZGVmbmFtZSk7CisKKwkJZWxlbXMgPSBsYXBwZW5k KGVsZW1zLCBuZXdlbG0pOworCX0KKworCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihvYmplY3RJ ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBTRVFV RU5DRSAle2lkZW50aXR5fUQgJXtkZWZpbml0aW9uOiB9cyIsIDIsCisJCQkJCQkgImlkZW50aXR5 IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsYXRp b24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbikpLAorCQkJCQkJICJkZWZpbml0aW9uIiwgT2JqVHlwZUFycmF5LCBl bGVtcyk7CisKKwlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwor CXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFsdGVyVHlwZVN0bXQuCisgKgor ICogR2l2ZW4gYSB0eXBlIE9JRCBhbmQgYSBwYXJzZSB0cmVlIHRoYXQgbW9kaWZpZWQgaXQsIHJl dHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGFsdGVyIHR5cGUuCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIFRZUEUgJXtpZGVudGl0eX1EIFNFVCAoJXtkZWZpbml0 aW9uOiB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclR5cGVTZXRTdG10 KE9pZCBvYmplY3RJZCwgTm9kZSAqY21kKQoreworCUFsdGVyVHlwZVN0bXQgKmFsdGVyVHlwZVNl dFN0bXQgPSAoQWx0ZXJUeXBlU3RtdCAqKSBjbWQ7CisJTGlzdENlbGwgICAqcGw7CisJTGlzdAkg ICAqZWxlbXMgPSBOSUw7CisJSGVhcFR1cGxlCXR5cFR1cDsKKwlGb3JtX3BnX3R5cGUgdHlwRm9y bTsKKworCXR5cFR1cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVt KG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR5cFR1cCkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0eXBlIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQp OworCXR5cEZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHlwVHVwKTsKKworCWZvcmVh Y2gocGwsIGFsdGVyVHlwZVNldFN0bXQtPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAgICpkZWZl bCA9IChEZWZFbGVtICopIGxmaXJzdChwbCk7CisJCU9iakVsZW0gICAgKm5ld2VsbTsKKworCQlp ZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic3RvcmFnZSIpID09IDApCisJCQluZXdlbG0gPSBk ZXBhcnNlX1R5cGVfU3RvcmFnZSh0eXBGb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5k ZWZuYW1lLCAicmVjZWl2ZSIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1R5cGVfUmVjZWl2 ZSh0eXBGb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic2VuZCIpID09 IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1R5cGVfU2VuZCh0eXBGb3JtKTsKKwkJZWxzZSBpZiAo c3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHlwbW9kX2luIikgPT0gMCkKKwkJCW5ld2VsbSA9IGRl cGFyc2VfVHlwZV9UeXBtb2RfSW4odHlwRm9ybSk7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgInR5cG1vZF9vdXQiKSA9PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9UeXBlX1R5 cG1vZF9PdXQodHlwRm9ybSk7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImFu YWx5emUiKSA9PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9UeXBlX0FuYWx5emUodHlwRm9ybSk7 CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInN1YnNjcmlwdCIpID09IDApCisJ CQluZXdlbG0gPSBkZXBhcnNlX1R5cGVfU3Vic2NyaXB0KHR5cEZvcm0pOworCQllbHNlCisJCQll bG9nKEVSUk9SLCAiaW52YWxpZCB0eXBlIG9wdGlvbiAlcyIsIGRlZmVsLT5kZWZuYW1lKTsKKwor CQllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIG5ld2VsbSk7CisJfQorCisJUmVsZWFzZVN5c0NhY2hl KHR5cFR1cCk7CisKKwlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkFMVEVSIFRZUEUgJXtpZGVudGl0 eX1EIFNFVCAoJXtkZWZpbml0aW9uOiwgfXMpIiwgMiwKKwkJCQkJCSAgImlkZW50aXR5IiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCSAgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFR5cGVSZWxh dGlvbklkLAorCQkJCQkJCQkJCQkJCSAgb2JqZWN0SWQpLAorCQkJCQkJICAiZGVmaW5pdGlvbiIs IE9ialR5cGVBcnJheSwgZWxlbXMpOworfQorCisvKgorICogRGVwYXJzZSBhIENvbXBvc2l0ZVR5 cGVTdG10IChDUkVBVEUgVFlQRSBBUykKKyAqCisgKiBHaXZlbiBhIENvbXBvc2l0ZSB0eXBlIE9J RCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRy ZWUgcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3lu dGF4CisgKiBDUkVBVEUgVFlQRSAle2lkZW50aXR5fUQgQVMgKCV7Y29sdW1uczosIH1zKQorICov CitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NvbXBvc2l0ZVR5cGVTdG10KE9pZCBvYmplY3RJ ZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNvbXBvc2l0ZVR5cGVTdG10ICpub2RlID0gKENvbXBv c2l0ZVR5cGVTdG10ICopIHBhcnNldHJlZTsKKwlIZWFwVHVwbGUJdHlwdHVwOworCUZvcm1fcGdf dHlwZSB0eXBmb3JtOworCVJlbGF0aW9uCXR5cGVyZWw7CisJTGlzdAkgICAqZHBjb250ZXh0Owor CUxpc3QJICAgKnRhYmxlZWx0cyA9IE5JTDsKKworCS8qIEZpbmQgdGhlIHBnX3R5cGUgZW50cnkg YW5kIG9wZW4gdGhlIGNvcnJlc3BvbmRpbmcgcmVsYXRpb24gKi8KKwl0eXB0dXAgPSBTZWFyY2hT eXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0eXB0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgdHlwZSB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwl0eXBmb3JtID0gKEZvcm1fcGdf dHlwZSkgR0VUU1RSVUNUKHR5cHR1cCk7CisJdHlwZXJlbCA9IHJlbGF0aW9uX29wZW4odHlwZm9y bS0+dHlwcmVsaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlkcGNvbnRleHQgPSBkZXBhcnNlX2Nv bnRleHRfZm9yKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHR5cGVyZWwpLAorCQkJCQkJCQkJUmVs YXRpb25HZXRSZWxpZCh0eXBlcmVsKSk7CisKKwl0YWJsZWVsdHMgPSBkZXBhcnNlX1RhYmxlRWxl bWVudHModHlwZXJlbCwgbm9kZS0+Y29sZGVmbGlzdCwgZHBjb250ZXh0LAorCQkJCQkJCQkJICBm YWxzZSwJLyogbm90IHR5cGVkICovCisJCQkJCQkJCQkgIHRydWUpOwkvKiBjb21wb3NpdGUgdHlw ZSAqLworCisJdGFibGVfY2xvc2UodHlwZXJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlSZWxlYXNl U3lzQ2FjaGUodHlwdHVwKTsKKworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFRZUEUg JXtpZGVudGl0eX1EIEFTICgle2NvbHVtbnM6LCB9cykiLCAyLAorCQkJCQkJICAiaWRlbnRpdHki LCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVHlw ZVJlbGF0aW9uSWQsIG9iamVjdElkKSwKKwkJCQkJCSAgImNvbHVtbnMiLCBPYmpUeXBlQXJyYXks IHRhYmxlZWx0cyk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlQ29udmVyc2lvblN0bXQK KyAqCisgKiBHaXZlbiBhIGNvbnZlcnNpb24gT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNy ZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9u IGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle2RlZmF1bHR9cyBD T05WRVJTSU9OICV7aWRlbnRpdHl9RCBGT1IgJXtzb3VyY2V9TCBUTyAle2Rlc3R9TAorICogRlJP TSAle2Z1bmN0aW9ufUQKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVDb252 ZXJzaW9uKE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUhlYXBUdXBsZQljb25U dXA7CisJUmVsYXRpb24JY29udnJlbDsKKwlGb3JtX3BnX2NvbnZlcnNpb24gY29uRm9ybTsKKwlP YmpUcmVlICAgICpyZXQ7CisKKwljb252cmVsID0gdGFibGVfb3BlbihDb252ZXJzaW9uUmVsYXRp b25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwljb25UdXAgPSBnZXRfY2F0YWxvZ19vYmplY3RfYnlf b2lkKGNvbnZyZWwsIEFudW1fcGdfY29udmVyc2lvbl9vaWQsIG9iamVjdElkKTsKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQoY29uVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIGNvbnZlcnNpb24gd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJY29uRm9ybSA9IChG b3JtX3BnX2NvbnZlcnNpb24pIEdFVFNUUlVDVChjb25UdXApOworCisJcmV0ID0gbmV3X29ianRy ZWVfVkEoIkNSRUFURSAle2RlZmF1bHR9cyBDT05WRVJTSU9OICV7aWRlbnRpdHl9RCBGT1IgJXtz b3VyY2V9TCBUTyAle2Rlc3R9TCBGUk9NICV7ZnVuY3Rpb259RCIsIDUsCisJCQkJCQkgICJkZWZh dWx0IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAgY29uRm9ybS0+Y29uZGVmYXVsdCA/ICJERUZB VUxUIiA6ICIiLAorCQkJCQkJICAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBu ZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoY29uRm9ybS0+Y29ubmFtZXNwYWNlLAorCQkJCQkJCQkJ CQkJICAgTmFtZVN0cihjb25Gb3JtLT5jb25uYW1lKSksCisJCQkJCQkgICJzb3VyY2UiLCBPYmpU eXBlU3RyaW5nLAorCQkJCQkJICAoY2hhciAqKXBnX2VuY29kaW5nX3RvX2NoYXIoY29uRm9ybS0+ Y29uZm9yZW5jb2RpbmcpLAorCQkJCQkJICAiZGVzdCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkg IChjaGFyICopcGdfZW5jb2RpbmdfdG9fY2hhcihjb25Gb3JtLT5jb250b2VuY29kaW5nKSwKKwkJ CQkJCSAgImZ1bmN0aW9uIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSAgbmV3X29ianRyZWVfZm9y X3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJICBjb25Gb3Jt LT5jb25wcm9jKSk7CisKKwl0YWJsZV9jbG9zZShjb252cmVsLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVFbnVtU3RtdCAoQ1JF QVRFIFRZUEUgQVMgRU5VTSkKKyAqCisgKiBHaXZlbiBhIEVudW0gdHlwZSBPSUQgYW5kIHRoZSBw YXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2Vu dGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JF QVRFIFRZUEUgJXtpZGVudGl0eX1EIEFTIEVOVU0gKCV7dmFsdWVzOiwgfUwpCisgKi8KK3N0YXRp YyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlRW51bVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpw YXJzZXRyZWUpCit7CisJQ3JlYXRlRW51bVN0bXQgKm5vZGUgPSAoQ3JlYXRlRW51bVN0bXQgKikg cGFyc2V0cmVlOworCUxpc3QJICAgKnZhbHVlcyA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOwor CisJZm9yZWFjaChjZWxsLCBub2RlLT52YWxzKQorCQl2YWx1ZXMgPSBsYXBwZW5kKHZhbHVlcywg bmV3X3N0cmluZ19vYmplY3Qoc3RyVmFsKGxmaXJzdF9ub2RlKFN0cmluZywgY2VsbCkpKSk7CisK KwlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkNSRUFURSBUWVBFICV7aWRlbnRpdHl9RCBBUyBFTlVN ICgle3ZhbHVlczosIH1MKSIsIDIsCisJCQkJCQkgICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3Qs CisJCQkJCQkgIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUeXBlUmVsYXRpb25JZCwgb2Jq ZWN0SWQpLAorCQkJCQkJICAidmFsdWVzIiwgT2JqVHlwZUFycmF5LCB2YWx1ZXMpOworfQorCisv KgorICogRGVwYXJzZSBhIENyZWF0ZUV4dGVuc2lvblN0bXQKKyAqCisgKiBHaXZlbiBhbiBleHRl bnNpb24gT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBP YmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIENSRUFURSBFWFRFTlNJT04gJXtpZl9ub3RfZXhpc3RzfXMgJXtuYW1l fUkgJXtvcHRpb25zOiB9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZUV4 dGVuc2lvblN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlRXh0 ZW5zaW9uU3RtdCAqbm9kZSA9IChDcmVhdGVFeHRlbnNpb25TdG10ICopIHBhcnNldHJlZTsKKwlS ZWxhdGlvbglwZ19leHRlbnNpb247CisJSGVhcFR1cGxlCWV4dFR1cDsKKwlGb3JtX3BnX2V4dGVu c2lvbiBleHRGb3JtOworCU9ialRyZWUgICAgKnRtcDsKKwlMaXN0CSAgICpsaXN0ID0gTklMOwor CUxpc3RDZWxsICAgKmNlbGw7CisKKwlwZ19leHRlbnNpb24gPSB0YWJsZV9vcGVuKEV4dGVuc2lv blJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJZXh0VHVwID0gZ2V0X2NhdGFsb2dfb2Jq ZWN0X2J5X29pZChwZ19leHRlbnNpb24sIEFudW1fcGdfZXh0ZW5zaW9uX29pZCwgb2JqZWN0SWQp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChleHRUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgZXh0ZW5zaW9uIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCWV4 dEZvcm0gPSAoRm9ybV9wZ19leHRlbnNpb24pIEdFVFNUUlVDVChleHRUdXApOworCisJLyogTGlz dCBvZiBvcHRpb25zICovCisJZm9yZWFjaChjZWxsLCBub2RlLT5vcHRpb25zKQorCXsKKwkJRGVm RWxlbSAgICAqb3B0ID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCisJCWlmIChzdHJjbXAo b3B0LT5kZWZuYW1lLCAic2NoZW1hIikgPT0gMCkKKwkJeworCQkJLyogU2tpcCB0aGlzIG9uZTsg d2UgYWRkIG9uZSB1bmNvbmRpdGlvbmFsbHkgYmVsb3cgKi8KKwkJCWNvbnRpbnVlOworCQl9CisJ CWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJuZXdfdmVyc2lvbiIpID09IDApCisJCXsK KwkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJWRVJTSU9OICV7dmVyc2lvbn1MIiwgMiwKKwkJCQkJ CQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInZlcnNpb24iLAorCQkJCQkJCQkgInZlcnNpb24i LCBPYmpUeXBlU3RyaW5nLCBkZWZHZXRTdHJpbmcob3B0KSk7CisJCQlsaXN0ID0gbGFwcGVuZChs aXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJfQorCQllbHNlIGlmIChzdHJjbXAob3B0 LT5kZWZuYW1lLCAib2xkX3ZlcnNpb24iKSA9PSAwKQorCQl7CisJCQl0bXAgPSBuZXdfb2JqdHJl ZV9WQSgiRlJPTSAle3ZlcnNpb259TCIsIDIsCisJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJp bmcsICJmcm9tIiwKKwkJCQkJCQkJICJ2ZXJzaW9uIiwgT2JqVHlwZVN0cmluZywgZGVmR2V0U3Ry aW5nKG9wdCkpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9wdGlvbiAlcyIs IG9wdC0+ZGVmbmFtZSk7CisJfQorCisJLyogQWRkIHRoZSBTQ0hFTUEgb3B0aW9uICovCisJdG1w ID0gbmV3X29ianRyZWVfVkEoIlNDSEVNQSAle3NjaGVtYX1JIiwgMiwKKwkJCQkJCSAidHlwZSIs IE9ialR5cGVTdHJpbmcsICJzY2hlbWEiLAorCQkJCQkJICJzY2hlbWEiLCBPYmpUeXBlU3RyaW5n LAorCQkJCQkJIGdldF9uYW1lc3BhY2VfbmFtZShleHRGb3JtLT5leHRuYW1lc3BhY2UpKTsKKwls aXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwl0YWJsZV9jbG9z ZShwZ19leHRlbnNpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gbmV3X29ianRyZWVf VkEoIkNSRUFURSBFWFRFTlNJT04gJXtpZl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkgJXtvcHRpb25z OiB9cyIsIDMsCisJCQkJCQkgICJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJ CSAgbm9kZS0+aWZfbm90X2V4aXN0cyA/ICJJRiBOT1QgRVhJU1RTIiA6ICIiLAorCQkJCQkJICAi bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPmV4dG5hbWUsCisJCQkJCQkgICJvcHRpb25zIiwg T2JqVHlwZUFycmF5LCBsaXN0KTsKK30KKworLyoKKyAqIElmIGEgY29sdW1uIG5hbWUgaXMgc3Bl Y2lmaWVkLCBhZGQgYW4gZWxlbWVudCBmb3IgaXQ7IG90aGVyd2lzZSBpdCdzIGEKKyAqIHRhYmxl LWxldmVsIG9wdGlvbi4KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9GZHdPcHRpb25z KExpc3QgKm9wdGlvbnMsIGNoYXIgKmNvbG5hbWUsIGJvb2wgYWx0ZXJjb2xvcHRpb25zKQorewor CU9ialRyZWUgICAgKnJldDsKKworCWlmIChjb2xuYW1lKQorCQlyZXQgPSBuZXdfb2JqdHJlZV9W QSgiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgJXtvcHRpb25zfXMiLCAyLAorCQkJCQkJCSAiY29s dW1uIiwgT2JqVHlwZVN0cmluZywgY29sbmFtZSwKKwkJCQkJCQkgIm9wdGlvbnMiLCBPYmpUeXBl U3RyaW5nLAorCQkJCQkJCSBhbHRlcmNvbG9wdGlvbnMgPyAiT1BUSU9OUyIgOiAiIik7CisJZWxz ZQorCQlyZXQgPSBuZXdfb2JqdHJlZSgiT1BUSU9OUyIpOworCisJaWYgKG9wdGlvbnMgIT0gTklM KQorCXsKKwkJTGlzdAkgICAqb3B0b3V0ID0gTklMOworCQlMaXN0Q2VsbCAgICpjZWxsOworCisJ CWZvcmVhY2goY2VsbCwgb3B0aW9ucykKKwkJeworCQkJRGVmRWxlbSAgICAqZWxlbTsKKwkJCU9i alRyZWUgICAgKm9wdDsKKworCQkJZWxlbSA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKwor CQkJc3dpdGNoIChlbGVtLT5kZWZhY3Rpb24pCisJCQl7CisJCQkJY2FzZSBERUZFTEVNX1VOU1BF QzoKKwkJCQkJb3B0ID0gbmV3X29ianRyZWVfVkEoIiV7bGFiZWx9SSAle3ZhbHVlfUwiLCAyLAor CQkJCQkJCQkJCSAibGFiZWwiLCBPYmpUeXBlU3RyaW5nLCBlbGVtLT5kZWZuYW1lLAorCQkJCQkJ CQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCSBlbGVtLT5hcmcgPyBkZWZH ZXRTdHJpbmcoZWxlbSkgOgorCQkJCQkJCQkJCSBkZWZHZXRCb29sZWFuKGVsZW0pID8gIlRSVUUi IDogIkZBTFNFIik7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgREVGRUxFTV9TRVQ6CisJCQkJCW9w dCA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgJXtsYWJlbH1JICV7dmFsdWV9TCIsIDIsCisJCQkJCQkJ CQkJICJsYWJlbCIsIE9ialR5cGVTdHJpbmcsIGVsZW0tPmRlZm5hbWUsCisJCQkJCQkJCQkJICJ2 YWx1ZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJIGVsZW0tPmFyZyA/IGRlZkdldFN0cmlu ZyhlbGVtKSA6CisJCQkJCQkJCQkJIGRlZkdldEJvb2xlYW4oZWxlbSkgPyAiVFJVRSIgOiAiRkFM U0UiKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBERUZFTEVNX0FERDoKKwkJCQkJb3B0ID0gbmV3 X29ianRyZWVfVkEoIkFERCAle2xhYmVsfUkgJXt2YWx1ZX1MIiwgMiwKKwkJCQkJCQkJCQkgImxh YmVsIiwgT2JqVHlwZVN0cmluZywgZWxlbS0+ZGVmbmFtZSwKKwkJCQkJCQkJCQkgInZhbHVlIiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkgZWxlbS0+YXJnID8gZGVmR2V0U3RyaW5nKGVsZW0p IDoKKwkJCQkJCQkJCQkgZGVmR2V0Qm9vbGVhbihlbGVtKSA/ICJUUlVFIiA6ICJGQUxTRSIpOwor CQkJCQlicmVhazsKKwkJCQljYXNlIERFRkVMRU1fRFJPUDoKKwkJCQkJb3B0ID0gbmV3X29ianRy ZWVfVkEoIkRST1AgJXtsYWJlbH1JIiwgMSwKKwkJCQkJCQkJCQkgImxhYmVsIiwgT2JqVHlwZVN0 cmluZywgZWxlbS0+ZGVmbmFtZSk7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWVs b2coRVJST1IsICJpbnZhbGlkIGRlZiBhY3Rpb24gJWQiLCBlbGVtLT5kZWZhY3Rpb24pOworCQkJ CQlvcHQgPSBOVUxMOworCQkJfQorCisJCQlvcHRvdXQgPSBsYXBwZW5kKG9wdG91dCwgbmV3X29i amVjdF9vYmplY3Qob3B0KSk7CisJCX0KKworCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIigl e29wdGlvbjogLH1zKSIsIG9wdG91dCk7CisJfQorCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50 KHJldCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZUZkd1N0 bXQgKENSRUFURSBGT1JFSUdOIERBVEEgV1JBUFBFUikKKyAqCisgKiBHaXZlbiBhbiBGRFcgT0lE IGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisg KiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50 YXgKKyAqIENSRUFURSBGT1JFSUdOIERBVEEgV1JBUFBFUiAle2lkZW50aXR5fUkgJXtoYW5kbGVy fXMgJXt2YWxpZGF0b3J9cyAle2dlbmVyaWNfb3B0aW9uc31zCisgKi8KK3N0YXRpYyBPYmpUcmVl ICoKK2RlcGFyc2VfQ3JlYXRlRmR3U3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkK K3sKKwlDcmVhdGVGZHdTdG10ICpub2RlID0gKENyZWF0ZUZkd1N0bXQgKikgcGFyc2V0cmVlOwor CUhlYXBUdXBsZQlmZHdUdXA7CisJRm9ybV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlciBmZHdGb3Jt OworCVJlbGF0aW9uCXJlbDsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOwor CisJcmVsID0gdGFibGVfb3BlbihGb3JlaWduRGF0YVdyYXBwZXJSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKKworCWZkd1R1cCA9IFNlYXJjaFN5c0NhY2hlMShGT1JFSUdOREFUQVdSQVBQ RVJPSUQsCisJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoZmR3VHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIGZvcmVpZ24tZGF0YSB3cmFwcGVyIHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisK KwlmZHdGb3JtID0gKEZvcm1fcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIpIEdFVFNUUlVDVChmZHdU dXApOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBGT1JFSUdOIERBVEEgV1JBUFBF UiAle2lkZW50aXR5fUkiLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIE5h bWVTdHIoZmR3Rm9ybS0+ZmR3bmFtZSkpOworCisJLyogQWRkIEhBTkRMRVIgY2xhdXNlICovCisJ aWYgKCFPaWRJc1ZhbGlkKGZkd0Zvcm0tPmZkd2hhbmRsZXIpKQorCQl0bXAgPSBuZXdfb2JqdHJl ZSgiTk8gSEFORExFUiIpOworCWVsc2UKKwl7CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJIQU5E TEVSICV7cHJvY2VkdXJlfUQiLCAxLAorCQkJCQkJCSAicHJvY2VkdXJlIiwgT2JqVHlwZU9iamVj dCwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9u SWQsCisJCQkJCQkJCQkJCQkJCSBmZHdGb3JtLT5mZHdoYW5kbGVyKSk7CisJfQorCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7aGFuZGxlcn1zIiwgdG1wKTsKKworCS8qIEFkZCBWQUxJREFU T1IgY2xhdXNlICovCisJaWYgKCFPaWRJc1ZhbGlkKGZkd0Zvcm0tPmZkd3ZhbGlkYXRvcikpCisJ CXRtcCA9IG5ld19vYmp0cmVlKCJOTyBWQUxJREFUT1IiKTsKKwllbHNlCisJeworCQl0bXAgPSBu ZXdfb2JqdHJlZV9WQSgiVkFMSURBVE9SICV7cHJvY2VkdXJlfUQiLCAxLAorCQkJCQkJCSAicHJv Y2VkdXJlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l X2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSBmZHdGb3JtLT5mZHd2YWxp ZGF0b3IpKTsKKwl9CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt2YWxpZGF0b3J9cyIs IHRtcCk7CisKKwkvKiBBZGQgYW4gT1BUSU9OUyBjbGF1c2UsIGlmIGFueSAqLworCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7Z2VuZXJpY19vcHRpb25zfXMiLAorCQkJCQkJIGRlcGFyc2Vf RmR3T3B0aW9ucyhub2RlLT5vcHRpb25zLCBOVUxMLCBmYWxzZSkpOworCisJUmVsZWFzZVN5c0Nh Y2hlKGZkd1R1cCk7CisJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJl dHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFsdGVyRmR3U3RtdCAoQUxURVIgRk9S RUlHTiBEQVRBIFdSQVBQRVIpCisgKgorICogR2l2ZW4gYW4gRkRXIE9JRCBhbmQgdGhlIHBhcnNl IHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5n IHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBGT1JF SUdOIERBVEEgV1JBUFBFUiAle2lkZW50aXR5fUkgJXtmZHdfb3B0aW9uczogfXMgJXtnZW5lcmlj X29wdGlvbnN9RAorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyRmR3U3RtdChP aWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlBbHRlckZkd1N0bXQgKm5vZGUgPSAo QWx0ZXJGZHdTdG10ICopIHBhcnNldHJlZTsKKwlIZWFwVHVwbGUJZmR3VHVwOworCUZvcm1fcGdf Zm9yZWlnbl9kYXRhX3dyYXBwZXIgZmR3Rm9ybTsKKwlSZWxhdGlvbglyZWw7CisJT2JqVHJlZSAg ICAqcmV0OworCUxpc3QJICAgKmZkd19vcHRpb25zID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7 CisKKwlyZWwgPSB0YWJsZV9vcGVuKEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCisJZmR3VHVwID0gU2VhcmNoU3lzQ2FjaGUxKEZPUkVJR05EQVRBV1JB UFBFUk9JRCwKKwkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVh cFR1cGxlSXNWYWxpZChmZHdUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgZm9yZWlnbi1kYXRhIHdyYXBwZXIgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsK KworCWZkd0Zvcm0gPSAoRm9ybV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcikgR0VUU1RSVUNUKGZk d1R1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRk9SRUlHTiBEQVRBIFdSQVBQ RVIgJXtpZGVudGl0eX1JIiwgMSwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBO YW1lU3RyKGZkd0Zvcm0tPmZkd25hbWUpKTsKKworCS8qCisJICogSXRlcmF0ZSB0aHJvdWdoIG9w dGlvbnMsIHRvIHNlZSB3aGF0IGNoYW5nZWQsIGJ1dCB1c2UgY2F0YWxvZyBhcyBhCisJICogYmFz aXMgZm9yIG5ldyB2YWx1ZXMuCisJICovCisJZm9yZWFjaChjZWxsLCBub2RlLT5mdW5jX29wdGlv bnMpCisJeworCQlEZWZFbGVtICAgICplbGVtOworCQlPYmpUcmVlICAgICp0bXA7CisKKwkJZWxl bSA9IGxmaXJzdChjZWxsKTsKKworCQlpZiAocGdfc3RyY2FzZWNtcChlbGVtLT5kZWZuYW1lLCAi aGFuZGxlciIpID09IDApCisJCXsKKwkJCS8qIGFkZCBIQU5ETEVSIGNsYXVzZSAqLworCQkJaWYg KCFPaWRJc1ZhbGlkKGZkd0Zvcm0tPmZkd2hhbmRsZXIpKQorCQkJCXRtcCA9IG5ld19vYmp0cmVl KCJOTyBIQU5ETEVSIik7CisJCQllbHNlCisJCQl7CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEo IkhBTkRMRVIgJXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJCQkJCQkgInByb2NlZHVyZSIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVy ZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJIGZkd0Zvcm0tPmZkd2hhbmRsZXIpKTsKKwkJ CX0KKwkJCWZkd19vcHRpb25zID0gbGFwcGVuZChmZHdfb3B0aW9ucywgbmV3X29iamVjdF9vYmpl Y3QodG1wKSk7CisJCX0KKwkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChlbGVtLT5kZWZuYW1lLCAi dmFsaWRhdG9yIikgPT0gMCkKKwkJeworCQkJLyogYWRkIFZBTElEQVRPUiBjbGF1c2UgKi8KKwkJ CWlmICghT2lkSXNWYWxpZChmZHdGb3JtLT5mZHd2YWxpZGF0b3IpKQorCQkJCXRtcCA9IG5ld19v Ymp0cmVlKCJOTyBWQUxJREFUT1IiKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQl0bXAgPSBuZXdfb2Jq dHJlZV9WQSgiVkFMSURBVE9SICV7cHJvY2VkdXJlfUQiLCAxLAorCQkJCQkJCQkJICJwcm9jZWR1 cmUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9p ZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCSBmZHdGb3JtLT5mZHd2YWxp ZGF0b3IpKTsKKwkJCX0KKwkJCWZkd19vcHRpb25zID0gbGFwcGVuZChmZHdfb3B0aW9ucywgbmV3 X29iamVjdF9vYmplY3QodG1wKSk7CisJCX0KKwl9CisKKwkvKiBBZGQgSEFORExFUi9WQUxJREFU T1IgaWYgc3BlY2lmaWVkICovCisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle2Zkd19vcHRp b25zOiB9cyIsIGZkd19vcHRpb25zKTsKKworCS8qIEFkZCBhbiBPUFRJT05TIGNsYXVzZSwgaWYg YW55ICovCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtnZW5lcmljX29wdGlvbnN9RCIs CisJCQkJCQkgZGVwYXJzZV9GZHdPcHRpb25zKG5vZGUtPm9wdGlvbnMsIE5VTEwsIGZhbHNlKSk7 CisKKwlSZWxlYXNlU3lzQ2FjaGUoZmR3VHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDUkVBVEUg VFlQRSBBUyBSQU5HRSBzdGF0ZW1lbnQKKyAqCisgKiBHaXZlbiBhIFJhbmdlIHR5cGUgT0lEIGFu ZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiBy ZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIENSRUFURSBUWVBFICV7aWRlbnRpdHl9RCBBUyBSQU5HRSAoJXtkZWZpbml0aW9uOiwgfXMp CisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlUmFuZ2VTdG10KE9pZCBvYmpl Y3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCU9ialRyZWUgICAgKnRtcDsKKwlMaXN0CSAgICpk ZWZpbml0aW9uID0gTklMOworCVJlbGF0aW9uCXBnX3JhbmdlOworCUhlYXBUdXBsZQlyYW5nZVR1 cDsKKwlGb3JtX3BnX3JhbmdlIHJhbmdlRm9ybTsKKwlTY2FuS2V5RGF0YSBrZXlbMV07CisJU3lz U2NhbkRlc2Mgc2NhbjsKKworCXBnX3JhbmdlID0gdGFibGVfb3BlbihSYW5nZVJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3Bn X3JhbmdlX3JuZ3R5cGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJ CQlPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5z Y2FuKHBnX3JhbmdlLCBSYW5nZVR5cGlkSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEs IGtleSk7CisKKwlyYW5nZVR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHJhbmdlVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHJhbmdlIHdpdGggdHlwZSBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKworCXJhbmdl Rm9ybSA9IChGb3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1QocmFuZ2VUdXApOworCisJLyogU1VCVFlQ RSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJTVUJUWVBFID0gJXt0eXBlfUQiLCAyLAorCQkJ CQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAic3VidHlwZSIsCisJCQkJCQkgInR5cGUiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUeXBlUmVs YXRpb25JZCwgcmFuZ2VGb3JtLT5ybmdzdWJ0eXBlKSk7CisJZGVmaW5pdGlvbiA9IGxhcHBlbmQo ZGVmaW5pdGlvbiwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBTVUJUWVBFX09QQ0xB U1MgKi8KKwlpZiAoT2lkSXNWYWxpZChyYW5nZUZvcm0tPnJuZ3N1Ym9wYykpCisJeworCQl0bXAg PSBuZXdfb2JqdHJlZV9WQSgiU1VCVFlQRV9PUENMQVNTID0gJXtvcGNsYXNzfUQiLCAyLAorCQkJ CQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgIm9wY2xhc3MiLAorCQkJCQkJCSAib3BjbGFz cyIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChP cGVyYXRvckNsYXNzUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHJhbmdlRm9ybS0+cm5nc3Vi b3BjKSk7CisJCWRlZmluaXRpb24gPSBsYXBwZW5kKGRlZmluaXRpb24sIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcCkpOworCX0KKworCS8qIENPTExBVElPTiAqLworCWlmIChPaWRJc1ZhbGlkKHJhbmdl Rm9ybS0+cm5nY29sbGF0aW9uKSkKKwl7CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJDT0xMQVRJ T04gPSAle2NvbGxhdGlvbn1EIiwgMiwKKwkJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcs ICJjb2xsYXRpb24iLAorCQkJCQkJCSAiY29sbGF0aW9uIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKENvbGxhdGlvblJlbGF0aW9uSWQsCisJCQkJ CQkJCQkJCQkJCSByYW5nZUZvcm0tPnJuZ2NvbGxhdGlvbikpOworCQlkZWZpbml0aW9uID0gbGFw cGVuZChkZWZpbml0aW9uLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBDQU5P TklDQUwgKi8KKwlpZiAoT2lkSXNWYWxpZChyYW5nZUZvcm0tPnJuZ2Nhbm9uaWNhbCkpCisJewor CQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQ0FOT05JQ0FMID0gJXtjYW5vbmljYWx9RCIsIDIsCisJ CQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiY2Fub25pY2FsIiwKKwkJCQkJCQkgImNh bm9uaWNhbCIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFt ZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgcmFuZ2VGb3JtLT5ybmdj YW5vbmljYWwpKTsKKwkJZGVmaW5pdGlvbiA9IGxhcHBlbmQoZGVmaW5pdGlvbiwgbmV3X29iamVj dF9vYmplY3QodG1wKSk7CisJfQorCisJLyogU1VCVFlQRV9ESUZGICovCisJaWYgKE9pZElzVmFs aWQocmFuZ2VGb3JtLT5ybmdzdWJkaWZmKSkKKwl7CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJT VUJUWVBFX0RJRkYgPSAle3N1YnR5cGVfZGlmZn1EIiwgMiwKKwkJCQkJCQkgImNsYXVzZSIsIE9i alR5cGVTdHJpbmcsICJzdWJ0eXBlX2RpZmYiLAorCQkJCQkJCSAic3VidHlwZV9kaWZmIiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVy ZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSByYW5nZUZvcm0tPnJuZ3N1YmRpZmYpKTsKKwkJ ZGVmaW5pdGlvbiA9IGxhcHBlbmQoZGVmaW5pdGlvbiwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7 CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShwZ19yYW5nZSwg Um93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkNSRUFURSBUWVBF ICV7aWRlbnRpdHl9RCBBUyBSQU5HRSAoJXtkZWZpbml0aW9uOiwgfXMpIiwgMiwKKwkJCQkJCSAg ImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSAgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lX2lkKFR5cGVSZWxhdGlvbklkLCBvYmplY3RJZCksCisJCQkJCQkgICJkZWZpbml0aW9uIiwg T2JqVHlwZUFycmF5LCBkZWZpbml0aW9uKTsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJF bnVtU3RtdC4KKyAqCisgKiBHaXZlbiBhbiBlbnVtIE9JRCBhbmQgYSBwYXJzZSB0cmVlIHRoYXQg bW9kaWZpZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGFsdGVy IHR5cGUuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIFRZUEUgJXtpZGVudGl0eX1E IEFERCBWQUxVRSAle2lmX25vdF9leGlzdHN9cyAle3ZhbHVlfUwKKyAqICV7YWZ0ZXJfb3JfYmVm b3JlfXMgJXtuZWlnaGJvcn1MCisgKiAJT1IKKyAqIEFMVEVSIFRZUEUgJXtpZGVudGl0eX1EIFJF TkFNRSBWQUxVRSAle3ZhbHVlfUwgVE8gJXtuZXd2YWx1ZX1MCisgKi8KK3N0YXRpYyBPYmpUcmVl ICoKK2RlcGFyc2VfQWx0ZXJFbnVtU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkK K3sKKwlBbHRlckVudW1TdG10ICpub2RlID0gKEFsdGVyRW51bVN0bXQgKikgcGFyc2V0cmVlOwor CU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBUWVBFICV7 aWRlbnRpdHl9RCIsIDEsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVHlwZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJ CQkJIG9iamVjdElkKSk7CisKKwlpZiAoIW5vZGUtPm9sZFZhbCkKKwl7CisJCWFwcGVuZF9mb3Jt YXRfc3RyaW5nKHJldCwgIkFERCBWQUxVRSIpOworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQs ICIle2lmX25vdF9leGlzdHN9cyIsICJpZl9ub3RfZXhpc3RzIiwKKwkJCQkJCQkgbm9kZS0+c2tp cElmTmV3VmFsRXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIpOworCisJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHJldCwgIiV7dmFsdWV9TCIsICJ2YWx1ZSIsIG5vZGUtPm5ld1ZhbCk7CisKKwkJ aWYgKG5vZGUtPm5ld1ZhbE5laWdoYm9yKQorCQl7CisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChy ZXQsICIle2FmdGVyX29yX2JlZm9yZX1zIiwKKwkJCQkJCQkJICJhZnRlcl9vcl9iZWZvcmUiLAor CQkJCQkJCQkgbm9kZS0+bmV3VmFsSXNBZnRlciA/ICJBRlRFUiIgOiAiQkVGT1JFIik7CisJCQlh cHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle25laWdoYm9yfUwiLCAibmVpZ2hib3IiLAorCQkJ CQkJCQkgbm9kZS0+bmV3VmFsTmVpZ2hib3IpOworCQl9CisJfQorCWVsc2UKKwl7CisJCWFwcGVu ZF9zdHJpbmdfb2JqZWN0KHJldCwgIlJFTkFNRSBWQUxVRSAle3ZhbHVlfUwgVE8iLCAidmFsdWUi LAorCQkJCQkJCSBub2RlLT5vbGRWYWwpOworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIl e25ld3ZhbHVlfUwiLCAibmV3dmFsdWUiLCBub2RlLT5uZXdWYWwpOworCX0KKworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFsdGVyRXh0ZW5zaW9uU3RtdCAoQUxURVIgRVhU RU5TSU9OIC4uIFVQREFURSBUTyBWRVJTSU9OKQorICoKKyAqIEdpdmVuIGFuIGV4dGVuc2lvbiBP SUQgYW5kIGEgcGFyc2UgdHJlZSB0aGF0IG1vZGlmaWVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQor ICogcmVwcmVzZW50aW5nIHRoZSBhbHRlciB0eXBlLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4Cisg KiBBTFRFUiBFWFRFTlNJT04gJXtpZGVudGl0eX1JIFVQREFURSAle29wdGlvbnM6IH1zCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJFeHRlbnNpb25TdG10KE9pZCBvYmplY3RJ ZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyRXh0ZW5zaW9uU3RtdCAqbm9kZSA9IChBbHRl ckV4dGVuc2lvblN0bXQgKikgcGFyc2V0cmVlOworCVJlbGF0aW9uCXBnX2V4dGVuc2lvbjsKKwlI ZWFwVHVwbGUJZXh0VHVwOworCUZvcm1fcGdfZXh0ZW5zaW9uIGV4dEZvcm07CisJT2JqVHJlZSAg ICAqcmV0OworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlEZWZF bGVtICAgICpkX25ld192ZXJzaW9uID0gTlVMTDsKKworCXBnX2V4dGVuc2lvbiA9IHRhYmxlX29w ZW4oRXh0ZW5zaW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlleHRUdXAgPSBnZXRf Y2F0YWxvZ19vYmplY3RfYnlfb2lkKHBnX2V4dGVuc2lvbiwgQW51bV9wZ19leHRlbnNpb25fb2lk LCBvYmplY3RJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGV4dFR1cCkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBleHRlbnNpb24gd2l0aCBPSUQgJXUiLAorCQkJ IG9iamVjdElkKTsKKwlleHRGb3JtID0gKEZvcm1fcGdfZXh0ZW5zaW9uKSBHRVRTVFJVQ1QoZXh0 VHVwKTsKKworCWZvcmVhY2goY2VsbCwgbm9kZS0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAg Km9wdCA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKworCQlpZiAoc3RyY21wKG9wdC0+ZGVm bmFtZSwgIm5ld192ZXJzaW9uIikgPT0gMCkKKwkJeworCQkJT2JqVHJlZSAgICAqdG1wOworCisJ CQlpZiAoZF9uZXdfdmVyc2lvbikKKwkJCQllbG9nKEVSUk9SLCAiY29uZmxpY3Rpbmcgb3IgcmVk dW5kYW50IG9wdGlvbnMgZm9yIGV4dGVuc2lvbiB3aXRoIE9JRCAldSIsCisJCQkJCSBvYmplY3RJ ZCk7CisKKwkJCWRfbmV3X3ZlcnNpb24gPSBvcHQ7CisKKwkJCXRtcCA9IG5ld19vYmp0cmVlX1ZB KCJUTyAle3ZlcnNpb259TCIsIDIsCisJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJ2 ZXJzaW9uIiwKKwkJCQkJCQkJICJ2ZXJzaW9uIiwgT2JqVHlwZVN0cmluZywgZGVmR2V0U3RyaW5n KG9wdCkpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7 CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9wdGlvbiAlcyIsIG9w dC0+ZGVmbmFtZSk7CisJfQorCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIEVYVEVOU0lP TiAle2lkZW50aXR5fUkgVVBEQVRFICV7b3B0aW9uczogfXMiLCAyLAorCQkJCQkJICJpZGVudGl0 eSIsIE9ialR5cGVTdHJpbmcsIE5hbWVTdHIoZXh0Rm9ybS0+ZXh0bmFtZSksCisJCQkJCQkgIm9w dGlvbnMiLCBPYmpUeXBlQXJyYXksIGxpc3QpOworCisJdGFibGVfY2xvc2UocGdfZXh0ZW5zaW9u LCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2Ug YW4gQWx0ZXJFeHRlbnNpb25Db250ZW50c1N0bXQgKEFMVEVSIEVYVEVOU0lPTiBleHQgQUREL0RS T1Agb2JqZWN0KQorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBFWFRFTlNJT04gJXtl eHRpZGVudGl0eX1JICV7ZXh0b3B0aW9ufXMgJXtleHRvYmp0eXBlfXMKKyAqIEFERC9EUk9QICV7 b2JqaWRlbnRpdHl9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyRXh0ZW5z aW9uQ29udGVudHNTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlLAorCQkJCQkJCQkg ICBPYmplY3RBZGRyZXNzIG9iamVjdEFkZHJlc3MpCit7CisJQWx0ZXJFeHRlbnNpb25Db250ZW50 c1N0bXQgKm5vZGUgPSAoQWx0ZXJFeHRlbnNpb25Db250ZW50c1N0bXQgKikgcGFyc2V0cmVlOwor CisJQXNzZXJ0KG5vZGUtPmFjdGlvbiA9PSArMSB8fCBub2RlLT5hY3Rpb24gPT0gLTEpOworCisJ cmV0dXJuIG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBFWFRFTlNJT04gJXtleHRpZGVudGl0eX1JICV7 ZXh0b3B0aW9ufXMgJXtleHRvYmp0eXBlfXMgJXtvYmppZGVudGl0eX1zIiwgNCwKKwkJCQkJCSAg ImV4dGlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywgbm9kZS0+ZXh0bmFtZSwKKwkJCQkJCSAgImV4 dG9wdGlvbiIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgIG5vZGUtPmFjdGlvbiA9PSArMSA/ICJB REQiIDogIkRST1AiLAorCQkJCQkJICAiZXh0b2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJ CQkgIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPm9ianR5cGUsIGZhbHNlKSwKKwkJCQkJCSAgIm9i amlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAgZ2V0T2JqZWN0SWRlbnRpdHkoJm9i amVjdEFkZHJlc3MsIGZhbHNlKSk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIENyZWF0ZUNhc3RT dG10LgorICoKKyAqIEdpdmVuIGEgc2VxdWVuY2UgT0lEIGFuZCBhIHBhcnNlIHRyZWUgdGhhdCBt b2RpZmllZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRp b24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIENBU1QgKCV7c291 cmNldHlwZX1UIEFTICV7dGFyZ2V0dHlwZX1UKSAle21lY2hhbmlzbX1zICV7Y29udGV4dH1zCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlQ2FzdFN0bXQoT2lkIG9iamVjdElk LCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlQ2FzdFN0bXQgKm5vZGUgPSAoQ3JlYXRlQ2Fz dFN0bXQgKikgcGFyc2V0cmVlOworCVJlbGF0aW9uCWNhc3RyZWw7CisJSGVhcFR1cGxlCWNhc3RU dXA7CisJRm9ybV9wZ19jYXN0IGNhc3RGb3JtOworCU9ialRyZWUgICAgKnJldDsKKwljaGFyCSAg ICpjb250ZXh0OworCisJY2FzdHJlbCA9IHRhYmxlX29wZW4oQ2FzdFJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJY2FzdFR1cCA9IGdldF9jYXRhbG9nX29iamVjdF9ieV9vaWQoY2FzdHJl bCwgQW51bV9wZ19jYXN0X29pZCwgb2JqZWN0SWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChj YXN0VHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNhc3Qgd2l0 aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJY2FzdEZvcm0gPSAoRm9ybV9wZ19jYXN0KSBHRVRTVFJV Q1QoY2FzdFR1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIENBU1QgKCV7c291 cmNldHlwZX1UIEFTICV7dGFyZ2V0dHlwZX1UKSIsIDIsCisJCQkJCQkgInNvdXJjZXR5cGUiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKGNhc3RGb3JtLT5jYXN0 c291cmNlLCAtMSksCisJCQkJCQkgInRhcmdldHR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl90eXBlKGNhc3RGb3JtLT5jYXN0dGFyZ2V0LCAtMSkpOworCisJaWYg KG5vZGUtPmlub3V0KQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle21lY2hhbmlzbX1z IiwgIm1lY2hhbmlzbSIsCisJCQkJCQkJICJXSVRIIElOT1VUIik7CisJZWxzZSBpZiAobm9kZS0+ ZnVuYyA9PSBOVUxMKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle21lY2hhbmlzbX1z IiwgIm1lY2hhbmlzbSIsCisJCQkJCQkJICJXSVRIT1VUIEZVTkNUSU9OIik7CisJZWxzZQorCXsK KwkJT2JqVHJlZSAgICAqdG1wX29iajsKKwkJU3RyaW5nSW5mb0RhdGEgZnVuYzsKKwkJSGVhcFR1 cGxlCWZ1bmNUdXA7CisJCUZvcm1fcGdfcHJvYyBmdW5jRm9ybTsKKwkJaW50CQkJaTsKKworCQlm dW5jVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsIGNhc3RGb3JtLT5jYXN0ZnVuYyk7CisJ CWZ1bmNGb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKGZ1bmNUdXApOworCisJCWluaXRT dHJpbmdJbmZvKCZmdW5jKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmZnVuYywgIiVzKCIsCisJCQkJ CQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZ2V0X25hbWVzcGFjZV9uYW1lKGZ1bmNGb3Jt LT5wcm9uYW1lc3BhY2UpLAorCQkJCQkJCQkJCQkJCU5hbWVTdHIoZnVuY0Zvcm0tPnByb25hbWUp KSk7CisJCWZvciAoaSA9IDA7IGkgPCBmdW5jRm9ybS0+cHJvbmFyZ3M7IGkrKykKKwkJeworCQkJ aWYgKGkgIT0gMCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmZnVuYywgJywnKTsKKworCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZnVuYywKKwkJCQkJCQkJICAgZm9ybWF0X3R5cGVfYmVf cXVhbGlmaWVkKGZ1bmNGb3JtLT5wcm9hcmd0eXBlcy52YWx1ZXNbaV0pKTsKKwkJfQorCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcigmZnVuYywgJyknKTsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWVf VkEoIldJVEggRlVOQ1RJT04gJXtjYXN0ZnVuY3Rpb259cyIsIDEsCisJCQkJCQkJCSJjYXN0ZnVu Y3Rpb24iLCBPYmpUeXBlU3RyaW5nLCBmdW5jLmRhdGEpOworCQlhcHBlbmRfb2JqZWN0X29iamVj dChyZXQsICIle21lY2hhbmlzbX1zIiwgdG1wX29iaik7CisKKwkJUmVsZWFzZVN5c0NhY2hlKGZ1 bmNUdXApOworCX0KKworCXN3aXRjaCAobm9kZS0+Y29udGV4dCkKKwl7CisJCWNhc2UgQ09FUkNJ T05fSU1QTElDSVQ6CisJCQljb250ZXh0ID0gIkFTIElNUExJQ0lUIjsKKwkJCWJyZWFrOworCQlj YXNlIENPRVJDSU9OX0FTU0lHTk1FTlQ6CisJCQljb250ZXh0ID0gIkFTIEFTU0lHTk1FTlQiOwor CQkJYnJlYWs7CisJCWNhc2UgQ09FUkNJT05fRVhQTElDSVQ6CisJCQljb250ZXh0ID0gIiI7CisJ CQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIGNvZXJjaW9uIGNv ZGUgJWMiLCBub2RlLT5jb250ZXh0KTsKKwkJCXJldHVybiBOVUxMOwkJLyoga2VlcCBjb21waWxl ciBxdWlldCAqLworCX0KKwlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle2NvbnRleHR9cyIs ICJjb250ZXh0IiwgY29udGV4dCk7CisKKwl0YWJsZV9jbG9zZShjYXN0cmVsLCBBY2Nlc3NTaGFy ZUxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQUxURVIgREVG QVVMVCBQUklWSUxFR0VTIHN0YXRlbWVudC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxU RVIgREVGQVVMVCBQUklWSUxFR0VTICV7aW5fc2NoZW1hfXMgJXtmb3Jfcm9sZXN9cyAle2dyYW50 fXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckRlZmF1bHRQcml2aWxlZ2Vz U3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCit7CisJT2JqVHJlZSAgICAqcmV0OworCUFsdGVy RGVmYXVsdFByaXZpbGVnZXNTdG10ICpzdG10ID0gKEFsdGVyRGVmYXVsdFByaXZpbGVnZXNTdG10 ICopIGNtZC0+cGFyc2V0cmVlOworCUxpc3QJICAgKnJvbGVzID0gTklMOworCUxpc3QJICAgKnNj aGVtYXMgPSBOSUw7CisJTGlzdAkgICAqZ3JhbnRlZXM7CisJTGlzdAkgICAqcHJpdnM7CisJTGlz dENlbGwgICAqY2VsbDsKKwlPYmpUcmVlICAgICp0bXA7CisJT2JqVHJlZSAgICAqZ3JhbnQ7CisJ Y2hhcgkgICAqb2JqdHlwZTsKKworCXJldCA9IG5ld19vYmp0cmVlKCJBTFRFUiBERUZBVUxUIFBS SVZJTEVHRVMiKTsKKworCS8qIFNjYW4gdGhlIHBhcnNlIG5vZGUgdG8gZGlnIG91dCB0aGUgRk9S IFJPTEUgYW5kIElOIFNDSEVNQSBjbGF1c2VzICovCisJZm9yZWFjaChjZWxsLCBzdG10LT5vcHRp b25zKQorCXsKKwkJRGVmRWxlbSAgICAqb3B0ID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOwor CQlMaXN0Q2VsbCAgICpjZWxsMjsKKworCQlBc3NlcnQoSXNBKG9wdCwgRGVmRWxlbSkpOworCQlB c3NlcnQoSXNBKG9wdC0+YXJnLCBMaXN0KSk7CisJCWlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAi cm9sZXMiKSA9PSAwKQorCQl7CisJCQlmb3JlYWNoKGNlbGwyLCAoTGlzdCAqKSBvcHQtPmFyZykK KwkJCXsKKwkJCQlSb2xlU3BlYyAgICpyb2xlc3BlYyA9IGxmaXJzdChjZWxsMik7CisJCQkJT2Jq VHJlZSAgICAqb2JqID0gbmV3X29ianRyZWVfZm9yX3JvbGVzcGVjKHJvbGVzcGVjKTsKKworCQkJ CXJvbGVzID0gbGFwcGVuZChyb2xlcywgbmV3X29iamVjdF9vYmplY3Qob2JqKSk7CisJCQl9CisJ CX0KKwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInNjaGVtYXMiKSA9PSAwKQorCQl7 CisJCQlmb3JlYWNoKGNlbGwyLCAoTGlzdCAqKSBvcHQtPmFyZykKKwkJCXsKKwkJCQlTdHJpbmcJ ICAgKnZhbCA9IGxmaXJzdF9ub2RlKFN0cmluZywgY2VsbDIpOworCisJCQkJc2NoZW1hcyA9IGxh cHBlbmQoc2NoZW1hcywgbmV3X3N0cmluZ19vYmplY3Qoc3RyVmFsKHZhbCkpKTsKKwkJCX0KKwkJ fQorCX0KKworCS8qIEFkZCB0aGUgSU4gU0NIRU1BIGNsYXVzZSwgaWYgYW55ICovCisJdG1wID0g bmV3X29ianRyZWUoIklOIFNDSEVNQSIpOworCWFwcGVuZF9hcnJheV9vYmplY3QodG1wLCAiJXtz Y2hlbWFzOiwgfUkiLCBzY2hlbWFzKTsKKwlpZiAoc2NoZW1hcyA9PSBOSUwpCisJCWFwcGVuZF9u b3RfcHJlc2VudCh0bXApOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7aW5fc2NoZW1h fXMiLCB0bXApOworCisJLyogQWRkIHRoZSBGT1IgUk9MRSBjbGF1c2UsIGlmIGFueSAqLworCXRt cCA9IG5ld19vYmp0cmVlKCJGT1IgUk9MRSIpOworCWFwcGVuZF9hcnJheV9vYmplY3QodG1wLCAi JXtyb2xlczosIH1SIiwgcm9sZXMpOworCWlmIChyb2xlcyA9PSBOSUwpCisJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXApOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7Zm9yX3JvbGVzfXMi LCB0bXApOworCisJLyoKKwkgKiBBZGQgdGhlIEdSQU5UIHN1YmNvbW1hbmQKKwkgKiBWZXJib3Nl IHN5bnRheAorCSAqIEdSQU5UICV7cHJpdmlsZWdlczosIH1zIE9OICV7dGFyZ2V0fXMgVE8gJXtn cmFudGVlczosIH1SICV7Z3JhbnRfb3B0aW9ufXMKKwkgKiBvcgorCSAqIFJFVk9LRSAle2dyYW50 X29wdGlvbn1zICV7cHJpdmlsZWdlczosIH1zIE9OICV7dGFyZ2V0fXMgRlJPTSAle2dyYW50ZWVz OiwgfVIKKwkgKi8KKwlpZiAoc3RtdC0+YWN0aW9uLT5pc19ncmFudCkKKwkJZ3JhbnQgPSBuZXdf b2JqdHJlZSgiR1JBTlQiKTsKKwllbHNlCisJeworCQlncmFudCA9IG5ld19vYmp0cmVlKCJSRVZP S0UiKTsKKworCQkvKiBBZGQgdGhlIEdSQU5UIE9QVElPTiBjbGF1c2UgZm9yIFJFVk9LRSBzdWJj b21tYW5kICovCisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJHUkFOVCBPUFRJT04gRk9SIiwgMSwK KwkJCQkJCQkgInByZXNlbnQiLCBPYmpUeXBlQm9vbCwKKwkJCQkJCQkgc3RtdC0+YWN0aW9uLT5n cmFudF9vcHRpb24pOworCQlhcHBlbmRfb2JqZWN0X29iamVjdChncmFudCwgIiV7Z3JhbnRfb3B0 aW9ufXMiLCB0bXApOworCX0KKworCS8qCisJICogQWRkIHRoZSBwcml2aWxlZ2VzIGxpc3QuICBU aGlzIHVzZXMgdGhlIHBhcnNlciBzdHJ1Y3QsIGFzIG9wcG9zZWQgdG8KKwkgKiB0aGUgSW50ZXJu YWxHcmFudCBmb3JtYXQgdXNlZCBieSBHUkFOVC4gIFRoZXJlIGFyZSBlbm91Z2ggb3RoZXIKKwkg KiBkaWZmZXJlbmNlcyB0aGF0IHRoaXMgZG9lc24ndCBzZWVtIHdvcnRoIGltcHJvdmluZy4KKwkg Ki8KKwlpZiAoc3RtdC0+YWN0aW9uLT5wcml2aWxlZ2VzID09IE5JTCkKKwkJcHJpdnMgPSBsaXN0 X21ha2UxKG5ld19zdHJpbmdfb2JqZWN0KCJBTEwgUFJJVklMRUdFUyIpKTsKKwllbHNlCisJewor CQlwcml2cyA9IE5JTDsKKworCQlmb3JlYWNoKGNlbGwsIHN0bXQtPmFjdGlvbi0+cHJpdmlsZWdl cykKKwkJeworCQkJQWNjZXNzUHJpdiAqcHJpdiA9IGxmaXJzdChjZWxsKTsKKworCQkJQXNzZXJ0 KHByaXYtPmNvbHMgPT0gTklMKTsKKwkJCXByaXZzID0gbGFwcGVuZChwcml2cywgbmV3X3N0cmlu Z19vYmplY3QocHJpdi0+cHJpdl9uYW1lKSk7CisJCX0KKwl9CisKKwlhcHBlbmRfYXJyYXlfb2Jq ZWN0KGdyYW50LCAiJXtwcml2aWxlZ2VzOiwgfXMiLCBwcml2cyk7CisKKwlzd2l0Y2ggKGNtZC0+ ZC5kZWZwcml2cy5vYmp0eXBlKQorCXsKKwkJY2FzZSBPQkpFQ1RfVEFCTEU6CisJCQlvYmp0eXBl ID0gIlRBQkxFUyI7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfRlVOQ1RJT046CisJCQlvYmp0 eXBlID0gIkZVTkNUSU9OUyI7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfUk9VVElORToKKwkJ CW9ianR5cGUgPSAiUk9VVElORVMiOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1NFUVVFTkNF OgorCQkJb2JqdHlwZSA9ICJTRVFVRU5DRVMiOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1RZ UEU6CisJCQlvYmp0eXBlID0gIlRZUEVTIjsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9TQ0hF TUE6CisJCQlvYmp0eXBlID0gIlNDSEVNQVMiOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQll bG9nKEVSUk9SLCAiaW52YWxpZCBPQkpFQ1QgdmFsdWUgJWQgZm9yIGRlZmF1bHQgcHJpdmlsZWdl cyIsIGNtZC0+ZC5kZWZwcml2cy5vYmp0eXBlKTsKKwl9CisKKwkvKiBBZGQgdGhlIHRhcmdldCBv YmplY3QgdHlwZSAqLworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KGdyYW50LCAiT04gJXt0YXJnZXR9 cyIsICJ0YXJnZXQiLCBvYmp0eXBlKTsKKworCS8qIEFkZCB0aGUgZ3JhbnRlZSBsaXN0ICovCisJ Z3JhbnRlZXMgPSBOSUw7CisJZm9yZWFjaChjZWxsLCBzdG10LT5hY3Rpb24tPmdyYW50ZWVzKQor CXsKKwkJUm9sZVNwZWMgICAqc3BlYyA9IChSb2xlU3BlYyAqKSBsZmlyc3QoY2VsbCk7CisJCU9i alRyZWUgICAgKm9iaiA9IG5ld19vYmp0cmVlX2Zvcl9yb2xlc3BlYyhzcGVjKTsKKworCQlncmFu dGVlcyA9IGxhcHBlbmQoZ3JhbnRlZXMsIG5ld19vYmplY3Rfb2JqZWN0KG9iaikpOworCX0KKwor CWlmIChzdG10LT5hY3Rpb24tPmlzX2dyYW50KQorCXsKKwkJYXBwZW5kX2FycmF5X29iamVjdChn cmFudCwgIlRPICV7Z3JhbnRlZXM6LCB9UiIsIGdyYW50ZWVzKTsKKworCQkvKiBBZGQgdGhlIFdJ VEggR1JBTlQgT1BUSU9OIGNsYXVzZSBmb3IgR1JBTlQgc3ViY29tbWFuZCAqLworCQl0bXAgPSBu ZXdfb2JqdHJlZV9WQSgiV0lUSCBHUkFOVCBPUFRJT04iLCAxLAorCQkJCQkJCSAicHJlc2VudCIs IE9ialR5cGVCb29sLAorCQkJCQkJCSBzdG10LT5hY3Rpb24tPmdyYW50X29wdGlvbik7CisJCWFw cGVuZF9vYmplY3Rfb2JqZWN0KGdyYW50LCAiJXtncmFudF9vcHRpb259cyIsIHRtcCk7CisJfQor CWVsc2UKKwkJYXBwZW5kX2FycmF5X29iamVjdChncmFudCwgIkZST00gJXtncmFudGVlczosIH1S IiwgZ3JhbnRlZXMpOworCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtncmFudH1zIiwg Z3JhbnQpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIENSRUFURSBE T01BSU4KKyAqCisgKiBHaXZlbiBhIGZ1bmN0aW9uIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhh dCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVh dGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgRE9NQUlOICV7 aWRlbnRpdHl9RCBBUyAle3R5cGV9VCAle25vdF9udWxsfXMgJXtjb25zdHJhaW50c31zCisgKiAl e2NvbGxhdGlvbn1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlRG9tYWlu KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCU9ialRyZWUgICAgKnJldDsKKwlP YmpUcmVlICAgICp0bXBfb2JqOworCUhlYXBUdXBsZQl0eXBUdXA7CisJRm9ybV9wZ190eXBlIHR5 cEZvcm07CisJTGlzdAkgICAqY29uc3RyYWludHM7CisJY2hhcgkgICAqZGVmdmFsOworCisJdHlw VHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIG9iamVjdElkKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHlwVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IGRvbWFpbiB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwl0eXBGb3JtID0gKEZvcm1fcGdfdHlw ZSkgR0VUU1RSVUNUKHR5cFR1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIERP TUFJTiAle2lkZW50aXR5fUQgQVMgJXt0eXBlfVQgJXtub3RfbnVsbH1zIiwgMywKKwkJCQkJCSAi aWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFt ZV9pZChUeXBlUmVsYXRpb25JZCwgb2JqZWN0SWQpLAorCQkJCQkJICJ0eXBlIiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZSh0eXBGb3JtLT50eXBiYXNldHlwZSwK KwkJCQkJCQkJCQkJICB0eXBGb3JtLT50eXB0eXBtb2QpLAorCQkJCQkJICJub3RfbnVsbCIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkgdHlwRm9ybS0+dHlwbm90bnVsbCA/ICJOT1QgTlVMTCIgOiAi Iik7CisKKwljb25zdHJhaW50cyA9IG9idGFpbkNvbnN0cmFpbnRzKE5JTCwgSW52YWxpZE9pZCwg b2JqZWN0SWQsCisJCQkJCQkJCQlDb25zdHJPYmpEb21haW4pOworCWlmIChjb25zdHJhaW50cyA9 PSBOSUwpCisJeworCQl0bXBfb2JqID0gbmV3X29ianRyZWUoIiIpOworCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wX29iaik7CisJfQorCWVsc2UKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCIl e2VsZW1lbnRzOiwgfXMiLCAxLAorCQkJCQkJCQkiZWxlbWVudHMiLCBPYmpUeXBlQXJyYXksIGNv bnN0cmFpbnRzKTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2NvbnN0cmFpbnRzfXMi LCB0bXBfb2JqKTsKKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiQ09MTEFURSIpOworCWlmIChP aWRJc1ZhbGlkKHR5cEZvcm0tPnR5cGNvbGxhdGlvbikpCisJeworCQlPYmpUcmVlICAgICpjb2xs bmFtZTsKKworCQljb2xsbmFtZSA9IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChDb2xsYXRp b25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkgICB0eXBGb3JtLT50eXBjb2xsYXRpb24pOworCQlh cHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtuYW1lfUQiLCBjb2xsbmFtZSk7CisJfQor CWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWFwcGVuZF9vYmplY3Rfb2Jq ZWN0KHJldCwgIiV7Y29sbGF0aW9ufXMiLCB0bXBfb2JqKTsKKworCWRlZnZhbCA9IERvbWFpbkdl dERlZmF1bHQodHlwVHVwLCB0cnVlKTsKKwlpZiAoZGVmdmFsKQorCQlhcHBlbmRfc3RyaW5nX29i amVjdChyZXQsICJERUZBVUxUICV7ZGVmYXVsdH1zIiwgImRlZmF1bHQiLCBkZWZ2YWwpOworCisJ UmVsZWFzZVN5c0NhY2hlKHR5cFR1cCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVw YXJzZSBhIENyZWF0ZUZ1bmN0aW9uU3RtdCAoQ1JFQVRFIEZVTkNUSU9OKQorICoKKyAqIEdpdmVu IGEgZnVuY3Rpb24gT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVy biBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgor ICogVmVyYm9zZSBzeW50YXgKKyAqCisgKiBDUkVBVEUgJXtvcl9yZXBsYWNlfXMgRlVOQ1RJT04g JXtzaWduYXR1cmV9cyBSRVRVUk5TICV7cmV0dXJuX3R5cGV9cworICogTEFOR1VBR0UgJXt0cmFu c2Zvcm1fdHlwZX1zICV7bGFuZ3VhZ2V9SSAle3dpbmRvd31zICV7dm9sYXRpbGl0eX1zCisgKiAl e3BhcmFsbGVsX3NhZmV0eX1zICV7bGVha3Byb29mfXMgJXtzdHJpY3R9cyAle3NlY3VyaXR5X2Rl ZmluZXJ9cworICogJXtjb3N0fXMgJXtyb3dzfXMgJXtzdXBwb3J0fXMgJXtzZXRfb3B0aW9uczog fXMgQVMgJXtvYmpmaWxlfUwsCisgKiAle3N5bWJvbH1MCisgKi8KK3N0YXRpYyBPYmpUcmVlICoK K2RlcGFyc2VfQ3JlYXRlRnVuY3Rpb24oT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7 CisJQ3JlYXRlRnVuY3Rpb25TdG10ICpub2RlID0gKENyZWF0ZUZ1bmN0aW9uU3RtdCAqKSBwYXJz ZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJRGF0dW0J CXRtcGRhdHVtOworCWNoYXIJICAgKnNvdXJjZTsKKwljaGFyCSAgICpwcm9iaW4gPSBOVUxMOwor CUxpc3QJICAgKnBhcmFtczsKKwlMaXN0CSAgICpkZWZhdWx0czsKKwlMaXN0CSAgICpzZXRzID0g TklMOworCUxpc3QJICAgKnR5cGVzID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJTGlzdENl bGwgICAqY3VyZGVmOworCUxpc3RDZWxsICAgKnRhYmxlX3BhcmFtcyA9IE5VTEw7CisJSGVhcFR1 cGxlCXByb2NUdXA7CisJRm9ybV9wZ19wcm9jIHByb2NGb3JtOworCUhlYXBUdXBsZQlsYW5nVHVw OworCU9pZAkJICAgKnR5cGFycmF5OworCU9pZAkJICAgKnRyZnR5cGVzOworCUZvcm1fcGdfbGFu Z3VhZ2UgbGFuZ0Zvcm07CisJaW50CQkJaTsKKwlpbnQJCQl0eXBudW07CisJaW50CQkJbnR5cGVz OworCWludAkJCXBhcmFtY291bnQgPSBsaXN0X2xlbmd0aChub2RlLT5wYXJhbWV0ZXJzKTsKKwli b29sCQlpc251bGw7CisJYm9vbAkJaXNmdW5jdGlvbjsKKworCS8qIEdldCB0aGUgcGdfcHJvYyB0 dXBsZSAqLworCXByb2NUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgb2JqZWN0SWQpOwor CWlmICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uIHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisJ cHJvY0Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY1R1cCk7CisKKwkvKiBHZXQg dGhlIGNvcnJlc3BvbmRpbmcgcGdfbGFuZ3VhZ2UgdHVwbGUgKi8KKwlsYW5nVHVwID0gU2VhcmNo U3lzQ2FjaGUxKExBTkdPSUQsIHByb2NGb3JtLT5wcm9sYW5nKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQobGFuZ1R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBs YW5ndWFnZSB3aXRoIE9JRCAldSIsCisJCQkgcHJvY0Zvcm0tPnByb2xhbmcpOworCWxhbmdGb3Jt ID0gKEZvcm1fcGdfbGFuZ3VhZ2UpIEdFVFNUUlVDVChsYW5nVHVwKTsKKworCS8qCisJICogRGV0 ZXJtaW5lIHVzZWZ1bCB2YWx1ZXMgZm9yIHByb3NyYyBhbmQgcHJvYmluLiAgV2UgY29wZSB3aXRo IHByb2JpbgorCSAqIGJlaW5nIGVpdGhlciBOVUxMIG9yICItIiwgYnV0IHByb3NyYyBtdXN0IGhh dmUgYSB2YWxpZCB2YWx1ZS4KKwkgKi8KKwl0bXBkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQUk9D T0lELCBwcm9jVHVwLAorCQkJCQkJCSAgIEFudW1fcGdfcHJvY19wcm9zcmMsICZpc251bGwpOwor CWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJudWxsIHByb3NyYyBpbiBmdW5jdGlvbiB3aXRo IE9JRCAldSIsIG9iamVjdElkKTsKKwlzb3VyY2UgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHRtcGRh dHVtKTsKKworCS8qIERldGVybWluZSBhIHVzZWZ1bCB2YWx1ZSBmb3IgcHJvYmluICovCisJdG1w ZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgcHJvY1R1cCwKKwkJCQkJCQkgICBBbnVt X3BnX3Byb2NfcHJvYmluLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7CisJCXByb2JpbiA9 IFRleHREYXR1bUdldENTdHJpbmcodG1wZGF0dW0pOworCQlpZiAocHJvYmluWzBdID09ICdcMCcg fHwgc3RyY21wKHByb2JpbiwgIi0iKSA9PSAwKQorCQkJcHJvYmluID0gTlVMTDsKKwl9CisKKwly ZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFICV7b3JfcmVwbGFjZX1zIiwgMSwKKwkJCQkJCSAi b3JfcmVwbGFjZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+cmVwbGFjZSA/ICJPUiBS RVBMQUNFIiA6ICIiKTsKKworCS8qCisJICogVG8gY29uc3RydWN0IHRoZSBhcmd1bWVudHMgYXJy YXksIGV4dHJhY3QgdGhlIHR5cGUgT0lEcyBmcm9tIHRoZQorCSAqIGZ1bmN0aW9uJ3MgcGdfcHJv YyBlbnRyeS4gIElmIHByb25hcmdzIGVxdWFscyB0aGUgcGFyYW1ldGVyIGxpc3QKKwkgKiBsZW5n dGgsIHRoZXJlIGFyZSBubyBPVVQgcGFyYW1ldGVycyBhbmQgdGh1cyB3ZSBjYW4gZXh0cmFjdCB0 aGUgdHlwZQorCSAqIE9JRCBmcm9tIHByb2FyZ3R5cGVzOyBvdGhlcndpc2Ugd2UgbmVlZCB0byBk ZWNvZGUgcHJvYWxsYXJndHlwZXMsIHdoaWNoCisJICogaXMgYSBiaXQgbW9yZSBpbnZvbHZlZC4K KwkgKi8KKwl0eXBhcnJheSA9IHBhbGxvYyhwYXJhbWNvdW50ICogc2l6ZW9mKE9pZCkpOworCWlm IChwYXJhbWNvdW50ID4gcHJvY0Zvcm0tPnByb25hcmdzKQorCXsKKwkJRGF0dW0JCWFsbHR5cGVz OworCQlEYXR1bQkgICAqdmFsdWVzOworCQlib29sCSAgICpudWxsczsKKwkJaW50CQkJbmVsZW1z OworCisJCWFsbHR5cGVzID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIHByb2NUdXAsCisJCQkJ CQkJCSAgIEFudW1fcGdfcHJvY19wcm9hbGxhcmd0eXBlcywgJmlzbnVsbCk7CisJCWlmIChpc251 bGwpCisJCQllbG9nKEVSUk9SLCAibnVsbCBwcm9hbGxhcmd0eXBlcywgbW9yZSBudW1iZXIgb2Yg cGFyYW1ldGVycyB0aGFuIGFyZ3MgaW4gZnVuY3Rpb24gd2l0aCBPSUQgJXUiLAorCQkJCSBvYmpl Y3RJZCk7CisJCWRlY29uc3RydWN0X2FycmF5KERhdHVtR2V0QXJyYXlUeXBlUChhbGx0eXBlcyks CisJCQkJCQkgIE9JRE9JRCwgNCwgJ3QnLCAnaScsCisJCQkJCQkgICZ2YWx1ZXMsICZudWxscywg Jm5lbGVtcyk7CisJCWlmIChuZWxlbXMgIT0gcGFyYW1jb3VudCkKKwkJCWVsb2coRVJST1IsICJt aXNtYXRjaGVkIHByb2FsbGFyZ2F0eXBlcyIpOworCQlmb3IgKGkgPSAwOyBpIDwgcGFyYW1jb3Vu dDsgaSsrKQorCQkJdHlwYXJyYXlbaV0gPSB2YWx1ZXNbaV07CisJfQorCWVsc2UKKwl7CisJCWZv ciAoaSA9IDA7IGkgPCBwYXJhbWNvdW50OyBpKyspCisJCQl0eXBhcnJheVtpXSA9IHByb2NGb3Jt LT5wcm9hcmd0eXBlcy52YWx1ZXNbaV07CisJfQorCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgYW55 IGRlZmF1bHQgZXhwcmVzc2lvbnMsIHdlIHJlYWQgdGhlIGRlcGFyc2VkIGV4cHJlc3Npb24KKwkg KiBhcyBhIGxpc3Qgc28gdGhhdCB3ZSBjYW4gYXR0YWNoIHRoZW0gdG8gZWFjaCBhcmd1bWVudC4K KwkgKi8KKwl0bXBkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELCBwcm9jVHVwLAorCQkJ CQkJCSAgIEFudW1fcGdfcHJvY19wcm9hcmdkZWZhdWx0cywgJmlzbnVsbCk7CisJaWYgKCFpc251 bGwpCisJeworCQlkZWZhdWx0cyA9IEZ1bmN0aW9uR2V0RGVmYXVsdHMoRGF0dW1HZXRUZXh0UCh0 bXBkYXR1bSkpOworCQljdXJkZWYgPSBsaXN0X2hlYWQoZGVmYXVsdHMpOworCX0KKwllbHNlCisJ eworCQlkZWZhdWx0cyA9IE5JTDsKKwkJY3VyZGVmID0gTlVMTDsKKwl9CisKKwkvKgorCSAqIE5v dyBpdGVyYXRlIG92ZXIgZWFjaCBwYXJhbWV0ZXIgaW4gdGhlIHBhcnNlIHRyZWUgdG8gY3JlYXRl IHRoZQorCSAqIHBhcmFtZXRlcnMgYXJyYXkuCisJICovCisJcGFyYW1zID0gTklMOworCXR5cG51 bSA9IDA7CisJZm9yZWFjaChjZWxsLCBub2RlLT5wYXJhbWV0ZXJzKQorCXsKKwkJRnVuY3Rpb25Q YXJhbWV0ZXIgKnBhcmFtID0gKEZ1bmN0aW9uUGFyYW1ldGVyICopIGxmaXJzdChjZWxsKTsKKwkJ T2JqVHJlZSAgICAqcGFyYW1fb2JqOworCQlPYmpUcmVlICAgICpkZWZhdWx0dmFsOworCQlPYmpU cmVlICAgICpuYW1lOworCisJCS8qCisJCSAqIEEgUEFSQU1fVEFCTEUgcGFyYW1ldGVyIGluZGlj YXRlcyB0aGUgZW5kIG9mIGlucHV0IGFyZ3VtZW50czsgdGhlCisJCSAqIGZvbGxvd2luZyBwYXJh bWV0ZXJzIGFyZSBwYXJ0IG9mIHRoZSByZXR1cm4gdHlwZS4gIFdlIGlnbm9yZSB0aGVtCisJCSAq IGhlcmUsIGJ1dCBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBsaXN0 IHNvIHRoYXQgd2UKKwkJICogY2FuIGVhc2lseSBwcm9kdWNlIHRoZSByZXR1cm4gdHlwZSBiZWxv dy4KKwkJICovCisJCWlmIChwYXJhbS0+bW9kZSA9PSBGVU5DX1BBUkFNX1RBQkxFKQorCQl7CisJ CQl0YWJsZV9wYXJhbXMgPSBjZWxsOworCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkgKiBWZXJi b3NlIHN5bnRheCBmb3IgcGFyYW1hdGVyOiAle21vZGV9cyAle25hbWV9cyAle3R5cGV9VAorCQkg KiAle2RlZmF1bHR9cworCQkgKi8KKwkJcGFyYW1fb2JqID0gbmV3X29ianRyZWVfVkEoIiV7bW9k ZX1zIiwgMSwKKwkJCQkJCQkJICAibW9kZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCSAgcGFy YW0tPm1vZGUgPT0gRlVOQ19QQVJBTV9PVVQgPyAiT1VUIiA6CisJCQkJCQkJCSAgcGFyYW0tPm1v ZGUgPT0gRlVOQ19QQVJBTV9JTk9VVCA/ICJJTk9VVCIgOgorCQkJCQkJCQkgIHBhcmFtLT5tb2Rl ID09IEZVTkNfUEFSQU1fVkFSSUFESUMgPyAiVkFSSUFESUMiIDoKKwkJCQkJCQkJICAiSU4iKTsK KworCQkvKiBPcHRpb25hbCB3aG9sZXNhbGUgc3VwcHJlc3Npb24gb2YgIm5hbWUiIG9jY3VycyBo ZXJlICovCisJCW5hbWUgPSBuZXdfb2JqdHJlZSgiIik7CisJCWlmIChwYXJhbS0+bmFtZSkKKwkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KG5hbWUsICIle25hbWV9SSIsICJuYW1lIiwgcGFyYW0tPm5h bWUpOworCQllbHNlCisJCXsKKwkJCWFwcGVuZF9udWxsX29iamVjdChuYW1lLCAiJXtuYW1lfUki KTsKKwkJCWFwcGVuZF9ub3RfcHJlc2VudChuYW1lKTsKKwkJfQorCisJCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHBhcmFtX29iaiwgIiV7bmFtZX1zIiwgbmFtZSk7CisKKwkJZGVmYXVsdHZhbCA9IG5l d19vYmp0cmVlKCJERUZBVUxUIik7CisJCWlmIChQb2ludGVySXNWYWxpZChwYXJhbS0+ZGVmZXhw cikpCisJCXsKKwkJCWNoYXIJICAgKmV4cHI7CisKKwkJCWlmIChjdXJkZWYgPT0gTlVMTCkKKwkJ CQllbG9nKEVSUk9SLCAicHJvYXJnZGVmYXVsdHMgbGlzdCB0b28gc2hvcnQiKTsKKwkJCWV4cHIg PSBsZmlyc3QoY3VyZGVmKTsKKworCQkJYXBwZW5kX3N0cmluZ19vYmplY3QoZGVmYXVsdHZhbCwg IiV7dmFsdWV9cyIsICJ2YWx1ZSIsIGV4cHIpOworCQkJY3VyZGVmID0gbG5leHQoZGVmYXVsdHMs IGN1cmRlZik7CisJCX0KKwkJZWxzZQorCQkJYXBwZW5kX25vdF9wcmVzZW50KGRlZmF1bHR2YWwp OworCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHBhcmFtX29iaiwgIiV7dHlwZX1UIiwKKwkJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3R5cGUodHlwYXJyYXlbdHlwbnVtKytdLCAtMSkpOworCisJCWFw cGVuZF9vYmplY3Rfb2JqZWN0KHBhcmFtX29iaiwgIiV7ZGVmYXVsdH1zIiwgZGVmYXVsdHZhbCk7 CisKKwkJcGFyYW1zID0gbGFwcGVuZChwYXJhbXMsIG5ld19vYmplY3Rfb2JqZWN0KHBhcmFtX29i aikpOworCX0KKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiJXtpZGVudGl0eX1EIiwgMSwK KwkJCQkJCQkiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCW5ld19vYmp0cmVlX2Zv cl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQlvYmplY3RJ ZCkpOworCisJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodG1wX29iaiwgIigiKTsKKwlhcHBlbmRfYXJy YXlfb2JqZWN0KHRtcF9vYmosICIle2FyZ3VtZW50czosIH1zIiwgcGFyYW1zKTsKKwlhcHBlbmRf Zm9ybWF0X3N0cmluZyh0bXBfb2JqLCAiKSIpOworCisJaXNmdW5jdGlvbiA9IChwcm9jRm9ybS0+ cHJva2luZCAhPSBQUk9LSU5EX1BST0NFRFVSRSk7CisKKwlpZiAoaXNmdW5jdGlvbikKKwkJYXBw ZW5kX29iamVjdF9vYmplY3QocmV0LCAiRlVOQ1RJT04gJXtzaWduYXR1cmV9cyIsIHRtcF9vYmop OworCWVsc2UKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiUFJPQ0VEVVJFICV7c2lnbmF0 dXJlfXMiLCB0bXBfb2JqKTsKKworCS8qCisJICogQSByZXR1cm4gdHlwZSBjYW4gYWRvcHQgb25l IG9mIHR3byBmb3JtczogZWl0aGVyIGEgW1NFVE9GXSBzb21lX3R5cGUsCisJICogb3IgYSBUQUJM RShsaXN0LW9mLXR5cGVzKS4gIFdlIGNhbiB0ZWxsIHRoZSBzZWNvbmQgZm9ybSBiZWNhdXNlIHdl IHNhdworCSAqIGEgdGFibGUgcGFyYW0gYWJvdmUgd2hpbGUgc2Nhbm5pbmcgdGhlIGFyZ3VtZW50 IGxpc3QuCisJICovCisJaWYgKHRhYmxlX3BhcmFtcyA9PSBOVUxMKQorCXsKKwkJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCIiLCAxLAorCQkJCQkJCQkicmV0dXJuX2Zvcm0iLCBPYmpUeXBlU3Ry aW5nLCAicGxhaW4iKTsKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwgIiV7c2V0b2Z9 cyIsICJzZXRvZiIsCisJCQkJCQkJIHByb2NGb3JtLT5wcm9yZXRzZXQgPyAiU0VUT0YiIDogIiIp OworCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtyZXR0eXBlfVQiLAorCQkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfdHlwZShwcm9jRm9ybS0+cHJvcmV0dHlwZSwgLTEpKTsKKwl9CisJ ZWxzZQorCXsKKwkJTGlzdAkgICAqcmV0dHlwZXMgPSBOSUw7CisJCU9ialRyZWUgICAgKnBhcmFt X29iajsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlRBQkxFIiwgMSwKKwkJCQkJCQkJ InJldHVybl9mb3JtIiwgT2JqVHlwZVN0cmluZywgInRhYmxlIik7CisJCWZvciAoOyB0YWJsZV9w YXJhbXMgIT0gTlVMTDsgdGFibGVfcGFyYW1zID0gbG5leHQobm9kZS0+cGFyYW1ldGVycywgdGFi bGVfcGFyYW1zKSkKKwkJeworCQkJRnVuY3Rpb25QYXJhbWV0ZXIgKnBhcmFtID0gbGZpcnN0KHRh YmxlX3BhcmFtcyk7CisKKwkJCXBhcmFtX29iaiA9IG5ld19vYmp0cmVlX1ZBKCIle25hbWV9SSAl e3R5cGV9VCIsIDIsCisJCQkJCQkJCQkgICJuYW1lIiwgT2JqVHlwZVN0cmluZywgcGFyYW0tPm5h bWUsCisJCQkJCQkJCQkgICJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSAgbmV3X29i anRyZWVfZm9yX3R5cGUodHlwYXJyYXlbdHlwbnVtKytdLCAtMSkpOworCQkJcmV0dHlwZXMgPSBs YXBwZW5kKHJldHR5cGVzLCBuZXdfb2JqZWN0X29iamVjdChwYXJhbV9vYmopKTsKKwkJfQorCisJ CWFwcGVuZF9hcnJheV9vYmplY3QodG1wX29iaiwgIigle3JldHR5cGVzOiwgfXMpIiwgcmV0dHlw ZXMpOworCX0KKworCWlmIChpc2Z1bmN0aW9uKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQs ICJSRVRVUk5TICV7cmV0dXJuX3R5cGV9cyIsIHRtcF9vYmopOworCisJLyogVFJBTlNGT1JNIEZP UiBUWVBFICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJUUkFOU0ZPUk0iKTsKKworCW50eXBl cyA9IGdldF9mdW5jX3RyZnR5cGVzKHByb2NUdXAsICZ0cmZ0eXBlcyk7CisJZm9yIChpID0gMDsg aSA8IG50eXBlczsgaSsrKQorCXsKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJGT1IgVFlQ RSAle3R5cGV9VCIsIDEsCisJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJ bmV3X29ianRyZWVfZm9yX3R5cGUodHJmdHlwZXNbaV0sIC0xKSk7CisJCXR5cGVzID0gbGFwcGVu ZCh0eXBlcywgdG1wX29iaik7CisJfQorCisJaWYgKHR5cGVzKQorCQlhcHBlbmRfYXJyYXlfb2Jq ZWN0KHRtcF9vYmosICIle2Zvcl90eXBlOiwgfXMiLCB0eXBlcyk7CisJZWxzZQorCQlhcHBlbmRf bm90X3ByZXNlbnQodG1wX29iaik7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3Ry YW5zZm9ybV90eXBlfXMiLCB0bXBfb2JqKTsKKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwg IkxBTkdVQUdFICV7bGFuZ3VhZ2V9SSIsICJsYW5ndWFnZSIsCisJCQkJCQkgTmFtZVN0cihsYW5n Rm9ybS0+bGFubmFtZSkpOworCisJaWYgKGlzZnVuY3Rpb24pCisJeworCQlhcHBlbmRfc3RyaW5n X29iamVjdChyZXQsICIle3dpbmRvd31zIiwgIndpbmRvdyIsCisJCQkJCQkJIHByb2NGb3JtLT5w cm9raW5kID09IFBST0tJTkRfV0lORE9XID8gIldJTkRPVyIgOiAiIik7CisJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHJldCwgIiV7dm9sYXRpbGl0eX1zIiwgInZvbGF0aWxpdHkiLAorCQkJCQkJCSBw cm9jRm9ybS0+cHJvdm9sYXRpbGUgPT0gUFJPVk9MQVRJTEVfVk9MQVRJTEUgPworCQkJCQkJCSAi Vk9MQVRJTEUiIDoKKwkJCQkJCQkgcHJvY0Zvcm0tPnByb3ZvbGF0aWxlID09IFBST1ZPTEFUSUxF X1NUQUJMRSA/CisJCQkJCQkJICJTVEFCTEUiIDogIklNTVVUQUJMRSIpOworCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KHJldCwgIiV7cGFyYWxsZWxfc2FmZXR5fXMiLAorCQkJCQkJCSAicGFyYWxs ZWxfc2FmZXR5IiwKKwkJCQkJCQkgcHJvY0Zvcm0tPnByb3BhcmFsbGVsID09IFBST1BBUkFMTEVM X1NBRkUgPworCQkJCQkJCSAiUEFSQUxMRUwgU0FGRSIgOgorCQkJCQkJCSBwcm9jRm9ybS0+cHJv cGFyYWxsZWwgPT0gUFJPUEFSQUxMRUxfUkVTVFJJQ1RFRCA/CisJCQkJCQkJICJQQVJBTExFTCBS RVNUUklDVEVEIiA6ICJQQVJBTExFTCBVTlNBRkUiKTsKKworCQlhcHBlbmRfc3RyaW5nX29iamVj dChyZXQsICIle2xlYWtwcm9vZn1zIiwgImxlYWtwcm9vZiIsCisJCQkJCQkJIHByb2NGb3JtLT5w cm9sZWFrcHJvb2YgPyAiTEVBS1BST09GIiA6ICIiKTsKKwkJYXBwZW5kX3N0cmluZ19vYmplY3Qo cmV0LCAiJXtzdHJpY3R9cyIsICJzdHJpY3QiLAorCQkJCQkJCSBwcm9jRm9ybS0+cHJvaXNzdHJp Y3QgPworCQkJCQkJCSAiUkVUVVJOUyBOVUxMIE9OIE5VTEwgSU5QVVQiIDoKKwkJCQkJCQkgIkNB TExFRCBPTiBOVUxMIElOUFVUIik7CisKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtz ZWN1cml0eV9kZWZpbmVyfXMiLAorCQkJCQkJCSAic2VjdXJpdHlfZGVmaW5lciIsCisJCQkJCQkJ IHByb2NGb3JtLT5wcm9zZWNkZWYgPworCQkJCQkJCSAiU0VDVVJJVFkgREVGSU5FUiIgOiAiU0VD VVJJVFkgSU5WT0tFUiIpOworCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7Y29zdH1z IiwKKwkJCQkJCQkgbmV3X29ianRyZWVfVkEoIkNPU1QgJXtjb3N0fW4iLCAxLAorCQkJCQkJCQkJ CQkiY29zdCIsIE9ialR5cGVGbG9hdCwKKwkJCQkJCQkJCQkJcHJvY0Zvcm0tPnByb2Nvc3QpKTsK KworCQl0bXBfb2JqID0gbmV3X29ianRyZWUoIlJPV1MiKTsKKwkJaWYgKHByb2NGb3JtLT5wcm9y b3dzID09IDApCisJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJCWVsc2UKKwkJCWFw cGVuZF9mbG9hdF9vYmplY3QodG1wX29iaiwgIiV7cm93c31uIiwgcHJvY0Zvcm0tPnByb3Jvd3Mp OworCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3Jvd3N9cyIsIHRtcF9vYmopOworCisJ CXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiU1VQUE9SVCAle25hbWV9cyIpOworCQlpZiAocHJvY0Zv cm0tPnByb3N1cHBvcnQpCisJCXsKKwkJCU9pZAkJCWFyZ3R5cGVzW10gPSB7IElOVEVSTkFMT0lE IH07CisKKwkJCS8qCisJCQkgKiBXZSBzaG91bGQgcXVhbGlmeSB0aGUgc3VwcG9ydCBmdW5jdGlv bidzIG5hbWUgaWYgaXQgd291bGRuJ3QgYmUKKwkJCSAqIHJlc29sdmVkIGJ5IGxvb2t1cCBpbiB0 aGUgY3VycmVudCBzZWFyY2ggcGF0aC4KKwkJCSAqLworCQkJYXBwZW5kX3N0cmluZ19vYmplY3Qo dG1wX29iaiwgIiV7bmFtZX1zIiwgIm5hbWUiLAorCQkJCQkJCQkgZ2VuZXJhdGVfZnVuY3Rpb25f bmFtZShwcm9jRm9ybS0+cHJvc3VwcG9ydCwgMSwKKwkJCQkJCQkJCQkJCQkJTklMLCBhcmd0eXBl cywKKwkJCQkJCQkJCQkJCQkJZmFsc2UsIE5VTEwsCisJCQkJCQkJCQkJCQkJCUVYUFJfS0lORF9O T05FKSk7CisJCX0KKwkJZWxzZQorCQkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCisJ CWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7c3VwcG9ydH1zIiwgdG1wX29iaik7CisJfQor CisJZm9yZWFjaChjZWxsLCBub2RlLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAgICAqZGVmZWwg PSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgInNldCIpID09IDApCisJCXsKKwkJCVZhcmlhYmxlU2V0U3RtdCAqc3N0bXQgPSAoVmFyaWFi bGVTZXRTdG10ICopIGRlZmVsLT5hcmc7CisJCQljaGFyCSAgICp2YWx1ZSA9IEV4dHJhY3RTZXRW YXJpYWJsZUFyZ3Moc3N0bXQpOworCisJCQl0bXBfb2JqID0gZGVwYXJzZV9GdW5jdGlvblNldChz c3RtdC0+a2luZCwgc3N0bXQtPm5hbWUsIHZhbHVlKTsKKwkJCXNldHMgPSBsYXBwZW5kKHNldHMs IG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJfQorCX0KKwlhcHBlbmRfYXJyYXlfb2Jq ZWN0KHJldCwgIiV7c2V0X29wdGlvbnM6IH1zIiwgc2V0cyk7CisKKwkvKiBBZGQgdGhlIGZ1bmN0 aW9uIGRlZmluaXRpb24gKi8KKwkodm9pZCkgU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIHByb2NU dXAsIEFudW1fcGdfcHJvY19wcm9zcWxib2R5LCAmaXNudWxsKTsKKwlpZiAocHJvY0Zvcm0tPnBy b2xhbmcgPT0gU1FMbGFuZ3VhZ2VJZCAmJiAhaXNudWxsKQorCXsKKwkJU3RyaW5nSW5mb0RhdGEg YnVmOworCisJCWluaXRTdHJpbmdJbmZvKCZidWYpOworCQlwcmludF9mdW5jdGlvbl9zcWxib2R5 KCZidWYsIHByb2NUdXApOworCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7ZGVmaW5p dGlvbn1zIiwgImRlZmluaXRpb24iLAorCQkJCQkJCSBidWYuZGF0YSk7CisJfQorCWVsc2UgaWYg KHByb2JpbiA9PSBOVUxMKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJBUyAle2RlZmlu aXRpb259TCIsICJkZWZpbml0aW9uIiwgc291cmNlKTsKKwllbHNlCisJeworCQlhcHBlbmRfc3Ry aW5nX29iamVjdChyZXQsICJBUyAle29iamZpbGV9TCIsICJvYmpmaWxlIiwgcHJvYmluKTsKKwkJ YXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiLCAle3N5bWJvbH1MIiwgInN5bWJvbCIsIHNvdXJj ZSk7CisJfQorCisJUmVsZWFzZVN5c0NhY2hlKGxhbmdUdXApOworCVJlbGVhc2VTeXNDYWNoZShw cm9jVHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ1JFQVRFIE9Q RVJBVE9SIENMQVNTIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBP UEVSQVRPUiBDTEFTUyAle2lkZW50aXR5fUQgJXtkZWZhdWx0fXMgRk9SIFRZUEUgJXt0eXBlfVQg VVNJTkcKKyAqICV7YW1uYW1lfUkgJXtvcGZhbWlseX1zIEFTICV7aXRlbXM6LCB9cworICovCitz dGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZU9wQ2xhc3NTdG10KENvbGxlY3RlZENvbW1h bmQgKmNtZCkKK3sKKwlPaWQJCQlvcGNvaWQgPSBjbWQtPmQuY3JlYXRlb3BjLmFkZHJlc3Mub2Jq ZWN0SWQ7CisJSGVhcFR1cGxlCW9wY1R1cDsKKwlIZWFwVHVwbGUJb3BmVHVwOworCUZvcm1fcGdf b3BmYW1pbHkgb3BmRm9ybTsKKwlGb3JtX3BnX29wY2xhc3Mgb3BjRm9ybTsKKwlPYmpUcmVlICAg ICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wX29iajsKKwlMaXN0CSAgICpsaXN0OworCUxpc3RDZWxs ICAgKmNlbGw7CisKKwkvKiBEb24ndCBkZXBhcnNlIFNRTCBjb21tYW5kcyBnZW5lcmF0ZWQgd2hp bGUgY3JlYXRpbmcgZXh0ZW5zaW9uICovCisJaWYgKGNtZC0+aW5fZXh0ZW5zaW9uKQorCQlyZXR1 cm4gTlVMTDsKKworCW9wY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0 RGF0dW0ob3Bjb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKG9wY1R1cCkpCisJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGNsYXNzIHdpdGggT0lEICV1Iiwgb3Bj b2lkKTsKKwlvcGNGb3JtID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKG9wY1R1cCk7CisK KwlvcGZUdXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BGQU1JTFlPSUQsIG9wY0Zvcm0tPm9wY2ZhbWls eSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKG9wZlR1cCkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBmYW1pbHkgd2l0aCBPSUQgJXUiLCBvcGNGb3Jt LT5vcGNmYW1pbHkpOworCW9wZkZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKG9w ZlR1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIE9QRVJBVE9SIENMQVNTICV7 aWRlbnRpdHl9RCAle2RlZmF1bHR9cyBGT1IgVFlQRSAle3R5cGV9VCBVU0lORyAle2FtbmFtZX1J IiwgNCwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0 cmVlX2Zvcl9xdWFsbmFtZShvcGNGb3JtLT5vcGNuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5h bWVTdHIob3BjRm9ybS0+b3BjbmFtZSkpLAorCQkJCQkJICJkZWZhdWx0IiwgT2JqVHlwZVN0cmlu ZywKKwkJCQkJCSBvcGNGb3JtLT5vcGNkZWZhdWx0ID8gIkRFRkFVTFQiIDogIiIsCisJCQkJCQkg InR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKG9wY0Zv cm0tPm9wY2ludHlwZSwgLTEpLAorCQkJCQkJICJhbW5hbWUiLCBPYmpUeXBlU3RyaW5nLCBnZXRf YW1fbmFtZShvcGNGb3JtLT5vcGNtZXRob2QpKTsKKworCS8qCisJICogQWRkIHRoZSBGQU1JTFkg Y2xhdXNlLCBidXQgaWYgaXQgaGFzIHRoZSBzYW1lIG5hbWUgYW5kIG5hbWVzcGFjZSBhcyB0aGUK KwkgKiBvcGNsYXNzLCB0aGVuIGhhdmUgaXQgZXhwYW5kIHRvIGVtcHR5IGJlY2F1c2UgaXQgd291 bGQgY2F1c2UgYSBmYWlsdXJlCisJICogaWYgdGhlIG9wZmFtaWx5IHdhcyBjcmVhdGVkIGludGVy bmFsbHkuCisJICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJGQU1JTFkgJXtvcGZhbWls eX1EIiwgMSwKKwkJCQkJCQkib3BmYW1pbHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCW5ld19v Ymp0cmVlX2Zvcl9xdWFsbmFtZShvcGZGb3JtLT5vcGZuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJ IE5hbWVTdHIob3BmRm9ybS0+b3BmbmFtZSkpKTsKKworCWlmIChzdHJjbXAoTmFtZVN0cihvcGZG b3JtLT5vcGZuYW1lKSwgTmFtZVN0cihvcGNGb3JtLT5vcGNuYW1lKSkgPT0gMCAmJgorCQlvcGZG b3JtLT5vcGZuYW1lc3BhY2UgPT0gb3BjRm9ybS0+b3BjbmFtZXNwYWNlKQorCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wX29iaik7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle29wZmFt aWx5fXMiLCB0bXBfb2JqKTsKKworCS8qCisJICogQWRkIHRoZSBpbml0aWFsIGl0ZW0gbGlzdC4g IE5vdGUgd2UgYWx3YXlzIGFkZCB0aGUgU1RPUkFHRSBjbGF1c2UsIGV2ZW4KKwkgKiB3aGVuIGl0 IGlzIGltcGxpY2l0IGluIHRoZSBvcmlnaW5hbCBjb21tYW5kLgorCSAqLworCXRtcF9vYmogPSBu ZXdfb2JqdHJlZSgiU1RPUkFHRSIpOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIl e3R5cGV9VCIsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3R5cGUoT2lkSXNWYWxpZChvcGNGb3Jt LT5vcGNrZXl0eXBlKSA/CisJCQkJCQkJCQkJCSAgb3BjRm9ybS0+b3Bja2V5dHlwZSA6IG9wY0Zv cm0tPm9wY2ludHlwZSwKKwkJCQkJCQkJCQkJICAtMSkpOworCWxpc3QgPSBsaXN0X21ha2UxKG5l d19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8qIEFkZCB0aGUgZGVjbGFyZWQgb3BlcmF0 b3JzICovCisJZm9yZWFjaChjZWxsLCBjbWQtPmQuY3JlYXRlb3BjLm9wZXJhdG9ycykKKwl7CisJ CU9wRmFtaWx5TWVtYmVyICpvcGVyID0gbGZpcnN0KGNlbGwpOworCisJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiT1BFUkFUT1IgJXtudW19biAle29wZXJhdG9yfU8oJXtsdHlwZX1ULCAle3J0 eXBlfVQpIiwgNCwKKwkJCQkJCQkJIm51bSIsIE9ialR5cGVJbnRlZ2VyLCBvcGVyLT5udW1iZXIs CisJCQkJCQkJCSJvcGVyYXRvciIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZV9pZChPcGVyYXRvclJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQlvcGVy LT5vYmplY3QpLAorCQkJCQkJCQkibHR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQluZXdf b2JqdHJlZV9mb3JfdHlwZShvcGVyLT5sZWZ0dHlwZSwgLTEpLAorCQkJCQkJCQkicnR5cGUiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfdHlwZShvcGVyLT5yaWdodHR5 cGUsIC0xKSk7CisKKwkJLyogQWRkIHRoZSBGT1IgU0VBUkNIIC8gRk9SIE9SREVSIEJZIGNsYXVz ZSAqLworCQlpZiAob3Blci0+c29ydGZhbWlseSA9PSBJbnZhbGlkT2lkKQorCQkJYXBwZW5kX3N0 cmluZ19vYmplY3QodG1wX29iaiwgIiV7cHVycG9zZX1zIiwgInB1cnBvc2UiLAorCQkJCQkJCQkg IkZPUiBTRUFSQ0giKTsKKwkJZWxzZQorCQl7CisJCQlPYmpUcmVlICAgICp0bXBfb2JqMjsKKwor CQkJdG1wX29iajIgPSBuZXdfb2JqdHJlZSgiRk9SIE9SREVSIEJZICV7b3BmYW1pbHl9RCIpOwor CQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iajIsICJvcGZhbWlseSIsCisJCQkJCQkJCSBu ZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoT3BlcmF0b3JGYW1pbHlSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCQkJIG9wZXItPnNvcnRmYW1pbHkpKTsKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0 KHRtcF9vYmosICIle3B1cnBvc2V9cyIsIHRtcF9vYmoyKTsKKwkJfQorCisJCWxpc3QgPSBsYXBw ZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwl9CisKKwkvKiBBZGQgdGhl IGRlY2xhcmVkIHN1cHBvcnQgZnVuY3Rpb25zICovCisJZm9yZWFjaChjZWxsLCBjbWQtPmQuY3Jl YXRlb3BjLnByb2NlZHVyZXMpCisJeworCQlPcEZhbWlseU1lbWJlciAqcHJvYyA9IGxmaXJzdChj ZWxsKTsKKwkJSGVhcFR1cGxlCXByb2NUdXA7CisJCUZvcm1fcGdfcHJvYyBwcm9jRm9ybTsKKwkJ T2lkCQkgICAqcHJvYXJndHlwZXM7CisJCUxpc3QJICAgKmFyZ2xpc3QgPSBOSUw7CisJCWludAkJ CWk7CisKKwkJcHJvY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmplY3RJZEdldERh dHVtKHByb2MtPm9iamVjdCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocHJvY1R1cCkpCisJ CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcHJvY2VkdXJlIHdpdGggT0lE ICV1IiwKKwkJCQkgcHJvYy0+b2JqZWN0KTsKKwkJcHJvY0Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBH RVRTVFJVQ1QocHJvY1R1cCk7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJGVU5DVElP TiAle251bX1uICgle2x0eXBlfVQsICV7cnR5cGV9VCkgJXtmdW5jdGlvbn1EIiwgNCwKKwkJCQkJ CQkJIm51bSIsIE9ialR5cGVJbnRlZ2VyLCBwcm9jLT5udW1iZXIsCisJCQkJCQkJCSJsdHlwZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl90eXBlKHByb2MtPmxlZnR0 eXBlLCAtMSksCisJCQkJCQkJCSJydHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5ld19v Ymp0cmVlX2Zvcl90eXBlKHByb2MtPnJpZ2h0dHlwZSwgLTEpLAorCQkJCQkJCQkiZnVuY3Rpb24i LCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocHJvY0Zv cm0tPnByb25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCQkJIE5hbWVTdHIocHJvY0Zvcm0tPnByb25h bWUpKSk7CisKKwkJcHJvYXJndHlwZXMgPSBwcm9jRm9ybS0+cHJvYXJndHlwZXMudmFsdWVzOwor CQlmb3IgKGkgPSAwOyBpIDwgcHJvY0Zvcm0tPnByb25hcmdzOyBpKyspCisJCXsKKwkJCU9ialRy ZWUgICAgKmFyZzsKKworCQkJYXJnID0gbmV3X29ianRyZWVfZm9yX3R5cGUocHJvYXJndHlwZXNb aV0sIC0xKTsKKwkJCWFyZ2xpc3QgPSBsYXBwZW5kKGFyZ2xpc3QsIG5ld19vYmplY3Rfb2JqZWN0 KGFyZykpOworCQl9CisKKwkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodG1wX29iaiwgIigiKTsKKwkJ YXBwZW5kX2FycmF5X29iamVjdCh0bXBfb2JqLCAiJXthcmd0eXBlczosIH1UIiwgYXJnbGlzdCk7 CisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHRtcF9vYmosICIpIik7CisKKwkJUmVsZWFzZVN5c0Nh Y2hlKHByb2NUdXApOworCisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0 KHRtcF9vYmopKTsKKwl9CisKKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIkFTICV7aXRlbXM6 LCB9cyIsIGxpc3QpOworCisJUmVsZWFzZVN5c0NhY2hlKG9wZlR1cCk7CisJUmVsZWFzZVN5c0Nh Y2hlKG9wY1R1cCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0 ZU9wRmFtaWx5U3RtdCAoQ1JFQVRFIE9QRVJBVE9SIEZBTUlMWSkKKyAqCisgKiBHaXZlbiBhIG9w ZXJhdG9yIGZhbWlseSBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0 dXJuIGFuCisgKiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAq CisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIE9QRVJBVE9SIEZBTUlMWSAle2lkZW50aXR5 fUQgVVNJTkcgJXthbW5hbWV9SQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0 ZU9wRmFtaWx5KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUhlYXBUdXBsZQlv cGZUdXA7CisJSGVhcFR1cGxlCWFtVHVwOworCUZvcm1fcGdfb3BmYW1pbHkgb3BmRm9ybTsKKwlG b3JtX3BnX2FtCWFtRm9ybTsKKwlPYmpUcmVlICAgICpyZXQ7CisKKwlvcGZUdXAgPSBTZWFyY2hT eXNDYWNoZTEoT1BGQU1JTFlPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQob3BmVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwlvcGZG b3JtID0gKEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChvcGZUdXApOworCisJYW1UdXAgPSBT ZWFyY2hTeXNDYWNoZTEoQU1PSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmRm9ybS0+b3BmbWV0aG9k KSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGFtVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIGFjY2VzcyBtZXRob2Qgd2l0aCBPSUQgJXUiLAorCQkJIG9wZkZv cm0tPm9wZm1ldGhvZCk7CisJYW1Gb3JtID0gKEZvcm1fcGdfYW0pIEdFVFNUUlVDVChhbVR1cCk7 CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIE9QRVJBVE9SIEZBTUlMWSAle2lkZW50 aXR5fUQgVVNJTkcgJXthbW5hbWV9SSIsIDIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUob3BmRm9ybS0+b3BmbmFtZXNw YWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKG9wZkZvcm0tPm9wZm5hbWUpKSwKKwkJCQkJCSAi YW1uYW1lIiwgT2JqVHlwZVN0cmluZywgTmFtZVN0cihhbUZvcm0tPmFtbmFtZSkpOworCisJUmVs ZWFzZVN5c0NhY2hlKGFtVHVwKTsKKwlSZWxlYXNlU3lzQ2FjaGUob3BmVHVwKTsKKworCXJldHVy biByZXQ7Cit9CisKKy8qCisgKiBBZGQgY29tbW9uIGNsYXVzZXMgdG8gQ3JlYXRlUG9saWN5IG9y IEFsdGVyUG9saWN5IGRlcGFyc2Ugb2JqZWN0cy4KKyAqLworc3RhdGljIHZvaWQKK2FkZF9wb2xp Y3lfY2xhdXNlcyhPYmpUcmVlICpyZXQsIE9pZCBwb2xpY3lPaWQsIExpc3QgKnJvbGVzLCBib29s IGRvX3F1YWwsCisJCQkJICAgYm9vbCBkb193aXRoX2NoZWNrKQoreworCVJlbGF0aW9uCXBvbFJl bCA9IHRhYmxlX29wZW4oUG9saWN5UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlIZWFw VHVwbGUJcG9sVHVwID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChwb2xSZWwsIEFudW1fcGdf cG9saWN5X29pZCwgcG9saWN5T2lkKTsKKwlGb3JtX3BnX3BvbGljeSBwb2xGb3JtOworCisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHBvbFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBwb2xpY3kgd2l0aCBPSUQgJXUiLCBwb2xpY3lPaWQpOworCisJcG9sRm9ybSA9 IChGb3JtX3BnX3BvbGljeSkgR0VUU1RSVUNUKHBvbFR1cCk7CisKKwkvKiBBZGQgdGhlICJPTiB0 YWJsZSIgY2xhdXNlICovCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiT04gJXt0YWJsZX1E IiwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklk LAorCQkJCQkJCQkJCQkJCSBwb2xGb3JtLT5wb2xyZWxpZCkpOworCisJLyoKKwkgKiBBZGQgdGhl ICJUTyByb2xlIiBjbGF1c2UsIGlmIGFueS4gIEluIHRoZSBDUkVBVEUgY2FzZSwgaXQgYWx3YXlz CisJICogY29udGFpbnMgYXQgbGVhc3QgUFVCTElDLCBidXQgaW4gdGhlIEFMVEVSIGNhc2UgaXQg bWlnaHQgYmUgZW1wdHkuCisJICovCisJaWYgKHJvbGVzKQorCXsKKwkJTGlzdAkgICAqbGlzdCA9 IE5JTDsKKwkJTGlzdENlbGwgICAqY2VsbDsKKworCQlmb3JlYWNoKGNlbGwsIHJvbGVzKQorCQl7 CisJCQlSb2xlU3BlYyAgICpzcGVjID0gKFJvbGVTcGVjICopIGxmaXJzdChjZWxsKTsKKworCQkJ bGlzdCA9IGxhcHBlbmQobGlzdCwKKwkJCQkJCSAgIG5ld19vYmplY3Rfb2JqZWN0KG5ld19vYmp0 cmVlX2Zvcl9yb2xlc3BlYyhzcGVjKSkpOworCQl9CisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0 LCAiVE8gJXtyb2xlOiwgfVIiLCBsaXN0KTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQocmV0KTsKKworCS8qIEFkZCB0aGUgVVNJTkcgY2xhdXNlLCBpZiBhbnkgKi8KKwlpZiAoZG9f cXVhbCkKKwl7CisJCURhdHVtCQlkZXBhcnNlZDsKKwkJRGF0dW0JCXN0b3JlZGV4cHI7CisJCWJv b2wJCWlzbnVsbDsKKworCQlzdG9yZWRleHByID0gaGVhcF9nZXRhdHRyKHBvbFR1cCwgQW51bV9w Z19wb2xpY3lfcG9scXVhbCwKKwkJCQkJCQkJICBSZWxhdGlvbkdldERlc2NyKHBvbFJlbCksICZp c251bGwpOworCQlpZiAoaXNudWxsKQorCQkJZWxvZyhFUlJPUiwgIm51bGwgcG9scXVhbCBleHBy ZXNzaW9uIGluIHBvbGljeSAldSIsIHBvbGljeU9pZCk7CisJCWRlcGFyc2VkID0gRGlyZWN0RnVu Y3Rpb25DYWxsMihwZ19nZXRfZXhwciwgc3RvcmVkZXhwciwgcG9sRm9ybS0+cG9scmVsaWQpOwor CQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJVU0lORyAoJXtleHByZXNzaW9ufXMpIiwgImV4 cHJlc3Npb24iLAorCQkJCQkJCSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRlcGFyc2VkKSk7CisJfQor CWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwkvKiBBZGQgdGhlIFdJVEggQ0hF Q0sgY2xhdXNlLCBpZiBhbnkgKi8KKwlpZiAoZG9fd2l0aF9jaGVjaykKKwl7CisJCURhdHVtCQlk ZXBhcnNlZDsKKwkJRGF0dW0JCXN0b3JlZGV4cHI7CisJCWJvb2wJCWlzbnVsbDsKKworCQlzdG9y ZWRleHByID0gaGVhcF9nZXRhdHRyKHBvbFR1cCwgQW51bV9wZ19wb2xpY3lfcG9sd2l0aGNoZWNr LAorCQkJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IocG9sUmVsKSwgJmlzbnVsbCk7CisJCWlmIChp c251bGwpCisJCQllbG9nKEVSUk9SLCAibnVsbCBwb2x3aXRoY2hlY2sgZXhwcmVzc2lvbiBpbiBw b2xpY3kgJXUiLCBwb2xpY3lPaWQpOworCQlkZXBhcnNlZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDIo cGdfZ2V0X2V4cHIsIHN0b3JlZGV4cHIsIHBvbEZvcm0tPnBvbHJlbGlkKTsKKwkJYXBwZW5kX3N0 cmluZ19vYmplY3QocmV0LCAiV0lUSCBDSEVDSyAoJXtleHByZXNzaW9ufXMpIiwKKwkJCQkJCQkg ImV4cHJlc3Npb24iLCBUZXh0RGF0dW1HZXRDU3RyaW5nKGRlcGFyc2VkKSk7CisJfQorCWVsc2UK KwkJYXBwZW5kX25vdF9wcmVzZW50KHJldCk7CisKKwlyZWxhdGlvbl9jbG9zZShwb2xSZWwsIEFj Y2Vzc1NoYXJlTG9jayk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlUG9saWN5U3RtdCAo Q1JFQVRFIFBPTElDWSkKKyAqCisgKiBHaXZlbiBhIHBvbGljeSBPSUQgYW5kIHRoZSBwYXJzZSB0 cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0 aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFBP TElDWSAle2lkZW50aXR5fUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVQ b2xpY3lTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVBvbGlj eVN0bXQgKm5vZGUgPSAoQ3JlYXRlUG9saWN5U3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAg ICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBQT0xJQ1kgJXtpZGVudGl0 eX1JIiwgMSwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5wb2xpY3lf bmFtZSk7CisKKwkvKiBBZGQgdGhlIHJlc3Qgb2YgdGhlIHN0dWZmICovCisJYWRkX3BvbGljeV9j bGF1c2VzKHJldCwgb2JqZWN0SWQsIG5vZGUtPnJvbGVzLCBub2RlLT5xdWFsICE9IE5VTEwsCisJ CQkJCSAgIG5vZGUtPndpdGhfY2hlY2sgIT0gTlVMTCk7CisKKwlyZXR1cm4gcmV0OworfQorCisv KgorICogRGVwYXJzZSBhIEFsdGVyUG9saWN5U3RtdCAoQUxURVIgUE9MSUNZKQorICoKKyAqIEdp dmVuIGEgcG9saWN5IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgb2YgdGhlIEFMVEVSIFBPTElDWSBj b21tYW5kLCByZXR1cm4KKyAqIGFuIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21t YW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBQT0xJQ1kgJXtpZGVudGl0eX1J CisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJQb2xpY3lTdG10KE9pZCBvYmpl Y3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyUG9saWN5U3RtdCAqbm9kZSA9IChBbHRl clBvbGljeVN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiBQT0xJQ1kgJXtpZGVudGl0eX1JIiwgMSwKKwkJCQkJCSAiaWRl bnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5wb2xpY3lfbmFtZSk7CisKKwkvKiBBZGQgdGhl IHJlc3Qgb2YgdGhlIHN0dWZmICovCisJYWRkX3BvbGljeV9jbGF1c2VzKHJldCwgb2JqZWN0SWQs IG5vZGUtPnJvbGVzLCBub2RlLT5xdWFsICE9IE5VTEwsCisJCQkJCSAgIG5vZGUtPndpdGhfY2hl Y2sgIT0gTlVMTCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0 ZVNjaGVtYVN0bXQuCisgKgorICogR2l2ZW4gYSBzY2hlbWEgT0lEIGFuZCB0aGUgcGFyc2UgdHJl ZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhl IGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBTQ0hF TUEgJXtpZl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkgQVVUSE9SSVpBVElPTiAle2F1dGhvcml6YXRp b259cworKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlU2NoZW1hU3RtdChPaWQg b2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVTY2hlbWFTdG10ICpub2RlID0g KENyZWF0ZVNjaGVtYVN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpU cmVlICAgICphdXRoOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBTQ0hFTUEgJXtp Zl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkiLCAyLAorCQkJCQkJICJpZl9ub3RfZXhpc3RzIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5pZl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMi IDogIiIsCisJCQkJCQkgIm5hbWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnNjaGVt YW5hbWUgPyBub2RlLT5zY2hlbWFuYW1lIDogIiIpOworCisJYXV0aCA9IG5ld19vYmp0cmVlKCJB VVRIT1JJWkFUSU9OIik7CisJaWYgKG5vZGUtPmF1dGhyb2xlKQorCQlhcHBlbmRfc3RyaW5nX29i amVjdChhdXRoLCAiJXthdXRob3JpemF0aW9uX3JvbGV9SSIsCisJCQkJCQkJICJhdXRob3JpemF0 aW9uX3JvbGUiLAorCQkJCQkJCSBnZXRfcm9sZXNwZWNfbmFtZShub2RlLT5hdXRocm9sZSkpOwor CWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdChhdXRoLCAiJXthdXRob3JpemF0aW9uX3Jv bGV9SSIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQoYXV0aCk7CisJfQorCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHJldCwgIiV7YXV0aG9yaXphdGlvbn1zIiwgYXV0aCk7CisKKwlyZXR1cm4gcmV0Owor fQorCisvKgorICogUmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgZG9tYWluLgorICovCitz dGF0aWMgY2hhciAqCitEb21haW5HZXREZWZhdWx0KEhlYXBUdXBsZSBkb21UdXAsIGJvb2wgbWlz c2luZ19vaykKK3sKKwlEYXR1bQkJZGVmOworCU5vZGUJICAgKmRlZnZhbDsKKwljaGFyCSAgICpk ZWZzdHI7CisJYm9vbAkJaXNudWxsOworCisJZGVmID0gU3lzQ2FjaGVHZXRBdHRyKFRZUEVPSUQs IGRvbVR1cCwgQW51bV9wZ190eXBlX3R5cGRlZmF1bHRiaW4sCisJCQkJCQkgICZpc251bGwpOwor CWlmIChpc251bGwpCisJeworCQlpZiAoIW1pc3Npbmdfb2spCisJCQllbG9nKEVSUk9SLCAiZG9t YWluIFwiJXNcIiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSIsCisJCQkJTmFtZVN0cigo KEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKGRvbVR1cCkpLT50eXBuYW1lKSk7CisJCWVsc2UKKwkJ CXJldHVybiBOVUxMOworCX0KKworCWRlZnZhbCA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRD U3RyaW5nKGRlZikpOworCWRlZnN0ciA9IGRlcGFyc2VfZXhwcmVzc2lvbihkZWZ2YWwsIE5VTEwg LyogZHBjb250ZXh0PyAqLyAsCisJCQkJCQkJCWZhbHNlLCBmYWxzZSk7CisKKwlyZXR1cm4gZGVm c3RyOworfQorCisvKgorICogRGVwYXJzZSBhIEFsdGVyRG9tYWluU3RtdC4KKyAqCisgKiBWZXJi b3NlIHN5bnRheAorICogQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9RCBEUk9QIERFRkFVTFQKKyAq IE9SCisgKiBBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIFNFVCBERUZBVUxUICV7ZGVmYXVsdH1z CisgKiBPUgorICogQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9RCBEUk9QIE5PVCBOVUxMCisgKiBP UgorICogQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9RCBTRVQgTk9UIE5VTEwKKyAqIE9SCisgKiBB TFRFUiBET01BSU4gJXtpZGVudGl0eX1EIEFERCBDT05TVFJBSU5UICV7Y29uc3RyYWludF9uYW1l fXMgJXtkZWZpbml0aW9ufXMKKyAqIE9SCisgKiBBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIERS T1AgQ09OU1RSQUlOVCBJRiBFWElTVFMgJXtjb25zdHJhaW50X25hbWV9cyAle2Nhc2NhZGV9cwor ICogT1IKKyAqIEFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgVkFMSURBVEUgQ09OU1RSQUlOVCAl e2NvbnN0cmFpbnRfbmFtZX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJE b21haW5TdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlLAorCQkJCQkJT2JqZWN0QWRk cmVzcyBjb25zdHJhaW50QWRkcikKK3sKKwlBbHRlckRvbWFpblN0bXQgKm5vZGUgPSAoQWx0ZXJE b21haW5TdG10ICopIHBhcnNldHJlZTsKKwlIZWFwVHVwbGUJZG9tVHVwOworCUZvcm1fcGdfdHlw ZSBkb21Gb3JtOworCU9ialRyZWUgICAgKnJldDsKKworCWRvbVR1cCA9IFNlYXJjaFN5c0NhY2hl MShUWVBFT0lELCBvYmplY3RJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGRvbVR1cCkpCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBkb21haW4gd2l0aCBPSUQgJXUi LCBvYmplY3RJZCk7CisJZG9tRm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVChkb21UdXAp OworCisJc3dpdGNoIChub2RlLT5zdWJ0eXBlKQorCXsKKwkJY2FzZSAnVCc6CisJCQkvKiBTRVQg REVGQVVMVCAvIERST1AgREVGQVVMVCAqLworCQkJaWYgKG5vZGUtPmRlZiA9PSBOVUxMKQorCQkJ CXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIERST1AgREVG QVVMVCIsIDIsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZHJvcCBkZWZhdWx0 IiwKKwkJCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJIG5ld19v Ymp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJ CQkgIE5hbWVTdHIoZG9tRm9ybS0+dHlwbmFtZSkpKTsKKwkJCWVsc2UKKwkJCQlyZXQgPSBuZXdf b2JqdHJlZV9WQSgiQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9RCBTRVQgREVGQVVMVCAle2RlZmF1 bHR9cyIsIDMsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IGRlZmF1bHQi LAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkgbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lKGRvbUZvcm0tPnR5cG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCQkJ CSAgTmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSksCisJCQkJCQkJCQkgImRlZmF1bHQiLCBPYmpU eXBlU3RyaW5nLAorCQkJCQkJCQkJIERvbWFpbkdldERlZmF1bHQoZG9tVHVwLCBmYWxzZSkpOwor CQkJYnJlYWs7CisJCWNhc2UgJ04nOgorCQkJLyogRFJPUCBOT1QgTlVMTCAqLworCQkJcmV0ID0g bmV3X29ianRyZWVfVkEoIkFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgRFJPUCBOT1QgTlVMTCIs IDIsCisJCQkJCQkJCQkgICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3Agbm90IG51bGwiLAor CQkJCQkJCQkJICAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJICBuZXdfb2Jq dHJlZV9mb3JfcXVhbG5hbWUoZG9tRm9ybS0+dHlwbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkJ ICAgTmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSkpOworCQkJYnJlYWs7CisJCWNhc2UgJ08nOgor CQkJLyogU0VUIE5PVCBOVUxMICovCisJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRE9N QUlOICV7aWRlbnRpdHl9RCBTRVQgTk9UIE5VTEwiLCAyLAorCQkJCQkJCQkgInR5cGUiLCBPYmpU eXBlU3RyaW5nLCAic2V0IG5vdCBudWxsIiwKKwkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVP YmplY3QsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoZG9tRm9ybS0+dHlwbmFt ZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkgIE5hbWVTdHIoZG9tRm9ybS0+dHlwbmFtZSkpKTsKKwkJ CWJyZWFrOworCQljYXNlICdDJzoKKwkJCS8qCisJCQkgKiBBREQgQ09OU1RSQUlOVC4gIE9ubHkg Q0hFQ0sgY29uc3RyYWludHMgYXJlIHN1cHBvcnRlZCBieQorCQkJICogZG9tYWlucworCQkJICov CisJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9RCBBREQg Q09OU1RSQUlOVCAle2NvbnN0cmFpbnRfbmFtZX1zICV7ZGVmaW5pdGlvbn1zIiwgNCwKKwkJCQkJ CQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb25zdHJhaW50IiwKKwkJCQkJCQkJICJp ZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWUoZG9tRm9ybS0+dHlwbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkgIE5hbWVTdHIoZG9tRm9y bS0+dHlwbmFtZSkpLAorCQkJCQkJCQkgImNvbnN0cmFpbnRfbmFtZSIsIE9ialR5cGVTdHJpbmcs CisJCQkJCQkJCSBnZXRfY29uc3RyYWludF9uYW1lKGNvbnN0cmFpbnRBZGRyLm9iamVjdElkKSwK KwkJCQkJCQkJICJkZWZpbml0aW9uIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJIHBnX2dldF9j b25zdHJhaW50ZGVmX3N0cmluZyhjb25zdHJhaW50QWRkci5vYmplY3RJZCkpOworCQkJYnJlYWs7 CisJCWNhc2UgJ1YnOgorCQkJLyogVkFMSURBVEUgQ09OU1RSQUlOVCAqLworCQkJLyoKKwkJCSAq IFByb2Nlc3Mgc3VidHlwZT1zcGVjaWZpYyBvcHRpb25zLiBWYWxpZGF0aW9uIGEgY29uc3RyYWlu dAorCQkJICogcmVxdWlyZXMgaXRzIG5hbWUuCisJCQkgKi8KKwkJCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIFZBTElEQVRFIENPTlNUUkFJTlQgJXtjb25z dHJhaW50X25hbWV9cyIsIDMsCisJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJ2YWxp ZGF0ZSBjb25zdHJhaW50IiwKKwkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoZG9tRm9ybS0+dHlwbmFtZXNwYWNlLAor CQkJCQkJCQkJCQkJCQkgIE5hbWVTdHIoZG9tRm9ybS0+dHlwbmFtZSkpLAorCQkJCQkJCQkgImNv bnN0cmFpbnRfbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5hbWUpOworCQkJYnJlYWs7CisJ CWNhc2UgJ1gnOgorCQkJeworCQkJCU9ialRyZWUgICAgKnRtcF9vYmo7CisKKwkJCQkvKiBEUk9Q IENPTlNUUkFJTlQgKi8KKwkJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRE9NQUlOICV7 aWRlbnRpdHl9RCBEUk9QIENPTlNUUkFJTlQgSUYgRVhJU1RTICV7Y29uc3RyYWludF9uYW1lfXMi LCAzLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3AgY29uc3RyYWludCIs CisJCQkJCQkJCQkJImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCQluZXdfb2Jq dHJlZV9mb3JfcXVhbG5hbWUoZG9tRm9ybS0+dHlwbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkJ CU5hbWVTdHIoZG9tRm9ybS0+dHlwbmFtZSkpLAorCQkJCQkJCQkJCSJjb25zdHJhaW50X25hbWUi LCBPYmpUeXBlU3RyaW5nLCBub2RlLT5uYW1lKTsKKworCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiQ0FTQ0FERSIsIDEsCisJCQkJCQkJCQkJInByZXNlbnQiLCBPYmpUeXBlQm9vbCwgbm9k ZS0+YmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFKTsKKworCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0 KHJldCwgIiV7Y2FzY2FkZX1zIiwgdG1wX29iaik7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIHN1YnR5cGUgJWMiLCBub2RlLT5zdWJ0eXBlKTsK Kwl9CisKKwkvKiBEb25lICovCisJUmVsZWFzZVN5c0NhY2hlKGRvbVR1cCk7CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZVN0YXRzU3RtdC4KKyAqCisgKiBHaXZl biBhIHN0YXRpc3RpY3MgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJl dHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisg KgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBTVEFUSVNUSUNTICV7aWZfbm90X2V4aXN0 c31zICV7aWRlbnRpdHl9RCBPTiAle2V4cHI6LCB9cyBGUk9NICV7c3RhdF90YWJsZV9pZGVudGl0 eX1ECisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlU3RhdGlzdGljc1N0bXQo T2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlU3RhdHNTdG10ICpub2Rl ID0gKENyZWF0ZVN0YXRzU3RtdCAqKSBwYXJzZXRyZWU7CisJRm9ybV9wZ19zdGF0aXN0aWNfZXh0 IHN0YXRmb3JtOworCU9ialRyZWUgICAgKnJldDsKKwlIZWFwVHVwbGUJdHVwOworCURhdHVtCQlk YXR1bTsKKwlib29sCQlpc251bGw7CisJTGlzdAkgICAqc3RhdGV4cHJzID0gTklMOworCisJdHVw ID0gU2VhcmNoU3lzQ2FjaGUxKFNUQVRFWFRPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQp KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHN0YXRpc3RpYyB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKworCXN0 YXRmb3JtID0gKEZvcm1fcGdfc3RhdGlzdGljX2V4dCkgR0VUU1RSVUNUKHR1cCk7CisKKwlyZXQg PSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFNUQVRJU1RJQ1MgJXtpZl9ub3RfZXhpc3RzfXMgJXtp ZGVudGl0eX1EIiwgMiwKKwkJCQkJCSAiaWZfbm90X2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkgbm9kZS0+aWZfbm90X2V4aXN0cyA/ICJJRiBOT1QgRVhJU1RTIiA6ICIiLAorCQkJCQkJ ICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lKHN0YXRmb3JtLT5zdHhuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIoc3RhdGZv cm0tPnN0eG5hbWUpKSk7CisKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVEFURVhUT0lELCB0 dXAsIEFudW1fcGdfc3RhdGlzdGljX2V4dF9zdHhleHBycywKKwkJCQkJCQkmaXNudWxsKTsKKwlp ZiAoIWlzbnVsbCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCQlSZWxhdGlvbglzdGF0c3JlbDsK KwkJTGlzdAkgICAqY29udGV4dDsKKwkJTGlzdAkgICAqZXhwcnMgPSBOSUw7CisJCWNoYXIJICAg KmV4cHJzU3RyaW5nOworCisJCXN0YXRzcmVsID0gcmVsYXRpb25fb3BlbihzdGF0Zm9ybS0+c3R4 cmVsaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCWNvbnRleHQgPSBkZXBhcnNlX2NvbnRleHRfZm9y KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRzcmVsKSwKKwkJCQkJCQkJCSAgUmVsYXRpb25H ZXRSZWxpZChzdGF0c3JlbCkpOworCisJCWV4cHJzU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhkYXR1bSk7CisJCWV4cHJzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKGV4cHJzU3RyaW5nKTsK KworCQlmb3JlYWNoKGxjLCBleHBycykKKwkJeworCQkJTm9kZQkgICAqZXhwciA9IChOb2RlICop IGxmaXJzdChsYyk7CisJCQljaGFyCSAgICpzdGF0ZXhwcjsKKworCQkJc3RhdGV4cHIgPSBkZXBh cnNlX2V4cHJlc3Npb24oZXhwciwgY29udGV4dCwgZmFsc2UsIGZhbHNlKTsKKwkJCXN0YXRleHBy cyA9IGxhcHBlbmQoc3RhdGV4cHJzLCBuZXdfc3RyaW5nX29iamVjdChzdGF0ZXhwcikpOworCQl9 CisKKwkJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICJPTiAle2V4cHI6LCB9cyIsIHN0YXRleHBy cyk7CisJCXBmcmVlKGV4cHJzU3RyaW5nKTsKKwkJcmVsYXRpb25fY2xvc2Uoc3RhdHNyZWwsIEFj Y2Vzc1NoYXJlTG9jayk7CisJfQorCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1RBVEVYVE9J RCwgdHVwLCBBbnVtX3BnX3N0YXRpc3RpY19leHRfc3R4a2V5cywKKwkJCQkJCQkmaXNudWxsKTsK KwlpZiAoIWlzbnVsbCkKKwl7CisJCWludAkJCWtleW5vOworCQljaGFyCSAgICphdHRuYW1lOwor CQlMaXN0CSAgICpzdGF0Y29scyA9IE5JTDsKKwkJaW50MnZlY3RvciAqaW5kb3B0aW9uOworCisJ CWluZG9wdGlvbiA9IChpbnQydmVjdG9yICopIERhdHVtR2V0UG9pbnRlcihkYXR1bSk7CisKKwkJ Zm9yIChrZXlubyA9IDA7IGtleW5vIDwgaW5kb3B0aW9uLT5kaW0xOyBrZXlubysrKQorCQl7CisJ CQlhdHRuYW1lID0gZ2V0X2F0dG5hbWUoc3RhdGZvcm0tPnN0eHJlbGlkLCBpbmRvcHRpb24tPnZh bHVlc1trZXlub10sCisJCQkJCQkJCSAgZmFsc2UpOworCQkJc3RhdGNvbHMgPSBsYXBwZW5kKHN0 YXRjb2xzLCBuZXdfc3RyaW5nX29iamVjdChhdHRuYW1lKSk7CisJCX0KKworCQlpZiAoaW5kb3B0 aW9uLT5kaW0xKQorCQl7CisJCQkvKiBBcHBlbmQgYSAnLCcgaWYgc3RhdGV4cHJzIGlzIHByZXNl bnQgZWxzZSBhcHBlbmQgJ09OJyAqLworCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtj b21tYX1zIiwgImNvbW1hIiwKKwkJCQkJCQkJIHN0YXRleHBycyA/ICIsIiA6ICJPTiIpOworCQkJ YXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle2NvbHM6LCB9cyIsIHN0YXRjb2xzKTsKKwkJfQor CX0KKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIkZST00gJXtzdGF0X3RhYmxlX2lkZW50 aXR5fUQiLAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShnZXRfcmVsX25hbWVzcGFj ZShzdGF0Zm9ybS0+c3R4cmVsaWQpLAorCQkJCQkJCQkJCQkJICBnZXRfcmVsX25hbWUoc3RhdGZv cm0tPnN0eHJlbGlkKSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gcmV0 OworfQorCisvKgorICogRGVwYXJzZSBhbiBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCAoQ1JFQVRF IFNFUlZFUikKKyAqCisgKiBHaXZlbiBhIHNlcnZlciBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRo YXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0 ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFNFUlZFUiAle2lk ZW50aXR5fUkgJXt0eXBlfXMgJXt2ZXJzaW9ufXMgRk9SRUlHTiBEQVRBIFdSQVBQRVIgJXtmZHd9 SQorICogJXtnZW5lcmljX29wdGlvbnN9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNl X0NyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQor eworCUNyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10ICpub2RlID0gKENyZWF0ZUZvcmVpZ25TZXJ2ZXJT dG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOwor CisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBTRVJWRVIgJXtpZGVudGl0eX1JIiwgMSwK KwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5zZXJ2ZXJuYW1lKTsKKwor CS8qIEFkZCBhIFRZUEUgY2xhdXNlLCBpZiBhbnkgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiVFlQ RSIpOworCWlmIChub2RlLT5zZXJ2ZXJ0eXBlKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAs ICIle3R5cGV9TCIsICJ0eXBlIiwgbm9kZS0+c2VydmVydHlwZSk7CisJZWxzZQorCQlhcHBlbmRf bm90X3ByZXNlbnQodG1wKTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3R5cGV9cyIs IHRtcCk7CisKKwkvKiBBZGQgYSBWRVJTSU9OIGNsYXVzZSwgaWYgYW55ICovCisJdG1wID0gbmV3 X29ianRyZWUoIlZFUlNJT04iKTsKKwlpZiAobm9kZS0+dmVyc2lvbikKKwkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wLCAiJXt2ZXJzaW9ufUwiLCAidmVyc2lvbiIsIG5vZGUtPnZlcnNpb24pOwor CWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJYXBwZW5kX29iamVjdF9vYmplY3Qo cmV0LCAiJXt2ZXJzaW9ufXMiLCB0bXApOworCisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAi Rk9SRUlHTiBEQVRBIFdSQVBQRVIgJXtmZHd9SSIsICJmZHciLAorCQkJCQkJIG5vZGUtPmZkd25h bWUpOworCisJLyogQWRkIGFuIE9QVElPTlMgY2xhdXNlLCBpZiBhbnkgKi8KKwlhcHBlbmRfb2Jq ZWN0X29iamVjdChyZXQsICIle2dlbmVyaWNfb3B0aW9uc31zIiwKKwkJCQkJCSBkZXBhcnNlX0Zk d09wdGlvbnMobm9kZS0+b3B0aW9ucywgTlVMTCwgZmFsc2UpKTsKKworCXJldHVybiByZXQ7Cit9 CisKKy8qCisgKiBEZXBhcnNlIGFuIEFsdGVyRm9yZWlnblNlcnZlclN0bXQgKEFMVEVSIFNFUlZF UikKKyAqCisgKiBHaXZlbiBhIHNlcnZlciBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3Jl YXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29t bWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgU0VSVkVSICV7aWRlbnRpdHl9 SSAle3ZlcnNpb259cyAle2dlbmVyaWNfb3B0aW9uc31zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoK K2RlcGFyc2VfQWx0ZXJGb3JlaWduU2VydmVyU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNl dHJlZSkKK3sKKwlBbHRlckZvcmVpZ25TZXJ2ZXJTdG10ICpub2RlID0gKEFsdGVyRm9yZWlnblNl cnZlclN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnRtcDsKKworCS8qIEFkZCBhIFZF UlNJT04gY2xhdXNlLCBpZiBhbnkgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiVkVSU0lPTiIpOwor CWlmIChub2RlLT5oYXNfdmVyc2lvbiAmJiBub2RlLT52ZXJzaW9uKQorCQlhcHBlbmRfc3RyaW5n X29iamVjdCh0bXAsICIle3ZlcnNpb259TCIsICJ2ZXJzaW9uIiwgbm9kZS0+dmVyc2lvbik7CisJ ZWxzZSBpZiAobm9kZS0+aGFzX3ZlcnNpb24pCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwg InZlcnNpb24iLCAidmVyc2lvbiIsICJOVUxMIik7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQodG1wKTsKKworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQUxURVIgU0VSVkVSICV7aWRlbnRp dHl9SSAle3ZlcnNpb259cyAle2dlbmVyaWNfb3B0aW9uc31zIiwgMywKKwkJCQkJCSAgImlkZW50 aXR5IiwgT2JqVHlwZVN0cmluZywgbm9kZS0+c2VydmVybmFtZSwKKwkJCQkJCSAgInZlcnNpb24i LCBPYmpUeXBlT2JqZWN0LCB0bXAsCisJCQkJCQkgICJnZW5lcmljX29wdGlvbnMiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJICBkZXBhcnNlX0Zkd09wdGlvbnMobm9kZS0+b3B0aW9ucywgTlVMTCwg ZmFsc2UpKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVQTGFuZ1N0bXQuCisgKgorICog R2l2ZW4gYSBsYW5ndWFnZSBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwg cmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4K KyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7b3JfcmVwbGFjZX1zICV7dHJ1c3Rl ZH1zIExBTkdVQUdFICV7aWRlbnRpdHl9cyBIQU5ETEVSICV7aGFuZGxlcn1ECisgKiAle2lubGlu ZX1zICV7dmFsaWRhdG9yfXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVM YW5nU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVQTGFuZ1N0 bXQgKm5vZGUgPSAoQ3JlYXRlUExhbmdTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpy ZXQ7CisJT2JqVHJlZSAgICAqdG1wOworCUhlYXBUdXBsZQlsYW5nVHVwOworCUZvcm1fcGdfbGFu Z3VhZ2UgbGFuZ0Zvcm07CisKKwlsYW5nVHVwID0gU2VhcmNoU3lzQ2FjaGUxKExBTkdPSUQsCisJ CQkJCQkJICBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKGxhbmdUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgbGFu Z3VhZ2Ugd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJbGFuZ0Zvcm0gPSAoRm9ybV9wZ19sYW5n dWFnZSkgR0VUU1RSVUNUKGxhbmdUdXApOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFU RSAle29yX3JlcGxhY2V9cyAle3RydXN0ZWR9cyBMQU5HVUFHRSAle2lkZW50aXR5fXMiLCAzLAor CQkJCQkJICJvcl9yZXBsYWNlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5yZXBsYWNl ID8gIk9SIFJFUExBQ0UiIDogIiIsCisJCQkJCQkgInRydXN0ZWQiLCBPYmpUeXBlU3RyaW5nLAor CQkJCQkJIGxhbmdGb3JtLT5sYW5wbHRydXN0ZWQgPyAiVFJVU1RFRCIgOiAiIiwKKwkJCQkJCSAi aWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5wbG5hbWUpOworCisJaWYgKG5vZGUtPnBs aGFuZGxlciAhPSBOSUwpCisJeworCQkvKiBBZGQgdGhlIEhBTkRMRVIgY2xhdXNlICovCisJCWFw cGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIkhBTkRMRVIgJXtoYW5kbGVyfUQiLAorCQkJCQkJCSBu ZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJ CQkJCQkJIGxhbmdGb3JtLT5sYW5wbGNhbGxmb2lkKSk7CisKKwkJLyogQWRkIHRoZSBJTkxJTkUg Y2xhdXNlLCBpZiBhbnkgKi8KKwkJdG1wID0gbmV3X29ianRyZWUoIklOTElORSIpOworCQlpZiAo T2lkSXNWYWxpZChsYW5nRm9ybS0+bGFuaW5saW5lKSkKKwkJeworCQkJYXBwZW5kX29iamVjdF9v YmplY3QodG1wLCAiJXtoYW5kbGVyX25hbWV9RCIsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCSBsYW5nRm9y bS0+bGFuaW5saW5lKSk7CisJCX0KKwkJZWxzZQorCQkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7 CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7aW5saW5lfXMiLCB0bXApOworCisJCS8q IEFkZCB0aGUgVkFMSURBVE9SIGNsYXVzZSwgaWYgYW55ICovCisJCXRtcCA9IG5ld19vYmp0cmVl KCJWQUxJREFUT1IiKTsKKwkJaWYgKE9pZElzVmFsaWQobGFuZ0Zvcm0tPmxhbnZhbGlkYXRvcikp CisJCXsKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7aGFuZGxlcl9uYW1lfUQiLAor CQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQs CisJCQkJCQkJCQkJCQkJCQkgbGFuZ0Zvcm0tPmxhbnZhbGlkYXRvcikpOworCQl9CisJCWVsc2UK KwkJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQs ICIle3ZhbGlkYXRvcn1zIiwgdG1wKTsKKwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUobGFuZ1R1cCk7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZUZvcmVpZ25UYWJs ZVN0bXQgKENSRUFURSBGT1JFSUdOIFRBQkxFKS4KKyAqCisgKiBHaXZlbiBhIHRhYmxlIE9JRCBh bmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICog cmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIENSRUFURSBGT1JFSUdO IFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RAorICogWygle3RhYmxlX2VsZW1l bnRzOiwgfXMpICV7aW5oZXJpdHN9cworICogIHwgUEFSVElUSU9OIE9GICV7cGFyZW50X2lkZW50 aXR5fUQgKCV7dHlwZWRfdGFibGVfZWxlbWVudHM6LCB9cykgJXtwYXJ0aXRpb25fYm91bmR9c10K KyAqIFNFUlZFUiAle3NlcnZlcn1JICV7Z2VuZXJpY19vcHRpb25zfXMKKyAqLworc3RhdGljIE9i alRyZWUgKgorZGVwYXJzZV9DcmVhdGVGb3JlaWduVGFibGVTdG10KE9pZCBvYmplY3RJZCwgTm9k ZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZUZvcmVpZ25UYWJsZVN0bXQgKnN0bXQgPSAoQ3JlYXRl Rm9yZWlnblRhYmxlU3RtdCAqKSBwYXJzZXRyZWU7CisJUmVsYXRpb24JcmVsYXRpb24gPSByZWxh dGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCUxpc3QJICAgKmRwY29udGV4 dDsKKwlPYmpUcmVlICAgICpjcmVhdGVTdG10OworCU9ialRyZWUgICAgKnRtcG9iajsKKwlMaXN0 CSAgICp0YWJsZWVsdHMgPSBOSUw7CisKKwljcmVhdGVTdG10ID0gbmV3X29ianRyZWUoIkNSRUFU RSBGT1JFSUdOIFRBQkxFIik7CisKKwlhcHBlbmRfc3RyaW5nX29iamVjdChjcmVhdGVTdG10LCAi JXtpZl9ub3RfZXhpc3RzfXMiLCAiaWZfbm90X2V4aXN0cyIsCisJCQkJCQkgc3RtdC0+YmFzZS5p Zl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIpOworCisJdG1wb2JqID0gbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lKHJlbGF0aW9uLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJCQkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKwlhcHBlbmRfb2JqZWN0 X29iamVjdChjcmVhdGVTdG10LCAiJXtpZGVudGl0eX1EIiwgdG1wb2JqKTsKKworCWRwY29udGV4 dCA9IGRlcGFyc2VfY29udGV4dF9mb3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24p LAorCQkJCQkJCQkJb2JqZWN0SWQpOworCWlmIChzdG10LT5iYXNlLnBhcnRib3VuZCkKKwl7CisJ CS8qIFBhcnRpdGlvbmVkIHRhYmxlICovCisJCUxpc3QJICAgKnBhcmVudHM7CisJCU9iakVsZW0g ICAgKmVsZW07CisKKwkJcGFyZW50cyA9IGRlcGFyc2VfSW5oUmVsYXRpb25zKG9iamVjdElkKTsK KwkJZWxlbSA9IChPYmpFbGVtICopIGxpbml0aWFsKHBhcmVudHMpOworCisJCUFzc2VydChsaXN0 X2xlbmd0aChwYXJlbnRzKSA9PSAxKTsKKworCQlhcHBlbmRfZm9ybWF0X3N0cmluZyhjcmVhdGVT dG10LCAiUEFSVElUSU9OIE9GIik7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRlU3Rt dCwgIiV7cGFyZW50X2lkZW50aXR5fUQiLAorCQkJCQkJCQkJCSBlbGVtLT52YWx1ZS5vYmplY3Qp OworCisJCXRhYmxlZWx0cyA9IGRlcGFyc2VfVGFibGVFbGVtZW50cyhyZWxhdGlvbiwgc3RtdC0+ YmFzZS50YWJsZUVsdHMsIGRwY29udGV4dCwKKwkJCQkJCQkJCQkgIHRydWUsIC8qIHR5cGVkIHRh YmxlICovCisJCQkJCQkJCQkJICBmYWxzZSk7CS8qIG5vdCBjb21wb3NpdGUgKi8KKwkJdGFibGVl bHRzID0gb2J0YWluQ29uc3RyYWludHModGFibGVlbHRzLCBvYmplY3RJZCwgSW52YWxpZE9pZCwK KwkJCQkJCQkJCSAgQ29uc3RyT2JqRm9yZWlnblRhYmxlKTsKKworCQl0bXBvYmogPSBuZXdfb2Jq dHJlZSgiIik7CisJCWlmICh0YWJsZWVsdHMpCisJCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcG9i aiwgIigle2VsZW1lbnRzOiwgfXMpIiwgdGFibGVlbHRzKTsKKwkJZWxzZQorCQkJYXBwZW5kX25v dF9wcmVzZW50KHRtcG9iaik7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRlU3RtdCwg IiV7dHlwZWRfdGFibGVfZWxlbWVudHN9cyIsIHRtcG9iaik7CisKKwkJLyoKKwkJICogQWRkIHRo ZSBwYXJ0aXRpb25fYm91bmRfc3BlYywgaS5lLiB0aGUgRk9SIFZBTFVFUyBjbGF1c2UuCisJCSAq IEdldCBwZ19jbGFzcy5yZWxwYXJ0Ym91bmQuIFdlIGNhbm5vdCB1c2UgcGFydGJvdW5kIGluIHRo ZSBwYXJzZXRyZWUKKwkJICogZGlyZWN0bHkgYXMgaXQncyB0aGUgb3JpZ2luYWwgcGFydGJvdW5k IGV4cHJlc3Npb24gd2hpY2ggaGF2ZW4ndAorCQkgKiBiZWVuIHRyYW5zZm9ybWVkLgorCQkgKi8K KwkJYXBwZW5kX3N0cmluZ19vYmplY3QoY3JlYXRlU3RtdCwgIiV7cGFydGl0aW9uX2JvdW5kfXMi LCAicGFydGl0aW9uX2JvdW5kIiwKKwkJCQkJCQkgUmVsYXRpb25HZXRQYXJ0aXRpb25Cb3VuZChv YmplY3RJZCkpOworCisJCS8qIE5vIFBBUlRJVElPTiBCWSBjbGF1c2UgZm9yIENSRUFURSBGT1JF SUdOIFRBQkxFICovCisJfQorCWVsc2UKKwl7CisJCXRhYmxlZWx0cyA9IGRlcGFyc2VfVGFibGVF bGVtZW50cyhyZWxhdGlvbiwgc3RtdC0+YmFzZS50YWJsZUVsdHMsIGRwY29udGV4dCwKKwkJCQkJ CQkJCQkgIGZhbHNlLAkJLyogbm90IHR5cGVkIHRhYmxlICovCisJCQkJCQkJCQkJICBmYWxzZSk7 CS8qIG5vdCBjb21wb3NpdGUgKi8KKwkJdGFibGVlbHRzID0gb2J0YWluQ29uc3RyYWludHModGFi bGVlbHRzLCBvYmplY3RJZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSAgQ29uc3RyT2JqRm9yZWln blRhYmxlKTsKKworCQlpZiAodGFibGVlbHRzKQorCQkJYXBwZW5kX2FycmF5X29iamVjdChjcmVh dGVTdG10LCAiKCV7dGFibGVfZWxlbWVudHM6LCB9cykiLCB0YWJsZWVsdHMpOworCQllbHNlCisJ CQlhcHBlbmRfZm9ybWF0X3N0cmluZyhjcmVhdGVTdG10LCAiKCkiKTsKKworCQkvKgorCQkqIEFk ZCBpbmhlcml0YW5jZSBzcGVjaWZpY2F0aW9uLiAgV2UgY2Fubm90IHNpbXBseSBzY2FuIHRoZSBs aXN0IG9mCisJCSogcGFyZW50cyBmcm9tIHRoZSBwYXJzZXIgbm9kZSwgYmVjYXVzZSB0aGF0IG1h eSBsYWNrIHRoZSBhY3R1YWwKKwkJKiBxdWFsaWZpZWQgbmFtZXMgb2YgdGhlIHBhcmVudCByZWxh dGlvbnMuICBSYXRoZXIgdGhhbiB0cnlpbmcgdG8KKwkJKiByZS1yZXNvbHZlIHRoZW0gZnJvbSB0 aGUgaW5mb3JtYXRpb24gaW4gdGhlIHBhcnNlIG5vZGUsIGl0IHNlZW1zCisJCSogbW9yZSBhY2N1 cmF0ZSBhbmQgY29udmVuaWVudCB0byBncmFiIGl0IGZyb20gcGdfaW5oZXJpdHMuCisJCSovCisJ CXRtcG9iaiA9IG5ld19vYmp0cmVlKCJJTkhFUklUUyIpOworCQlpZiAoc3RtdC0+YmFzZS5pbmhS ZWxhdGlvbnMgIT0gTklMKQorCQkJYXBwZW5kX2FycmF5X29iamVjdCh0bXBvYmosICIoJXtwYXJl bnRzOiwgfUQpIiwgZGVwYXJzZV9JbmhSZWxhdGlvbnMob2JqZWN0SWQpKTsKKwkJZWxzZQorCQl7 CisJCQlhcHBlbmRfbnVsbF9vYmplY3QodG1wb2JqLCAiKCV7cGFyZW50czosIH1EKSIpOworCQkJ YXBwZW5kX25vdF9wcmVzZW50KHRtcG9iaik7CisJCX0KKwkJYXBwZW5kX29iamVjdF9vYmplY3Qo Y3JlYXRlU3RtdCwgIiV7aW5oZXJpdHN9cyIsIHRtcG9iaik7CisJfQorCisJYXBwZW5kX3N0cmlu Z19vYmplY3QoY3JlYXRlU3RtdCwgIlNFUlZFUiAle3NlcnZlcn1JIiwgInNlcnZlciIsIHN0bXQt PnNlcnZlcm5hbWUpOworCisJLyogYWRkIGFuIE9QVElPTlMgY2xhdXNlLCBpZiBhbnkgKi8KKwlh cHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVTdG10LCAiJXtnZW5lcmljX29wdGlvbnN9cyIsCisJ CQkJCQkgZGVwYXJzZV9GZHdPcHRpb25zKHN0bXQtPm9wdGlvbnMsIE5VTEwsIGZhbHNlKSk7CisK KwlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBj cmVhdGVTdG10OworfQorCisvKgorICogRGVwYXJzZSBhIERlZmluZVN0bXQuCisgKi8KK3N0YXRp YyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5lU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNl dHJlZSwgT2JqZWN0QWRkcmVzcyBzZWNvbmRhcnlPYmopCit7CisJRGVmaW5lU3RtdCAqZGVmaW5l ID0gKERlZmluZVN0bXQgKikgcGFyc2V0cmVlOworCisJc3dpdGNoIChkZWZpbmUtPmtpbmQpCisJ eworCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6CisJCQlyZXR1cm4gZGVwYXJzZV9EZWZpbmVTdG10 X0FnZ3JlZ2F0ZShvYmplY3RJZCwgZGVmaW5lKTsKKworCQljYXNlIE9CSkVDVF9DT0xMQVRJT046 CisJCQlyZXR1cm4gZGVwYXJzZV9EZWZpbmVTdG10X0NvbGxhdGlvbihvYmplY3RJZCwgZGVmaW5l LCBzZWNvbmRhcnlPYmopOworCisJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgorCQkJcmV0dXJuIGRl cGFyc2VfRGVmaW5lU3RtdF9PcGVyYXRvcihvYmplY3RJZCwgZGVmaW5lKTsKKworCQljYXNlIE9C SkVDVF9UU0NPTkZJR1VSQVRJT046CisJCQlyZXR1cm4gZGVwYXJzZV9EZWZpbmVTdG10X1RTQ29u ZmlnKG9iamVjdElkLCBkZWZpbmUsIHNlY29uZGFyeU9iaik7CisKKwkJY2FzZSBPQkpFQ1RfVFNE SUNUSU9OQVJZOgorCQkJcmV0dXJuIGRlcGFyc2VfRGVmaW5lU3RtdF9UU0RpY3Rpb25hcnkob2Jq ZWN0SWQsIGRlZmluZSk7CisKKwkJY2FzZSBPQkpFQ1RfVFNQQVJTRVI6CisJCQlyZXR1cm4gZGVw YXJzZV9EZWZpbmVTdG10X1RTUGFyc2VyKG9iamVjdElkLCBkZWZpbmUpOworCisJCWNhc2UgT0JK RUNUX1RTVEVNUExBVEU6CisJCQlyZXR1cm4gZGVwYXJzZV9EZWZpbmVTdG10X1RTVGVtcGxhdGUo b2JqZWN0SWQsIGRlZmluZSk7CisKKwkJY2FzZSBPQkpFQ1RfVFlQRToKKwkJCXJldHVybiBkZXBh cnNlX0RlZmluZVN0bXRfVHlwZShvYmplY3RJZCwgZGVmaW5lKTsKKworCQlkZWZhdWx0OgorCQkJ ZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9iamVjdCBraW5kOiAlZCIsIGRlZmluZS0+a2luZCk7 CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBGb3JtIGFuIE9iakVsZW0gdG8gYmUg dXNlZCBhcyBhIHNpbmdsZSBhcmd1bWVudCBpbiBhbiBhZ2dyZWdhdGUgYXJndW1lbnQKKyAqIGxp c3QKKyAqLworc3RhdGljIE9iakVsZW0gKgorZm9ybV9hZ2dfYXJndW1lbnQoaW50IGlkeCwgY2hh ciAqbW9kZXMsIGNoYXIgKipuYW1lcywgT2lkICp0eXBlcykKK3sKKwlPYmpUcmVlCSAgICphcmc7 CisKKwlhcmcgPSBuZXdfb2JqdHJlZSgiIik7CisKKwlhcHBlbmRfc3RyaW5nX29iamVjdChhcmcs ICIle21vZGV9cyIsICJtb2RlIiwKKwkJCQkJCSAobW9kZXMgJiYgbW9kZXNbaWR4XSA9PSAndicp ID8gIlZBUklBRElDIiA6ICIiKTsKKwlhcHBlbmRfc3RyaW5nX29iamVjdChhcmcsICIle25hbWV9 cyIsICJuYW1lIiwgbmFtZXMgPyBuYW1lc1tpZHhdIDogIiIpOworCWFwcGVuZF9vYmplY3Rfb2Jq ZWN0KGFyZywgIiV7dHlwZX1UIiwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZSh0eXBlc1tp ZHhdLCAtMSkpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KGFyZyk7Cit9CisKKy8qCisg KiBEZXBhcnNlIGEgRGVmaW5lU3RtdCAoQ1JFQVRFIEFHR1JFR0FURSkKKyAqCisgKiBHaXZlbiBh IGFnZ3JlZ2F0ZSBPSUQsIHJldHVybiBhbiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgQ1JFQVRF IGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle29yX3JlcGxhY2V9 cyBBR0dSRUdBVEUgJXtpZGVudGl0eX1EKCV7dHlwZXN9cykgKCV7ZWxlbXM6LCB9cykKKyAqLwor c3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZpbmVTdG10X0FnZ3JlZ2F0ZShPaWQgb2JqZWN0 SWQsIERlZmluZVN0bXQgKmRlZmluZSkKK3sKKwlIZWFwVHVwbGUgICBhZ2dUdXA7CisJSGVhcFR1 cGxlICAgcHJvY1R1cDsKKwlPYmpUcmVlCSAgICpzdG10OworCU9ialRyZWUJICAgKnRtcDsKKwlM aXN0CSAgICpsaXN0OworCURhdHVtCQlpbml0dmFsOworCWJvb2wJCWlzbnVsbDsKKwlGb3JtX3Bn X2FnZ3JlZ2F0ZSBhZ2c7CisJRm9ybV9wZ19wcm9jIHByb2M7CisJRm9ybV9wZ19vcGVyYXRvciBv cDsKKwlIZWFwVHVwbGUJdHVwOworCisJYWdnVHVwID0gU2VhcmNoU3lzQ2FjaGUxKEFHR0ZOT0lE LCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGFn Z1R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBhZ2dyZWdhdGUg d2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJYWdnID0gKEZvcm1fcGdfYWdncmVnYXRlKSBHRVRT VFJVQ1QoYWdnVHVwKTsKKworCXByb2NUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgT2Jq ZWN0SWRHZXREYXR1bShhZ2ctPmFnZ2Zub2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBy b2NUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcHJvY2VkdXJl IHdpdGggT0lEICV1IiwKKwkJCSBhZ2ctPmFnZ2Zub2lkKTsKKwlwcm9jID0gKEZvcm1fcGdfcHJv YykgR0VUU1RSVUNUKHByb2NUdXApOworCisJc3RtdCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUg JXtvcl9yZXBsYWNlfXMgQUdHUkVHQVRFIiwgMSwKKwkJCQkJCSAib3JfcmVwbGFjZSIsIE9ialR5 cGVTdHJpbmcsIGRlZmluZS0+cmVwbGFjZSA/ICJPUiBSRVBMQUNFIiA6ICIiKTsKKworCWFwcGVu ZF9vYmplY3Rfb2JqZWN0KHN0bXQsICIle2lkZW50aXR5fUQiLAorCQkJCQkJIG5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZShwcm9jLT5wcm9uYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIo cHJvYy0+cHJvbmFtZSkpKTsKKworCS8qCisJICogQWRkIHRoZSBhcmd1bWVudCBsaXN0LiAgVGhl cmUgYXJlIHRocmVlIGNhc2VzIHRvIGNvbnNpZGVyOgorCSAqCisJICogMS4gbm8gYXJndW1lbnRz LCBpbiB3aGljaCBjYXNlIHRoZSBzaWduYXR1cmUgaXMgKCopLgorCSAqCisJICogMi4gTm90IGFu IG9yZGVyZWQtc2V0IGFnZ3JlZ2F0ZS4gIEluIHRoaXMgY2FzZSB0aGVyZSdzIG9uZSBvciBtb3Jl CisJICogYXJndW1lbnRzLgorCSAqCisJICogMy4gT3JkZXJlZC1zZXQgYWdncmVnYXRlcy4gVGhl c2UgaGF2ZSB6ZXJvIG9yIG1vcmUgZGlyZWN0IGFyZ3VtZW50cywgYW5kCisJICogb25lIG9yIG1v cmUgb3JkZXJlZCBhcmd1bWVudHMuCisJICoKKwkgKiBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVy IGRlZmF1bHQgdmFsdWVzIG9yIHRhYmxlIHBhcmFtZXRlcnMsIGFuZCB0aGUKKwkgKiBvbmx5IG1v ZGUgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyIGlzIFZBUklBRElDLgorCSAqLworCisJaWYgKHBy b2MtPnByb25hcmdzID09IDApCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHN0bXQsICIoJXt0eXBl c31zKSIsICJ0eXBlcyIsICIqIik7CisJZWxzZSBpZiAoIUFHR0tJTkRfSVNfT1JERVJFRF9TRVQo YWdnLT5hZ2draW5kKSkKKwl7CisJCWludAkJCWk7CisJCWludAkJCW5hcmdzOworCQlPaWQJCSAg ICp0eXBlczsKKwkJY2hhcgkgICAqbW9kZXM7CisJCWNoYXIJICAqKm5hbWVzOworCisJCW5hcmdz ID0gZ2V0X2Z1bmNfYXJnX2luZm8ocHJvY1R1cCwgJnR5cGVzLCAmbmFtZXMsICZtb2Rlcyk7CisK KwkJLyogb25seSBkaXJlY3QgYXJndW1lbnRzIGluIHRoaXMgY2FzZSAqLworCQlsaXN0ID0gTklM OworCQlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKwkJeworCQkJbGlzdCA9IGxhcHBlbmQo bGlzdCwgZm9ybV9hZ2dfYXJndW1lbnQoaSwgbW9kZXMsIG5hbWVzLCB0eXBlcykpOworCQl9CisK KwkJdG1wID0gbmV3X29ianRyZWVfVkEoIiV7ZGlyZWN0OiwgfXMiLCAxLAorCQkJCQkJCSAiZGly ZWN0IiwgT2JqVHlwZUFycmF5LCBsaXN0KTsKKwkJYXBwZW5kX29iamVjdF9vYmplY3Qoc3RtdCwg Iigle3R5cGVzfXMpIiwgdG1wKTsKKwl9CisJZWxzZQorCXsKKwkJaW50CQkJaTsKKwkJaW50CQkJ bmFyZ3M7CisJCU9pZAkJICAgKnR5cGVzOworCQljaGFyCSAgICptb2RlczsKKwkJY2hhcgkgICoq bmFtZXM7CisKKwkJbmFyZ3MgPSBnZXRfZnVuY19hcmdfaW5mbyhwcm9jVHVwLCAmdHlwZXMsICZu YW1lcywgJm1vZGVzKTsKKworCQkvKiBkaXJlY3QgYXJndW1lbnRzIC4uLiAqLworCQlsaXN0ID0g TklMOworCQlmb3IgKGkgPSAwOyBpIDwgYWdnLT5hZ2dudW1kaXJlY3RhcmdzOyBpKyspCisJCXsK KwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIGZvcm1fYWdnX2FyZ3VtZW50KGksIG1vZGVzLCBuYW1l cywgdHlwZXMpKTsKKwkJfQorCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiJXtkaXJlY3Q6LCB9cyIs IDEsCisJCQkJCQkJICJkaXJlY3QiLCBPYmpUeXBlQXJyYXksIGxpc3QpOworCisJCS8qCisJCSAq IC4uLiBhbmQgYWdncmVnYXRlZCBhcmd1bWVudHMuICBJZiB0aGUgbGFzdCBkaXJlY3QgYXJndW1l bnQgaXMKKwkJICogVkFSSUFESUMsIHdlIG5lZWQgdG8gcmVwZWF0IGl0IGhlcmUgcmF0aGVyIHRo YW4gc2VhcmNoaW5nIGZvciBtb3JlCisJCSAqIGFyZ3VtZW50cy4gIChTZWUgYWdncl9hcmdzIHBy b2R1Y3Rpb24gaW4gZ3JhbS55IGZvciBhbiBleHBsYW5hdGlvbi4pCisJCSAqLworCQlpZiAobW9k ZXMgJiYgbW9kZXNbYWdnLT5hZ2dudW1kaXJlY3RhcmdzIC0gMV0gPT0gJ3YnKQorCQl7CisJCQls aXN0ID0gbGlzdF9tYWtlMShmb3JtX2FnZ19hcmd1bWVudChhZ2ctPmFnZ251bWRpcmVjdGFyZ3Mg LSAxLAorCQkJCQkJCQkJCQkJbW9kZXMsIG5hbWVzLCB0eXBlcykpOworCQl9CisJCWVsc2UKKwkJ eworCQkJbGlzdCA9IE5JTDsKKwkJCWZvciAoaSA9IGFnZy0+YWdnbnVtZGlyZWN0YXJnczsgaSA8 IG5hcmdzOyBpKyspCisJCQl7CisJCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgZm9ybV9hZ2dfYXJn dW1lbnQoaSwgbW9kZXMsIG5hbWVzLCB0eXBlcykpOworCQkJfQorCQl9CisJCWFwcGVuZF9hcnJh eV9vYmplY3QodG1wLCAiT1JERVIgQlkgJXthZ2dyZWdhdGVkOiwgfXMiLCBsaXN0KTsKKworCQlh cHBlbmRfb2JqZWN0X29iamVjdChzdG10LCAiKCV7dHlwZXN9cykiLCB0bXApOworCX0KKworCS8q IEFkZCB0aGUgZGVmaW5pdGlvbiBjbGF1c2UgKi8KKwlsaXN0ID0gTklMOworCisJLyogU0ZVTkMg Ki8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiU0ZVTkM9JXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJ CQkgInByb2NlZHVyZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1 YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsIGFnZy0+YWdndHJhbnNmbikpOworCWxpc3Qg PSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogU1RZUEUgKi8K Kwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiU1RZUEU9JXt0eXBlfVQiLCAxLAorCQkJCQkJICJ0eXBl IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZShhZ2ctPmFnZ3Ry YW5zdHlwZSwgLTEpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0 bXApKTsKKworCS8qIFNTUEFDRSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJTU1BBQ0U9Iik7CisJ aWYgKGFnZy0+YWdndHJhbnNzcGFjZSAhPSAwKQorCQlhcHBlbmRfaW50X29iamVjdCh0bXAsIiV7 c3BhY2V9biIsIGFnZy0+YWdndHJhbnNzcGFjZSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQodG1wKTsKKworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkp OworCisJLyogRklOQUxGVU5DICovCisJdG1wID0gbmV3X29ianRyZWUoIkZJTkFMRlVOQz0iKTsK KwlpZiAoT2lkSXNWYWxpZChhZ2ctPmFnZ2ZpbmFsZm4pKQorCQlhcHBlbmRfb2JqZWN0X29iamVj dCh0bXAsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l X2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSBhZ2ctPmFnZ2ZpbmFsZm4p KTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogRklOQUxGVU5DX0VYVFJBICovCisJ dG1wID0gbmV3X29ianRyZWUoIkZJTkFMRlVOQ19FWFRSQT0iKTsKKwlpZiAoYWdnLT5hZ2dmaW5h bGV4dHJhKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICIle3ZhbHVlfXMiLCAidmFsdWUi LCAidHJ1ZSIpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxh cHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBJTklUQ09ORCAqLwor CWluaXR2YWwgPSBTeXNDYWNoZUdldEF0dHIoQUdHRk5PSUQsIGFnZ1R1cCwKKwkJCQkJCQkgIEFu dW1fcGdfYWdncmVnYXRlX2FnZ2luaXR2YWwsCisJCQkJCQkJICAmaXNudWxsKTsKKwl0bXAgPSBu ZXdfb2JqdHJlZSgiSU5JVENPTkQ9Iik7CisJaWYgKCFpc251bGwpCisJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHRtcCwiJXtpbml0dmFsfUwiLCAiaW5pdHZhbCIsIFRleHREYXR1bUdldENTdHJpbmco aW5pdHZhbCkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxh cHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBNU0ZVTkMgKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZSgiTVNGVU5DPSIpOworCWlmIChPaWRJc1ZhbGlkKGFnZy0+YWdnbXRy YW5zZm4pKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3Byb2NlZHVyZX1EIiwKKwkJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsIGFn Zy0+YWdnbXRyYW5zZm4pKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxp c3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogTVNUWVBF ICovCisJdG1wID0gbmV3X29ianRyZWUoIk1TVFlQRT0iKTsKKwlpZiAoT2lkSXNWYWxpZChhZ2ct PmFnZ210cmFuc3R5cGUpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3R5cGV9VCIs IG5ld19vYmp0cmVlX2Zvcl90eXBlKGFnZy0+YWdnbXRyYW5zdHlwZSwgLTEpKTsKKwllbHNlCisJ CWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmpl Y3Rfb2JqZWN0KHRtcCkpOworCisJLyogTVNTUEFDRSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJN U1NQQUNFPSIpOworCWlmIChhZ2ctPmFnZ210cmFuc3NwYWNlICE9IDApCisJCWFwcGVuZF9pbnRf b2JqZWN0KHRtcCwgIiV7c3BhY2V9biIsIGFnZy0+YWdnbXRyYW5zc3BhY2UpOworCWVsc2UKKwkJ YXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVj dF9vYmplY3QodG1wKSk7CisKKwkvKiBNSU5WRlVOQyAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJN SU5WRlVOQz0iKTsKKwlpZiAoT2lkSXNWYWxpZChhZ2ctPmFnZ21pbnZ0cmFuc2ZuKSkKKwkJYXBw ZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXt0eXBlfVQiLCBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCWFnZy0+YWdnbWludnRy YW5zZm4pKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBw ZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogTUZJTkFMRlVOQyAqLwor CXRtcCA9IG5ld19vYmp0cmVlKCJNRklOQUxGVU5DPSIpOworCWlmIChPaWRJc1ZhbGlkKGFnZy0+ YWdnbWZpbmFsZm4pKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3Byb2NlZHVyZX1E IiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9u SWQsCisJCQkJCQkJCQkJCQkJCSBhZ2ctPmFnZ21maW5hbGZuKSk7CisJZWxzZQorCQlhcHBlbmRf bm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVj dCh0bXApKTsKKworCS8qIE1GSU5BTEZVTkNfRVhUUkEgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgi TUZJTkFMRlVOQ19FWFRSQT0iKTsKKwlpZiAoYWdnLT5hZ2dtZmluYWxleHRyYSkKKwkJYXBwZW5k X3N0cmluZ19vYmplY3QodG1wLCAiJXt2YWx1ZX1zIiwgInZhbHVlIiwgInRydWUiKTsKKwllbHNl CisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19v YmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogTUlOSVRDT05EICovCisJaW5pdHZhbCA9IFN5c0Nh Y2hlR2V0QXR0cihBR0dGTk9JRCwgYWdnVHVwLAorCQkJCQkJCSAgQW51bV9wZ19hZ2dyZWdhdGVf YWdnbWluaXR2YWwsCisJCQkJCQkJICAmaXNudWxsKTsKKwl0bXAgPSBuZXdfb2JqdHJlZSgiTUlO SVRDT05EPSIpOworCWlmICghaXNudWxsKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICIl e2luaXR2YWx9TCIsICJpbml0dmFsIiwgVGV4dERhdHVtR2V0Q1N0cmluZyhpbml0dmFsKSk7CisJ ZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIEhZUE9USEVUSUNBTCAqLworCXRtcCA9IG5l d19vYmp0cmVlKCJIWVBPVEhFVElDQUw9Iik7CisJaWYgKGFnZy0+YWdna2luZCA9PSBBR0dLSU5E X0hZUE9USEVUSUNBTCkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiJXt2YWx1ZX1zIiwg InZhbHVlIiwgInRydWUiKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxp c3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogU09SVE9Q ICovCisJdG1wID0gbmV3X29ianRyZWUoIlNPUlRPUD0iKTsKKwlpZiAoT2lkSXNWYWxpZChhZ2ct PmFnZ3NvcnRvcCkpCisJeworCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9JRCwgT2JqZWN0 SWRHZXREYXR1bShhZ2ctPmFnZ3NvcnRvcCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw KSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciB3aXRo IE9JRCAldSIsIGFnZy0+YWdnc29ydG9wKTsKKwkJb3AgPSAoRm9ybV9wZ19vcGVyYXRvcikgR0VU U1RSVUNUKHR1cCk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7b3BlcmF0b3J9RCIs CisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShvcC0+b3BybmFtZXNwYWNlLAorCQkJ CQkJCQkJCQkJCSAgTmFtZVN0cihvcC0+b3BybmFtZSkpKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUo dHVwKTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIERvbmUgd2l0aCB0aGUg ZGVmaW5pdGlvbiBjbGF1c2UgKi8KKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHN0bXQsICIoJXtlbGVt czosIH1zKSIsIGxpc3QpOworCisJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXApOworCVJlbGVhc2VT eXNDYWNoZShhZ2dUdXApOworCisJcmV0dXJuIHN0bXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEg RGVmaW5lU3RtdCAoQ1JFQVRFIENPTExBVElPTikKKyAqCisgKiBHaXZlbiBhIGNvbGxhdGlvbiBP SUQsIHJldHVybiBhbiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgQ1JFQVRFIGNvbW1hbmQuCisg KgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBDT0xMQVRJT04gJXtpZl9ub3RfZXhpc3Rz fXMgJXtpZGVudGl0eX1EIEZST00gJXtmcm9tX2lkZW50aXR5fUQKKyAqICgle2VsZW1zOiwgfXMp CisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5lU3RtdF9Db2xsYXRpb24oT2lk IG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUsCisJCQkJCQkJIE9iamVjdEFkZHJlc3MgZnJv bUNvbGxpZCkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJSGVhcFR1cGxlCWNvbFR1cDsKKwlGb3Jt X3BnX2NvbGxhdGlvbiBjb2xGb3JtOworCURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisJ T2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisKKwljb2xUdXAgPSBTZWFy Y2hTeXNDYWNoZTEoQ09MTE9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChjb2xUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgY29sbGF0aW9uIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCWNvbEZvcm0gPSAo Rm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVChjb2xUdXApOworCisJcmV0ID0gbmV3X29ianRy ZWVfVkEoIkNSRUFURSBDT0xMQVRJT04gJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1EIiwg MiwKKwkJCQkJCSAiaWZfbm90X2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgZGVmaW5l LT5pZl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkgImlkZW50aXR5 IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoY29sRm9y bS0+Y29sbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cihjb2xGb3JtLT5jb2xsbmFt ZSkpKTsKKworCWlmIChPaWRJc1ZhbGlkKGZyb21Db2xsaWQub2JqZWN0SWQpKQorCXsKKwkJT2lk CQkJY29sbGlkID0gZnJvbUNvbGxpZC5vYmplY3RJZDsKKwkJSGVhcFR1cGxlCXRwOworCQlGb3Jt X3BnX2NvbGxhdGlvbiBmcm9tQ29sRm9ybTsKKworCQkvKgorCQkgKiBDUkVBVEUgQ09MTEFUSU9O ICV7aWRlbnRpdHl9RCBGUk9NIGV4aXN0aW5nX2NvbGxhdGlvbjsKKwkJICovCisJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKENPTExPSUQsIE9iamVjdElkR2V0RGF0dW0oY29sbGlkKSk7CisJCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgY29sbGF0aW9uIHdpdGggT0lEICV1IiwgY29sbGlkKTsKKworCQlmcm9tQ29sRm9ybSA9 IChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKTsKKworCQlhcHBlbmRfb2JqZWN0X29i amVjdChyZXQsICJGUk9NICV7ZnJvbV9pZGVudGl0eX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVf Zm9yX3F1YWxuYW1lKGZyb21Db2xGb3JtLT5jb2xsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCSAg TmFtZVN0cihmcm9tQ29sRm9ybS0+Y29sbG5hbWUpKSk7CisKKwkJUmVsZWFzZVN5c0NhY2hlKHRw KTsKKwkJUmVsZWFzZVN5c0NhY2hlKGNvbFR1cCk7CisJCXJldHVybiByZXQ7CisJfQorCisJLyog TE9DQUxFICovCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgY29sVHVwLCBBbnVt X3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7 CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJMT0NBTEU9JXtsb2NhbGV9TCIsIDIsCisJCQkJCQkJ ICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAibG9jYWxlIiwKKwkJCQkJCQkgImxvY2FsZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkJIHBzcHJpbnRmKCIlcyIsIFRleHREYXR1bUdldENTdHJpbmco ZGF0dW0pKSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkp OworCX0KKworCS8qIExDX0NPTExBVEUgKi8KKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xM T0lELCBjb2xUdXAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlLCAmaXNudWxsKTsKKwlp ZiAoIWlzbnVsbCkKKwl7CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJMQ19DT0xMQVRFPSV7Y29s bGF0ZX1MIiwgMiwKKwkJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjb2xsYXRlIiwK KwkJCQkJCQkgImNvbGxhdGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSBwc3ByaW50ZigiJXMi LCBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSkpOworCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBMQ19DVFlQRSAqLworCWRhdHVtID0g U3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIGNvbFR1cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGN0 eXBlLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZB KCJMQ19DVFlQRT0le2N0eXBlfUwiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmlu ZywgImN0eXBlIiwKKwkJCQkJCQkgImN0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkgcHNw cmludGYoIiVzIiwgVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSkpKTsKKwkJbGlzdCA9IGxhcHBl bmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCisJLyogUFJPVklERVIgKi8K KwlpZiAoY29sRm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJeworCQl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiUFJPVklERVI9JXtwcm92aWRlcn1MIiwgMiwKKwkJCQkJCQkg ImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJwcm92aWRlciIsCisJCQkJCQkJICJwcm92aWRlciIs IE9ialR5cGVTdHJpbmcsCisJCQkJCQkJIHBzcHJpbnRmKCIlcyIsICJpY3UiKSk7CisJCWxpc3Qg PSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKwllbHNlIGlmIChj b2xGb3JtLT5jb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpCisJeworCQl0bXAgPSBu ZXdfb2JqdHJlZV9WQSgiUFJPVklERVI9JXtwcm92aWRlcn1MIiwgMiwKKwkJCQkJCQkgImNsYXVz ZSIsIE9ialR5cGVTdHJpbmcsICJwcm92aWRlciIsCisJCQkJCQkJICJwcm92aWRlciIsIE9ialR5 cGVTdHJpbmcsCisJCQkJCQkJIHBzcHJpbnRmKCIlcyIsICJsaWJjIikpOworCQlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBERVRFUk1JTklT VElDICovCisJaWYgKGNvbEZvcm0tPmNvbGxpc2RldGVybWluaXN0aWMpCisJeworCQl0bXAgPSBu ZXdfb2JqdHJlZV9WQSgiREVURVJNSU5JU1RJQz0le2RldGVybWluaXN0aWN9TCIsIDIsCisJCQkJ CQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiZGV0ZXJtaW5pc3RpYyIsCisJCQkJCQkJICJk ZXRlcm1pbmlzdGljIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkgcHNwcmludGYoIiVzIiwgInRy dWUiKSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOwor CX0KKworCS8qIFZFUlNJT04gKi8KKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCBj b2xUdXAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGx2ZXJzaW9uLCAmaXNudWxsKTsKKwlpZiAoIWlz bnVsbCkKKwl7CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJWRVJTSU9OPSV7dmVyc2lvbn1MIiwg MiwKKwkJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJ2ZXJzaW9uIiwKKwkJCQkJCQkg InZlcnNpb24iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSBwc3ByaW50ZigiJXMiLCBUZXh0RGF0 dW1HZXRDU3RyaW5nKGRhdHVtKSkpOworCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0 X29iamVjdCh0bXApKTsKKwl9CisKKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIigle2VsZW1z OiwgfXMpIiwgbGlzdCk7CisJUmVsZWFzZVN5c0NhY2hlKGNvbFR1cCk7CisKKwlyZXR1cm4gcmV0 OworfQorCisvKgorICogRGVwYXJzZSBhIERlZmluZVN0bXQgKENSRUFURSBPUEVSQVRPUikKKyAq CisgKiBHaXZlbiBhIG9wZXJhdG9yIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVk IGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21t YW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgT1BFUkFUT1IgJXtpZGVudGl0 eX1PICgle2VsZW1zOiwgfXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5l U3RtdF9PcGVyYXRvcihPaWQgb2JqZWN0SWQsIERlZmluZVN0bXQgKmRlZmluZSkKK3sKKwlIZWFw VHVwbGUJb3ByVHVwOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXBfb2JqOwor CUxpc3QJICAgKmxpc3QgPSBOSUw7CisJRm9ybV9wZ19vcGVyYXRvciBvcHJGb3JtOworCisJb3By VHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQp KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3ByVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCW9w ckZvcm0gPSAoRm9ybV9wZ19vcGVyYXRvcikgR0VUU1RSVUNUKG9wclR1cCk7CisKKwlyZXQgPSBu ZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIE9QRVJBVE9SICV7aWRlbnRpdHl9TyIsIDEsCisJCQkJCQkg ImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWUob3ByRm9ybS0+b3BybmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKG9wckZvcm0t Pm9wcm5hbWUpKSk7CisKKwkvKiBQUk9DRURVUkUgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWVf VkEoIlBST0NFRFVSRT0le3Byb2NlZHVyZX1EIiwgMiwKKwkJCQkJCQkiY2xhdXNlIiwgT2JqVHlw ZVN0cmluZywgInByb2NlZHVyZSIsCisJCQkJCQkJInByb2NlZHVyZSIsIE9ialR5cGVPYmplY3Qs CisJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQs CisJCQkJCQkJCQkJCQkJCW9wckZvcm0tPm9wcmNvZGUpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0 LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisKKwkvKiBMRUZUQVJHICovCisJdG1wX29i aiA9IG5ld19vYmp0cmVlX1ZBKCJMRUZUQVJHPSIsIDEsCisJCQkJCQkJImNsYXVzZSIsIE9ialR5 cGVTdHJpbmcsICJsZWZ0YXJnIik7CisJaWYgKE9pZElzVmFsaWQob3ByRm9ybS0+b3BybGVmdCkp CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3R5cGV9VCIsCisJCQkJCQkJIG5l d19vYmp0cmVlX2Zvcl90eXBlKG9wckZvcm0tPm9wcmxlZnQsIC0xKSk7CisJZWxzZQorCQlhcHBl bmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVj dF9vYmplY3QodG1wX29iaikpOworCisJLyogUklHSFRBUkcgKi8KKwl0bXBfb2JqID0gbmV3X29i anRyZWVfVkEoIlJJR0hUQVJHPSIsIDEsCisJCQkJCQkJImNsYXVzZSIsIE9ialR5cGVTdHJpbmcs ICJyaWdodGFyZyIpOworCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9wcnJpZ2h0KSkKKwkJYXBw ZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7dHlwZX1UIiwKKwkJCQkJCQkgbmV3X29ianRy ZWVfZm9yX3R5cGUob3ByRm9ybS0+b3BycmlnaHQsIC0xKSk7CisJZWxzZQorCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wX29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCisJLyogQ09NTVVUQVRPUiAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiQ09NTVVUQVRPUj0iLCAxLAorCQkJCQkJCSJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAi Y29tbXV0YXRvciIpOworCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9wcmNvbSkpCisJCWFwcGVu ZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle29wZXJ9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZV9pZChPcGVyYXRvclJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSBvcHJG b3JtLT5vcHJjb20pKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwls aXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisKKwkvKiBO RUdBVE9SICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJORUdBVE9SPSIsIDEsCisJCQkJ CQkJImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJuZWdhdG9yIik7CisJaWYgKE9pZElzVmFsaWQo b3ByRm9ybS0+b3BybmVnYXRlKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7 b3Blcn1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKE9wZXJhdG9yUmVs YXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIG9wckZvcm0tPm9wcm5lZ2F0ZSkpOworCWVsc2UKKwkJ YXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19v YmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8qIFJFU1RSSUNUICovCisJdG1wX29iaiA9IG5l d19vYmp0cmVlX1ZBKCJSRVNUUklDVD0iLCAxLAorCQkJCQkJCSJjbGF1c2UiLCBPYmpUeXBlU3Ry aW5nLCAicmVzdHJpY3QiKTsKKwlpZiAoT2lkSXNWYWxpZChvcHJGb3JtLT5vcHJyZXN0KSkKKwkJ YXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBu ZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJ CQkJCQkJIG9wckZvcm0tPm9wcnJlc3QpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0 bXBfb2JqKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2Jq KSk7CisKKwkvKiBKT0lOICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJKT0lOPSIsIDEs CisJCQkJCQkJImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJqb2luIik7CisJaWYgKE9pZElzVmFs aWQob3ByRm9ybS0+b3Byam9pbikpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIl e3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2Nl ZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSBvcHJGb3JtLT5vcHJqb2luKSk7CisJZWxz ZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwg bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCisJLyogSEFTSEVTICovCisJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCJIQVNIRVMiLCAxLAorCQkJCQkJCSJjbGF1c2UiLCBPYmpUeXBlU3Ry aW5nLCAiaGFzaGVzIik7CisJaWYgKCFvcHJGb3JtLT5vcHJjYW5oYXNoKQorCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wX29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCisJLyogTUVSR0VTICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZB KCJNRVJHRVMiLCAxLAorCQkJCQkJCSJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAibWVyZ2VzIik7 CisJaWYgKCFvcHJGb3JtLT5vcHJjYW5tZXJnZSkKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9v YmopOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsK KworCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiKCV7ZWxlbXM6LCB9cykiLCBsaXN0KTsKKwor CVJlbGVhc2VTeXNDYWNoZShvcHJUdXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERl cGFyc2UgYSBDUkVBVEUgVFlQRSBzdGF0ZW1lbnQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAq IENSRUFURSBUWVBFICV7aWRlbnRpdHl9RCAle2VsZW1zOiwgfXMpCisgKi8KK3N0YXRpYyBPYmpU cmVlICoKK2RlcGFyc2VfRGVmaW5lU3RtdF9UeXBlKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAq ZGVmaW5lKQoreworCUhlYXBUdXBsZQl0eXBUdXA7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRy ZWUgICAgKnRtcDsKKwlMaXN0CSAgICpsaXN0ID0gTklMOworCWNoYXIJICAgKnN0cjsKKwlEYXR1 bQkJZGZsdDsKKwlib29sCQlpc251bGw7CisJRm9ybV9wZ190eXBlIHR5cEZvcm07CisKKwl0eXBU dXAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0eXBUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgdHlwZSB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwl0eXBGb3Jt ID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHR5cFR1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJl ZV9WQSgiQ1JFQVRFIFRZUEUgJXtpZGVudGl0eX1EIiwgMSwKKwkJCQkJCSAiaWRlbnRpdHkiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZSh0eXBGb3JtLT50 eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIodHlwRm9ybS0+dHlwbmFtZSkpKTsK KworCS8qIFNoZWxsIHR5cGVzLiAqLworCWlmICghdHlwRm9ybS0+dHlwaXNkZWZpbmVkKQorCXsK KwkJUmVsZWFzZVN5c0NhY2hlKHR5cFR1cCk7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogQWRk IHRoZSBkZWZpbml0aW9uIGNsYXVzZSAqLworCS8qIElOUFVUICovCisJdG1wID0gbmV3X29ianRy ZWVfVkEoIihJTlBVVD0le3Byb2NlZHVyZX1EIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlw ZVN0cmluZywgImlucHV0IiwKKwkJCQkJCSAicHJvY2VkdXJlIiwgT2JqVHlwZU9iamVjdCwKKwkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwaW5wdXQpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIE9VVFBVVCAqLworCXRtcCA9IG5ld19vYmp0 cmVlX1ZBKCJPVVRQVVQ9JXtwcm9jZWR1cmV9RCIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5 cGVTdHJpbmcsICJvdXRwdXQiLAorCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0LAor CQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAor CQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBvdXRwdXQpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0 LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIFJFQ0VJVkUgKi8KKwl0bXAgPSBuZXdf b2JqdHJlZV9WQSgiUkVDRUlWRT0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5n LCAicmVjZWl2ZSIpOworCWlmIChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5cHJlY2VpdmUpKQorCQlh cHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29i anRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJ CSB0eXBGb3JtLT50eXByZWNlaXZlKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1w KTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8q IFNFTkQgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiU0VORD0iLCAxLAorCQkJCQkJICJjbGF1 c2UiLCBPYmpUeXBlU3RyaW5nLCAic2VuZCIpOworCWlmIChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5 cHNlbmQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3Byb2NlZHVyZX1EIiwKKwkJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJ CQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBzZW5kKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKworCS8qIFRZUE1PRF9JTiAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJUWVBNT0RfSU49 IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInR5cG1vZF9pbiIpOworCWlm IChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5cG1vZGluKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3Qo dG1wLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9p ZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwbW9kaW4p KTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogVFlQTU9EX09VVCAqLworCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJUWVBNT0RfT1VUPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5 cGVTdHJpbmcsICJ0eXBtb2Rfb3V0Iik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9ybS0+dHlwbW9k b3V0KSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwbW9kb3V0KSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKworCS8qIEFOQUxZWkUgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQU5BTFlaRT0iLCAx LAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiYW5hbHl6ZSIpOworCWlmIChPaWRJ c1ZhbGlkKHR5cEZvcm0tPnR5cGFuYWx5emUpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAs ICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFBy b2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBhbmFseXplKSk7 CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0 LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIElOVEVSTkFMTEVOR1RIICovCisJaWYg KHR5cEZvcm0tPnR5cGxlbiA9PSAtMSkKKwkJdG1wID0gbmV3X29ianRyZWUoIklOVEVSTkFMTEVO R1RIPVZBUklBQkxFIik7CisJZWxzZQorCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiSU5URVJOQUxM RU5HVEg9JXt0eXBsZW59biIsIDEsCisJCQkJCQkJICJ0eXBsZW4iLCBPYmpUeXBlSW50ZWdlciwg dHlwRm9ybS0+dHlwbGVuKTsKKworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcCkpOworCisJLyogUEFTU0VEQllWQUxVRSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZB KCJQQVNTRURCWVZBTFVFIiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInBh c3NlZGJ5dmFsdWUiKTsKKwlpZiAoIXR5cEZvcm0tPnR5cGJ5dmFsKQorCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKworCS8qIFhYWCBpdCdzIG9kZCB0byByZXByZXNlbnQgYWxpZ25tZW50IHdpdGggc2NoZW1h LXF1YWxpZmllZCB0eXBlIG5hbWVzICovCisJc3dpdGNoICh0eXBGb3JtLT50eXBhbGlnbikKKwl7 CisJCWNhc2UgJ2QnOgorCQkJc3RyID0gInBnX2NhdGFsb2cuZmxvYXQ4IjsKKwkJCWJyZWFrOwor CQljYXNlICdpJzoKKwkJCXN0ciA9ICJwZ19jYXRhbG9nLmludDQiOworCQkJYnJlYWs7CisJCWNh c2UgJ3MnOgorCQkJc3RyID0gInBnX2NhdGFsb2cuaW50MiI7CisJCQlicmVhazsKKwkJY2FzZSAn Yyc6CisJCQlzdHIgPSAicGdfY2F0YWxvZy5icGNoYXIiOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhbGlnbm1lbnQgJWMiLCB0eXBGb3JtLT50eXBhbGln bik7CisJfQorCisJLyogQUxJR05NRU5UICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIkFMSUdO TUVOVD0le2FsaWdufXMiLCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiYWxp Z25tZW50IiwKKwkJCQkJCSAiYWxpZ24iLCBPYmpUeXBlU3RyaW5nLCBzdHIpOworCWxpc3QgPSBs YXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogU1RPUkFHRSAqLwor CXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJTVE9SQUdFPSV7c3RvcmFnZX1zIiwgMiwKKwkJCQkJCSAi Y2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInN0b3JhZ2UiLAorCQkJCQkJICJzdG9yYWdlIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCSBnZXRfdHlwZV9zdG9yYWdlKHR5cEZvcm0tPnR5cHN0b3JhZ2Up KTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8q IENBVEVHT1JZICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIkNBVEVHT1JZPSV7Y2F0ZWdvcnl9 cyIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjYXRlZ29yeSIsCisJCQkJ CQkgImNhdGVnb3J5IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBwc3ByaW50ZigiJWMiLCB0eXBG b3JtLT50eXBjYXRlZ29yeSkpOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcCkpOworCisJLyogUFJFRkVSUkVEICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlBS RUZFUlJFRD0le3ByZWZlcnJlZH1zIiwgMSwKKwkJCQkJCSAicHJlZmVycmVkIiwgT2JqVHlwZVN0 cmluZywKKwkJCQkJCSB0eXBGb3JtLT50eXBpc3ByZWZlcnJlZCA/ICJUUlVFIiA6ICJGQUxTRSIp OworCWlmICghdHlwRm9ybS0+dHlwaXNwcmVmZXJyZWQpCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0 bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJ LyogREVGQVVMVCAqLworCWRmbHQgPSBTeXNDYWNoZUdldEF0dHIoVFlQRU9JRCwgdHlwVHVwLAor CQkJCQkJICAgQW51bV9wZ190eXBlX3R5cGRlZmF1bHQsCisJCQkJCQkgICAmaXNudWxsKTsKKwl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiREVGQVVMVD0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpU eXBlU3RyaW5nLCAiZGVmYXVsdCIpOworCWlmICghaXNudWxsKQorCQlhcHBlbmRfc3RyaW5nX29i amVjdCh0bXAsICIle2RlZmF1bHR9cyIsICJkZWZhdWx0IiwKKwkJCQkJCQkgVGV4dERhdHVtR2V0 Q1N0cmluZyhkZmx0KSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0 ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIEVMRU1FTlQg Ki8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRUxFTUVOVD0iLCAxLAorCQkJCQkJICJjbGF1c2Ui LCBPYmpUeXBlU3RyaW5nLCAiZWxlbWVudCIpOworCWlmIChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5 cGVsZW0pKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle2VsZW19VCIsCisJCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl90eXBlKHR5cEZvcm0tPnR5cGVsZW0sIC0xKSk7CisJZWxzZQorCQlh cHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0 X29iamVjdCh0bXApKTsKKworCS8qIERFTElNSVRFUiAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZB KCJERUxJTUlURVI9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImRlbGlt aXRlciIpOworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7ZGVsaW19TCIsICJkZWxpbSIs CisJCQkJCQkgcHNwcmludGYoIiVjIiwgdHlwRm9ybS0+dHlwZGVsaW0pKTsKKwlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIENPTExBVEFCTEUgKi8K Kwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQ09MTEFUQUJMRT0iLCAxLAorCQkJCQkJICJjbGF1c2Ui LCBPYmpUeXBlU3RyaW5nLCAiY29sbGF0YWJsZSIpOworCWlmICghT2lkSXNWYWxpZCh0eXBGb3Jt LT50eXBjb2xsYXRpb24pKQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCWFwcGVuZF9hcnJheV9vYmpl Y3QocmV0LCAiJXtlbGVtczosIH1zKSIsIGxpc3QpOworCisJUmVsZWFzZVN5c0NhY2hlKHR5cFR1 cCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENSRUFURSBURVhUIFNF QVJDSCBDT05GSUdVUkFUSU9OIHN0YXRlbWVudC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog Q1JFQVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJXtpZGVudGl0eX1EICgle2VsZW1zOiwg fXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5lU3RtdF9UU0NvbmZpZyhP aWQgb2JqZWN0SWQsIERlZmluZVN0bXQgKmRlZmluZSwKKwkJCQkJCQlPYmplY3RBZGRyZXNzIGNv cGllZCkKK3sKKwlIZWFwVHVwbGUJdHNjVHVwOworCUhlYXBUdXBsZQl0c3BUdXA7CisJT2JqVHJl ZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcDsKKwlGb3JtX3BnX3RzX2NvbmZpZyB0c2NGb3Jt OworCUZvcm1fcGdfdHNfcGFyc2VyIHRzcEZvcm07CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwor CXRzY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShUU0NPTkZJR09JRCwgT2JqZWN0SWRHZXREYXR1bShv YmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0c2NUdXApKQorCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdGV4dCBzZWFyY2ggY29uZmlndXJhdGlvbiB3aXRo IE9JRCAldSIsCisJCQkgb2JqZWN0SWQpOworCXRzY0Zvcm0gPSAoRm9ybV9wZ190c19jb25maWcp IEdFVFNUUlVDVCh0c2NUdXApOworCisJdHNwVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRTUEFSU0VS T0lELCBPYmplY3RJZEdldERhdHVtKHRzY0Zvcm0tPmNmZ3BhcnNlcikpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0c3BUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgdGV4dCBzZWFyY2ggcGFyc2VyICV1IiwKKwkJCSB0c2NGb3JtLT5jZmdwYXJzZXIpOworCXRz cEZvcm0gPSAoRm9ybV9wZ190c19wYXJzZXIpIEdFVFNUUlVDVCh0c3BUdXApOworCisJLyoKKwkg KiBBZGQgdGhlIGRlZmluaXRpb24gY2xhdXNlLiAgSWYgd2UgaGF2ZSBDT1BZJ2VkIGFuIGV4aXN0 aW5nIGNvbmZpZywgYWRkCisJICogYSBDT1BZIGNsYXVzZTsgb3RoZXJ3aXNlIGFkZCBhIFBBUlNF UiBjbGF1c2UuCisJICovCisJLyogQ09QWSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJDT1BZ PSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjb3B5Iik7CisJaWYgKE9p ZElzVmFsaWQoY29waWVkLm9iamVjdElkKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAi JXt0c2NvbmZpZ31EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFRTQ29u ZmlnUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIGNvcGllZC5vYmplY3RJZCkpOworCWVsc2UK KwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29i amVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBQQVJTRVIgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9W QSgiUEFSU0VSPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJwYXJzZXIi KTsKKwlpZiAoY29waWVkLm9iamVjdElkID09IEludmFsaWRPaWQpCisJCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHRtcCwgIiV7cGFyc2VyfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWUodHNwRm9ybS0+cHJzbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCSAgTmFtZVN0cih0c3BGb3Jt LT5wcnNuYW1lKSkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9 IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQ1JFQVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJXtpZGVudGl0eX1EICgl e2VsZW1zOiwgfXMpIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZSh0c2NGb3JtLT5jZmduYW1lc3BhY2UsCisJCQkJ CQkJCQkJCQkgIE5hbWVTdHIodHNjRm9ybS0+Y2ZnbmFtZSkpLAorCQkJCQkJICJlbGVtcyIsIE9i alR5cGVBcnJheSwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHNwVHVwKTsKKwlSZWxlYXNl U3lzQ2FjaGUodHNjVHVwKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENS RUFURSBURVhUIFNFQVJDSCBQQVJTRVIgc3RhdGVtZW50LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4 CisgKiBDUkVBVEUgVEVYVCBTRUFSQ0ggUEFSU0VSICV7aWRlbnRpdHl9RCAoJXtlbGVtczosIH1z KQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0RlZmluZVN0bXRfVFNQYXJzZXIoT2lk IG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpCit7CisJSGVhcFR1cGxlCXRzcFR1cDsKKwlP YmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAgKmxpc3QgPSBOSUw7 CisJRm9ybV9wZ190c19wYXJzZXIgdHNwRm9ybTsKKworCXRzcFR1cCA9IFNlYXJjaFN5c0NhY2hl MShUU1BBUlNFUk9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0c3BUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgdGV4dCBzZWFyY2ggcGFyc2VyIHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisJdHNw Rm9ybSA9IChGb3JtX3BnX3RzX3BhcnNlcikgR0VUU1RSVUNUKHRzcFR1cCk7CisKKwkvKiBBZGQg dGhlIGRlZmluaXRpb24gY2xhdXNlICovCisJLyogU1RBUlQgKi8KKwl0bXAgPSBuZXdfb2JqdHJl ZV9WQSgiU1RBUlQ9JXtwcm9jZWR1cmV9RCIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVT dHJpbmcsICJzdGFydCIsCisJCQkJCQkgInByb2NlZHVyZSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJ CQkJCQkJCQkJIHRzcEZvcm0tPnByc3N0YXJ0KSk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBHRVRUT0tFTiAqLworCXRtcCA9IG5ld19vYmp0 cmVlX1ZBKCJHRVRUT0tFTj0le3Byb2NlZHVyZX1EIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2Jq VHlwZVN0cmluZywgImdldHRva2VuIiwKKwkJCQkJCSAicHJvY2VkdXJlIiwgT2JqVHlwZU9iamVj dCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25J ZCwKKwkJCQkJCQkJCQkJCQkgdHNwRm9ybS0+cHJzdG9rZW4pKTsKKwlsaXN0ID0gbGFwcGVuZChs aXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIEVORCAqLworCXRtcCA9IG5ld19v Ymp0cmVlX1ZBKCJFTkQ9JXtwcm9jZWR1cmV9RCIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5 cGVTdHJpbmcsICJlbmQiLAorCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCSB0c3BGb3JtLT5wcnNlbmQpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdf b2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIExFWFRZUEVTICovCisJdG1wID0gbmV3X29ianRy ZWVfVkEoIkxFWFRZUEVTPSV7cHJvY2VkdXJlfUQiLCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpU eXBlU3RyaW5nLCAibGV4dHlwZXMiLAorCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0 LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklk LAorCQkJCQkJCQkJCQkJCSB0c3BGb3JtLT5wcnNsZXh0eXBlKSk7CisJbGlzdCA9IGxhcHBlbmQo bGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBIRUFETElORSAqLworCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJIRUFETElORT0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBl U3RyaW5nLCAiaGVhZGxpbmUiKTsKKwlpZiAoT2lkSXNWYWxpZCh0c3BGb3JtLT5wcnNoZWFkbGlu ZSkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJ CQkJCQkJCQkJIHRzcEZvcm0tPnByc2hlYWRsaW5lKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgVEVYVCBTRUFSQ0ggUEFSU0VSICV7 aWRlbnRpdHl9RCAoJXtlbGVtczosIH1zKSIsIDIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlw ZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUodHNwRm9ybS0+cHJzbmFt ZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKHRzcEZvcm0tPnByc25hbWUpKSwKKwkJCQkJ CSAiZWxlbXMiLCBPYmpUeXBlQXJyYXksIGxpc3QpOworCisJUmVsZWFzZVN5c0NhY2hlKHRzcFR1 cCk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDUkVBVEUgVEVYVCBTRUFS Q0ggRElDVElPTkFSWSBzdGF0ZW1lbnQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFU RSBURVhUIFNFQVJDSCBESUNUSU9OQVJZICV7aWRlbnRpdHl9RCAoJXtlbGVtczosIH1zKQorICov CitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0RlZmluZVN0bXRfVFNEaWN0aW9uYXJ5KE9pZCBv YmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lKQoreworCUhlYXBUdXBsZQl0c2RUdXA7CisJT2Jq VHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcDsKKwlMaXN0CSAgICpsaXN0ID0gTklMOwor CURhdHVtCQlvcHRpb25zOworCWJvb2wJCWlzbnVsbDsKKwlGb3JtX3BnX3RzX2RpY3QgdHNkRm9y bTsKKworCXRzZFR1cCA9IFNlYXJjaFN5c0NhY2hlMShUU0RJQ1RPSUQsIE9iamVjdElkR2V0RGF0 dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHNkVHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHRleHQgc2VhcmNoIGRpY3Rpb25hcnkgd2l0 aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwl0c2RGb3JtID0gKEZvcm1fcGdfdHNfZGljdCkg R0VUU1RSVUNUKHRzZFR1cCk7CisKKworCisJLyogQWRkIHRoZSBkZWZpbml0aW9uIGNsYXVzZSAq LworCS8qIFRFTVBMQVRFICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlRFTVBMQVRFPSIsIDEs CisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJ0ZW1wbGF0ZSIpOworCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHRtcCwgIiV7dGVtcGxhdGV9RCIsCisJCQkJCQkgbmV3X29ianRyZWVfZm9y X3F1YWxuYW1lX2lkKFRTVGVtcGxhdGVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCSB0c2RGb3Jt LT5kaWN0dGVtcGxhdGUpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVj dCh0bXApKTsKKworCS8qCisJICogb3B0aW9ucy4gIFhYWCB0aGlzIGlzIGEgcHJldHR5IHVzZWxl c3MgcmVwcmVzZW50YXRpb24sIGJ1dCB3ZSBjYW4ndCBkbworCSAqIGJldHRlciB3aXRob3V0IG1v cmUgdHNfY2FjaGUuYyBjb29wZXJhdGlvbiAuLi4KKwkgKi8KKwlvcHRpb25zID0gU3lzQ2FjaGVH ZXRBdHRyKFRTRElDVE9JRCwgdHNkVHVwLAorCQkJCQkJCSAgQW51bV9wZ190c19kaWN0X2RpY3Rp bml0b3B0aW9uLAorCQkJCQkJCSAgJmlzbnVsbCk7CisJdG1wID0gbmV3X29ianRyZWUoIiIpOwor CWlmICghaXNudWxsKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICIle29wdGlvbnN9cyIs ICJvcHRpb25zIiwKKwkJCQkJCQkgVGV4dERhdHVtR2V0Q1N0cmluZyhvcHRpb25zKSk7CisJZWxz ZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdf b2JqZWN0X29iamVjdCh0bXApKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgVEVY VCBTRUFSQ0ggRElDVElPTkFSWSAle2lkZW50aXR5fUQgKCV7ZWxlbXM6LCB9cykiLCAyLAorCQkJ CQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1 YWxuYW1lKHRzZEZvcm0tPmRpY3RuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIodHNk Rm9ybS0+ZGljdG5hbWUpKSwKKwkJCQkJCSAiZWxlbXMiLCBPYmpUeXBlQXJyYXksIGxpc3QpOwor CisJUmVsZWFzZVN5c0NhY2hlKHRzZFR1cCk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERl cGFyc2UgYSBDUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEUgc3RhdGVtZW50LgorICoKKyAqIFZl cmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEUgJXtpZGVudGl0eX1E ICgle2VsZW1zOiwgfXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5lU3Rt dF9UU1RlbXBsYXRlKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lKQoreworCUhlYXBU dXBsZQl0c3RUdXA7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcDsKKwlMaXN0 CSAgICpsaXN0ID0gTklMOworCUZvcm1fcGdfdHNfdGVtcGxhdGUgdHN0Rm9ybTsKKworCXRzdFR1 cCA9IFNlYXJjaFN5c0NhY2hlMShUU1RFTVBMQVRFT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVj dElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRzdFR1cCkpCisJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciB0ZXh0IHNlYXJjaCB0ZW1wbGF0ZSB3aXRoIE9JRCAldSIs CisJCQkgb2JqZWN0SWQpOworCXRzdEZvcm0gPSAoRm9ybV9wZ190c190ZW1wbGF0ZSkgR0VUU1RS VUNUKHRzdFR1cCk7CisKKwkvKiBBZGQgdGhlIGRlZmluaXRpb24gY2xhdXNlICovCisJLyogSU5J VCAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJJTklUPSIsIDEsCisJCQkJCQkgImNsYXVzZSIs IE9ialR5cGVTdHJpbmcsICJpbml0Iik7CisJaWYgKE9pZElzVmFsaWQodHN0Rm9ybS0+dG1wbGlu aXQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJ CQkJCQkJCQkJCSB0c3RGb3JtLT50bXBsaW5pdCkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVz ZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7 CisKKwkvKiBMRVhJWkUgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiTEVYSVpFPSV7cHJvY2Vk dXJlfUQiLCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAibGV4aXplIiwKKwkJ CQkJCSAicHJvY2VkdXJlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkgdHN0Rm9ybS0+ dG1wbGxleGl6ZSkpOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRt cCkpOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBURVhUIFNFQVJDSCBURU1QTEFU RSAle2lkZW50aXR5fUQgKCV7ZWxlbXM6LCB9cykiLCAyLAorCQkJCQkJICJpZGVudGl0eSIsIE9i alR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHRzdEZvcm0tPnRt cGxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIodHN0Rm9ybS0+dG1wbG5hbWUpKSwK KwkJCQkJCSAiZWxlbXMiLCBPYmpUeXBlQXJyYXksIGxpc3QpOworCisJUmVsZWFzZVN5c0NhY2hl KHRzdFR1cCk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQUxURVIgVEVY VCBTRUFSQ0ggQ09ORklHVVJBVElPTiBzdGF0ZW1lbnQuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIEFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJXtpZGVudGl0eX1EIEFERCBNQVBQ SU5HCisgKiBGT1IgJXt0b2tlbnR5cGU6LCB9SSBXSVRIICV7ZGljdGlvbmFyaWVzOiwgfUQKKyAq CU9SCisgKiBBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICV7aWRlbnRpdHl9RCBEUk9Q IE1BUFBJTkcgJXtpZl9leGlzdHN9cworICogRk9SICV7dG9rZW50eXBlfUkKKyAqCU9SCisgKiBB TFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICV7aWRlbnRpdHl9RCBBTFRFUiBNQVBQSU5H CisgKiBGT1IgJXt0b2tlbnR5cGU6LCB9SSBXSVRIICV7ZGljdGlvbmFyaWVzOiwgfUQKKyAqCU9S CisgKiBBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICV7aWRlbnRpdHl9RCBBTFRFUiBN QVBQSU5HCisgKiBSRVBMQUNFICV7b2xkX2RpY3Rpb25hcnl9RCBXSVRIICV7bmV3X2RpY3Rpb25h cnl9RAorICoJT1IKKyAqIEFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJXtpZGVudGl0 eX1EIEFMVEVSIE1BUFBJTkcKKyAqIEZPUiAle3Rva2VudHlwZTosIH1JIFJFUExBQ0UgJXtvbGRf ZGljdGlvbmFyeX1EIFdJVEggJXtuZXdfZGljdGlvbmFyeX1ECisgKi8KK3N0YXRpYyBPYmpUcmVl ICoKK2RlcGFyc2VfQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10KENvbGxlY3RlZENvbW1hbmQgKmNt ZCkKK3sKKwlBbHRlclRTQ29uZmlndXJhdGlvblN0bXQgKm5vZGUgPSAoQWx0ZXJUU0NvbmZpZ3Vy YXRpb25TdG10ICopIGNtZC0+cGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVl ICAgICp0bXA7CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCWlu dAkJCWk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZSgiQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJB VElPTiIpOworCisJLyogRGV0ZXJtaW5lIHRoZSBmb3JtYXQgc3RyaW5nIGFwcHJvcHJpYXRlIHRv IGVhY2ggc3ViY29tbWFuZCAqLworCXN3aXRjaCAobm9kZS0+a2luZCkKKwl7CisJCWNhc2UgQUxU RVJfVFNDT05GSUdfQUREX01BUFBJTkc6CisJCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIl e2lkZW50aXR5fUQgQUREIE1BUFBJTkciLAorCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lX2lkKGNtZC0+ZC5hdHNjZmcuYWRkcmVzcy5jbGFzc0lkLAorCQkJCQkJCQkJCQkJCQkJIGNt ZC0+ZC5hdHNjZmcuYWRkcmVzcy5vYmplY3RJZCkpOworCQkJYnJlYWs7CisKKwkJY2FzZSBBTFRF Ul9UU0NPTkZJR19EUk9QX01BUFBJTkc6CisJCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIl e2lkZW50aXR5fUQgRFJPUCBNQVBQSU5HIiwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZV9pZChjbWQtPmQuYXRzY2ZnLmFkZHJlc3MuY2xhc3NJZCwKKwkJCQkJCQkJCQkJCQkJCSBj bWQtPmQuYXRzY2ZnLmFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCXRtcCA9IG5ld19vYmp0cmVlKCJJ RiBFWElTVFMiKTsKKwkJCWFwcGVuZF9ib29sX29iamVjdCh0bXAsICJwcmVzZW50Iiwgbm9kZS0+ bWlzc2luZ19vayk7CisJCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2lmX2V4aXN0c31z IiwgdG1wKTsKKwkJCWJyZWFrOworCisJCWNhc2UgQUxURVJfVFNDT05GSUdfQUxURVJfTUFQUElO R19GT1JfVE9LRU46CisJCWNhc2UgQUxURVJfVFNDT05GSUdfUkVQTEFDRV9ESUNUOgorCQljYXNl IEFMVEVSX1RTQ09ORklHX1JFUExBQ0VfRElDVF9GT1JfVE9LRU46CisJCQlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICIle2lkZW50aXR5fUQgQUxURVIgTUFQUElORyIsCisJCQkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoY21kLT5kLmF0c2NmZy5hZGRyZXNzLmNsYXNzSWQsCisJ CQkJCQkJCQkJCQkJCQkgY21kLT5kLmF0c2NmZy5hZGRyZXNzLm9iamVjdElkKSk7CisJCQlicmVh azsKKwl9CisKKwkvKiBBZGQgdGhlIGFmZmVjdGVkIHRva2VuIGxpc3QsIGZvciBzdWJjb21tYW5k cyB0aGF0IGhhdmUgb25lICovCisJaWYgKG5vZGUtPmtpbmQgPT0gQUxURVJfVFNDT05GSUdfQURE X01BUFBJTkcgfHwKKwkJbm9kZS0+a2luZCA9PSBBTFRFUl9UU0NPTkZJR19BTFRFUl9NQVBQSU5H X0ZPUl9UT0tFTiB8fAorCQlub2RlLT5raW5kID09IEFMVEVSX1RTQ09ORklHX1JFUExBQ0VfRElD VF9GT1JfVE9LRU4gfHwKKwkJbm9kZS0+a2luZCA9PSBBTFRFUl9UU0NPTkZJR19EUk9QX01BUFBJ TkcpCisJeworCQlmb3JlYWNoKGNlbGwsIG5vZGUtPnRva2VudHlwZSkKKwkJCWxpc3QgPSBsYXBw ZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHN0clZhbChsZmlyc3QoY2VsbCkpKSk7CisJCWFw cGVuZF9hcnJheV9vYmplY3QocmV0LCAiRk9SICV7dG9rZW50eXBlOiwgfUkiLCBsaXN0KTsKKwl9 CisKKwkvKiBBZGQgZnVydGhlciBzdWJjb21tYW5kLXNwZWNpZmljIGVsZW1lbnRzICovCisJaWYg KG5vZGUtPmtpbmQgPT0gQUxURVJfVFNDT05GSUdfQUREX01BUFBJTkcgfHwKKwkJbm9kZS0+a2lu ZCA9PSBBTFRFUl9UU0NPTkZJR19BTFRFUl9NQVBQSU5HX0ZPUl9UT0tFTikKKwl7CisJCS8qIEFE RCBNQVBQSU5HIGFuZCBBTFRFUiBNQVBQSU5HIEZPUiBuZWVkIGEgbGlzdCBvZiBkaWN0aW9uYXJp ZXMgKi8KKwkJbGlzdCA9IE5JTDsKKwkJZm9yIChpID0gMDsgaSA8IGNtZC0+ZC5hdHNjZmcubmRp Y3RzOyBpKyspCisJCXsKKwkJCU9ialRyZWUgICAgKmRpY3Rfb2JqOworCisJCQlkaWN0X29iaiA9 IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUU0RpY3Rpb25hcnlSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJICBjbWQtPmQuYXRzY2ZnLmRpY3RJZHNbaV0pOworCQkJbGlzdCA9IGxhcHBlbmQo bGlzdCwKKwkJCQkJCSAgIG5ld19vYmplY3Rfb2JqZWN0KGRpY3Rfb2JqKSk7CisJCX0KKwkJYXBw ZW5kX2FycmF5X29iamVjdChyZXQsICJXSVRIICV7ZGljdGlvbmFyaWVzOiwgfUQiLCBsaXN0KTsK Kwl9CisJZWxzZSBpZiAobm9kZS0+a2luZCA9PSBBTFRFUl9UU0NPTkZJR19SRVBMQUNFX0RJQ1Qg fHwKKwkJCSBub2RlLT5raW5kID09IEFMVEVSX1RTQ09ORklHX1JFUExBQ0VfRElDVF9GT1JfVE9L RU4pCisJeworCQkvKiBUaGUgUkVQTEFDRSBmb3JtcyB3YW50IG9sZCBhbmQgbmV3IGRpY3Rpb25h cmllcyAqLworCQlBc3NlcnQoY21kLT5kLmF0c2NmZy5uZGljdHMgPT0gMik7CisJCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIlJFUExBQ0UgJXtvbGRfZGljdGlvbmFyeX1EIiwKKwkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFRTRGljdGlvbmFyeVJlbGF0aW9uSWQsCisJCQkJ CQkJCQkJCQkJCSBjbWQtPmQuYXRzY2ZnLmRpY3RJZHNbMF0pKTsKKwkJYXBwZW5kX29iamVjdF9v YmplY3QocmV0LCAiV0lUSCAle25ld19kaWN0aW9uYXJ5fUQiLAorCQkJCQkJCSBuZXdfb2JqdHJl ZV9mb3JfcXVhbG5hbWVfaWQoVFNEaWN0aW9uYXJ5UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJ IGNtZC0+ZC5hdHNjZmcuZGljdElkc1sxXSkpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKKy8q CisgKiBEZXBhcnNlIGFuIEFMVEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkgc3RhdGVtZW50Lgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBURVhUIFNFQVJDSCBESUNUSU9OQVJZICV7 aWRlbnRpdHl9RCAoJXtkZWZpbml0aW9uOiwgfXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2Rl cGFyc2VfQWx0ZXJUU0RpY3Rpb25hcnlTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVl KQoreworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJRGF0dW0JCW9wdGlv bnM7CisJTGlzdAkgICAqZGVmaW5pdGlvbiA9IE5JTDsKKwlib29sCQlpc251bGw7CisJSGVhcFR1 cGxlCXRzZFR1cDsKKwlGb3JtX3BnX3RzX2RpY3QgdHNkRm9ybTsKKworCXRzZFR1cCA9IFNlYXJj aFN5c0NhY2hlMShUU0RJQ1RPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQodHNkVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHRleHQgc2VhcmNoIGRpY3Rpb25hcnkgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVj dElkKTsKKwl0c2RGb3JtID0gKEZvcm1fcGdfdHNfZGljdCkgR0VUU1RSVUNUKHRzZFR1cCk7CisK KwkvKgorCSAqIEFkZCB0aGUgZGVmaW5pdGlvbiBsaXN0IGFjY29yZGluZyB0byB0aGUgcGdfdHNf ZGljdCBkaWN0aW5pdG9wdGlvbgorCSAqIGNvbHVtbgorCSAqLworCW9wdGlvbnMgPSBTeXNDYWNo ZUdldEF0dHIoVFNESUNUT0lELCB0c2RUdXAsCisJCQkJCQkJICBBbnVtX3BnX3RzX2RpY3RfZGlj dGluaXRvcHRpb24sCisJCQkJCQkJICAmaXNudWxsKTsKKwl0bXAgPSBuZXdfb2JqdHJlZSgiIik7 CisJaWYgKCFpc251bGwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7b3B0aW9uc31z IiwgIm9wdGlvbnMiLAorCQkJCQkJCSBUZXh0RGF0dW1HZXRDU3RyaW5nKG9wdGlvbnMpKTsKKwll bHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCisJZGVmaW5pdGlvbiA9IGxhcHBlbmQo ZGVmaW5pdGlvbiwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwlyZXQgPSBuZXdfb2JqdHJl ZV9WQSgiQUxURVIgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSAle2lkZW50aXR5fUQgKCV7ZGVmaW5p dGlvbjosIH1zKSIsIDIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJ CSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUodHNkRm9ybS0+ZGljdG5hbWVzcGFjZSwKKwkJCQkJ CQkJCQkJCSAgTmFtZVN0cih0c2RGb3JtLT5kaWN0bmFtZSkpLAorCQkJCQkJICJkZWZpbml0aW9u IiwgT2JqVHlwZUFycmF5LCBkZWZpbml0aW9uKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0c2RUdXAp OworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBkZXBhcnNlX1ZpZXdTdG10CisgKgkJZGVwYXJz ZSBhIFZpZXdTdG10CisgKgorICogR2l2ZW4gYSB2aWV3IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUg dGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBj cmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXtvcl9y ZXBsYWNlfXMgJXtwZXJzaXN0ZW5jZX1zIFZJRVcgJXtpZGVudGl0eX1EIEFTICV7cXVlcnl9cwor ICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1ZpZXdTdG10KE9pZCBvYmplY3RJZCwgTm9k ZSAqcGFyc2V0cmVlKQoreworCVZpZXdTdG10ICAgKm5vZGUgPSAoVmlld1N0bXQgKikgcGFyc2V0 cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlSZWxhdGlvbglyZWxhdGlvbjsKKworCXJlbGF0aW9u ID0gcmVsYXRpb25fb3BlbihvYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJDUkVBVEUgJXtvcl9yZXBsYWNlfXMgJXtwZXJzaXN0ZW5jZX1zIFZJRVcg JXtpZGVudGl0eX1EIEFTICV7cXVlcnl9cyIsIDQsCisJCQkJCQkgIm9yX3JlcGxhY2UiLCBPYmpU eXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnJlcGxhY2UgPyAiT1IgUkVQTEFDRSIgOiAiIiwKKwkJ CQkJCSAicGVyc2lzdGVuY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIGdldF9wZXJzaXN0ZW5j ZV9zdHIocmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpLAorCQkJCQkJICJpZGVudGl0 eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHJlbGF0 aW9uLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsYXRpb24pKSwKKwkJCQkJCSAicXVlcnkiLCBPYmpUeXBlU3RyaW5nLAorCQkJ CQkJIHBnX2dldF92aWV3ZGVmX3N0cmluZyhvYmplY3RJZCkpOworCisJcmVsYXRpb25fY2xvc2Uo cmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERl cGFyc2UgQ1JFQVRFIE1hdGVyaWFsaXplZCBWaWV3IHN0YXRlbWVudCwgaXQgaXMgYSB2YXJpYW50 IG9mCisgKiBDcmVhdGVUYWJsZUFzU3RtdAorICoKKyAqIE5vdGUgdGhhdCBDUkVBVEUgVEFCTEUg QVMgU0VMRUNUIElOVE8gY2FuIGFsc28gYmUgZGVwYXJzZWQgYnkKKyAqIGRlcGFyc2VfQ3JlYXRl VGFibGVBc1N0bXQgdG8gcmVtb3ZlIHRoZSBTRUxFQ1QgSU5UTyBjbGF1c2UuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIENSRUFURSAle3BlcnNpc3RlbmNlfXMgW01BVEVSSUFMSVpFRCBWSUVX IHwgVEFCTEVdICV7aWZfbm90X2V4aXN0c31zCisgKiAJCSV7aWRlbnRpdHl9RCAle2NvbHVtbnN9 cyBbJXtvbl9jb21taXR9c10gJXt0YWJsZXNwYWNlfXMKKyAqICAJCUFTICV7cXVlcnl9cyAle3dp dGhfbm9fZGF0YX1zIgorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZVRhYmxl QXNTdG10X3ZhbmlsbGEoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRl VGFibGVBc1N0bXQgKm5vZGUgPSAoQ3JlYXRlVGFibGVBc1N0bXQgKikgcGFyc2V0cmVlOworCVJl bGF0aW9uCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihvYmplY3RJZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOworCU9ialRyZWUgICAgKnRt cDI7CisJY2hhcgkgICAqZm10OworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJTGlzdENlbGwgICAq Y2VsbDsKKworCS8qIFJlamVjdCB1bnN1cHBvcnRlZCBjYXNlIHJpZ2h0IGF3YXkuICovCisJaWYg KCgoUXVlcnkgKikgKG5vZGUtPnF1ZXJ5KSktPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQor CQllbG9nKEVSUk9SLCAidW5pbXBsZW1lbnRlZCBkZXBhcnNlIG9mIENSRUFURSBUQUJMRSBBUyBF WEVDVVRFIik7CisKKwkvKgorCSAqIE5vdGUgdGhhdCBJTlNFUlQgSU5UTyBpcyBkZXBhcnNlZCBh cyBDUkVBVEUgVEFCTEUgQVMuICBUaGV5IGFyZQorCSAqIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50 IHN5bm9ueW1zIHNvIHRoZXJlIGlzIG5vIGhhcm0gZnJvbSB0aGlzLgorCSAqLworCWlmIChub2Rl LT5vYmp0eXBlID09IE9CSkVDVF9NQVRWSUVXKQorCQlmbXQgPSAiQ1JFQVRFICV7cGVyc2lzdGVu Y2V9cyBNQVRFUklBTElaRUQgVklFVyAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQiOwor CWVsc2UKKwkJZm10ID0gIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9ub3RfZXhp c3RzfXMgJXtpZGVudGl0eX1EIjsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKGZtdCwgMywKKwkJ CQkJCSAicGVyc2lzdGVuY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIGdldF9wZXJzaXN0ZW5j ZV9zdHIobm9kZS0+aW50by0+cmVsLT5yZWxwZXJzaXN0ZW5jZSksCisJCQkJCQkgImlmX25vdF9l eGlzdHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPmlmX25vdF9leGlzdHMgPyAiSUYg Tk9UIEVYSVNUUyIgOiAiIiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJ CQkJCQkJCQkJIG9iamVjdElkKSk7CisKKwkvKiBDT0xVTU5TIGNsYXVzZSAqLworCWlmIChub2Rl LT5pbnRvLT5jb2xOYW1lcykKKwl7CisJCWZvcmVhY2goY2VsbCwgbm9kZS0+aW50by0+Y29sTmFt ZXMpCisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChzdHJWYWwobGZp cnN0KGNlbGwpKSkpOworCisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCIoJXtjb2x1bW5zOiwgfUkp IiwgMSwKKwkJCQkJCQkgImNvbHVtbnMiLCBPYmpUeXBlQXJyYXksIGxpc3QpOworCX0KKwllbHNl CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCIiLCAxLAorCQkJCQkJCSAicHJlc2VudCIsIE9ialR5 cGVCb29sLCBmYWxzZSk7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2NvbHVtbnN9 cyIsIHRtcCk7CisKKwkvKiBVU0lORyBjbGF1c2UgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiVVNJ TkciKTsKKwlpZiAobm9kZS0+aW50by0+YWNjZXNzTWV0aG9kKQorCQlhcHBlbmRfc3RyaW5nX29i amVjdCh0bXAsICIle2FjY2Vzc19tZXRob2R9SSIsICJhY2Nlc3NfbWV0aG9kIiwKKwkJCQkJCQkg bm9kZS0+aW50by0+YWNjZXNzTWV0aG9kKTsKKwllbHNlCisJeworCQlhcHBlbmRfbnVsbF9vYmpl Y3QodG1wLCAiJXthY2Nlc3NfbWV0aG9kfUkiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7 CisJfQorCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7YWNjZXNzX21ldGhvZH1zIiwgdG1w KTsKKworCS8qIFdJVEggY2xhdXNlICovCisJdG1wID0gbmV3X29ianRyZWUoIldJVEgiKTsKKwls aXN0ID0gTklMOworCisJZm9yZWFjaChjZWxsLCBub2RlLT5pbnRvLT5vcHRpb25zKQorCXsKKwkJ RGVmRWxlbSAgICAqb3B0ID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCisJCXRtcDIgPSBk ZXBhcnNlX0RlZkVsZW0ob3B0LCBmYWxzZSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19v YmplY3Rfb2JqZWN0KHRtcDIpKTsKKwl9CisKKwlpZiAobGlzdCkKKwkJYXBwZW5kX2FycmF5X29i amVjdCh0bXAsICIoJXt3aXRoOiwgfXMpIiwgbGlzdCk7CisJZWxzZQorCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7d2l0aF9jbGF1c2V9 cyIsIHRtcCk7CisKKwkvKiBPTiBDT01NSVQgY2xhdXNlLiAgQ1JFQVRFIE1BVEVSSUFMSVpFRCBW SUVXIGRvZXNuJ3QgaGF2ZSBvbmUgKi8KKwlpZiAobm9kZS0+b2JqdHlwZSA9PSBPQkpFQ1RfVEFC TEUpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7b25fY29tbWl0fXMiLAorCQkJCQkJ CSBkZXBhcnNlX09uQ29tbWl0Q2xhdXNlKG5vZGUtPmludG8tPm9uQ29tbWl0KSk7CisKKwkvKiBU QUJMRVNQQUNFIGNsYXVzZSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJUQUJMRVNQQUNFICV7dGFi bGVzcGFjZX1JIik7CisJaWYgKG5vZGUtPmludG8tPnRhYmxlU3BhY2VOYW1lKQorCQlhcHBlbmRf c3RyaW5nX29iamVjdCh0bXAsICIle3RhYmxlc3BhY2V9cyIsICJ0YWJsZXNwYWNlIiwKKwkJCQkJ CQkgbm9kZS0+aW50by0+dGFibGVTcGFjZU5hbWUpOworCWVsc2UKKwl7CisJCWFwcGVuZF9udWxs X29iamVjdCh0bXAsICIle3RhYmxlc3BhY2V9SSIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQodG1w KTsKKwl9CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt0YWJsZXNwYWNlfXMiLCB0bXAp OworCisJLyogQWRkIHRoZSBxdWVyeSAqLworCUFzc2VydChJc0Eobm9kZS0+cXVlcnksIFF1ZXJ5 KSk7CisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiQVMgJXtxdWVyeX1zIiwgInF1ZXJ5IiwK KwkJCQkJCSBwZ19nZXRfcXVlcnlkZWYoKFF1ZXJ5ICopIG5vZGUtPnF1ZXJ5LCBmYWxzZSkpOwor CisJLyogQWRkIGEgV0lUSCBOTyBEQVRBIGNsYXVzZSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZB KCJXSVRIIE5PIERBVEEiLCAxLAorCQkJCQkJICJwcmVzZW50IiwgT2JqVHlwZUJvb2wsCisJCQkJ CQkgbm9kZS0+aW50by0+c2tpcERhdGEgPyB0cnVlIDogZmFsc2UpOworCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHJldCwgIiV7d2l0aF9ub19kYXRhfXMiLCB0bXApOworCisJcmVsYXRpb25fY2xvc2Uo cmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICog RGVwYXJzZSBhIENyZWF0ZVRyaWdTdG10IChDUkVBVEUgVFJJR0dFUikKKyAqCisgKiBHaXZlbiBh IHRyaWdnZXIgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBh biBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle29yX3JlcGxhY2V9cyAle2NvbnN0cmFpbnR9cyBU UklHR0VSICV7bmFtZX1JICV7dGltZX1zCisgKiAle2V2ZW50czogT1IgfXMgT04gJXtyZWxhdGlv bn1EICV7ZnJvbV90YWJsZX1zICV7Y29uc3RyYWludF9hdHRyczogfXMKKyAqICV7cmVmZXJlbmNp bmc6IH1zIEZPUiBFQUNIICV7Zm9yX2VhY2h9cyAle3doZW59cyBFWEVDVVRFIFBST0NFRFVSRQor ICogJXtmdW5jdGlvbn1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlVHJp Z1N0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlVHJpZ1N0bXQg Km5vZGUgPSAoQ3JlYXRlVHJpZ1N0bXQgKikgcGFyc2V0cmVlOworCVJlbGF0aW9uCXBnX3RyaWdn ZXI7CisJSGVhcFR1cGxlCXRyaWdUdXA7CisJRm9ybV9wZ190cmlnZ2VyIHRyaWdGb3JtOworCU9i alRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXBfb2JqOworCWludAkJCXRnbmFyZ3M7CisJ TGlzdAkgICAqbGlzdCA9IE5JTDsKKwlMaXN0CSAgICpldmVudHM7CisJY2hhcgkgICAqdHJpZ3Rp bWluZzsKKwljaGFyCSAgICp0Z29sZHRhYmxlOworCWNoYXIJICAgKnRnbmV3dGFibGU7CisJRGF0 dW0JCXZhbHVlOworCWJvb2wJCWlzbnVsbDsKKworCXBnX3RyaWdnZXIgPSB0YWJsZV9vcGVuKFRy aWdnZXJSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJdHJpZ1R1cCA9IGdldF9jYXRh bG9nX29iamVjdF9ieV9vaWQocGdfdHJpZ2dlciwgQW51bV9wZ190cmlnZ2VyX29pZCwgb2JqZWN0 SWQpOworCXRyaWdGb3JtID0gKEZvcm1fcGdfdHJpZ2dlcikgR0VUU1RSVUNUKHRyaWdUdXApOwor CisJdHJpZ3RpbWluZyA9IG5vZGUtPnRpbWluZyA9PSBUUklHR0VSX1RZUEVfQkVGT1JFID8gIkJF Rk9SRSIgOgorCQlub2RlLT50aW1pbmcgPT0gVFJJR0dFUl9UWVBFX0FGVEVSID8gIkFGVEVSIiA6 CisJCW5vZGUtPnRpbWluZyA9PSBUUklHR0VSX1RZUEVfSU5TVEVBRCA/ICJJTlNURUFEIE9GIiA6 CisJCU5VTEw7CisJaWYgKCF0cmlndGltaW5nKQorCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IHRyaWdnZXIgdGltaW5nIHR5cGUgJWQiLCBub2RlLT50aW1pbmcpOworCisJcmV0ID0gbmV3X29i anRyZWVfVkEoIkNSRUFURSAle29yX3JlcGxhY2V9cyAle2NvbnN0cmFpbnR9cyBUUklHR0VSICV7 bmFtZX1JICV7dGltZX1zIiwgNCwKKwkJCQkJCSAib3JfcmVwbGFjZSIsIE9ialR5cGVTdHJpbmcs IG5vZGUtPnJlcGxhY2UgPyAiT1IgUkVQTEFDRSIgOiAiIiwKKwkJCQkJCSAiY29uc3RyYWludCIs IE9ialR5cGVTdHJpbmcsIG5vZGUtPmlzY29uc3RyYWludCA/ICJDT05TVFJBSU5UIiA6ICIiLAor CQkJCQkJICJuYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+dHJpZ25hbWUsCisJCQkJCQkgInRp bWUiLCBPYmpUeXBlU3RyaW5nLCB0cmlndGltaW5nKTsKKworCS8qCisJICogRGVjb2RlIHRoZSBl dmVudHMgdGhhdCB0aGUgdHJpZ2dlciBmaXJlcyBmb3IuICBUaGUgb3V0cHV0IGlzIGEgbGlzdDsg aW4KKwkgKiBtb3N0IGNhc2VzIGl0IHdpbGwganVzdCBiZSBhIHN0cmluZyB3aXRoIHRoZSBldmVu dCBuYW1lLCBidXQgd2hlbgorCSAqIHRoZXJlJ3MgYW4gVVBEQVRFIHdpdGggYSBsaXN0IG9mIGNv bHVtbnMsIHdlIHJldHVybiBhIEpTT04gb2JqZWN0LgorCSAqLworCWV2ZW50cyA9IE5JTDsKKwlp ZiAobm9kZS0+ZXZlbnRzICYgVFJJR0dFUl9UWVBFX0lOU0VSVCkKKwkJZXZlbnRzID0gbGFwcGVu ZChldmVudHMsIG5ld19zdHJpbmdfb2JqZWN0KCJJTlNFUlQiKSk7CisJaWYgKG5vZGUtPmV2ZW50 cyAmIFRSSUdHRVJfVFlQRV9ERUxFVEUpCisJCWV2ZW50cyA9IGxhcHBlbmQoZXZlbnRzLCBuZXdf c3RyaW5nX29iamVjdCgiREVMRVRFIikpOworCWlmIChub2RlLT5ldmVudHMgJiBUUklHR0VSX1RZ UEVfVFJVTkNBVEUpCisJCWV2ZW50cyA9IGxhcHBlbmQoZXZlbnRzLCBuZXdfc3RyaW5nX29iamVj dCgiVFJVTkNBVEUiKSk7CisJaWYgKG5vZGUtPmV2ZW50cyAmIFRSSUdHRVJfVFlQRV9VUERBVEUp CisJeworCQlpZiAobm9kZS0+Y29sdW1ucyA9PSBOSUwpCisJCXsKKwkJCWV2ZW50cyA9IGxhcHBl bmQoZXZlbnRzLCBuZXdfc3RyaW5nX29iamVjdCgiVVBEQVRFIikpOworCQl9CisJCWVsc2UKKwkJ eworCQkJT2JqVHJlZSAgICAqdXBkYXRlOworCQkJTGlzdENlbGwgICAqY2VsbDsKKwkJCUxpc3QJ ICAgKmNvbHMgPSBOSUw7CisKKwkJCS8qCisJCQkgKiBDdXJyZW50bHkgb25seSBVUERBVEUgT0Yg Y2FuIGJlIG9iamVjdHMgaW4gdGhlIG91dHB1dCBKU09OLCBidXQKKwkJCSAqIHdlIGFkZCBhICJr aW5kIiBlbGVtZW50IHNvIHRoYXQgdXNlciBjb2RlIGNhbiBkaXN0aW5ndWlzaAorCQkJICogcG9z c2libGUgZnV0dXJlIG5ldyBldmVudCB0eXBlcy4KKwkJCSAqLworCQkJdXBkYXRlID0gbmV3X29i anRyZWVfVkEoIlVQREFURSBPRiIsIDEsCisJCQkJCQkJCQkia2luZCIsIE9ialR5cGVTdHJpbmcs ICJ1cGRhdGVfb2YiKTsKKworCQkJZm9yZWFjaChjZWxsLCBub2RlLT5jb2x1bW5zKQorCQkJewor CQkJCWNoYXIJICAgKmNvbG5hbWUgPSBzdHJWYWwobGZpcnN0KGNlbGwpKTsKKworCQkJCWNvbHMg PSBsYXBwZW5kKGNvbHMsIG5ld19zdHJpbmdfb2JqZWN0KGNvbG5hbWUpKTsKKwkJCX0KKworCQkJ YXBwZW5kX2FycmF5X29iamVjdCh1cGRhdGUsICIle2NvbHVtbnM6LCB9SSIsIGNvbHMpOworCisJ CQlldmVudHMgPSBsYXBwZW5kKGV2ZW50cywgbmV3X29iamVjdF9vYmplY3QodXBkYXRlKSk7CisJ CX0KKwl9CisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle2V2ZW50czogT1IgfXMiLCBldmVu dHMpOworCisJdG1wX29iaiA9IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJl bGF0aW9uSWQsCisJCQkJCQkJCQkJIHRyaWdGb3JtLT50Z3JlbGlkKTsKKwlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICJPTiAle3JlbGF0aW9ufUQiLCB0bXBfb2JqKTsKKworCXRtcF9vYmogPSBu ZXdfb2JqdHJlZSgiRlJPTSIpOworCWlmICh0cmlnRm9ybS0+dGdjb25zdHJyZWxpZCkKKwl7CisJ CU9ialRyZWUgICAgKnJlbDsKKworCQlyZWwgPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQo UmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCSAgdHJpZ0Zvcm0tPnRnY29uc3RycmVsaWQp OworCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtyZWxhdGlvbn1EIiwgcmVsKTsK Kwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJYXBwZW5kX29iamVj dF9vYmplY3QocmV0LCAiJXtmcm9tX3RhYmxlfXMiLCB0bXBfb2JqKTsKKworCWlmIChub2RlLT5p c2NvbnN0cmFpbnQpCisJeworCQlpZiAoIW5vZGUtPmRlZmVycmFibGUpCisJCQlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdCgiTk9UIikpOworCQlsaXN0ID0gbGFwcGVuZChs aXN0LCBuZXdfc3RyaW5nX29iamVjdCgiREVGRVJSQUJMRSBJTklUSUFMTFkiKSk7CisJCWlmIChu b2RlLT5pbml0ZGVmZXJyZWQpCisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29i amVjdCgiREVGRVJSRUQiKSk7CisJCWVsc2UKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19z dHJpbmdfb2JqZWN0KCJJTU1FRElBVEUiKSk7CisJfQorCWFwcGVuZF9hcnJheV9vYmplY3QocmV0 LCAiJXtjb25zdHJhaW50X2F0dHJzOiB9cyIsIGxpc3QpOworCisJbGlzdCA9IE5JTDsKKwl2YWx1 ZSA9IGZhc3RnZXRhdHRyKHRyaWdUdXAsIEFudW1fcGdfdHJpZ2dlcl90Z29sZHRhYmxlLAorCQkJ CQkJUmVsYXRpb25HZXREZXNjcihwZ190cmlnZ2VyKSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwp CisJCXRnb2xkdGFibGUgPSBOYW1lU3RyKCpEYXR1bUdldE5hbWUodmFsdWUpKTsKKwllbHNlCisJ CXRnb2xkdGFibGUgPSBOVUxMOworCXZhbHVlID0gZmFzdGdldGF0dHIodHJpZ1R1cCwgQW51bV9w Z190cmlnZ2VyX3RnbmV3dGFibGUsCisJCQkJCQlSZWxhdGlvbkdldERlc2NyKHBnX3RyaWdnZXIp LCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwkJdGduZXd0YWJsZSA9IE5hbWVTdHIoKkRhdHVt R2V0TmFtZSh2YWx1ZSkpOworCWVsc2UKKwkJdGduZXd0YWJsZSA9IE5VTEw7CisJaWYgKHRnb2xk dGFibGUgIT0gTlVMTCB8fCB0Z25ld3RhYmxlICE9IE5VTEwpCisJeworCQlsaXN0ID0gbGFwcGVu ZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdCgiUkVGRVJFTkNJTkciKSk7CisKKwkJaWYgKHRnb2xk dGFibGUgIT0gTlVMTCkKKwkJeworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19v YmplY3QoIk9MRCBUQUJMRSBBUyIpKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJp bmdfb2JqZWN0KHRnb2xkdGFibGUpKTsKKwkJfQorCQlpZiAodGduZXd0YWJsZSAhPSBOVUxMKQor CQl7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdCgiTkVXIFRBQkxF IEFTIikpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QodGduZXd0 YWJsZSkpOworCQl9CisJfQorCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXtyZWZlcmVuY2lu ZzogfXMiLCBsaXN0KTsKKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIkZPUiBFQUNIICV7 Zm9yX2VhY2h9cyIsICJmb3JfZWFjaCIsCisJCQkJCQkgbm9kZS0+cm93ID8gIlJPVyIgOiAiU1RB VEVNRU5UIik7CisKKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIldIRU4iKTsKKwlpZiAobm9kZS0+ d2hlbkNsYXVzZSkKKwl7CisJCU5vZGUJICAgKndoZW5DbGF1c2U7CisKKwkJdmFsdWUgPSBmYXN0 Z2V0YXR0cih0cmlnVHVwLCBBbnVtX3BnX3RyaWdnZXJfdGdxdWFsLAorCQkJCQkJCVJlbGF0aW9u R2V0RGVzY3IocGdfdHJpZ2dlciksICZpc251bGwpOworCQlpZiAoaXNudWxsKQorCQkJZWxvZyhF UlJPUiwgIm51bGwgdGdxdWFsIGZvciB0cmlnZ2VyIFwiJXNcIiIsCisJCQkJIE5hbWVTdHIodHJp Z0Zvcm0tPnRnbmFtZSkpOworCisJCXdoZW5DbGF1c2UgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVt R2V0Q1N0cmluZyh2YWx1ZSkpOworCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiKCV7 Y2xhdXNlfXMpIiwgImNsYXVzZSIsCisJCQkJCQkJIHBnX2dldF90cmlnZ2VyX3doZW5jbGF1c2Uo dHJpZ0Zvcm0sCisJCQkJCQkJCQkJCQkJICAgd2hlbkNsYXVzZSwKKwkJCQkJCQkJCQkJCQkgICBm YWxzZSkpOworCX0KKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwlhcHBl bmRfb2JqZWN0X29iamVjdChyZXQsICIle3doZW59cyIsIHRtcF9vYmopOworCisJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCIle2Z1bmNuYW1lfUQiLCAxLAorCQkJCQkJCSJmdW5jbmFtZSIsIE9i alR5cGVPYmplY3QsCisJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVy ZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCXRyaWdGb3JtLT50Z2ZvaWQpKTsKKwlsaXN0ID0g TklMOworCXRnbmFyZ3MgPSB0cmlnRm9ybS0+dGduYXJnczsKKwlpZiAodGduYXJncyA+IDApCisJ eworCQljaGFyCSAgICpwOworCQlpbnQJCQlpOworCisJCXZhbHVlID0gZmFzdGdldGF0dHIodHJp Z1R1cCwgQW51bV9wZ190cmlnZ2VyX3RnYXJncywKKwkJCQkJCQlSZWxhdGlvbkdldERlc2NyKHBn X3RyaWdnZXIpLCAmaXNudWxsKTsKKwkJaWYgKGlzbnVsbCkKKwkJCWVsb2coRVJST1IsICJudWxs IHRnYXJncyBmb3IgdHJpZ2dlciBcIiVzXCIiLAorCQkJCSBOYW1lU3RyKHRyaWdGb3JtLT50Z25h bWUpKTsKKwkJcCA9IChjaGFyICopIFZBUkRBVEFfQU5ZKERhdHVtR2V0Qnl0ZWFQUCh2YWx1ZSkp OworCQlmb3IgKGkgPSAwOyBpIDwgdGduYXJnczsgaSsrKQorCQl7CisJCQlsaXN0ID0gbGFwcGVu ZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwKSk7CisJCQkvKiBhZHZhbmNlIHAgdG8gbmV4dCBz dHJpbmcgZW1iZWRkZWQgaW4gdGdhcmdzICovCisJCQl3aGlsZSAoKnApCisJCQkJcCsrOworCQkJ cCsrOworCQl9CisJfQorCisJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodG1wX29iaiwgIigiKTsKKwlh cHBlbmRfYXJyYXlfb2JqZWN0KHRtcF9vYmosICIle2FyZ3M6LCB9TCIsIGxpc3QpOwkvKiBtaWdo dCBiZSBOSUwgKi8KKwlhcHBlbmRfZm9ybWF0X3N0cmluZyh0bXBfb2JqLCAiKSIpOworCisJYXBw ZW5kX29iamVjdF9vYmplY3QocmV0LCAiRVhFQ1VURSBGVU5DVElPTiAle2Z1bmN0aW9ufXMiLCB0 bXBfb2JqKTsKKworCXRhYmxlX2Nsb3NlKHBnX3RyaWdnZXIsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZVVzZXJNYXBwaW5nU3Rt dCAoQ1JFQVRFIFVTRVIgTUFQUElORykKKyAqCisgKiBHaXZlbiBhIFVzZXIgTWFwcGluZyBPSUQg YW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwKKyAqIHJldHVybiBhbiBPYmpUcmVl IHJlcHJlc2VudGluZyB0aGUgQ1JFQVRFIFVTRVIgTUFQUElORyBjb21tYW5kLgorICoKKyAqIFZl cmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiAle3JvbGV9UiBTRVJWRVIg JXtzZXJ2ZXJ9SQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZVVzZXJNYXBw aW5nU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVVc2VyTWFw cGluZ1N0bXQgKm5vZGUgPSAoQ3JlYXRlVXNlck1hcHBpbmdTdG10ICopIHBhcnNldHJlZTsKKwlP YmpUcmVlICAgICpyZXQ7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3Bn X3VzZXJfbWFwcGluZyBmb3JtOworCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlcjsKKworCXJlbCA9IHRh YmxlX29wZW4oVXNlck1hcHBpbmdSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8q CisJICogTG9va3VwIG9iamVjdCBpbiB0aGUgY2F0YWxvZywgc28gd2UgZG9uJ3QgaGF2ZSB0byBk ZWFsIHdpdGgKKwkgKiBjdXJyZW50X3VzZXIgYW5kIHN1Y2guCisJICovCisJdHAgPSBTZWFyY2hT eXNDYWNoZTEoVVNFUk1BUFBJTkdPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgdXNlciBtYXBwaW5nIHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisKKwlm b3JtID0gKEZvcm1fcGdfdXNlcl9tYXBwaW5nKSBHRVRTVFJVQ1QodHApOworCisJc2VydmVyID0g R2V0Rm9yZWlnblNlcnZlcihmb3JtLT51bXNlcnZlcik7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9W QSgiQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgJXtyb2xlfVIgU0VSVkVSICV7c2VydmVyfUkgJXtn ZW5lcmljX29wdGlvbnN9cyIsIDMsCisJCQkJCQkgInJvbGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9yb2xlX2lkKGZvcm0tPnVtdXNlciksCisJCQkJCQkgInNlcnZl ciIsIE9ialR5cGVTdHJpbmcsIHNlcnZlci0+c2VydmVybmFtZSwKKwkJCQkJCSAiZ2VuZXJpY19v cHRpb25zIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBkZXBhcnNlX0Zkd09wdGlvbnMobm9kZS0+ b3B0aW9ucywgTlVMTCwgZmFsc2UpKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJdGFibGVf Y2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICog ZGVwYXJzZV9BbHRlclVzZXJNYXBwaW5nCisgKgorICogR2l2ZW4gYSBVc2VyIE1hcHBpbmcgT0lE IGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJl ZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIEFMVEVSIFVTRVIgTUFQUElORyBGT1IgJXtyb2xlfVIgU0VSVkVSICV7c2VydmVyfUkKKyAq Lworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclVzZXJNYXBwaW5nU3RtdChPaWQgb2Jq ZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlBbHRlclVzZXJNYXBwaW5nU3RtdCAqbm9kZSA9 IChBbHRlclVzZXJNYXBwaW5nU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0Owor CVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHA7CisJRm9ybV9wZ191c2VyX21hcHBpbmcgZm9y bTsKKwlGb3JlaWduU2VydmVyICpzZXJ2ZXI7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFVzZXJNYXBw aW5nUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAqIExvb2t1cCBvYmpl Y3QgaW4gdGhlIGNhdGFsb2csIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoCisJICogY3Vy cmVudF91c2VyIGFuZCBzdWNoLgorCSAqLworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFVTRVJNQVBQ SU5HT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHVzZXIgbWFw cGluZyB3aXRoIE9JRCAldSIsCisJCQkgb2JqZWN0SWQpOworCisJZm9ybSA9IChGb3JtX3BnX3Vz ZXJfbWFwcGluZykgR0VUU1RSVUNUKHRwKTsKKworCXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXIo Zm9ybS0+dW1zZXJ2ZXIpOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFVTRVIgTUFQ UElORyBGT1IgJXtyb2xlfVIgU0VSVkVSICV7c2VydmVyfUkgJXtnZW5lcmljX29wdGlvbnN9cyIs IDMsCisJCQkJCQkgInJvbGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zv cl9yb2xlX2lkKGZvcm0tPnVtdXNlciksCisJCQkJCQkgInNlcnZlciIsIE9ialR5cGVTdHJpbmcs IHNlcnZlci0+c2VydmVybmFtZSwKKwkJCQkJCSAiZ2VuZXJpY19vcHRpb25zIiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCSBkZXBhcnNlX0Zkd09wdGlvbnMobm9kZS0+b3B0aW9ucywgTlVMTCwgZmFs c2UpKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNs dXNpdmVMb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlclN0 YXRzU3RtdCAoQUxURVIgU1RBVElTVElDUykKKyAqCisgKiBHaXZlbiBhIGFsdGVyIHN0YXRpc3Rp Y3MgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICog T2JqVHJlZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBz eW50YXgKKyAqIEFMVEVSIFNUQVRJU1RJQ1MgJXtpZGVudGl0eX1EIFNFVCBTVEFUSVNUSUNTICV7 dGFyZ2V0fW4KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclN0YXRzU3RtdChP aWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlBbHRlclN0YXRzU3RtdCAqbm9kZSA9 IChBbHRlclN0YXRzU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCUhlYXBU dXBsZQl0cDsKKwlGb3JtX3BnX3N0YXRpc3RpY19leHQgc3RhdGZvcm07CisKKwlpZiAoIW5vZGUt PnN0eHN0YXR0YXJnZXQpCisJCXJldHVybiBOVUxMOworCisJLyogTG9va3VwIG9iamVjdCBpbiB0 aGUgY2F0YWxvZyAqLworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFNUQVRFWFRPSUQsIE9iamVjdElk R2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljIHdpdGggT0lEICV1Iiwg b2JqZWN0SWQpOworCisJc3RhdGZvcm0gPSAoRm9ybV9wZ19zdGF0aXN0aWNfZXh0KSBHRVRTVFJV Q1QodHApOworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBTVEFUSVNUSUNTICV7aWRlbnRp dHl9RCBTRVQgU1RBVElTVElDUyAle3RhcmdldH1uIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShzdGF0Zm9ybS0+ c3R4bmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKHN0YXRmb3JtLT5zdHhuYW1lKSks CisJCQkJCQkgInRhcmdldCIsIE9ialR5cGVJbnRlZ2VyLCBub2RlLT5zdHhzdGF0dGFyZ2V0KTsK KworCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFy c2UgYSBSZWZyZXNoTWF0Vmlld1N0bXQgKFJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcpCisgKgor ICogR2l2ZW4gYSBtYXRlcmlhbGl6ZWQgdmlldyBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQg Y3JlYXRlZCBpdCwgcmV0dXJuIGFuCisgKiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgcmVmcmVz aCBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRUZSRVNIIE1BVEVSSUFMSVpF RCBWSUVXICV7Y29uY3VycmVudGx5fXMgJXtpZGVudGl0eX1EICV7d2l0aF9ub19kYXRhfXMKKyAq Lworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9SZWZyZXNoTWF0Vmlld1N0bXQoT2lkIG9iamVj dElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJUmVmcmVzaE1hdFZpZXdTdG10ICpub2RlID0gKFJl ZnJlc2hNYXRWaWV3U3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRy ZWUgICAgKnRtcDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJSRUZSRVNIIE1BVEVSSUFMSVpF RCBWSUVXICV7Y29uY3VycmVudGx5fXMgJXtpZGVudGl0eX1EIiwgMiwKKwkJCQkJCSAiY29uY3Vy cmVudGx5IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5jb25jdXJyZW50ID8gIkNPTkNV UlJFTlRMWSIgOiAiIiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCQkJIG9iamVjdElkKSk7CisKKwkvKiBBZGQgYSBXSVRIIE5PIERBVEEgY2xhdXNlICovCisJ dG1wID0gbmV3X29ianRyZWVfVkEoIldJVEggTk8gREFUQSIsIDEsCisJCQkJCQkgInByZXNlbnQi LCBPYmpUeXBlQm9vbCwKKwkJCQkJCSBub2RlLT5za2lwRGF0YSA/IHRydWUgOiBmYWxzZSk7CisJ YXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt3aXRoX25vX2RhdGF9cyIsIHRtcCk7CisKKwly ZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIFJlbmFtZVN0bXQuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtpZGVudGl0 eX1EIFJFTkFNRSBUTyAle25ld25hbWV9SQorICogT1IKKyAqIEFMVEVSIFBPTElDWSAle2lmX2V4 aXN0c31zICV7cG9saWN5bmFtZX1JIE9OICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1l fUkKKyAqIE9SCisgKiBBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5U ICV7b2xkbmFtZX1JIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgVEFCTEUgJXtvbmx5 fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5UICV7b2xkbmFtZX1JIFRPICV7bmV3bmFt ZX1JCisgKiBPUgorICogQUxURVIgVFlQRSAle2lkZW50aXR5fUQgUkVOQU1FIEFUVFJJQlVURSAl e2NvbG5hbWV9SSBUTyAle25ld25hbWV9SSAle2Nhc2NhZGV9cworICogT1IKKyAqIEFMVEVSICV7 b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT0xV TU4gJXtjb2xuYW1lfUkgVE8gJXtuZXduYW1lfUkgJXtjYXNjYWRlfXMKKyAqIE9SCisgKiBBTFRF UiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgor ICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1EIFVTSU5HICV7aW5kZXhfbWV0aG9kfXMg UkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgU0NIRU1BICV7aWRlbnRpdHl9 SSBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBBTFRFUiBSVUxFICV7cnVsZW5hbWV9 SSBPTiAle2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIg VFJJR0dFUiAle3RyaWdnZXJuYW1lfUkgT04gJXtpZGVudGl0eX1EIFJFTkFNRSBUTyAle25ld25h bWV9SQorICogT1IKKyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8g JXtuZXduYW1lfUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9SZW5hbWVTdG10KE9i amVjdEFkZHJlc3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlKQoreworCVJlbmFtZVN0bXQgKm5v ZGUgPSAoUmVuYW1lU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCVJlbGF0 aW9uCXJlbGF0aW9uOworCU9pZAkJCXNjaGVtYUlkOworCisJLyoKKwkgKiBJbiBhbiBBTFRFUiAu LiBSRU5BTUUgY29tbWFuZCwgd2UgZG9uJ3QgaGF2ZSB0aGUgb3JpZ2luYWwgbmFtZSBvZiB0aGUK KwkgKiBvYmplY3QgaW4gc3lzdGVtIGNhdGFsb2dzOiBzaW5jZSB3ZSBpbnNwZWN0IHRoZW0gYWZ0 ZXIgdGhlIGNvbW1hbmQgaGFzCisJICogZXhlY3V0ZWQsIHRoZSBvbGQgbmFtZSBpcyBhbHJlYWR5 IGdvbmUuICBUaGVyZWZvcmUsIHdlIGV4dHJhY3QgaXQgZnJvbQorCSAqIHRoZSBwYXJzZSBub2Rl LiAgTm90ZSB3ZSBzdGlsbCBleHRyYWN0IHRoZSBzY2hlbWEgbmFtZSBmcm9tIHRoZSBjYXRhbG9n CisJICogKGl0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBwYXJzZSBub2RlKTsgaXQgY2Fu bm90IHBvc3NpYmx5IGhhdmUKKwkgKiBjaGFuZ2VkIGFueXdheS4KKwkgKi8KKwlzd2l0Y2ggKG5v ZGUtPnJlbmFtZVR5cGUpCisJeworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJY2FzZSBPQkpFQ1Rf SU5ERVg6CisJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNlIE9CSkVDVF9WSUVXOgorCQlj YXNlIE9CSkVDVF9NQVRWSUVXOgorCQljYXNlIE9CSkVDVF9GT1JFSUdOX1RBQkxFOgorCQkJcmVs YXRpb24gPSByZWxhdGlvbl9vcGVuKGFkZHJlc3Mub2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisJCQlzY2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKKwkJCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7aWRlbnRp dHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpU eXBlU3RyaW5nLAorCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVuYW1lVHlwZSwg ZmFsc2UpLAorCQkJCQkJCQkgImlmX2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCSBu b2RlLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIiwKKwkJCQkJCQkJICJpZGVudGl0eSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoc2NoZW1h SWQsCisJCQkJCQkJCQkJCQkJCSAgbm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpLAorCQkJCQkJCQkg Im5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkgbm9kZS0+bmV3bmFtZSk7CisJCQly ZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgT0JKRUNUX1BPTElDWToKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcG9sVHVwOworCQkJCUZv cm1fcGdfcG9saWN5IHBvbEZvcm07CisJCQkJUmVsYXRpb24JcGdfcG9saWN5OworCQkJCVNjYW5L ZXlEYXRhIGtleTsKKwkJCQlTeXNTY2FuRGVzYyBzY2FuOworCisJCQkJcGdfcG9saWN5ID0gcmVs YXRpb25fb3BlbihQb2xpY3lSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCVNjYW5L ZXlJbml0KCZrZXksIEFudW1fcGdfcG9saWN5X29pZCwKKwkJCQkJCQlCVEVxdWFsU3RyYXRlZ3lO dW1iZXIsIEZfT0lERVEsCisJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShhZGRyZXNzLm9iamVjdElk KSk7CisJCQkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wb2xpY3ksIFBvbGljeU9pZElu ZGV4SWQsIHRydWUsCisJCQkJCQkJCQkJICBOVUxMLCAxLCAma2V5KTsKKwkJCQlwb2xUdXAgPSBz eXN0YWJsZV9nZXRuZXh0KHNjYW4pOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwb2xUdXAp KQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcG9saWN5IHdpdGgg T0lEICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQlwb2xGb3JtID0gKEZvcm1f cGdfcG9saWN5KSBHRVRTVFJVQ1QocG9sVHVwKTsKKworCQkJCXJldCA9IG5ld19vYmp0cmVlX1ZB KCJBTFRFUiBQT0xJQ1kgJXtpZl9leGlzdHN9cyAle3BvbGljeW5hbWV9SSBPTiAle2lkZW50aXR5 fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JIiwgNCwKKwkJCQkJCQkJCSAiaWZfZXhpc3RzIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCQkJCSBub2RlLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAi IiwKKwkJCQkJCQkJCSAicG9saWN5bmFtZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkgbm9k ZS0+c3VibmFtZSwKKwkJCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJ CQkJCQkJCQkJCQkJIHBvbEZvcm0tPnBvbHJlbGlkKSwKKwkJCQkJCQkJCSAibmV3bmFtZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkJCQkgbm9kZS0+bmV3bmFtZSk7CisJCQkJc3lzdGFibGVfZW5k c2NhbihzY2FuKTsKKwkJCQlyZWxhdGlvbl9jbG9zZShwZ19wb2xpY3ksIEFjY2Vzc1NoYXJlTG9j ayk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgorCQkJ eworCQkJCUhlYXBUdXBsZQlkb210dXA7CisJCQkJSGVhcFR1cGxlCWNvbnN0dHVwOworCQkJCUZv cm1fcGdfY29uc3RyYWludCBjb25zdGZvcm07CisJCQkJRm9ybV9wZ190eXBlIGRvbWZvcm07CisK KwkJCQkvKiBHZXQgZG9tYWluIGlkIGZyb20gdGhlIGNvbnN0cmFpbnQgKi8KKwkJCQljb25zdHR1 cCA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJPSUQsCisJCQkJCQkJCQkJICAgT2JqZWN0SWRHZXRE YXR1bShhZGRyZXNzLm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbnN0 dHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbnN0cmFp bnQgd2l0aCBPSUQgJXUiLAorCQkJCQkJIGFkZHJlc3Mub2JqZWN0SWQpOworCQkJCWNvbnN0Zm9y bSA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHR1cCk7CisKKwkJCQlkb210 dXAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwKKwkJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1 bShjb25zdGZvcm0tPmNvbnR5cGlkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGRvbXR1 cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBkb21haW4gd2l0 aCBPSUQgJXUiLAorCQkJCQkJIGNvbnN0Zm9ybS0+Y29udHlwaWQpOworCQkJCVJlbGVhc2VTeXND YWNoZShjb25zdHR1cCk7CisKKwkJCQlkb21mb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNU KGRvbXR1cCk7CisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIERPTUFJTiAle2lkZW50 aXR5fUQgUkVOQU1FIENPTlNUUkFJTlQgJXtvbGRuYW1lfUkgVE8gJXtuZXduYW1lfUkiLCAzLAor CQkJCQkJImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCW5ld19vYmp0cmVlX2Zvcl9x dWFsbmFtZShkb21mb3JtLT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgTmFtZVN0cihkb21m b3JtLT50eXBuYW1lKSksCisJCQkJCQkib2xkbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnN1 Ym5hbWUsCisJCQkJCQkibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5ld25hbWUpOwor CQkJCVJlbGVhc2VTeXNDYWNoZShkb210dXApOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBP QkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJY29uc3RydHVwOworCQkJ CUZvcm1fcGdfY29uc3RyYWludCBjb25zdGZvcm07CisKKwkJCQljb25zdHJ0dXAgPSBTZWFyY2hT eXNDYWNoZTEoQ09OU1RST0lELAorCQkJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGFkZHJlc3Mu b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29uc3RydHVwKSkKKwkJCQkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbnN0cmFpbnQgd2l0aCBPSUQg JXUiLAorCQkJCQkJIGFkZHJlc3Mub2JqZWN0SWQpOworCQkJCWNvbnN0Zm9ybSA9IChGb3JtX3Bn X2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHJ0dXApOworCisJCQkJcmV0ID0gbmV3X29ianRy ZWVfVkEoIkFMVEVSIFRBQkxFICV7b25seX1zICV7aWRlbnRpdHl9RCBSRU5BTUUgQ09OU1RSQUlO VCAle29sZG5hbWV9SSBUTyAle25ld25hbWV9SSIsIDQsCisJCQkJCQkJCQkib25seSIsICBPYmpU eXBlU3RyaW5nLAorCQkJCQkJCQkJbm9kZS0+cmVsYXRpb24tPmluaCA/ICIiIDogIk9OTFkiLAor CQkJCQkJCQkJImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCW5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJY29u c3Rmb3JtLT5jb25yZWxpZCksCisJCQkJCQkJCQkib2xkbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5v ZGUtPnN1Ym5hbWUsCisJCQkJCQkJCQkibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5l d25hbWUpOworCQkJCVJlbGVhc2VTeXNDYWNoZShjb25zdHJ0dXApOworCQkJfQorCQkJYnJlYWs7 CisKKwkJY2FzZSBPQkpFQ1RfQVRUUklCVVRFOgorCQljYXNlIE9CSkVDVF9DT0xVTU46CisJCQly ZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwkJCXNjaGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOworCisJCQlp ZiAobm9kZS0+cmVuYW1lVHlwZSA9PSBPQkpFQ1RfQVRUUklCVVRFKQorCQkJCXJldCA9IG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiBUWVBFICV7aWRlbnRpdHl9RCBSRU5BTUUgQVRUUklCVVRFICV7Y29s bmFtZX1JIiwgMiwKKwkJCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShzY2hlbWFJZCwKKwkJCQkJCQkJCQkJCQkJCSAg bm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpLAorCQkJCQkJCQkJICJjb2xuYW1lIiwgT2JqVHlwZVN0 cmluZywgbm9kZS0+c3VibmFtZSk7CisJCQllbHNlCisJCQl7CisJCQkJcmV0ID0gbmV3X29ianRy ZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zIiwgMSwKKwkJCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5 cGVTdHJpbmcsCisJCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVsYXRpb25UeXBl LCBmYWxzZSkpOworCisJCQkJLyogQ29tcG9zaXRlIHR5cGVzIGRvIG5vdCBzdXBwb3J0IElGIEVY SVNUUyAqLworCQkJCWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9DT0xVTU4pCisJCQkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7aWZfZXhpc3RzfXMiLAorCQkJCQkJCQkJCSAi aWZfZXhpc3RzIiwKKwkJCQkJCQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDog IiIpOworCQkJCWlmICghbm9kZS0+cmVsYXRpb24tPmluaCkKKwkJCQkJYXBwZW5kX3N0cmluZ19v YmplY3QocmV0LCAiJXtvbmx5fXMiLAorCQkJCQkJCQkJCSAib25seSIsCisJCQkJCQkJCQkJICJP TkxZIik7CisJCQkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtpZGVudGl0eX1EIiwKKwkJ CQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoc2NoZW1hSWQsCisJCQkJCQkJCQkJCQkJ CQkgIG5vZGUtPnJlbGF0aW9uLT5yZWxuYW1lKSk7CisJCQkJYXBwZW5kX3N0cmluZ19vYmplY3Qo cmV0LCAiUkVOQU1FIENPTFVNTiAle2NvbG5hbWV9SSIsCisJCQkJCQkJCQkgImNvbG5hbWUiLCBu b2RlLT5zdWJuYW1lKTsKKwkJCX0KKworCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiVE8g JXtuZXduYW1lfUkiLCAibmV3bmFtZSIsCisJCQkJCQkJCSBub2RlLT5uZXduYW1lKTsKKworCQkJ aWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0FUVFJJQlVURSkKKwkJCQlhcHBlbmRfb2Jq ZWN0X29iamVjdChyZXQsICIle2Nhc2NhZGV9cyIsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfVkEo IkNBU0NBREUiLCAxLAorCQkJCQkJCQkJCQkJCSJwcmVzZW50IiwgT2JqVHlwZUJvb2wsCisJCQkJ CQkJCQkJCQkJbm9kZS0+YmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFKSk7CisKKwkJCXJlbGF0aW9u X2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJYnJlYWs7CisKKwkJY2FzZSBP QkpFQ1RfQUdHUkVHQVRFOgorCQljYXNlIE9CSkVDVF9GVU5DVElPTjoKKwkJY2FzZSBPQkpFQ1Rf Uk9VVElORToKKwkJCXsKKwkJCQljaGFyCSAgICppZGVudDsKKwkJCQlIZWFwVHVwbGUJcHJvY3R1 cDsKKwkJCQlGb3JtX3BnX3Byb2MgcHJvY2Zvcm07CisJCQkJTGlzdAkgICAqaWRlbnRpdHk7CisK KwkJCQlBc3NlcnQoSXNBKG5vZGUtPm9iamVjdCwgT2JqZWN0V2l0aEFyZ3MpKTsKKwkJCQlpZGVu dGl0eSA9ICgoT2JqZWN0V2l0aEFyZ3MgKikgbm9kZS0+b2JqZWN0KS0+b2JqbmFtZTsKKworCQkJ CXByb2N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwKKwkJCQkJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0oYWRkcmVzcy5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChw cm9jdHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHByb2Nl ZHVyZSB3aXRoIE9JRCAldSIsCisJCQkJCQkgYWRkcmVzcy5vYmplY3RJZCk7CisJCQkJcHJvY2Zv cm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7CisKKwkJCQkvKiBYWFggZG9l cyB0aGlzIHdvcmsgZm9yIG9yZGVyZWQtc2V0IGFnZ3JlZ2F0ZXM/ICovCisJCQkJaWRlbnQgPSBw c3ByaW50ZigiJXMlcyIsCisJCQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRf bmFtZXNwYWNlX25hbWUocHJvY2Zvcm0tPnByb25hbWVzcGFjZSksCisJCQkJCQkJCQkJCQkJCQlz dHJWYWwobGxhc3QoaWRlbnRpdHkpKSksCisJCQkJCQkJCSBmb3JtYXRfcHJvY2VkdXJlX2FyZ3Mo YWRkcmVzcy5vYmplY3RJZCwgdHJ1ZSkpOworCisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFM VEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBSRU5BTUUgVE8gJXtuZXduYW1lfUkiLCAzLAor CQkJCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCSBzdHJpbmdpZnlf b2JqdHlwZShub2RlLT5yZW5hbWVUeXBlLCBmYWxzZSksCisJCQkJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZVN0cmluZywgaWRlbnQsCisJCQkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5n LCBub2RlLT5uZXduYW1lKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShwcm9jdHVwKTsKKwkJCX0K KwkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CisJCQl7CisJCQkJSGVhcFR1cGxl CW9wY1R1cDsKKwkJCQlGb3JtX3BnX29wY2xhc3Mgb3BjRm9ybTsKKwkJCQlMaXN0CSAgICpvbGRu YW1lczsKKwkJCQljaGFyCSAgICpzY2hlbWFuYW1lOworCQkJCWNoYXIJICAgKm9wY25hbWU7CisK KwkJCQlvcGNUdXAgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKGFk ZHJlc3Mub2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BjVHVwKSkKKwkJ CQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3Mgd2l0aCBPSUQg JXUiLAorCQkJCQkJIGFkZHJlc3Mub2JqZWN0SWQpOworCisJCQkJb3BjRm9ybSA9IChGb3JtX3Bn X29wY2xhc3MpIEdFVFNUUlVDVChvcGNUdXApOworCisJCQkJb2xkbmFtZXMgPSBsaXN0X2NvcHlf dGFpbCgoTGlzdCAqKSBub2RlLT5vYmplY3QsIDEpOworCisJCQkJLyogRGVjb25zdHJ1Y3QgdGhl IG5hbWUgbGlzdCAqLworCQkJCURlY29uc3RydWN0UXVhbGlmaWVkTmFtZShvbGRuYW1lcywgJnNj aGVtYW5hbWUsICZvcGNuYW1lKTsKKworCQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAl e29ianR5cGV9cyAle2lkZW50aXR5fUQgVVNJTkcgJXtpbmRleF9tZXRob2R9cyBSRU5BTUUgVE8g JXtuZXduYW1lfUkiLCA0LAorCQkJCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZW5hbWVUeXBlLCBmYWxzZSksCisJCQkJ CQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWUob3BjRm9ybS0+b3BjbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkJICBvcGNu YW1lKSwKKwkJCQkJCQkJCSAiaW5kZXhfbWV0aG9kIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJ CSBnZXRfYW1fbmFtZShvcGNGb3JtLT5vcGNtZXRob2QpLAorCQkJCQkJCQkJICJuZXduYW1lIiwg T2JqVHlwZVN0cmluZywgbm9kZS0+bmV3bmFtZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUob3Bj VHVwKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQkJewor CQkJCUhlYXBUdXBsZQlvcGZUdXA7CisJCQkJSGVhcFR1cGxlCWFtVHVwOworCQkJCUZvcm1fcGdf b3BmYW1pbHkgb3BmRm9ybTsKKwkJCQlGb3JtX3BnX2FtCWFtRm9ybTsKKwkJCQlMaXN0CSAgICpv bGRuYW1lczsKKwkJCQljaGFyCSAgICpzY2hlbWFuYW1lOworCQkJCWNoYXIJICAgKm9wZm5hbWU7 CisKKwkJCQlvcGZUdXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BGQU1JTFlPSUQsIGFkZHJlc3Mub2Jq ZWN0SWQpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChvcGZUdXApKQorCQkJCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgZmFtaWx5IHdpdGggT0lEICV1 IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQlvcGZGb3JtID0gKEZvcm1fcGdfb3Bm YW1pbHkpIEdFVFNUUlVDVChvcGZUdXApOworCisJCQkJYW1UdXAgPSBTZWFyY2hTeXNDYWNoZTEo QU1PSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmRm9ybS0+b3BmbWV0aG9kKSk7CisJCQkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKGFtVHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIGFjY2VzcyBtZXRob2Qgd2l0aCBPSUQgJXUiLAorCQkJCQkJIG9wZkZvcm0tPm9w Zm1ldGhvZCk7CisKKwkJCQlhbUZvcm0gPSAoRm9ybV9wZ19hbSkgR0VUU1RSVUNUKGFtVHVwKTsK KworCQkJCW9sZG5hbWVzID0gbGlzdF9jb3B5X3RhaWwoKExpc3QgKikgbm9kZS0+b2JqZWN0LCAx KTsKKworCQkJCS8qIERlY29uc3RydWN0IHRoZSBuYW1lIGxpc3QgKi8KKwkJCQlEZWNvbnN0cnVj dFF1YWxpZmllZE5hbWUob2xkbmFtZXMsICZzY2hlbWFuYW1lLCAmb3BmbmFtZSk7CisKKwkJCQly ZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1EIFVTSU5H ICV7aW5kZXhfbWV0aG9kfXMgUkVOQU1FIFRPICV7bmV3bmFtZX1JIiwgNCwKKwkJCQkJCQkJCSAi b2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9k ZS0+cmVuYW1lVHlwZSwgZmFsc2UpLAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmpl Y3QsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKG9wZkZvcm0tPm9wZm5hbWVz cGFjZSwKKwkJCQkJCQkJCQkJCQkJCSAgb3BmbmFtZSksCisJCQkJCQkJCQkgImluZGV4X21ldGhv ZCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkgTmFtZVN0cihhbUZvcm0tPmFtbmFtZSksCisJ CQkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5uZXduYW1lKTsKKworCQkJ CVJlbGVhc2VTeXNDYWNoZShhbVR1cCk7CisJCQkJUmVsZWFzZVN5c0NhY2hlKG9wZlR1cCk7CisJ CQl9CisJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9TQ0hFTUE6CisJCQlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQUxURVIgU0NIRU1BICV7aWRlbnRpdHl9SSBSRU5BTUUgVE8gJXtuZXduYW1lfUki LCAyLAorCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywgbm9kZS0+c3VibmFtZSwK KwkJCQkJCQkJICJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+bmV3bmFtZSk7CisJCQli cmVhazsKKworCQljYXNlIE9CSkVDVF9GRFc6CisJCWNhc2UgT0JKRUNUX0xBTkdVQUdFOgorCQlj YXNlIE9CSkVDVF9GT1JFSUdOX1NFUlZFUjoKKwkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CisJ CQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIFJF TkFNRSBUTyAle25ld25hbWV9SSIsIDMsCisJCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJp bmcsCisJCQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZW5hbWVUeXBlLCBmYWxzZSks CisJCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkgc3RyVmFsKGNh c3ROb2RlKFN0cmluZywgbm9kZS0+b2JqZWN0KSksCisJCQkJCQkJCSAibmV3bmFtZSIsIE9ialR5 cGVTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfUlVM RToKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcmV3clR1cDsKKwkJCQlGb3JtX3BnX3Jld3JpdGUgcmV3 ckZvcm07CisJCQkJUmVsYXRpb24JcGdfcmV3cml0ZTsKKworCQkJCXBnX3Jld3JpdGUgPSByZWxh dGlvbl9vcGVuKFJld3JpdGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCXJld3JU dXAgPSBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkKHBnX3Jld3JpdGUsIEFudW1fcGdfcmV3cml0 ZV9vaWQsIGFkZHJlc3Mub2JqZWN0SWQpOworCQkJCXJld3JGb3JtID0gKEZvcm1fcGdfcmV3cml0 ZSkgR0VUU1RSVUNUKHJld3JUdXApOworCisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVS IFJVTEUgJXtydWxlbmFtZX1JIE9OICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUki LCAzLAorCQkJCQkJCQkJICJydWxlbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnN1Ym5hbWUs CisJCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2Jq dHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJ CSByZXdyRm9ybS0+ZXZfY2xhc3MpLAorCQkJCQkJCQkJICJuZXduYW1lIiwgT2JqVHlwZVN0cmlu Zywgbm9kZS0+bmV3bmFtZSk7CisJCQkJcmVsYXRpb25fY2xvc2UocGdfcmV3cml0ZSwgQWNjZXNz U2hhcmVMb2NrKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CisJ CQl7CisJCQkJSGVhcFR1cGxlCXRyaWdUdXA7CisJCQkJRm9ybV9wZ190cmlnZ2VyIHRyaWdGb3Jt OworCQkJCVJlbGF0aW9uCXBnX3RyaWdnZXI7CisKKwkJCQlwZ190cmlnZ2VyID0gcmVsYXRpb25f b3BlbihUcmlnZ2VyUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl0cmlnVHVwID0g Z2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChwZ190cmlnZ2VyLCBnZXRfb2JqZWN0X2F0dG51bV9v aWQoYWRkcmVzcy5jbGFzc0lkKSwgYWRkcmVzcy5vYmplY3RJZCk7CisJCQkJdHJpZ0Zvcm0gPSAo Rm9ybV9wZ190cmlnZ2VyKSBHRVRTVFJVQ1QodHJpZ1R1cCk7CisKKwkJCQlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQUxURVIgVFJJR0dFUiAle3RyaWdnZXJuYW1lfUkgT04gJXtpZGVudGl0eX1EIFJF TkFNRSBUTyAle25ld25hbWV9SSIsIDMsCisJCQkJCQkJCQkgInRyaWdnZXJuYW1lIiwgT2JqVHlw ZVN0cmluZywgbm9kZS0+c3VibmFtZSwKKwkJCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2Jq ZWN0LAorCQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0 aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJIHRyaWdGb3JtLT50Z3JlbGlkKSwKKwkJCQkJCQkJCSAi bmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCisJCQkJcmVsYXRpb25f Y2xvc2UocGdfdHJpZ2dlciwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCX0KKwkJCWJyZWFrOworCisJ CWNhc2UgT0JKRUNUX0NPTExBVElPTjoKKwkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKKwkJ Y2FzZSBPQkpFQ1RfVFlQRToKKwkJY2FzZSBPQkpFQ1RfQ09OVkVSU0lPTjoKKwkJY2FzZSBPQkpF Q1RfRE9NQUlOOgorCQljYXNlIE9CSkVDVF9UU0RJQ1RJT05BUlk6CisJCWNhc2UgT0JKRUNUX1RT UEFSU0VSOgorCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgorCQljYXNlIE9CSkVDVF9UU0NPTkZJ R1VSQVRJT046CisJCQl7CisJCQkJSGVhcFR1cGxlCW9ialR1cDsKKwkJCQlSZWxhdGlvbgljYXRh bG9nOworCQkJCURhdHVtCQlvYmpuc3A7CisJCQkJYm9vbAkJaXNudWxsOworCQkJCUF0dHJOdW1i ZXIJQW51bV9uYW1lc3BhY2U7CisJCQkJTGlzdAkgICAqaWRlbnRpdHkgPSBjYXN0Tm9kZShMaXN0 LCBub2RlLT5vYmplY3QpOworCisJCQkJLyogT2J0YWluIG9iamVjdCB0dXBsZSAqLworCQkJCWNh dGFsb2cgPSByZWxhdGlvbl9vcGVuKGFkZHJlc3MuY2xhc3NJZCwgQWNjZXNzU2hhcmVMb2NrKTsK KwkJCQlvYmpUdXAgPSBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkKGNhdGFsb2csIGdldF9vYmpl Y3RfYXR0bnVtX29pZChhZGRyZXNzLmNsYXNzSWQpLCBhZGRyZXNzLm9iamVjdElkKTsKKworCQkJ CS8qIE9idGFpbiBuYW1lc3BhY2UgKi8KKwkJCQlBbnVtX25hbWVzcGFjZSA9IGdldF9vYmplY3Rf YXR0bnVtX25hbWVzcGFjZShhZGRyZXNzLmNsYXNzSWQpOworCQkJCW9iam5zcCA9IGhlYXBfZ2V0 YXR0cihvYmpUdXAsIEFudW1fbmFtZXNwYWNlLAorCQkJCQkJCQkJICBSZWxhdGlvbkdldERlc2Ny KGNhdGFsb2cpLCAmaXNudWxsKTsKKwkJCQlpZiAoaXNudWxsKQorCQkJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBOVUxMIG5hbWVzcGFjZSIpOworCisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFM VEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkiLCAzLAor CQkJCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCSBzdHJpbmdpZnlf b2JqdHlwZShub2RlLT5yZW5hbWVUeXBlLCBmYWxzZSksCisJCQkJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoRGF0dW1H ZXRPYmplY3RJZChvYmpuc3ApLAorCQkJCQkJCQkJCQkJCQkJICBzdHJWYWwobGxhc3QoaWRlbnRp dHkpKSksCisJCQkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5uZXduYW1l KTsKKwkJCQlyZWxhdGlvbl9jbG9zZShjYXRhbG9nLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJfQor CQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBvYmpl Y3QgdHlwZSAlZCIsIG5vZGUtPnJlbmFtZVR5cGUpOworCX0KKworCXJldHVybiByZXQ7Cit9CisK Ky8qCisgKiBEZXBhcnNlIGEgQWx0ZXJPYmplY3REZXBlbmRzU3RtdCAoQUxURVIgLi4uIERFUEVO RFMgT04gLi4uKS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgSU5ERVggJXtpZGVu dGl0eX1EICV7bm99cyBERVBFTkRTIE9OIEVYVEVOU0lPTiAle25ld25hbWV9SQorICovCitzdGF0 aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyRGVwZW5kU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUg KnBhcnNldHJlZSkKK3sKKwlBbHRlck9iamVjdERlcGVuZHNTdG10ICpub2RlID0gKEFsdGVyT2Jq ZWN0RGVwZW5kc1N0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldCA9IE5VTEw7CisK KwlpZiAobm9kZS0+b2JqZWN0VHlwZSA9PSBPQkpFQ1RfSU5ERVgpCisJeworCQlPYmpUcmVlICAg ICpxdWFsaWZpZWQ7CisJCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihvYmplY3RJ ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlxdWFsaWZpZWQgPSBuZXdfb2JqdHJlZV9mb3JfcXVh bG5hbWUocmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkgbm9kZS0+ cmVsYXRpb24tPnJlbG5hbWUpOworCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hh cmVMb2NrKTsKKworCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgSU5ERVggJXtpZGVudGl0 eX1EICV7bm99cyBERVBFTkRTIE9OIEVYVEVOU0lPTiAle25ld25hbWV9SSIsIDMsCisJCQkJCQkJ ICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsIHF1YWxpZmllZCwKKwkJCQkJCQkgIm5vIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCQkgbm9kZS0+cmVtb3ZlID8gIk5PIiA6ICIiLAorCQkJCQkJCSAi bmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIHN0clZhbChub2RlLT5leHRuYW1lKSk7CisJfQorCWVs c2UKKwkJZWxvZyhMT0csICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlIGluIGRlcGFyc2UgY29tbWFu ZDogJWQiLAorCQkJIChpbnQpIG5vZGVUYWcocGFyc2V0cmVlKSk7CisKKwlyZXR1cm4gcmV0Owor fQorCisvKgorICogRGVwYXJzZSBhIFJ1bGVTdG10IChDUkVBVEUgUlVMRSkuCisgKgorICogR2l2 ZW4gYSBydWxlIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4g YW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBydWxlIGNvbW1hbmQuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIENSRUFURSBSVUxFICV7b3JfcmVwbGFjZX1zICV7aWRlbnRpdHl9SSBB UyBPTiAle2V2ZW50fXMgVE8gJXt0YWJsZX1ECisgKiAle3doZXJlX2NsYXVzZX1zIERPICV7aW5z dGVhZH1zICV7YWN0aW9uczosIH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfUnVs ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJUnVsZVN0bXQgICAqbm9k ZSA9IChSdWxlU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUg ICAgKnRtcDsKKwlSZWxhdGlvbglwZ19yZXdyaXRlOworCUZvcm1fcGdfcmV3cml0ZSByZXdyRm9y bTsKKwlIZWFwVHVwbGUJcmV3clR1cDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRh IGtleTsKKwlEYXR1bQkJZXZfcXVhbDsKKwlEYXR1bQkJZXZfYWN0aW9uczsKKwlib29sCQlpc251 bGw7CisJY2hhcgkgICAqcXVhbDsKKwlMaXN0CSAgICphY3Rpb25zOworCUxpc3QJICAgKmxpc3Qg PSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwljaGFyCSAgICpldmVudF9zdHI7CisKKwlwZ19y ZXdyaXRlID0gdGFibGVfb3BlbihSZXdyaXRlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsK KwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFudW1fcGdfcmV3cml0ZV9vaWQsCisJCQkJQlRFcXVh bFN0cmF0ZWd5TnVtYmVyLAorCQkJCUZfT0lERVEsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQp KTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcmV3cml0ZSwgUmV3cml0ZU9pZElu ZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCAma2V5KTsKKwlyZXdyVHVwID0gc3lzdGFi bGVfZ2V0bmV4dChzY2FuKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocmV3clR1cCkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZXdyaXRlIHJ1bGUgd2l0aCBPSUQg JXUiLAorCQkJIG9iamVjdElkKTsKKworCXJld3JGb3JtID0gKEZvcm1fcGdfcmV3cml0ZSkgR0VU U1RSVUNUKHJld3JUdXApOworCisJZXZlbnRfc3RyID0gbm9kZS0+ZXZlbnQgPT0gQ01EX1NFTEVD VCA/ICJTRUxFQ1QiIDoKKwkJbm9kZS0+ZXZlbnQgPT0gQ01EX1VQREFURSA/ICJVUERBVEUiIDoK KwkJbm9kZS0+ZXZlbnQgPT0gQ01EX0RFTEVURSA/ICJERUxFVEUiIDoKKwkJbm9kZS0+ZXZlbnQg PT0gQ01EX0lOU0VSVCA/ICJJTlNFUlQiIDogTlVMTDsKKwlBc3NlcnQoZXZlbnRfc3RyICE9IE5V TEwpOworCisJZXZfcXVhbCA9IGhlYXBfZ2V0YXR0cihyZXdyVHVwLCBBbnVtX3BnX3Jld3JpdGVf ZXZfcXVhbCwKKwkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IocGdfcmV3cml0ZSksICZpc251bGwp OworCWV2X2FjdGlvbnMgPSBoZWFwX2dldGF0dHIocmV3clR1cCwgQW51bV9wZ19yZXdyaXRlX2V2 X2FjdGlvbiwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IocGdfcmV3cml0ZSksICZpc251bGwp OworCisJcGdfZ2V0X3J1bGVkZWZfZGV0YWlsZWQoZXZfcXVhbCwgZXZfYWN0aW9ucywgJnF1YWws ICZhY3Rpb25zKTsKKworCXRtcCA9IG5ld19vYmp0cmVlKCIiKTsKKwlpZiAocXVhbCkKKwkJYXBw ZW5kX3N0cmluZ19vYmplY3QodG1wLCAiV0hFUkUgJXtjbGF1c2V9cyIsICJjbGF1c2UiLCBxdWFs KTsKKwllbHNlCisJeworCQlhcHBlbmRfbnVsbF9vYmplY3QodG1wLCAiV0hFUkUgJXtjbGF1c2V9 cyIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwl9CisKKwlpZiAoYWN0aW9ucyA9PSBO SUwpCisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KCJOT1RISU5HIikp OworCWVsc2UKKwl7CisJCWZvcmVhY2goY2VsbCwgYWN0aW9ucykKKwkJCWxpc3QgPSBsYXBwZW5k KGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KGxmaXJzdChjZWxsKSkpOworCX0KKworCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJDUkVBVEUgUlVMRSAle29yX3JlcGxhY2V9cyAle2lkZW50aXR5fUkgQVMg T04gJXtldmVudH1zIFRPICV7dGFibGV9RCAle3doZXJlX2NsYXVzZX1zIERPICV7aW5zdGVhZH1z IiwgNiwKKwkJCQkJCSAib3JfcmVwbGFjZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+ cmVwbGFjZSA/ICJPUiBSRVBMQUNFIiA6ICIiLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVT dHJpbmcsIG5vZGUtPnJ1bGVuYW1lLAorCQkJCQkJICJldmVudCIsIE9ialR5cGVTdHJpbmcsIGV2 ZW50X3N0ciwKKwkJCQkJCSAidGFibGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0 cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJIHJl d3JGb3JtLT5ldl9jbGFzcyksCisJCQkJCQkgIndoZXJlX2NsYXVzZSIsIE9ialR5cGVPYmplY3Qs IHRtcCwKKwkJCQkJCSAiaW5zdGVhZCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+aW5z dGVhZCA/ICJJTlNURUFEIiA6ICJBTFNPIik7CisKKwlpZiAobGlzdF9sZW5ndGgobGlzdCkgPiAx KQorCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIigle2FjdGlvbnM6OyB9cykiLCBsaXN0KTsK KwllbHNlCisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXthY3Rpb25zOjsgfXMiLCBsaXN0 KTsKKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocGdfcmV3cml0ZSwg QWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEg Q3JlYXRlVHJhbnNmb3JtU3RtdCAoQ1JFQVRFIFRSQU5TRk9STSkuCisgKgorICogR2l2ZW4gYSB0 cmFuc2Zvcm0gT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBh biBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIENSRUFURSBUUkFOU0ZPUk0gY29tbWFuZC4K KyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7b3JfcmVwbGFjZX1zIFRSQU5TRk9S TSBGT1IgJXt0eXBlbmFtZX1EIExBTkdVQUdFICV7bGFuZ3VhZ2V9SQorICogKCBGUk9NIFNRTCBX SVRIIEZVTkNUSU9OICV7c2lnbmF0dXJlfXMsIFRPIFNRTCBXSVRIIEZVTkNUSU9OCisgKiAle3Np Z25hdHVyZV90b2Z9cyApCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlVHJh bnNmb3JtU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVUcmFu c2Zvcm1TdG10ICpub2RlID0gKENyZWF0ZVRyYW5zZm9ybVN0bXQgKikgcGFyc2V0cmVlOworCU9i alRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICpzaWduYXR1cmU7CisJSGVhcFR1cGxlCXRyZlR1 cDsKKwlIZWFwVHVwbGUJbGFuZ1R1cDsKKwlIZWFwVHVwbGUJcHJvY1R1cDsKKwlGb3JtX3BnX3Ry YW5zZm9ybSB0cmZGb3JtOworCUZvcm1fcGdfbGFuZ3VhZ2UgbGFuZ0Zvcm07CisJRm9ybV9wZ19w cm9jIHByb2NGb3JtOworCWludAkJCWk7CisKKwkvKiBHZXQgdGhlIHBnX3RyYW5zZm9ybSB0dXBs ZSAqLworCXRyZlR1cCA9IFNlYXJjaFN5c0NhY2hlMShUUkZPSUQsIE9iamVjdElkR2V0RGF0dW0o b2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHJmVHVwKSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHRyYW5zZm9ybSB3aXRoIE9JRCAldSIsCisJCQkg b2JqZWN0SWQpOworCXRyZkZvcm0gPSAoRm9ybV9wZ190cmFuc2Zvcm0pIEdFVFNUUlVDVCh0cmZU dXApOworCisJLyogR2V0IHRoZSBjb3JyZXNwb25kaW5nIHBnX2xhbmd1YWdlIHR1cGxlICovCisJ bGFuZ1R1cCA9IFNlYXJjaFN5c0NhY2hlMShMQU5HT0lELCB0cmZGb3JtLT50cmZsYW5nKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQobGFuZ1R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBsYW5ndWFnZSB3aXRoIE9JRCAldSIsCisJCQkgdHJmRm9ybS0+dHJmbGFu Zyk7CisJbGFuZ0Zvcm0gPSAoRm9ybV9wZ19sYW5ndWFnZSkgR0VUU1RSVUNUKGxhbmdUdXApOwor CisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSAle29yX3JlcGxhY2V9cyBUUkFOU0ZPUk0g Rk9SICV7dHlwZW5hbWV9RCBMQU5HVUFHRSAle2xhbmd1YWdlfUkiLCAzLAorCQkJCQkJICJvcl9y ZXBsYWNlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5yZXBsYWNlID8gIk9SIFJFUExB Q0UiIDogIiIsCisJCQkJCQkgInR5cGVuYW1lIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVHlwZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJIHRy ZkZvcm0tPnRyZnR5cGUpLAorCQkJCQkJICJsYW5ndWFnZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJ CQkgTmFtZVN0cihsYW5nRm9ybS0+bGFubmFtZSkpOworCisJLyogRGVwYXJzZSB0aGUgdHJhbnNm b3JtX2VsZW1lbnRfbGlzdCAqLworCWlmIChPaWRJc1ZhbGlkKHRyZkZvcm0tPnRyZmZyb21zcWwp KQorCXsKKwkJTGlzdAkgICAqcGFyYW1zID0gTklMOworCisJCS8qIEdldCB0aGUgcGdfcHJvYyB0 dXBsZSBmb3IgdGhlIEZST00gRlVOQ1RJT04gKi8KKwkJcHJvY1R1cCA9IFNlYXJjaFN5c0NhY2hl MShQUk9DT0lELCB0cmZGb3JtLT50cmZmcm9tc3FsKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHByb2NUdXApKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0 aW9uIHdpdGggT0lEICV1IiwKKwkJCQkgdHJmRm9ybS0+dHJmZnJvbXNxbCk7CisJCXByb2NGb3Jt ID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHByb2NUdXApOworCisJCS8qCisJCSAqIENSRUFU RSBUUkFOU0ZPUk0gZG9lcyBub3QgY2hhbmdlIGZ1bmN0aW9uIHNpZ25hdHVyZSBzbyB3ZSBjYW4g dXNlCisJCSAqIGNhdGFsb2cgdG8gZ2V0IGlucHV0IHR5cGUgT2lkcy4KKwkJICovCisJCWZvciAo aSA9IDA7IGkgPCBwcm9jRm9ybS0+cHJvbmFyZ3M7IGkrKykKKwkJeworCQkJT2JqVHJlZSAgICAq cGFyYW1fb2JqOworCisJCQlwYXJhbV9vYmogPSBuZXdfb2JqdHJlZV9WQSgiJXt0eXBlfVQiLCAx LAorCQkJCQkJCQkJICAidHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCSBuZXdfb2JqdHJl ZV9mb3JfdHlwZShwcm9jRm9ybS0+cHJvYXJndHlwZXMudmFsdWVzW2ldLCAtMSkpOworCQkJcGFy YW1zID0gbGFwcGVuZChwYXJhbXMsIG5ld19vYmplY3Rfb2JqZWN0KHBhcmFtX29iaikpOworCQl9 CisKKwkJc2lnbmF0dXJlID0gbmV3X29ianRyZWVfVkEoIiV7aWRlbnRpdHl9RCAoJXthcmd1bWVu dHM6LCB9cykiLCAyLAorCQkJCQkJCQkgICAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJCQkgICBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocHJvY0Zvcm0tPnByb25hbWVzcGFjZSwK KwkJCQkJCQkJCQkJCQkJCU5hbWVTdHIocHJvY0Zvcm0tPnByb25hbWUpKSwKKwkJCQkJCQkJICAg ImFyZ3VtZW50cyIsIE9ialR5cGVBcnJheSwgcGFyYW1zKTsKKworCQlhcHBlbmRfb2JqZWN0X29i amVjdChyZXQsICIoRlJPTSBTUUwgV0lUSCBGVU5DVElPTiAle3NpZ25hdHVyZX1zIiwKKwkJCQkJ CQkgc2lnbmF0dXJlKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXApOworCX0KKwlpZiAoT2lk SXNWYWxpZCh0cmZGb3JtLT50cmZ0b3NxbCkpCisJeworCQlMaXN0CSAgICpwYXJhbXMgPSBOSUw7 CisKKwkJLyogQXBwZW5kIGEgJywnIGlmIHRyZmZyb21zcWwgaXMgcHJlc2VudCwgZWxzZSBhcHBl bmQgJygnICovCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJldCwgT2lkSXNWYWxpZCh0cmZGb3Jt LT50cmZmcm9tc3FsKSA/ICIsIiA6ICIoIik7CisKKwkJLyogR2V0IHRoZSBwZ19wcm9jIHR1cGxl IGZvciB0aGUgVE8gRlVOQ1RJT04gKi8KKwkJcHJvY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9D T0lELCB0cmZGb3JtLT50cmZ0b3NxbCk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVw KSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBmdW5jdGlvbiB3aXRo IE9JRCAldSIsCisJCQkJIHRyZkZvcm0tPnRyZnRvc3FsKTsKKwkJcHJvY0Zvcm0gPSAoRm9ybV9w Z19wcm9jKSBHRVRTVFJVQ1QocHJvY1R1cCk7CisKKwkJLyoKKwkJICogQ1JFQVRFIFRSQU5TRk9S TSBkb2VzIG5vdCBjaGFuZ2UgZnVuY3Rpb24gc2lnbmF0dXJlIHNvIHdlIGNhbiB1c2UKKwkJICog Y2F0YWxvZyB0byBnZXQgaW5wdXQgdHlwZSBPaWRzLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8 IHByb2NGb3JtLT5wcm9uYXJnczsgaSsrKQorCQl7CisJCQlPYmpUcmVlICAgICpwYXJhbV9vYmog PSBuZXdfb2JqdHJlZSgiIik7CisKKwkJCXBhcmFtX29iaiA9IG5ld19vYmp0cmVlX1ZBKCIle3R5 cGV9VCIsIDEsCisJCQkJCQkJCQkgICJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSAg bmV3X29ianRyZWVfZm9yX3R5cGUocHJvY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXSwgLTEp KTsKKwkJCXBhcmFtcyA9IGxhcHBlbmQocGFyYW1zLCBuZXdfb2JqZWN0X29iamVjdChwYXJhbV9v YmopKTsKKwkJfQorCisJCXNpZ25hdHVyZSA9IG5ld19vYmp0cmVlX1ZBKCIle2lkZW50aXR5fUQg KCV7YXJndW1lbnRzOiwgfXMpIiwgMiwKKwkJCQkJCQkJICAgImlkZW50aXR5IiwgT2JqVHlwZU9i amVjdCwKKwkJCQkJCQkJICAgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHByb2NGb3JtLT5wcm9u YW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHByb2NGb3JtLT5wcm9uYW1lKSksCisJ CQkJCQkJCSAgICJhcmd1bWVudHMiLCBPYmpUeXBlQXJyYXksIHBhcmFtcyk7CisKKwkJYXBwZW5k X29iamVjdF9vYmplY3QocmV0LCAiVE8gU1FMIFdJVEggRlVOQ1RJT04gJXtzaWduYXR1cmVfdG9m fXMiLAorCQkJCQkJCSBzaWduYXR1cmUpOworCQlSZWxlYXNlU3lzQ2FjaGUocHJvY1R1cCk7CisJ fQorCisJYXBwZW5kX2Zvcm1hdF9zdHJpbmcocmV0LCAiKSIpOworCisJUmVsZWFzZVN5c0NhY2hl KGxhbmdUdXApOworCVJlbGVhc2VTeXNDYWNoZSh0cmZUdXApOworCXJldHVybiByZXQ7Cit9CisK Ky8qCisgKiBEZXBhcnNlIGEgQ29tbWVudFN0bXQgd2hlbiBpdCBwZXJ0YWlucyB0byBhIGNvbnN0 cmFpbnQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENPTU1FTlQgT04gQ09OU1RSQUlOVCAl e2lkZW50aXR5fXMgT04gW0RPTUFJTl0gJXtwYXJlbnRvYmp9cyBJUyAle2NvbW1lbnR9cworICov CitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NvbW1lbnRPbkNvbnN0cmFpbnRTbXQoT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ29tbWVudFN0bXQgKm5vZGUgPSAoQ29tbWVu dFN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlIZWFwVHVwbGUJY29uc3Ry VHVwOworCUZvcm1fcGdfY29uc3RyYWludCBjb25zdHJGb3JtOworCU9iamVjdEFkZHJlc3MgYWRk cjsKKworCUFzc2VydChub2RlLT5vYmp0eXBlID09IE9CSkVDVF9UQUJDT05TVFJBSU5UIHx8IG5v ZGUtPm9ianR5cGUgPT0gT0JKRUNUX0RPTUNPTlNUUkFJTlQpOworCisJY29uc3RyVHVwID0gU2Vh cmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwgb2JqZWN0SWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxp ZChjb25zdHJUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29u c3RyYWludCB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwljb25zdHJGb3JtID0gKEZvcm1fcGdf Y29uc3RyYWludCkgR0VUU1RSVUNUKGNvbnN0clR1cCk7CisKKwlpZiAoT2lkSXNWYWxpZChjb25z dHJGb3JtLT5jb25yZWxpZCkpCisJCU9iamVjdEFkZHJlc3NTZXQoYWRkciwgUmVsYXRpb25SZWxh dGlvbklkLCBjb25zdHJGb3JtLT5jb25yZWxpZCk7CisJZWxzZQorCQlPYmplY3RBZGRyZXNzU2V0 KGFkZHIsIFR5cGVSZWxhdGlvbklkLCBjb25zdHJGb3JtLT5jb250eXBpZCk7CisKKwlyZXQgPSBu ZXdfb2JqdHJlZV9WQSgiQ09NTUVOVCBPTiBDT05TVFJBSU5UICV7aWRlbnRpdHl9cyBPTiAle2Rv bWFpbn1zICV7cGFyZW50b2JqfXMiLCAzLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJp bmcsIHBzdHJkdXAoTmFtZVN0cihjb25zdHJGb3JtLT5jb25uYW1lKSksCisJCQkJCQkgImRvbWFp biIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgKG5vZGUtPm9ianR5cGUgPT0gT0JKRUNUX0RPTUNP TlNUUkFJTlQpID8gIkRPTUFJTiIgOiAiIiwKKwkJCQkJCSAicGFyZW50b2JqIiwgT2JqVHlwZVN0 cmluZywKKwkJCQkJCSBnZXRPYmplY3RJZGVudGl0eSgmYWRkciwgZmFsc2UpKTsKKworCS8qIEFk ZCB0aGUgY29tbWVudCBjbGF1c2UgKi8KKwlhcHBlbmRfbGl0ZXJhbF9vcl9udWxsKHJldCwgIklT ICV7Y29tbWVudH1zIiwgbm9kZS0+Y29tbWVudCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUoY29uc3Ry VHVwKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBDb21tZW50U3RtdCAo Q09NTUVOVCBPTiAuLi4pLgorICoKKyAqIEdpdmVuIHRoZSBvYmplY3QgYWRkcmVzcyBhbmQgdGhl IHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVz ZW50aW5nIHRoZSBjb21tZW50IGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENP TU1FTlQgT04gJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIElTICV7Y29tbWVudH1zCisgKi8KK3N0 YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ29tbWVudFN0bXQoT2JqZWN0QWRkcmVzcyBhZGRyZXNz LCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ29tbWVudFN0bXQgKm5vZGUgPSAoQ29tbWVudFN0bXQg KikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwljaGFyCSAgICppZGVudGl0eTsKKwor CS8qIENvbW1lbnQgb24gc3Vic2NyaXB0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgKi8KKwlpZiAobm9k ZS0+b2JqdHlwZSA9PSBPQkpFQ1RfU1VCU0NSSVBUSU9OKQorCQlyZXR1cm4gTlVMTDsKKworCS8q CisJICogQ29uc3RyYWludHMgYXJlIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgdGhhdCBpdCBpcyBl YXNpZXIgdG8gaGFuZGxlIHRoZW0KKwkgKiBzZXBhcmF0ZWx5LgorCSAqLworCWlmIChub2RlLT5v Ymp0eXBlID09IE9CSkVDVF9ET01DT05TVFJBSU5UIHx8CisJCW5vZGUtPm9ianR5cGUgPT0gT0JK RUNUX1RBQkNPTlNUUkFJTlQpCisJeworCQlBc3NlcnQoYWRkcmVzcy5jbGFzc0lkID09IENvbnN0 cmFpbnRSZWxhdGlvbklkKTsKKwkJcmV0dXJuIGRlcGFyc2VfQ29tbWVudE9uQ29uc3RyYWludFNt dChhZGRyZXNzLm9iamVjdElkLCBwYXJzZXRyZWUpOworCX0KKworCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJDT01NRU5UIE9OICV7b2JqdHlwZX1zIiwgMSwKKwkJCQkJCSAib2JqdHlwZSIsIE9ialR5 cGVTdHJpbmcsCisJCQkJCQkgKGNoYXIgKikgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+b2JqdHlw ZSwgZmFsc2UpKTsKKworCS8qCisJICogQWRkIHRoZSBvYmplY3QgaWRlbnRpdHkgY2xhdXNlLiAg Rm9yIHplcm8gYXJndW1lbnQgYWdncmVnYXRlcyB3ZSBuZWVkCisJICogdG8gYWRkIHRoZSAoKikg Yml0OyBpbiBhbGwgb3RoZXIgY2FzZXMgd2UgY2FuIGp1c3QgdXNlCisJICogZ2V0T2JqZWN0SWRl bnRpdHkuCisJICoKKwkgKiBYWFggc2hvdWxkbid0IHdlIGluc3RlYWQgZml4IHRoZSBvYmplY3Qg aWRlbnRpdGllcyBmb3IgemVyby1hcmd1bWVudAorCSAqIGFnZ3JlZ2F0ZXM/CisJICovCisJaWYg KG5vZGUtPm9ianR5cGUgPT0gT0JKRUNUX0FHR1JFR0FURSkKKwl7CisJCUhlYXBUdXBsZQlwcm9j VHVwOworCQlGb3JtX3BnX3Byb2MgcHJvY0Zvcm07CisKKwkJcHJvY1R1cCA9IFNlYXJjaFN5c0Nh Y2hlMShQUk9DT0lELCBPYmplY3RJZEdldERhdHVtKGFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHByb2NUdXApKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHByb2NlZHVyZSB3aXRoIE9JRCAldSIsCisJCQkJIGFkZHJlc3Mub2JqZWN0 SWQpOworCQlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsKKwkJ aWYgKHByb2NGb3JtLT5wcm9uYXJncyA9PSAwKQorCQkJaWRlbnRpdHkgPSBwc3ByaW50ZigiJXMo KikiLAorCQkJCQkJCQlxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRfbmFtZXNwYWNlX25h bWUocHJvY0Zvcm0tPnByb25hbWVzcGFjZSksCisJCQkJCQkJCQkJCQkJCSAgIE5hbWVTdHIocHJv Y0Zvcm0tPnByb25hbWUpKSk7CisJCWVsc2UKKwkJCWlkZW50aXR5ID0gZ2V0T2JqZWN0SWRlbnRp dHkoJmFkZHJlc3MsIGZhbHNlKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXApOworCX0KKwll bHNlCisJCWlkZW50aXR5ID0gZ2V0T2JqZWN0SWRlbnRpdHkoJmFkZHJlc3MsIGZhbHNlKTsKKwor CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7aWRlbnRpdHl9cyIsICJpZGVudGl0eSIsIGlk ZW50aXR5KTsKKworCS8qIEFkZCB0aGUgY29tbWVudCBjbGF1c2U7IGNhbiBiZSBlaXRoZXIgTlVM TCBvciBhIHF1b3RlZCBsaXRlcmFsLiAqLworCWFwcGVuZF9saXRlcmFsX29yX251bGwocmV0LCAi SVMgJXtjb21tZW50fXMiLCBub2RlLT5jb21tZW50KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8q CisgKiBEZXBhcnNlIGEgU0VDVVJJVFkgTEFCRUwgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5 bnRheAorICogU0VDVVJJVFkgTEFCRUwgRk9SICV7cHJvdmlkZXJ9cyBPTiAle29iamVjdF90eXBl X25hbWV9cyAle2lkZW50aXR5fXMgSVMgJXtsYWJlbH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoK K2RlcGFyc2VfU2VjTGFiZWxTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK3sKKwlPYmpUcmVl CSAgICpyZXQ7CisJU2VjTGFiZWxTdG10ICpub2RlID0gKFNlY0xhYmVsU3RtdCAqKSBjbWQtPnBh cnNldHJlZTsKKworCS8qIERvbid0IGRlcGFyc2Ugc3FsIGNvbW1hbmRzIGdlbmVyYXRlZCB3aGls ZSBjcmVhdGluZyBleHRlbnNpb24gKi8KKwlpZiAoY21kLT5pbl9leHRlbnNpb24pCisJCXJldHVy biBOVUxMOworCisJQXNzZXJ0KGNtZC0+ZC5zZWNsYWJlbC5wcm92aWRlcik7CisKKwlyZXQgPSBu ZXdfb2JqdHJlZV9WQSgiU0VDVVJJVFkgTEFCRUwgRk9SICV7cHJvdmlkZXJ9cyBPTiAle29ianR5 cGV9cyAle2lkZW50aXR5fXMiLCAzLAorCQkJCQkJICJwcm92aWRlciIsIE9ialR5cGVTdHJpbmcs IGNtZC0+ZC5zZWNsYWJlbC5wcm92aWRlciwKKwkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJp bmcsIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPm9ianR5cGUsIGZhbHNlKSwKKwkJCQkJCSAiaWRl bnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBnZXRPYmplY3RJZGVudGl0eSgmKGNtZC0+ZC5zZWNsYWJl bC5hZGRyZXNzKSwgZmFsc2UpKTsKKworCS8qIEFkZCB0aGUgbGFiZWwgY2xhdXNlOyBjYW4gYmUg ZWl0aGVyIE5VTEwgb3IgYSBxdW90ZWQgbGl0ZXJhbC4gKi8KKwlhcHBlbmRfbGl0ZXJhbF9vcl9u dWxsKHJldCwgIklTICV7bGFiZWx9cyIsIG5vZGUtPmxhYmVsKTsKKworCXJldHVybiByZXQ7Cit9 CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlQW1TdG10IChDUkVBVEUgQUNDRVNTIE1FVEhPRCku CisgKgorICogR2l2ZW4gYW4gYWNjZXNzIG1ldGhvZCBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRo YXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuCisgKiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgQ1JF QVRFIEFDQ0VTUyBNRVRIT0QgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JF QVRFIEFDQ0VTUyBNRVRIT0QgJXtpZGVudGl0eX1JIFRZUEUgJXthbV90eXBlfXMgSEFORExFUiAl e2hhbmRsZXJ9RAorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZUFtU3RtdChP aWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJSGVh cFR1cGxlCWFtVHVwOworCUZvcm1fcGdfYW0JYW1Gb3JtOworCWNoYXIJICAgKmFtdHlwZTsKKwor CWFtVHVwID0gU2VhcmNoU3lzQ2FjaGUxKEFNT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElk KSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGFtVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIGFjY2VzcyBtZXRob2Qgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVj dElkKTsKKwlhbUZvcm0gPSAoRm9ybV9wZ19hbSkgR0VUU1RSVUNUKGFtVHVwKTsKKworCXN3aXRj aCAoYW1Gb3JtLT5hbXR5cGUpCisJeworCQljYXNlICdpJzoKKwkJCWFtdHlwZSA9ICJJTkRFWCI7 CisJCQlicmVhazsKKwkJY2FzZSAndCc6CisJCQlhbXR5cGUgPSAiVEFCTEUiOworCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCB0eXBlICVjIGZvciBhY2Nlc3Mg bWV0aG9kIiwgYW1Gb3JtLT5hbXR5cGUpOworCX0KKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJD UkVBVEUgQUNDRVNTIE1FVEhPRCAle2lkZW50aXR5fUkgVFlQRSAle2FtX3R5cGV9cyBIQU5ETEVS ICV7aGFuZGxlcn1EIiwgMywKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJ CQkJIE5hbWVTdHIoYW1Gb3JtLT5hbW5hbWUpLAorCQkJCQkJICJhbV90eXBlIiwgT2JqVHlwZVN0 cmluZywgYW10eXBlLAorCQkJCQkJICJoYW5kbGVyIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBu ZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJ CQkJCQkgYW1Gb3JtLT5hbWhhbmRsZXIpKTsKKworCVJlbGVhc2VTeXNDYWNoZShhbVR1cCk7CisK KwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSB0aGUgcHVibGljYXRpb24gY29sdW1u IGxpc3QuCisgKgorICogR2l2ZW4gYSB0dXBsZSBvZiBwZ19wdWJsaWNhdGlvbl9yZWwsIHJldHVy biBhbiBvYmpUcmVlIHRoYXQgcmVwcmVzZW50IHRoZQorICogY29sdW1uIG5hbWVzLgorICovCitz dGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1B1YmxpY2F0aW9uUmVsYXRpb25Db2x1bW5MaXN0KEhl YXBUdXBsZSBwdWJyZWx0dXApCit7CisJYm9vbAkJaXNudWxsOworCUxpc3QJICAgKmNvbGxpc3Qg PSBOSUw7CisJT2JqVHJlZQkgICAqY29sdW1ubGlzdDsKKwlEYXR1bQkJYXR0cnNkYXR1bTsKKwor CWF0dHJzZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHB1YnJlbHR1 cCwKKwkJCQkJCQkJIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3ByYXR0cnMsCisJCQkJCQkJCSAm aXNudWxsKTsKKworCWNvbHVtbmxpc3QgPSBuZXdfb2JqdHJlZSgiIik7CisJaWYgKCFpc251bGwp CisJeworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CisJCUFycmF5VHlwZSAgKmFy cjsKKwkJaW50CQkJbmVsZW1zOworCQlpbnQxNgkgICAqZWxlbXM7CisKKwkJYXJyID0gRGF0dW1H ZXRBcnJheVR5cGVQKGF0dHJzZGF0dW0pOworCQluZWxlbXMgPSBBUlJfRElNUyhhcnIpWzBdOwor CQllbGVtcyA9IChpbnQxNiAqKSBBUlJfREFUQV9QVFIoYXJyKTsKKworCQlwdWJyZWwgPSAoRm9y bV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVChwdWJyZWx0dXApOworCisJCWZvciAoaW50 IGkgPSAwOyBpIDwgbmVsZW1zOyBpKyspCisJCXsKKwkJCWNoYXIgKmNvbG5hbWUgPSBnZXRfYXR0 bmFtZShwdWJyZWwtPnBycmVsaWQsIGVsZW1zW2ldLCBmYWxzZSk7CisJCQljb2xsaXN0ID0gbGFw cGVuZChjb2xsaXN0LCBuZXdfc3RyaW5nX29iamVjdChjb2xuYW1lKSk7CisJCX0KKworCQlhcHBl bmRfYXJyYXlfb2JqZWN0KGNvbHVtbmxpc3QsICIoJXtjb2xzOiwgfXMpIiwgY29sbGlzdCk7CisJ fQorCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KGNvbHVtbmxpc3QpOworCisJcmV0dXJuIGNv bHVtbmxpc3Q7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBwdWJsaWNhdGlvbiB3aGVyZSBjbGF1 c2UuCisgKgorICogR2l2ZW4gYSB0dXBsZSBvZiBwZ19wdWJsaWNhdGlvbl9yZWwsIHJldHVybiBh IG9ialRyZWUgdGhhdCByZXByZXNlbnQgdGhlCisgKiBwdWJsaWNhdGlvbiB3aGVyZSBjbGF1c2Uu CisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfUHVibGljYXRpb25SZWxhdGlvbldoZXJl Q2xhdXNlKEhlYXBUdXBsZSBwdWJyZWx0dXApCit7CisJRGF0dW0JCQkJCXF1YWxkYXR1bTsKKwlP YmpUcmVlCQkJCSAgICp3aGVyZWNsYXVzZTsKKwlib29sCQkJCQlpc251bGw7CisKKwlxdWFsZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHB1YnJlbHR1cCwKKwkJCQkJ CQkJQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsLCAmaXNudWxsKTsKKworCXdoZXJlY2xh dXNlID0gbmV3X29ianRyZWUoIiIpOworCWlmICghaXNudWxsKQorCXsKKwkJRm9ybV9wZ19wdWJs aWNhdGlvbl9yZWwgcHVicmVsOworCQlOb2RlCQkJCSAgICpxdWFsbm9kZTsKKwkJTGlzdAkJCQkg ICAqY29udGV4dDsKKwkJY2hhcgkJCQkgICAqcXVhbHN0cjsKKwkJT2lkCQkJCQkJcmVsaWQ7CisK KwkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QocHVicmVsdHVw KTsKKwkJcmVsaWQgPSBwdWJyZWwtPnBycmVsaWQ7CisKKwkJY29udGV4dCA9IGRlcGFyc2VfY29u dGV4dF9mb3IoZ2V0X3JlbF9uYW1lKHJlbGlkKSwgcmVsaWQpOworCQlxdWFsbm9kZSA9IHN0cmlu Z1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHF1YWxkYXR1bSkpOworCQlxdWFsc3RyID0gZGVw YXJzZV9leHByZXNzaW9uKHF1YWxub2RlLCBjb250ZXh0LCBmYWxzZSwgZmFsc2UpOworCisJCWFw cGVuZF9zdHJpbmdfb2JqZWN0KHdoZXJlY2xhdXNlLCAiV0hFUkUgJXt3aGVyZX1zIiwgIndoZXJl IiwgcXVhbHN0cik7CisJfQorCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHdoZXJlY2xhdXNl KTsKKworCXJldHVybiB3aGVyZWNsYXVzZTsKK30KKworLyoKKyAqIFN1YnJvdXRpbmUgZm9yIENS RUFURSBQVUJMSUNBVElPTiBkZXBhcnNpbmcuCisgKgorICogRGVhbCB3aXRoIGFsbCB0aGUgcHVi bGljYXRpb24gdGFibGUgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHRoZSB3aGVyZSBjbGF1c2UKKyAq IGFuZCBjb2x1bW4gbGlzdC4KKyAqLworc3RhdGljIExpc3QgKgorZGVwYXJzZV9QdWJsaWNhdGlv blJlbGF0aW9uRGVmcyhPaWQgcHVib2lkKQoreworCVJlbGF0aW9uCXB1YnJlbHNyZWw7CisJU2Nh bktleURhdGEgc2NhbmtleTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisJ TGlzdAkgICAqcmVsZGVmcyA9IE5JTDsKKworCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1Ymxp Y2F0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZz Y2Fua2V5LAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycHViaWQsCisJCQkJQlRFcXVh bFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocHVib2lkKSk7 CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHB1YnJlbHNyZWwsIFB1YmxpY2F0aW9uUmVs UHJwdWJpZEluZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAmc2NhbmtleSk7CisKKwl3 aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7 CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKKwkJT2lkCQkJCQkJcmVsaWQ7CisJ CU9ialRyZWUJCQkJICAgKmNvbHVtbmxpc3Q7CisJCU9ialRyZWUJCQkJICAgKndoZXJlY2xhdXNl OworCQlPYmpUcmVlCQkJCSAgICpyZWxkZWY7CisKKwkJcHVicmVsID0gKEZvcm1fcGdfcHVibGlj YXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJcmVsaWQgPSBwdWJyZWwtPnBycmVsaWQ7CisK KwkJcmVsZGVmID0gbmV3X29ianRyZWVfVkEoIiV7dGFibGVuYW1lfUQiLCAxLAorCQkJCQkJCQki dGFibGVuYW1lIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGlkKSk7CisKKwkJY29sdW1ubGlzdCA9IGRl cGFyc2VfUHVibGljYXRpb25SZWxhdGlvbkNvbHVtbkxpc3QodHVwKTsKKwkJYXBwZW5kX29iamVj dF9vYmplY3QocmVsZGVmLCAiJXtjb2x1bW5fbGlzdH1zIiwgY29sdW1ubGlzdCk7CisKKwkJd2hl cmVjbGF1c2UgPSBkZXBhcnNlX1B1YmxpY2F0aW9uUmVsYXRpb25XaGVyZUNsYXVzZSh0dXApOwor CQlhcHBlbmRfb2JqZWN0X29iamVjdChyZWxkZWYsICIle3doZXJlX2NsYXVzZX1zIiwgd2hlcmVj bGF1c2UpOworCisJCXJlbGRlZnMgPSBsYXBwZW5kKHJlbGRlZnMsIG5ld19vYmplY3Rfb2JqZWN0 KHJlbGRlZikpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2Uo cHVicmVsc3JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiByZWxkZWZzOworfQorCisv KgorICogRGVwYXJzZSBhIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAoQ1JFQVRFIFBVQkxJQ0FUSU9O KS4KKyAqCisgKiBHaXZlbiBhbiBwdWJsaWNhdGlvbiBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRo YXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuCisgKiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgQ1JF QVRFIFBVQkxJQ0FUSU9OIGNvbW1hbmQuCiAgKgogICogVmVyYm9zZSBzeW50YXgKLSAqIEFMVEVS ICV7b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtpZGVudGl0eX1EIFJFTkFNRSBUTyAle25ld25h bWV9SQorICogQ1JFQVRFIFBVQkxJQ0FUSU9OICV7aWRlbnRpdHl9SSAle2Zvcl90YWJsZXN9cyAl e2Zvcl9zY2hlbWFzfXMgJXt3aXRoX2NsYXVzZX1zCiAgKiBPUgotICogQUxURVIgVEFCTEUgJXtv bmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5UICV7b2xkbmFtZX1JIFRPICV7bmV3 bmFtZX1JCisgKiBDUkVBVEUgUFVCTElDQVRJT04gJXtpZGVudGl0eX1JIEZPUiBBTEwgVEFCTEVT ICV7d2l0aF9jbGF1c2V9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZVB1 YmxpY2F0aW9uU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVQ dWJsaWNhdGlvblN0bXQgKm5vZGUgPSAoQ3JlYXRlUHVibGljYXRpb25TdG10ICopIHBhcnNldHJl ZTsKKwlPYmpUcmVlICAgICpjcmVhdGVQdWI7CisJT2JqVHJlZSAgICAqdG1wOworCUhlYXBUdXBs ZQlwdWJUdXA7CisJRm9ybV9wZ19wdWJsaWNhdGlvbglwdWJGb3JtOworCUxpc3QJICAgKmxpc3Qg PSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKworCXB1YlR1cCA9IFNlYXJjaFN5c0NhY2hlMShQ VUJMSUNBVElPTk9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZChwdWJUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgYWNjZXNzIG1ldGhvZCB3aXRoIE9JRCAldSIsCisJCQkgb2JqZWN0SWQpOworCXB1YkZvcm0g PSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHB1YlR1cCk7CisKKwljcmVhdGVQdWIg PSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFBVQkxJQ0FUSU9OICV7aWRlbnRpdHl9cyIsIDEsCisJ CQkJCQkJICAgImlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkgICBOYW1lU3RyKHB1 YkZvcm0tPnB1Ym5hbWUpKTsKKworCWlmIChub2RlLT5mb3JfYWxsX3RhYmxlcykKKwkJYXBwZW5k X2Zvcm1hdF9zdHJpbmcoY3JlYXRlUHViLCAiRk9SIEFMTCBUQUJMRVMiKTsKKwllbHNlCisJewor CQlMaXN0CSAgICpvbGRzY2hlbWFpZHM7CisJCVN0cmluZ0luZm9EYXRhIGZvcl9zY2hlbWFzOwor CisJCS8qIEZPUiBUQUJMRVMgdDEsdDIsLi4uICovCisJCXRtcCA9IG5ld19vYmp0cmVlKCJGT1Ig VEFCTEUiKTsKKworCQlsaXN0ID0gZGVwYXJzZV9QdWJsaWNhdGlvblJlbGF0aW9uRGVmcyhvYmpl Y3RJZCk7CisJCWlmIChsaXN0ICE9IE5JTCkKKwkJCWFwcGVuZF9hcnJheV9vYmplY3QodG1wLCAi JXt0YWJsZXM6LCB9cyIsIGxpc3QpOworCQllbHNlCisJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1w KTsKKworCQlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVQdWIsICIle2Zvcl90YWJsZXN9cyIs IHRtcCk7CisKKwkJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEgczEsczIsLi4uICovCisJCWluaXRT dHJpbmdJbmZvKCZmb3Jfc2NoZW1hcyk7CisJCWlmIChsaXN0ICE9IE5JTCkKKwkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZvcl9zY2hlbWFzLCAiLCAiKTsKKwkJZWxzZQorCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm9yX3NjaGVtYXMsICJGT1IgIik7CisJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmZvcl9zY2hlbWFzLCAiVEFCTEVTIElOIFNDSEVNQSIpOworCisJCXRtcCA9IG5ld19v Ymp0cmVlKGZvcl9zY2hlbWFzLmRhdGEpOworCQlsaXN0ID0gTklMOworCQlvbGRzY2hlbWFpZHMg PSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViRm9ybS0+b2lkKTsKKwkJZm9yZWFjaChjZWxsLCBv bGRzY2hlbWFpZHMpCisJCXsKKwkJCU9pZAkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGNlbGwpOwor CQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QoZ2V0X25hbWVzcGFjZV9u YW1lKHNjaGVtYWlkKSkpOworCQl9CisKKwkJaWYgKGxpc3QgIT0gTklMKQorCQkJYXBwZW5kX2Fy cmF5X29iamVjdCh0bXAsICIle3NjaGVtYXM6LCB9SSIsIGxpc3QpOworCQllbHNlCisJCQlhcHBl bmRfbm90X3ByZXNlbnQodG1wKTsKKworCQlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVQdWIs ICIle2Zvcl9zY2hlbWFzfXMiLCB0bXApOworCX0KKworCS8qIFdJVEggY2xhdXNlICovCisJdG1w ID0gbmV3X29ianRyZWUoIldJVEgiKTsKKworCWxpc3QgPSBOSUw7CisJZm9yZWFjaChjZWxsLCBu b2RlLT5vcHRpb25zKQorCXsKKwkJT2JqVHJlZSAgICAqdG1wX29iajsKKwkJRGVmRWxlbSAgICAq b3B0ID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCisJCXRtcF9vYmogPSBkZXBhcnNlX0Rl ZkVsZW0ob3B0LCBmYWxzZSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcF9vYmopKTsKKwl9CisKKwlpZiAobGlzdCAhPSBOSUwpCisJCWFwcGVuZF9hcnJheV9v YmplY3QodG1wLCAiKCV7d2l0aDosIH1zKSIsIGxpc3QpOworCWVsc2UKKwkJYXBwZW5kX25vdF9w cmVzZW50KHRtcCk7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVQdWIsICIle3dpdGhf Y2xhdXNlfXMiLCB0bXApOworCisJUmVsZWFzZVN5c0NhY2hlKHB1YlR1cCk7CisKKwlyZXR1cm4g Y3JlYXRlUHViOworfQorCisvKgorICogRGVwYXJzZSBhIEFsdGVyUHVibGljYXRpb25TdG10IChB TFRFUiBQVUJMSUNBVElPTikuCisgKgorICogR2l2ZW4gYW4gcHVibGljYXRpb24gcmVsYXRpb24g T0lEIG9yIHB1YmxpY2F0aW9uIHNjaGVtYSBPSUQgYW5kIHRoZSBwYXJzZQorICogdHJlZSB0aGF0 IGFkZGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZSByZXByZXNlbnRpbmcgdGhlIEFMVEVSIFBVQkxJ Q0FUSU9OCisgKiBjb21tYW5kLgorICoKKyAqIE5vdGUgdGhhdCBvbmx5IEFMVEVSIFBVQkxJQ0FU SU9OIEFERC9TRVQgc2hvdWxkIGJlIGRlcGFyc2VkIGhlcmUsIEFMVEVSCisgKiBQVUJMSUNBVElP TiBEUk9QIGlzIGRlcGFyc2VkIGluIGRpZmZlcmVudCBwbGFjZXMuCisgKgorICogWFhYIEFMVEVS IFBVQkxJQ0FUSU9OIFNFVCBwdWJsaWNhdGlvbl9vYmplY3QgaXMgY29udmVydGVkIHRvIEFMVEVS CisgKiBQVUJMSUNBVElPTiBBREQvRFJPUC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxU RVIgUFVCTElDQVRJT04gJXtpZGVudGl0eX1JICV7YWRkX29iamVjdH1zCiAgKiBPUgotICogQUxU RVIgJXtvYmp0eXBlfXMgJXtpZl9leGlzdHN9cyAle29ubHl9cyAle2lkZW50aXR5fUQgUkVOQU1F IENPTFVNTiAle2NvbG5hbWV9SSBUTyAle25ld25hbWV9SSAle2Nhc2NhZGV9cworICogQUxURVIg UFVCTElDQVRJT04gJXtpZGVudGl0eX1JICV7c2V0X29wdGlvbnN9cwogICovCiBzdGF0aWMgT2Jq VHJlZSAqCi1kZXBhcnNlX1JlbmFtZVN0bXQoT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpw YXJzZXRyZWUpCitkZXBhcnNlX0FsdGVyUHVibGljYXRpb25BZGRTdG10KE9iamVjdEFkZHJlc3Mg b2JqZWN0LCBOb2RlICpwYXJzZXRyZWUpCiB7Ci0JUmVuYW1lU3RtdCAqbm9kZSA9IChSZW5hbWVT dG10ICopIHBhcnNldHJlZTsKLQlPYmpUcmVlICAgICpyZXQ7Ci0JUmVsYXRpb24JcmVsYXRpb247 Ci0JT2lkCQkJc2NoZW1hSWQ7CisJY2hhcgkgICAqcHVibmFtZTsKKwlPYmpUcmVlCSAgICphbHRl cnB1YjsKKwlPYmpUcmVlCSAgICphZGRvYmplY3QgPSBOVUxMOworCU9ialRyZWUJICAgKnNldG9w dGlvbiA9IE5VTEw7CisJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm5vZGUgPSAoQWx0ZXJQdWJsaWNh dGlvblN0bXQgKikgcGFyc2V0cmVlOwogCi0JLyoKLQkgKiBJbiBhbiBBTFRFUiAuLiBSRU5BTUUg Y29tbWFuZCwgd2UgZG9uJ3QgaGF2ZSB0aGUgb3JpZ2luYWwgbmFtZSBvZiB0aGUKLQkgKiBvYmpl Y3QgaW4gc3lzdGVtIGNhdGFsb2dzOiBzaW5jZSB3ZSBpbnNwZWN0IHRoZW0gYWZ0ZXIgdGhlIGNv bW1hbmQgaGFzCi0JICogZXhlY3V0ZWQsIHRoZSBvbGQgbmFtZSBpcyBhbHJlYWR5IGdvbmUuICBU aGVyZWZvcmUsIHdlIGV4dHJhY3QgaXQgZnJvbQotCSAqIHRoZSBwYXJzZSBub2RlLiAgTm90ZSB3 ZSBzdGlsbCBleHRyYWN0IHRoZSBzY2hlbWEgbmFtZSBmcm9tIHRoZSBjYXRhbG9nCi0JICogKGl0 IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBwYXJzZSBub2RlKTsgaXQgY2Fubm90IHBvc3Np Ymx5IGhhdmUKLQkgKiBjaGFuZ2VkIGFueXdheS4KLQkgKi8KLQlzd2l0Y2ggKG5vZGUtPnJlbmFt ZVR5cGUpCisJc3dpdGNoIChvYmplY3QuY2xhc3NJZCkKIAl7Ci0JCWNhc2UgT0JKRUNUX0lOREVY OgotCQljYXNlIE9CSkVDVF9UQUJMRToKLQkJCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihhZGRy ZXNzLm9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOwotCQkJc2NoZW1hSWQgPSBSZWxhdGlvbkdl dE5hbWVzcGFjZShyZWxhdGlvbik7Ci0JCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgJXtv Ymp0eXBlfXMgJXtpZl9leGlzdHN9cyAle2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1J IiwgNCwKLQkJCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKLQkJCQkJCQkJIHN0cmlu Z2lmeV9vYmp0eXBlKG5vZGUtPnJlbmFtZVR5cGUsIGZhbHNlKSwKLQkJCQkJCQkJICJpZl9leGlz dHMiLCBPYmpUeXBlU3RyaW5nLAotCQkJCQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElT VFMiIDogIiIsCi0JCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAotCQkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHNjaGVtYUlkLAotCQkJCQkJCQkJCQkJCQkgIG5vZGUt PnJlbGF0aW9uLT5yZWxuYW1lKSwKLQkJCQkJCQkJICJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywK LQkJCQkJCQkJIG5vZGUtPm5ld25hbWUpOwotCQkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFj Y2Vzc1NoYXJlTG9jayk7CisJCS8qIEFERCBUQUJMRSAqLworCQljYXNlIFB1YmxpY2F0aW9uUmVs UmVsYXRpb25JZDoKKwkJCXsKKwkJCQlPYmpUcmVlCSAgICp3aGVyZWNsYXVzZTsKKwkJCQlPYmpU cmVlCSAgICpjb2x1bW5saXN0OworCQkJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbGZv cm07CisJCQkJT2lkCQkJcmVsaWQ7CisJCQkJSGVhcFR1cGxlCXR1cDsKKworCQkJCXR1cCA9IFNl YXJjaFN5c0NhY2hlMShQVUJMSUNBVElPTlJFTCwKKwkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1 bShvYmplY3Qub2JqZWN0SWQpKTsKKworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQor CQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcHVibGljYXRpb24gdGFi bGUgJXUiLAorCQkJCQkJIG9iamVjdC5vYmplY3RJZCk7CisKKwkJCQlwdWJyZWxmb3JtID0gKEZv cm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJCQlyZWxpZCA9IHB1YnJl bGZvcm0tPnBycmVsaWQ7CisKKwkJCQlhZGRvYmplY3QgPSBuZXdfb2JqdHJlZV9WQSgiQUREIFRB QkxFICV7dGFibGVuYW1lfUQiLCAxLAorCQkJCQkJCQkJCSAgICJ0YWJsZW5hbWUiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJCQkJCSAgIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlv blJlbGF0aW9uSWQsIHJlbGlkKSk7CisKKwkJCQljb2x1bW5saXN0ID0gZGVwYXJzZV9QdWJsaWNh dGlvblJlbGF0aW9uQ29sdW1uTGlzdCh0dXApOworCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGFk ZG9iamVjdCwgIiV7Y29sdW1uX2xpc3R9cyIsIGNvbHVtbmxpc3QpOworCisJCQkJd2hlcmVjbGF1 c2UgPSBkZXBhcnNlX1B1YmxpY2F0aW9uUmVsYXRpb25XaGVyZUNsYXVzZSh0dXApOworCQkJCWFw cGVuZF9vYmplY3Rfb2JqZWN0KGFkZG9iamVjdCwgIiV7d2hlcmVfY2xhdXNlfXMiLCB3aGVyZWNs YXVzZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCX0KIAkJCWJyZWFrOwogCi0J CWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCS8qIEFERCBUQUJMRVMgSU4gU0NIRU1BICov CisJCWNhc2UgUHVibGljYXRpb25OYW1lc3BhY2VSZWxhdGlvbklkOgogCQkJewotCQkJCUhlYXBU dXBsZQljb25zdHJ0dXA7Ci0JCQkJRm9ybV9wZ19jb25zdHJhaW50IGNvbnN0Zm9ybTsKKwkJCQlG b3JtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSBwdWJuc3Bmb3JtOworCQkJCUhlYXBUdXBsZQl0 dXA7CiAKLQkJCQljb25zdHJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELAotCQkJCQkJ CQkJCQlPYmplY3RJZEdldERhdHVtKGFkZHJlc3Mub2JqZWN0SWQpKTsKLQkJCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoY29uc3RydHVwKSkKLQkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIGNvbnN0cmFpbnQgd2l0aCBPSUQgJXUiLAotCQkJCQkJIGFkZHJlc3Mub2JqZWN0 SWQpOwotCQkJCWNvbnN0Zm9ybSA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25z dHJ0dXApOworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQVUJMSUNBVElPTk5BTUVTUEFDRSwK KwkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShvYmplY3Qub2JqZWN0SWQpKTsKIAotCQkJCXJl dCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBUQUJMRSAle29ubHl9cyAle2lkZW50aXR5fUQgUkVO QU1FIENPTlNUUkFJTlQgJXtvbGRuYW1lfUkgVE8gJXtuZXduYW1lfUkiLCA0LAotCQkJCQkJCQkJ Im9ubHkiLCAgT2JqVHlwZVN0cmluZywKLQkJCQkJCQkJCW5vZGUtPnJlbGF0aW9uLT5pbmggPyAi IiA6ICJPTkxZIiwKLQkJCQkJCQkJCSJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCi0JCQkJCQkJ CQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAotCQkJCQkJ CQkJCQkJCQkJCWNvbnN0Zm9ybS0+Y29ucmVsaWQpLAotCQkJCQkJCQkJIm9sZG5hbWUiLCBPYmpU eXBlU3RyaW5nLCBub2RlLT5zdWJuYW1lLAotCQkJCQkJCQkJIm5ld25hbWUiLCBPYmpUeXBlU3Ry aW5nLCBub2RlLT5uZXduYW1lKTsKLQkJCQlSZWxlYXNlU3lzQ2FjaGUoY29uc3RydHVwKTsKKwkJ CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHB1YmxpY2F0aW9uIHNjaGVtYSAldSIsCisJCQkJCQkgb2JqZWN0Lm9i amVjdElkKTsKKworCQkJCXB1Ym5zcGZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1lc3Bh Y2UpIEdFVFNUUlVDVCh0dXApOworCisJCQkJYWRkb2JqZWN0ID0gbmV3X29ianRyZWVfVkEoIkFE RCBUQUJMRVMgSU4gU0NIRU1BICV7c2NoZW1hfUkiLCAxLAorCQkJCQkJCQkJCSAgICJzY2hlbWEi LCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCSAgIGdldF9uYW1lc3BhY2VfbmFtZShwdWJuc3Bm b3JtLT5wbm5zcGlkKSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKIAkJCX0KIAkJCWJy ZWFrOwogCi0JCWNhc2UgT0JKRUNUX0NPTFVNTjoKLQkJCXJlbGF0aW9uID0gcmVsYXRpb25fb3Bl bihhZGRyZXNzLm9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOwotCQkJc2NoZW1hSWQgPSBSZWxh dGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7Ci0KLQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJB TFRFUiAle29ianR5cGV9cyIsIDEsCi0JCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcs Ci0JCQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZWxhdGlvblR5cGUsIGZhbHNlKSk7 CisJCS8qIFNFVCBvcHRpb24gKi8KKwkJY2FzZSBQdWJsaWNhdGlvblJlbGF0aW9uSWQ6CisJCQl7 CisJCQkJTGlzdAkgICAqb3B0aW9ubGlzdCA9IE5JTDsKKwkJCQlMaXN0Q2VsbCAgICpjZWxsOwog Ci0JCQkvKiBDb21wb3NpdGUgdHlwZXMgZG8gbm90IHN1cHBvcnQgSUYgRVhJU1RTICovCi0JCQlp ZiAobm9kZS0+cmVuYW1lVHlwZSA9PSBPQkpFQ1RfQ09MVU1OKQotCQkJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHJldCwgIiV7aWZfZXhpc3RzfXMiLAotCQkJCQkJCQkJICJpZl9leGlzdHMiLAotCQkJ CQkJCQkJIG5vZGUtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiKTsKLQkJCWlmICghbm9k ZS0+cmVsYXRpb24tPmluaCkKLQkJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle29ubHl9 cyIsCi0JCQkJCQkJCQkgIm9ubHkiLAotCQkJCQkJCQkJICJPTkxZIik7Ci0JCQlhcHBlbmRfb2Jq ZWN0X29iamVjdChyZXQsICIle2lkZW50aXR5fUQiLAotCQkJCQkJCQkgbmV3X29ianRyZWVfZm9y X3F1YWxuYW1lKHNjaGVtYUlkLAotCQkJCQkJCQkJCQkJCQkgIG5vZGUtPnJlbGF0aW9uLT5yZWxu YW1lKSk7Ci0JCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJSRU5BTUUgQ09MVU1OICV7Y29s bmFtZX1JIiwKLQkJCQkJCQkJICJjb2xuYW1lIiwgbm9kZS0+c3VibmFtZSk7CisJCQkJQXNzZXJ0 KG5vZGUtPm9wdGlvbnMgIT0gTklMKTsKIAotCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAi VE8gJXtuZXduYW1lfUkiLCAibmV3bmFtZSIsCi0JCQkJCQkJCSBub2RlLT5uZXduYW1lKTsKKwkJ CQlmb3JlYWNoKGNlbGwsIG5vZGUtPm9wdGlvbnMpCisJCQkJeworCQkJCQlPYmpUcmVlICAgICp0 bXBfb2JqOworCQkJCQlEZWZFbGVtICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7 CiAKLQkJCWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9BVFRSSUJVVEUpCi0JCQkJYXBw ZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtjYXNjYWRlfXMiLAotCQkJCQkJCQkJIG5ld19vYmp0 cmVlX1ZBKCJDQVNDQURFIiwgMSwKLQkJCQkJCQkJCQkJCQkicHJlc2VudCIsIE9ialR5cGVCb29s LAotCQkJCQkJCQkJCQkJCW5vZGUtPmJlaGF2aW9yID09IERST1BfQ0FTQ0FERSkpOworCQkJCQl0 bXBfb2JqID0gZGVwYXJzZV9EZWZFbGVtKG9wdCwgZmFsc2UpOworCQkJCQlvcHRpb25saXN0ID0g bGFwcGVuZChvcHRpb25saXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJfQog Ci0JCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQlzZXRv cHRpb24gPSBuZXdfb2JqdHJlZV9WQSgiU0VUICgle29wdGlvbnM6LCB9cykiLCAxLAorCQkJCQkJ CQkJCSAgICJvcHRpb25zIiwgT2JqVHlwZUFycmF5LAorCQkJCQkJCQkJCSAgIG9wdGlvbmxpc3Qp OworCQkJfQogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnN1cHBv cnRlZCBvYmplY3QgdHlwZSAlZCIsIG5vZGUtPnJlbmFtZVR5cGUpOworCQkJQXNzZXJ0KGZhbHNl KTsKKwkJCWJyZWFrOwogCX0KIAotCXJldHVybiByZXQ7CisJcHVibmFtZSA9IHBzdHJkdXAobm9k ZS0+cHVibmFtZSk7CisKKwlhbHRlcnB1YiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBQVUJMSUNB VElPTiAle2lkZW50aXR5fXMiLCAxLAorCQkJCQkJCSAgImlkZW50aXR5IiwgT2JqVHlwZVN0cmlu ZywgcHVibmFtZSk7CisKKwlBc3NlcnQoYWRkb2JqZWN0IHx8IHNldG9wdGlvbik7CisKKwlpZiAo YWRkb2JqZWN0KQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChhbHRlcnB1YiwgIiV7YWRkX29iamVj dH1zIiwgYWRkb2JqZWN0KTsKKwllbHNlCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGFsdGVycHVi LCAiJXtzZXRfb3B0aW9uc31zIiwgc2V0b3B0aW9uKTsKKworCXJldHVybiBhbHRlcnB1YjsKIH0K IAogLyoKLSAqIERlcGFyc2UgYSBBbHRlck9iamVjdERlcGVuZHNTdG10IChBTFRFUiAuLi4gREVQ RU5EUyBPTiAuLi4pLgorICogSGFuZGxlIGRlcGFyc2luZyBvZiBBTFRFUiBQVUJMSUNBVElPTiBE Uk9QIGNvbW1hbmRzLgogICoKICAqIFZlcmJvc2Ugc3ludGF4Ci0gKiBBTFRFUiBJTkRFWCAle2lk ZW50aXR5fUQgJXtub31zIERFUEVORFMgT04gRVhURU5TSU9OICV7bmV3bmFtZX1JCisgKiBBTFRF UiBQVUJMSUNBVElPTiAle2lkZW50aXR5fUkgJXtkcm9wX29iamVjdH1zCiAgKi8KLXN0YXRpYyBP YmpUcmVlICoKLWRlcGFyc2VfQWx0ZXJEZXBlbmRTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFy c2V0cmVlKQorY2hhciAqCitkZXBhcnNlX0FsdGVyUHVibGljYXRpb25Ecm9wU3RtdChTUUxEcm9w T2JqZWN0ICpvYmopCiB7Ci0JQWx0ZXJPYmplY3REZXBlbmRzU3RtdCAqbm9kZSA9IChBbHRlck9i amVjdERlcGVuZHNTdG10ICopIHBhcnNldHJlZTsKLQlPYmpUcmVlICAgICpyZXQgPSBOVUxMOwor CU9ialRyZWUJICAgKmFsdGVycHViOworCU9ialRyZWUJICAgKmRyb3Bfb2JqZWN0ID0gTlVMTDsK KwljaGFyCQlvYmpuYW1lW05BTUVEQVRBTEVOXTsKKwljaGFyCQlwdWJuYW1lW05BTUVEQVRBTEVO XTsKKwlKc29uYgkgICAqanNvbmI7CisJY2hhcgkgICAqY29tbWFuZDsKKwlTdHJpbmdJbmZvRGF0 YSBzdHI7CiAKLQlpZiAobm9kZS0+b2JqZWN0VHlwZSA9PSBPQkpFQ1RfSU5ERVgpCisJaWYgKHNz Y2FuZihvYmotPm9iamlkZW50aXR5LCAiJXMgaW4gcHVibGljYXRpb24gJXMiLCBvYmpuYW1lLCBw dWJuYW1lKSAhPSAyKQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IHBhcnNlIEFMVEVSIFBVQkxJ Q0FUSU9OIGNvbW1hbmQgXCIlc1wiIiwKKwkJCSBvYmotPm9iamlkZW50aXR5KTsKKworCXN3aXRj aCAoZ2V0T2JqZWN0Q2xhc3MoJm9iai0+YWRkcmVzcykpCiAJewotCQlPYmpUcmVlICAgICpxdWFs aWZpZWQ7Ci0JCVJlbGF0aW9uCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihvYmplY3RJZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKwkJLyogRFJPUCBUQUJMRSAqLworCQljYXNlIE9DTEFTU19QVUJMSUNB VElPTl9SRUw6CisJCQlkcm9wX29iamVjdCA9IG5ld19vYmp0cmVlX1ZBKCJEUk9QIFRBQkxFICV7 dGFibGVuYW1lfXMiLCAxLAorCQkJCQkJCQkJCSAidGFibGVuYW1lIiwgT2JqVHlwZVN0cmluZywg b2JqbmFtZSk7CisJCQlicmVhazsKIAotCQlxdWFsaWZpZWQgPSBuZXdfb2JqdHJlZV9mb3JfcXVh bG5hbWUocmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAotCQkJCQkJCQkJCQkgbm9kZS0+ cmVsYXRpb24tPnJlbG5hbWUpOwotCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hh cmVMb2NrKTsKKwkJLyogRFJPUCBUQUJMRVMgSU4gU0NIRU1BICovCisJCWNhc2UgT0NMQVNTX1BV QkxJQ0FUSU9OX05BTUVTUEFDRToKKwkJCWRyb3Bfb2JqZWN0ID0gbmV3X29ianRyZWVfVkEoIkRS T1AgVEFCTEVTIElOIFNDSEVNQSAle3NjaGVtYW5hbWV9cyIsIDEsCisJCQkJCQkJCQkJICJzY2hl bWFuYW1lIiwgT2JqVHlwZVN0cmluZywgb2JqbmFtZSk7CisJCQlicmVhazsKIAotCQlyZXQgPSBu ZXdfb2JqdHJlZV9WQSgiQUxURVIgSU5ERVggJXtpZGVudGl0eX1EICV7bm99cyBERVBFTkRTIE9O IEVYVEVOU0lPTiAle25ld25hbWV9SSIsIDMsCi0JCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVP YmplY3QsIHF1YWxpZmllZCwKLQkJCQkJCQkgIm5vIiwgT2JqVHlwZVN0cmluZywKLQkJCQkJCQkg bm9kZS0+cmVtb3ZlID8gIk5PIiA6ICIiLAotCQkJCQkJCSAibmV3bmFtZSIsIE9ialR5cGVTdHJp bmcsIHN0clZhbChub2RlLT5leHRuYW1lKSk7CisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2Up OworCQkJYnJlYWs7CiAJfQotCWVsc2UKLQkJZWxvZyhMT0csICJ1bnJlY29nbml6ZWQgbm9kZSB0 eXBlIGluIGRlcGFyc2UgY29tbWFuZDogJWQiLAotCQkJIChpbnQpIG5vZGVUYWcocGFyc2V0cmVl KSk7CiAKLQlyZXR1cm4gcmV0OworCWFsdGVycHViID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFBV QkxJQ0FUSU9OICV7aWRlbnRpdHl9cyIsIDEsCisJCQkJCQkJICAiaWRlbnRpdHkiLCBPYmpUeXBl U3RyaW5nLCBwdWJuYW1lKTsKKworCUFzc2VydChkcm9wX29iamVjdCk7CisKKwlhcHBlbmRfb2Jq ZWN0X29iamVjdChhbHRlcnB1YiwgIiV7ZHJvcF9vYmplY3R9cyIsIGRyb3Bfb2JqZWN0KTsKKwor CWluaXRTdHJpbmdJbmZvKCZzdHIpOworCWpzb25iID0gb2JqdHJlZV90b19qc29uYihhbHRlcnB1 YiwgTlVMTCAvKiBPd25lci9yb2xlIGNhbiBiZSBza2lwcGVkIGZvciBkcm9wIGNvbW1hbmQgKi8p OworCWNvbW1hbmQgPSBKc29uYlRvQ1N0cmluZygmc3RyLCAmanNvbmItPnJvb3QsIEpTT05CX0VT VElNQVRFRF9MRU4pOworCisJcmV0dXJuIGNvbW1hbmQ7CiB9CiAKIC8qCkBAIC0zNjY2LDYgKzk4 OTYsNDAgQEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJv b2wgKmluY2x1ZGVfb3duZXIpCiAJLyogVGhpcyBzd2l0Y2ggbmVlZHMgdG8gaGFuZGxlIGV2ZXJ5 dGhpbmcgdGhhdCBQcm9jZXNzVXRpbGl0eVNsb3cgZG9lcyAqLwogCXN3aXRjaCAobm9kZVRhZyhw YXJzZXRyZWUpKQogCXsKKwkJY2FzZSBUX0FsdGVyQ29sbGF0aW9uU3RtdDoKKwkJCSppbmNsdWRl X293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckNvbGxhdGlvbihvYmplY3RJ ZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJEb21haW5TdG10OgorCQkJKmluY2x1ZGVf b3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyRG9tYWluU3RtdChvYmplY3RJ ZCwgcGFyc2V0cmVlLAorCQkJCQkJCQkJCSAgIGNtZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2JqZWN0 KTsKKworCQljYXNlIFRfQWx0ZXJFbnVtU3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7 CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckVudW1TdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOwor CisJCWNhc2UgVF9BbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdDoKKwkJCSppbmNsdWRlX293bmVy ID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdChv YmplY3RJZCwgcGFyc2V0cmVlLAorCQkJCQkJCQkJCQkJCSAgY21kLT5kLnNpbXBsZS5zZWNvbmRh cnlPYmplY3QpOworCisJCWNhc2UgVF9BbHRlckV4dGVuc2lvblN0bXQ6CisJCQkqaW5jbHVkZV9v d25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJFeHRlbnNpb25TdG10KG9iamVj dElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9BbHRlckZkd1N0bXQ6CisJCQkqaW5jbHVkZV9v d25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJGZHdTdG10KG9iamVjdElkLCBw YXJzZXRyZWUpOworCisJCWNhc2UgVF9BbHRlckZvcmVpZ25TZXJ2ZXJTdG10OgorCQkJKmluY2x1 ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyRm9yZWlnblNlcnZlclN0 bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0FsdGVyRnVuY3Rpb25TdG10Ogor CQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyRnVuY3Rp b24ob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKIAkJY2FzZSBUX0FsdGVyT2JqZWN0RGVwZW5kc1N0 bXQ6CiAJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOwogCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJE ZXBlbmRTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOwpAQCAtMzY3NiwyMCArOTk0MCwxMzggQEAg ZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgKmluY2x1 ZGVfb3duZXIpCiAJCQkJCQkJCQkJCQkgcGFyc2V0cmVlLAogCQkJCQkJCQkJCQkJIGNtZC0+ZC5z aW1wbGUuc2Vjb25kYXJ5T2JqZWN0KTsKIAorCQljYXNlIFRfQWx0ZXJPcGVyYXRvclN0bXQ6CisJ CQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJPcGVyYXRv clN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKIAkJY2FzZSBUX0FsdGVyT3duZXJTdG10Ogog CQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCXJldHVybiBkZXBhcnNlX0FsdGVyT3duZXJT dG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywgcGFyc2V0cmVlKTsKIAorCQljYXNlIFRfQWx0ZXJQ b2xpY3lTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNl X0FsdGVyUG9saWN5U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJT ZXFTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0Fs dGVyU2VxU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJTdGF0c1N0 bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJT dGF0c1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0FsdGVyVFNEaWN0aW9u YXJ5U3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9B bHRlclRTRGljdGlvbmFyeVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0Fs dGVyVHlwZVN0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFy c2VfQWx0ZXJUeXBlU2V0U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0 ZXJVc2VyTWFwcGluZ1N0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJu IGRlcGFyc2VfQWx0ZXJVc2VyTWFwcGluZ1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJ Y2FzZSBUX0NvbW1lbnRTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVy biBkZXBhcnNlX0NvbW1lbnRTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywgcGFyc2V0cmVlKTsK KworCQljYXNlIFRfQ29tcG9zaXRlVHlwZVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9Db21wb3Np dGVUeXBlU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlQW1TdG10 OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlQW1TdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOwor CisJCWNhc2UgVF9DcmVhdGVDYXN0U3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZUNhc3RT dG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVDb252ZXJzaW9uU3Rt dDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZUNvbnZlcnNpb24ob2JqZWN0SWQsIHBhcnNldHJl ZSk7CisKKwkJY2FzZSBUX0NyZWF0ZURvbWFpblN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVh dGVEb21haW4ob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZUVudW1TdG10 OgkvKiBDUkVBVEUgVFlQRSBBUyBFTlVNICovCisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVFbnVt U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlRXh0ZW5zaW9uU3Rt dDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZUV4dGVuc2lvblN0bXQob2JqZWN0SWQsIHBhcnNl dHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZUZkd1N0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVh dGVGZHdTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVGb3JlaWdu U2VydmVyU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10KG9i amVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVGdW5jdGlvblN0bXQ6CisJCQly ZXR1cm4gZGVwYXJzZV9DcmVhdGVGdW5jdGlvbihvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQlj YXNlIFRfQ3JlYXRlT3BGYW1pbHlTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlT3BGYW1p bHkob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVBMYW5nU3RtdDoKKwkJ CXJldHVybiBkZXBhcnNlX0NyZWF0ZUxhbmdTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJ CWNhc2UgVF9DcmVhdGVQb2xpY3lTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlUG9saWN5 U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlUmFuZ2VTdG10OiAv KiBDUkVBVEUgVFlQRSBBUyBSQU5HRSAqLworCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlUmFuZ2VT dG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVTY2hlbWFTdG10Ogor CQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU2NoZW1hU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsK KworCQljYXNlIFRfQ3JlYXRlU2VxU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVNlcVN0 bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVN0YXRzU3RtdDoKKwkJ CXJldHVybiBkZXBhcnNlX0NyZWF0ZVN0YXRpc3RpY3NTdG10KG9iamVjdElkLCBwYXJzZXRyZWUp OworCiAJCWNhc2UgVF9DcmVhdGVTdG10OgogCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU3RtdChv YmplY3RJZCwgcGFyc2V0cmVlKTsKIAorCQljYXNlIFRfQ3JlYXRlRm9yZWlnblRhYmxlU3RtdDoK KwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZUZvcmVpZ25UYWJsZVN0bXQob2JqZWN0SWQsIHBhcnNl dHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVRhYmxlQXNTdG10OgkvKiBDUkVBVEUgTUFURVJJQUxJ WkVEIFZJRVcgKi8KKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVRhYmxlQXNTdG10X3ZhbmlsbGEo b2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVRyYW5zZm9ybVN0bXQ6CisJ CQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVUcmFuc2Zvcm1TdG10KG9iamVjdElkLCBwYXJzZXRyZWUp OworCisJCWNhc2UgVF9DcmVhdGVUcmlnU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVRy aWdTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVVc2VyTWFwcGlu Z1N0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVVc2VyTWFwcGluZ1N0bXQob2JqZWN0SWQs IHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0RlZmluZVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9E ZWZpbmVTdG10KG9iamVjdElkLCBwYXJzZXRyZWUsCisJCQkJCQkJCQkgIGNtZC0+ZC5zaW1wbGUu c2Vjb25kYXJ5T2JqZWN0KTsKKwogCQljYXNlIFRfSW5kZXhTdG10OgogCQkJcmV0dXJuIGRlcGFy c2VfSW5kZXhTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOwogCisJCWNhc2UgVF9SZWZyZXNoTWF0 Vmlld1N0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2Vf UmVmcmVzaE1hdFZpZXdTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCiAJCWNhc2UgVF9SZW5h bWVTdG10OgogCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCXJldHVybiBkZXBhcnNlX1Jl bmFtZVN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUpOwogCisJCWNhc2UgVF9S dWxlU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX1J1bGVTdG10KG9iamVjdElkLCBwYXJzZXRyZWUp OworCisJCWNhc2UgVF9WaWV3U3RtdDoJCS8qIENSRUFURSBWSUVXICovCisJCQlyZXR1cm4gZGVw YXJzZV9WaWV3U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlUHVi bGljYXRpb25TdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlUHVibGljYXRpb25TdG10KG9i amVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9BbHRlclB1YmxpY2F0aW9uU3RtdDoKKwkJ CXJldHVybiBkZXBhcnNlX0FsdGVyUHVibGljYXRpb25BZGRTdG10KGNtZC0+ZC5zaW1wbGUuYWRk cmVzcywgcGFyc2V0cmVlKTsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhMT0csICJ1bnJlY29nbml6 ZWQgbm9kZSB0eXBlIGluIGRlcGFyc2UgY29tbWFuZDogJWQiLAogCQkJCSAoaW50KSBub2RlVGFn KHBhcnNldHJlZSkpOwpAQCAtMzc1NSw5ICsxMDEzNywzMiBAQCBkZXBhcnNlX3V0aWxpdHlfY29t bWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgaW5jbHVkZV9vd25lciwgYm9vbCB2ZXJi b3NlXwogCQkJdHJlZSA9IGRlcGFyc2VfQWx0ZXJSZWxhdGlvbihjbWQpOwogCQkJaW5jbHVkZV9v d25lciA9IGZhbHNlOwogCQkJYnJlYWs7CisJCWNhc2UgU0NUX0dyYW50OgorCQkJdHJlZSA9IGRl cGFyc2VfR3JhbnRTdG10KGNtZCk7CisJCQlpbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlicmVh azsKIAkJY2FzZSBTQ1RfQ3JlYXRlVGFibGVBczoKIAkJCXRyZWUgPSBkZXBhcnNlX0NyZWF0ZVRh YmxlQXNTdG10KGNtZCk7CiAJCQlicmVhazsKKwkJY2FzZSBTQ1RfQWx0ZXJPcEZhbWlseToKKwkJ CWluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXRyZWUgPSBkZXBhcnNlX0FsdGVyT3BGYW1pbHko Y21kKTsKKwkJCWJyZWFrOworCQljYXNlIFNDVF9DcmVhdGVPcENsYXNzOgorCQkJdHJlZSA9IGRl cGFyc2VfQ3JlYXRlT3BDbGFzc1N0bXQoY21kKTsKKwkJCWJyZWFrOworCQljYXNlIFNDVF9BbHRl ckRlZmF1bHRQcml2aWxlZ2VzOgorCQkJaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJdHJlZSA9 IGRlcGFyc2VfQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoY21kKTsKKwkJCWJyZWFrOworCQlj YXNlIFNDVF9BbHRlclRTQ29uZmlnOgorCQkJaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJdHJl ZSA9IGRlcGFyc2VfQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10KGNtZCk7CisJCQlicmVhazsKKwkJ Y2FzZSBTQ1RfU2VjdXJpdHlMYWJlbDoKKwkJCWluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXRy ZWUgPSBkZXBhcnNlX1NlY0xhYmVsU3RtdChjbWQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkZXBhcnNlIG5vZGUgdHlwZSAlZCIsIGNtZC0+dHlw ZSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IDM4YzExZjAwMGMu LjFiNzUwMDNiNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKQEAgLTIwNzQs NiArMjA3NCwzNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJEZWZQcml2cyhBbHRlckRlZmF1 bHRQcml2aWxlZ2VzU3RtdCAqc3RtdCkKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsK IH0KIAorLyoKKyAqIEV2ZW50VHJpZ2dlckNvbGxlY3RTZWNMYWJlbAorICoJCVNhdmUgZGF0YSBh Ym91dCBhbiBTRUNVUklUWSBMQUJFTCBjb21tYW5kIGJlaW5nIGV4ZWN1dGVkCisgKi8KK3ZvaWQK K0V2ZW50VHJpZ2dlckNvbGxlY3RTZWNMYWJlbChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIGNoYXIg KnByb3ZpZGVyLAorCQkJCQkJCVNlY0xhYmVsU3RtdCAqc3RtdCkKK3sKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKKwlDb2xsZWN0ZWRDb21tYW5kICpjb21tYW5kOworCisJLyogaWdub3JlIGlmIGV2 ZW50IHRyaWdnZXIgY29udGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICovCisJ aWYgKCFjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0 YXRlLT5jb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJb2xkY3h0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3h0KTsKKwor CWNvbW1hbmQgPSBwYWxsb2MwKHNpemVvZihDb2xsZWN0ZWRDb21tYW5kKSk7CisJY29tbWFuZC0+ dHlwZSA9IFNDVF9TZWN1cml0eUxhYmVsOworCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0 aW5nX2V4dGVuc2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNl cklkKCksIGZhbHNlKTsKKwljb21tYW5kLT5kLnNlY2xhYmVsLmFkZHJlc3MgPSBhZGRyZXNzOwor CWNvbW1hbmQtPmQuc2VjbGFiZWwucHJvdmlkZXIgPSBwcm92aWRlcjsKKwljb21tYW5kLT5wYXJz ZXRyZWUgPSAoTm9kZSAqKSBjb3B5T2JqZWN0KHN0bXQpOworCisJY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlLT5jb21tYW5kTGlzdCA9CisJCWxhcHBlbmQoY3VycmVudEV2ZW50VHJpZ2dlclN0YXRl LT5jb21tYW5kTGlzdCwgY29tbWFuZCk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7 Cit9CisKIC8qCiAgKiBJbiBhIGRkbF9jb21tYW5kX2VuZCBldmVudCB0cmlnZ2VyLCB0aGlzIGZ1 bmN0aW9uIHJlcG9ydHMgdGhlIERETCBjb21tYW5kcwogICogYmVpbmcgcnVuLgpAQCAtMjEyNSw2 ICsyMTU2LDcgQEAgcGdfZXZlbnRfdHJpZ2dlcl9kZGxfY29tbWFuZHMoUEdfRlVOQ1RJT05fQVJH UykKIAkJCWNhc2UgU0NUX0FsdGVyT3BGYW1pbHk6CiAJCQljYXNlIFNDVF9DcmVhdGVPcENsYXNz OgogCQkJY2FzZSBTQ1RfQWx0ZXJUU0NvbmZpZzoKKwkJCWNhc2UgU0NUX1NlY3VyaXR5TGFiZWw6 CiAJCQljYXNlIFNDVF9DcmVhdGVUYWJsZUFzOgogCQkJCXsKIAkJCQkJY2hhcgkgICAqaWRlbnRp dHk7CkBAIC0yMTQzLDYgKzIxNzUsOCBAQCBwZ19ldmVudF90cmlnZ2VyX2RkbF9jb21tYW5kcyhQ R19GVU5DVElPTl9BUkdTKQogCQkJCQkJYWRkciA9IGNtZC0+ZC5jcmVhdGVvcGMuYWRkcmVzczsK IAkJCQkJZWxzZSBpZiAoY21kLT50eXBlID09IFNDVF9BbHRlclRTQ29uZmlnKQogCQkJCQkJYWRk ciA9IGNtZC0+ZC5hdHNjZmcuYWRkcmVzczsKKwkJCQkJZWxzZSBpZiAoY21kLT50eXBlID09IFND VF9TZWN1cml0eUxhYmVsKQorCQkJCQkJYWRkciA9IGNtZC0+ZC5zZWNsYWJlbC5hZGRyZXNzOwog CQkJCQllbHNlIGlmIChjbWQtPnR5cGUgPT0gU0NUX0NyZWF0ZVRhYmxlQXMpCiAJCQkJCQlhZGRy ID0gY21kLT5kLmN0YXMuYWRkcmVzczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuYwppbmRleCBlM2FhZDFjODgzLi5hOGE5MTc1ZDE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYwpAQCAtMTA0LDYgKzEwNCw3IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29w dGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXB1YmFjdGlvbnMtPnB1YnRydW5jYXRlID0gdHJ1 ZTsKIAlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAlwdWJhY3Rpb25zLT5wdWJk ZGxfaW5kZXggPSBmYWxzZTsKKwlwdWJhY3Rpb25zLT5wdWJkZGxfYWxsID0gZmFsc2U7CiAJKnB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2U7CiAKIAkvKiBQYXJzZSBvcHRpb25zICov CkBAIC0xODAsNiArMTgxLDcgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkgKi8KIAkJCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJsZSA9IGZhbHNlOwog CQkJcHViYWN0aW9ucy0+cHViZGRsX2luZGV4ID0gZmFsc2U7CisJCQlwdWJhY3Rpb25zLT5wdWJk ZGxfYWxsID0gZmFsc2U7CiAKIAkJCSpkZGxfdHlwZV9naXZlbiA9IHRydWU7CiAJCQlkZGxfbGV2 ZWwgPSBkZWZHZXRTdHJpbmcoZGVmZWwpOwpAQCAtMTk0LDcgKzE5Niw5IEBAIHBhcnNlX3B1Ymxp Y2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJewogCQkJCWNoYXIJICAgKnB1 Ymxpc2hfb3B0ID0gKGNoYXIgKikgbGZpcnN0KGxjMyk7CiAKLQkJCQlpZiAoc3RyY21wKHB1Ymxp c2hfb3B0LCAidGFibGUiKSA9PSAwKQorCQkJCWlmIChzdHJjbXAocHVibGlzaF9vcHQsICJhbGwi KSA9PSAwKQorCQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfYWxsID0gdHJ1ZTsKKwkJCQllbHNlIGlm IChzdHJjbXAocHVibGlzaF9vcHQsICJ0YWJsZSIpID09IDApCiAJCQkJCXB1YmFjdGlvbnMtPnB1 YmRkbF90YWJsZSA9IHRydWU7CiAJCQkJZWxzZSBpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAiaW5k ZXgiKSA9PSAwKQogCQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfaW5kZXggPSB0cnVlOwpAQCAtODQ3 LDI4ICs4NTEsMzkgQEAgQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcnMoUHVibGljYXRpb25B Y3Rpb25zIHB1YmFjdGlvbnMsIE9pZCBwdWJvaWQpCiAJTGlzdAkgICAqaW5pdF9jb21tYW5kcyA9 IE5JTDsKIAlMaXN0CSAgICplbmRfY29tbWFuZHMgPSBOSUw7CiAKLQlpZiAocHViYWN0aW9ucy5w dWJkZGxfdGFibGUpCisJaWYgKHB1YmFjdGlvbnMucHViZGRsX2FsbCkKIAl7Ci0JCXN0YXJ0X2Nv bW1hbmRzID0gbGFwcGVuZF9pbnQoc3RhcnRfY29tbWFuZHMsIENNRFRBR19EUk9QX1RBQkxFKTsK KwkJc3RhcnRfY29tbWFuZHMgPSBlbmRfY29tbWFuZHMgPSBpbml0X2NvbW1hbmRzID0KKwkJR2V0 Q29tbWFuZFRhZ3NGb3JERExSZXBsKCk7CisKIAkJcmV3cml0ZV9jb21tYW5kcyA9IGxhcHBlbmRf aW50KHJld3JpdGVfY29tbWFuZHMsIENNRFRBR19BTFRFUl9UQUJMRSk7CisJfQorCWVsc2UKKwl7 CisJCWlmIChwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJeworCQkJc3RhcnRfY29tbWFuZHMg PSBsYXBwZW5kX2ludChzdGFydF9jb21tYW5kcywgQ01EVEFHX0RST1BfVEFCTEUpOworCQkJcmV3 cml0ZV9jb21tYW5kcyA9IGxhcHBlbmRfaW50KHJld3JpdGVfY29tbWFuZHMsIENNRFRBR19BTFRF Ul9UQUJMRSk7CiAKLQkJaW5pdF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGluaXRfY29tbWFuZHMs IENNRFRBR19DUkVBVEVfVEFCTEVfQVMpOwotCQlpbml0X2NvbW1hbmRzID0gbGFwcGVuZF9pbnQo aW5pdF9jb21tYW5kcywgQ01EVEFHX1NFTEVDVF9JTlRPKTsKKwkJCWluaXRfY29tbWFuZHMgPSBs YXBwZW5kX2ludChpbml0X2NvbW1hbmRzLCBDTURUQUdfQ1JFQVRFX1RBQkxFX0FTKTsKKwkJCWlu aXRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChpbml0X2NvbW1hbmRzLCBDTURUQUdfU0VMRUNUX0lO VE8pOwogCi0JCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFH X0NSRUFURV9UQUJMRSk7Ci0JCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5k cywgQ01EVEFHX0FMVEVSX1RBQkxFKTsKLQkJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5k X2NvbW1hbmRzLCBDTURUQUdfRFJPUF9UQUJMRSk7Ci0JfQorCQkJZW5kX2NvbW1hbmRzID0gbGFw cGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfQ1JFQVRFX1RBQkxFKTsKKwkJCWVuZF9jb21t YW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0FMVEVSX1RBQkxFKTsKKwkJ CWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0RST1BfVEFC TEUpOworCQl9CiAKLQlpZiAocHViYWN0aW9ucy5wdWJkZGxfaW5kZXgpCi0JewotCQlzdGFydF9j b21tYW5kcyA9IGxhcHBlbmRfaW50KHN0YXJ0X2NvbW1hbmRzLCBDTURUQUdfRFJPUF9JTkRFWCk7 CisJCWlmIChwdWJhY3Rpb25zLnB1YmRkbF9pbmRleCkKKwkJeworCQkJc3RhcnRfY29tbWFuZHMg PSBsYXBwZW5kX2ludChzdGFydF9jb21tYW5kcywgQ01EVEFHX0RST1BfSU5ERVgpOwogCi0JCWVu ZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0NSRUFURV9JTkRF WCk7Ci0JCWVuZF9jb21tYW5kcyA9IGxhcHBlbmRfaW50KGVuZF9jb21tYW5kcywgQ01EVEFHX0FM VEVSX0lOREVYKTsKLQkJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBD TURUQUdfRFJPUF9JTkRFWCk7CisJCQllbmRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChlbmRfY29t bWFuZHMsIENNRFRBR19DUkVBVEVfSU5ERVgpOworCQkJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9p bnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfQUxURVJfSU5ERVgpOworCQkJZW5kX2NvbW1hbmRzID0g bGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfRFJPUF9JTkRFWCk7CisJCX0KIAl9CiAK KwogCS8qIENyZWF0ZSB0aGUgZGRsX2NvbW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIgKi8KIAlpZiAo ZW5kX2NvbW1hbmRzICE9IE5JTCkKIAkJQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcihQVUJf VFJJR19FVkVOVDEsIGVuZF9jb21tYW5kcywgcHVib2lkKTsKQEAgLTEwMDcsNiArMTAyMiw4IEBA IENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25T dG10ICpzdG10KQogCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSk7CiAJdmFs dWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX2luZGV4IC0gMV0gPQogCUJvb2xHZXREYXR1 bShwdWJhY3Rpb25zLnB1YmRkbF9pbmRleCk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25f cHViZGRsX2FsbCAtIDFdID0KKwkJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX2FsbCk7 CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0KIAkJQm9vbEdl dERhdHVtKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIApAQCAtMTIwMyw3ICsxMjIwLDkg QEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwKIAkJfQogCX0KIAotCWlmIChkZGxfdHlwZV9naXZlbiAmJiAocHVi YWN0aW9ucy5wdWJkZGxfdGFibGUgfHwgcHViYWN0aW9ucy5wdWJkZGxfaW5kZXgpKQorCWlmIChk ZGxfdHlwZV9naXZlbiAmJgorCQkocHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfHwgcHViYWN0aW9u cy5wdWJkZGxfaW5kZXggfHwKKwkJcHViYWN0aW9ucy5wdWJkZGxfYWxsKSkKIAl7CiAJCWlmIChy b290X3JlbGlkcyA9PSBOSUwpCiAJCQlyb290X3JlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRp b25zKHB1YmZvcm0tPm9pZCwKQEAgLTEyMzksNyArMTI1OCw4IEBAIEFsdGVyUHVibGljYXRpb25P cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJ ewogCQkvKiBSZWNyZWF0ZSB0aGUgZXZlbnQgdHJpZ2dlcnMgaWYgdGhlIGRkbCBvcHRpb24gaXMg Y2hhbmdlZC4gKi8KIAkJaWYgKHB1YmZvcm0tPnB1YmRkbF90YWJsZSAhPSBwdWJhY3Rpb25zLnB1 YmRkbF90YWJsZSB8fAotCQkJcHViZm9ybS0+cHViZGRsX2luZGV4ICE9IHB1YmFjdGlvbnMucHVi ZGRsX2luZGV4KQorCQkJcHViZm9ybS0+cHViZGRsX2luZGV4ICE9IHB1YmFjdGlvbnMucHViZGRs X2luZGV4IHx8CisJCQlwdWJmb3JtLT5wdWJkZGxfYWxsICE9IHB1YmFjdGlvbnMucHViZGRsX2Fs bCkKIAkJewogCQkJRHJvcERETFJlcGxpY2FFdmVudFRyaWdnZXJzKHB1YmZvcm0tPm9pZCk7CiAJ CQlDcmVhdGVERExSZXBsaWNhRXZlbnRUcmlnZ2VycyhwdWJhY3Rpb25zLCBwdWJmb3JtLT5vaWQp OwpAQCAtMTI1MCw2ICsxMjcwLDkgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAogCQl2YWx1ZXNbQW51bV9w Z19wdWJsaWNhdGlvbl9wdWJkZGxfaW5kZXggLSAxXSA9IEJvb2xHZXREYXR1bShwdWJhY3Rpb25z LnB1YmRkbF9pbmRleCk7CiAJCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX2lu ZGV4IC0gMV0gPSB0cnVlOworCisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF9h bGwgLSAxXSA9IEJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YmRkbF9hbGwpOworCQlyZXBsYWNl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF9hbGwgLSAxXSA9IHRydWU7CiAJfQogCiAJaWYg KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuKQpAQCAtMTM1Nyw3ICsxMzgwLDggQEAg QWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1 cGxlIHR1cCwKIAogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykKIAl7Ci0JCWlm IChwdWJmb3JtLT5wdWJkZGxfdGFibGUgfHwgcHViZm9ybS0+cHViZGRsX2luZGV4KQorCQlpZiAo cHViZm9ybS0+cHViZGRsX3RhYmxlIHx8IHB1YmZvcm0tPnB1YmRkbF9pbmRleCB8fAorCQkJcHVi Zm9ybS0+cHViZGRsX2FsbCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCWVycm1zZygiY2Fubm90IGFkZCB0YWJs ZSB0byBwdWJsaWNhdGlvbiBcIiVzXCIgaWYgRERMIHJlcGxpY2F0aW9uIGlzIGVuYWJsZWQiLApA QCAtMTM4MSw3ICsxNDA1LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsK IAkJTGlzdENlbGwgICAqb2xkbGM7CiAKLQkJaWYgKHB1YmZvcm0tPnB1YmRkbF90YWJsZSB8fCBw dWJmb3JtLT5wdWJkZGxfaW5kZXgpCisJCWlmIChwdWJmb3JtLT5wdWJkZGxfdGFibGUgfHwgcHVi Zm9ybS0+cHViZGRsX2luZGV4IHx8CisJCQlwdWJmb3JtLT5wdWJkZGxfYWxsKQogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK IAkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBpZiBE REwgcmVwbGljYXRpb24gaXMgZW5hYmxlZCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwppbmRleCA3 ZmYxNmUzMjc2Li43ZWU1NGNkZThlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9z ZWNsYWJlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKQEAgLTE4LDYg KzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc2hzZWNsYWJlbC5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNs YWJlbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCkBAIC0yMTMsNiArMjE0LDExIEBAIEV4ZWNTZWNMYWJlbFN0bXQoU2VjTGFiZWxTdG10ICpz dG10KQogCWlmIChyZWxhdGlvbiAhPSBOVUxMKQogCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwg Tm9Mb2NrKTsKIAorCS8qIFBhc3MgdGhlIGluZm8gdG8gZXZlbnQgdHJpZ2dlcnMgYWJvdXQgdGhl IFNFQ1VSSVRZIExBQkVMLiAqLworCWlmIChFdmVudFRyaWdnZXJTdXBwb3J0c09iamVjdFR5cGUo c3RtdC0+b2JqdHlwZSkpCisJCUV2ZW50VHJpZ2dlckNvbGxlY3RTZWNMYWJlbChhZGRyZXNzLCBw c3RyZHVwKHByb3ZpZGVyLT5wcm92aWRlcl9uYW1lKSwKKwkJCQkJCQkJCXN0bXQpOworCiAJcmV0 dXJuIGFkZHJlc3M7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGRsdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0 cmlnZ2VyLmMKaW5kZXggMTFlMzNiOWI2NS4uODZjNTIwYmExMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKQEAgLTIyNiwyMSArMjI2LDEwMyBAQCBw dWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9jb21tYW5kX2VuZChQR19GVU5DVElPTl9BUkdTKQogCQlF dmVudFRyaWdnZXJEYXRhICp0cmlnZGF0YTsKIAkJY2hhcgkgICAqY29tbWFuZDsKIAkJRGVwYXJz ZWRDb21tYW5kVHlwZSBjbWR0eXBlOworCQljb25zdCBjaGFyICp0bXB0eXBlOworCQlPYmplY3RD bGFzcwlvYmpjbGFzczsKKwkJT2JqZWN0QWRkcmVzcyBvYmphZGRyOwogCiAJCXRyaWdkYXRhID0g KEV2ZW50VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OwogCQlzdG10ID0gKERyb3BTdG10 ICopIHRyaWdkYXRhLT5wYXJzZXRyZWU7CiAKIAkJb2JqID0gc2xpc3RfY29udGFpbmVyKFNRTERy b3BPYmplY3QsIG5leHQsIGl0ZXIuY3VyKTsKKwkJb2JqYWRkciA9IG9iai0+YWRkcmVzczsKKwkJ b2JqY2xhc3MgPSBnZXRPYmplY3RDbGFzcygmb2JqYWRkcik7CiAKIAkJaWYgKHN0cmNtcChvYmot Pm9iamVjdHR5cGUsICJ0YWJsZSIpID09IDApCiAJCQljbWR0eXBlID0gRENUX1RhYmxlRHJvcEVu ZDsKLQkJZWxzZSBpZiAoc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgImluZGV4IikgPT0gMCkKKwkJ ZWxzZSBpZiAob2JqY2xhc3MgPT0gT0NMQVNTX1NDSEVNQSB8fAorCQkJCSBvYmpjbGFzcyA9PSBP Q0xBU1NfT1BFUkFUT1IgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX09QQ0xBU1MgfHwKKwkJ CQkgb2JqY2xhc3MgPT0gT0NMQVNTX09QRkFNSUxZIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFT U19DQVNUIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19UWVBFIHx8CisJCQkJIG9iamNsYXNz ID09IE9DTEFTU19UUklHR0VSIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19DT05WRVJTSU9O IHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19QT0xJQ1kgfHwKKwkJCQkgb2JqY2xhc3MgPT0g T0NMQVNTX1JFV1JJVEUgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX0VYVEVOU0lPTiB8fAor CQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfRkRXIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19U U0NPTkZJRyB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFNESUNUIHx8CisJCQkJIG9iamNs YXNzID09IE9DTEFTU19UU1RFTVBMQVRFIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19UU1BB UlNFUiB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFJBTlNGT1JNIHx8CisJCQkJIG9iamNs YXNzID09IE9DTEFTU19GT1JFSUdOX1NFUlZFUiB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1Nf Q09MTEFUSU9OIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19VU0VSX01BUFBJTkcgfHwKKwkJ CQkgb2JqY2xhc3MgPT0gT0NMQVNTX0xBTkdVQUdFIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFT U19TVEFUSVNUSUNfRVhUIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19BTSB8fAorCQkJCSBv YmpjbGFzcyA9PSBPQ0xBU1NfUFVCTElDQVRJT04gfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNT X1BVQkxJQ0FUSU9OX1JFTCB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfUFVCTElDQVRJT05f TkFNRVNQQUNFIHx8CisJCQkJIHN0cmNtcChvYmotPm9iamVjdHR5cGUsICJmb3JlaWduIHRhYmxl IikgPT0gMCB8fAorCQkJCSBzdHJjbXAob2JqLT5vYmplY3R0eXBlLCAiaW5kZXgiKSA9PSAwIHx8 CisJCQkJIHN0cmNtcChvYmotPm9iamVjdHR5cGUsICJzZXF1ZW5jZSIpID09IDAgfHwKKwkJCQkg c3RyY21wKG9iai0+b2JqZWN0dHlwZSwgInZpZXciKSA9PSAwIHx8CisJCQkJIHN0cmNtcChvYmot Pm9iamVjdHR5cGUsICJmdW5jdGlvbiIpID09IDAgfHwKKwkJCQkgc3RyY21wKG9iai0+b2JqZWN0 dHlwZSwgIm1hdGVyaWFsaXplZCB2aWV3IikgPT0gMCB8fAorCQkJCSBzdHJjbXAob2JqLT5vYmpl Y3R0eXBlLCAicHJvY2VkdXJlIikgPT0gMCB8fAorCQkJCSBzdHJjbXAob2JqLT5vYmplY3R0eXBl LCAicm91dGluZSIpID09IDAgfHwKKwkJCQkgc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgImFnZ3Jl Z2F0ZSIpID09IDApCiAJCQljbWR0eXBlID0gRENUX09iamVjdERyb3BFbmQ7CiAJCWVsc2UKIAkJ CWNvbnRpbnVlOwogCi0JCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfY29tbWFuZChvYmotPm9iamlk ZW50aXR5LCBvYmotPm9iamVjdHR5cGUsCi0JCQkJCQkJCQkgICBzdG10LT5iZWhhdmlvcik7CisJ CS8qIENoYW5nZSBmb3JlaWduLWRhdGEgd3JhcHBlciB0byBmb3JlaWduIGRhdGEgd3JhcHBlciAq LworCQlpZiAoc3RybmNtcChvYmotPm9iamVjdHR5cGUsICJmb3JlaWduLWRhdGEgd3JhcHBlciIs IDIwKSA9PSAwKQorCQl7CisJCQl0bXB0eXBlID0gcHN0cmR1cCgiZm9yZWlnbiBkYXRhIHdyYXBw ZXIiKTsKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfY29tbWFuZChvYmotPm9iamlkZW50aXR5 LCB0bXB0eXBlLAorCQkJCQkJCQkJCSAgIHN0bXQtPmJlaGF2aW9yKTsKKwkJfQorCisJCS8qIENo YW5nZSBzdGF0aXN0aWNzIG9iamVjdCB0byBzdGF0aXN0aWNzICovCisJCWVsc2UgaWYgKHN0cm5j bXAob2JqLT5vYmplY3R0eXBlLCAic3RhdGlzdGljcyBvYmplY3QiLAorCQkJCQkJIHN0cmxlbigi c3RhdGlzdGljcyBvYmplY3QiKSkgPT0gMCkKKwkJeworCQkJdG1wdHlwZSA9IHBzdHJkdXAoInN0 YXRpc3RpY3MiKTsKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfY29tbWFuZChvYmotPm9iamlk ZW50aXR5LCB0bXB0eXBlLAorCQkJCQkJCQkJCSAgIHN0bXQtPmJlaGF2aW9yKTsKKwkJfQorCisJ CS8qCisJCSAqIE9iamVjdCBpZGVudGl0eSBuZWVkcyB0byBiZSBtb2RpZmllZCB0byBtYWtlIHRo ZSBkcm9wIHdvcmsKKwkJICoKKwkJICogRlJPTTogPHJvbGU+IG9uIHNlcnZlciA8c2VydmVybmFt ZT4gVE8gIDogZm9yIDxyb2xlPiBzZXJ2ZXIKKwkJICogPHNlcnZlcm5hbWU+CisJCSAqCisJCSAq LworCQllbHNlIGlmIChzdHJuY21wKG9iai0+b2JqZWN0dHlwZSwgInVzZXIgbWFwcGluZyIsIDEy KSA9PSAwKQorCQl7CisJCQljaGFyCSAgICpvbl9zZXJ2ZXI7CisKKwkJCXRtcHR5cGUgPSBwYWxs b2Moc3RybGVuKG9iai0+b2JqaWRlbnRpdHkpICsgMik7CisJCQlvbl9zZXJ2ZXIgPSBzdHJzdHIo b2JqLT5vYmppZGVudGl0eSwgIm9uIHNlcnZlciIpOworCisJCQlzcHJpbnRmKChjaGFyICopIHRt cHR5cGUsICJmb3IgIik7CisJCQlzdHJuY2F0KChjaGFyICopIHRtcHR5cGUsIG9iai0+b2JqaWRl bnRpdHksIG9uX3NlcnZlciAtIG9iai0+b2JqaWRlbnRpdHkpOworCQkJc3RyY2F0KChjaGFyICop IHRtcHR5cGUsIG9uX3NlcnZlciArIDMpOworCQkJY29tbWFuZCA9IGRlcGFyc2VfZHJvcF9jb21t YW5kKHRtcHR5cGUsIG9iai0+b2JqZWN0dHlwZSwKKwkJCQkJCQkJCQkgICBzdG10LT5iZWhhdmlv cik7CisJCX0KKwkJZWxzZSBpZiAoc3RybmNtcChvYmotPm9iamVjdHR5cGUsICJwdWJsaWNhdGlv biBuYW1lc3BhY2UiLAorCQkJCQkJIHN0cmxlbigicHVibGljYXRpb24gbmFtZXNwYWNlIikpID09 IDAgfHwKKwkJCQkgc3RybmNtcChvYmotPm9iamVjdHR5cGUsICJwdWJsaWNhdGlvbiByZWxhdGlv biIsCisJCQkJCQkgc3RybGVuKCJwdWJsaWNhdGlvbiByZWxhdGlvbiIpKSA9PSAwKQorCQkJY29t bWFuZCA9IGRlcGFyc2VfQWx0ZXJQdWJsaWNhdGlvbkRyb3BTdG10KG9iaik7CisJCWVsc2UKKwkJ CWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfY29tbWFuZChvYmotPm9iamlkZW50aXR5LCBvYmotPm9i amVjdHR5cGUsCisJCQkJCQkJCQkJICAgc3RtdC0+YmVoYXZpb3IpOwogCiAJCWlmIChjb21tYW5k KQogCQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBvYmotPmFkZHJlc3Mub2JqZWN0 SWQsIGNtZHR5cGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwppbmRleCA5YTU0Y2JkMTUyLi44MGNkNmZhZDU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIyNCw2ICsyMjQsNyBAQCB0eXBlZGVmIHN0cnVj dCBERExTeW5jQ2FjaGUKIHsKIAlib29sCQl2YWxpZDsKIAlib29sCQlwdWJpbmRleDsKKwlib29s CQlwdWJhbGw7CiB9IERETFN5bmNDYWNoZTsKIAogc3RhdGljIERETFN5bmNDYWNoZSAqZGRsY2Fj aGUgPSBOVUxMOwpAQCAtMTc1NCw2ICsxNzU1LDggQEAgaXNfb2JqZWN0X3B1Ymxpc2hlZChMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE9pZCBvYmppZCkKIAlSZWxhdGlvblN5bmNFbnRyeSAq cmVsZW50cnk7CiAJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91 dHB1dF9wbHVnaW5fcHJpdmF0ZTsKIAorCWJ1aWxkX2RkbF9zeW5jX2NhY2hlKGRhdGEpOworCiAJ LyogRmlyc3QgY2hlY2sgdGhlIERETCBjb21tYW5kIGZpbHRlci4gKi8KIAlzd2l0Y2ggKGdldF9y ZWxfcmVsa2luZChvYmppZCkpCiAJewpAQCAtMTc2NiwxNSArMTc2OSwxNCBAQCBpc19vYmplY3Rf cHVibGlzaGVkKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT2lkIG9iamlkKQogCQkJICog U2tpcCBzZW5kaW5nIHRoaXMgZGRsIGlmIHdlIGRvbid0IHB1Ymxpc2ggZGRsIG1lc3NhZ2Ugb3Ig dGhlIGRkbAogCQkJICogbmVlZCB0byBiZSBwdWJsaXNoZWQgdmlhIGl0cyByb290IHJlbGF0aW9u LgogCQkJICovCi0JCQlpZiAoIXJlbGVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8fAor CQkJaWYgKCghcmVsZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlICYmCisJCQkJIWRkbGNh Y2hlLT5wdWJhbGwpIHx8CiAJCQkJcmVsZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgIT0gb2JqaWQp CiAJCQkJcmV0dXJuIGZhbHNlOwogCiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX0lOREVYOgot CQkJYnVpbGRfZGRsX3N5bmNfY2FjaGUoZGF0YSk7Ci0KLQkJCWlmICghZGRsY2FjaGUtPnB1Ymlu ZGV4KQorCQkJaWYgKCFkZGxjYWNoZS0+cHViaW5kZXggJiYgIWRkbGNhY2hlLT5wdWJhbGwpCiAJ CQkJcmV0dXJuIGZhbHNlOwogCiAJCQkvKiBHZXQgdGhlIHRhYmxlIE9JRCB0aGF0IHRoZSBpbmRl eCBpcyBmb3IuICovCkBAIC0xNzg3LDcgKzE3ODksOCBAQCBpc19vYmplY3RfcHVibGlzaGVkKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT2lkIG9iamlkKQogCQkJcmVsZW50cnkgPSBnZXRf cmVsX3N5bmNfZW50cnkoZGF0YSwgcmVsYXRpb24pOwogCQkJUmVsYXRpb25DbG9zZShyZWxhdGlv bik7CiAKLQkJCWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlIHx8CisJCQlp ZiAoKCFyZWxlbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgJiYKKwkJCQkhZGRsY2FjaGUt PnB1YmFsbCkgfHwKIAkJCQlyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCAhPSBvYmppZCkKIAkJ CQlyZXR1cm4gZmFsc2U7CiAKQEAgLTIyNDAsNyArMjI0Myw4IEBAIGdldF9yZWxfc3luY19lbnRy eShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQllbnRyeS0+c3RyZWFt ZWRfdHhucyA9IE5JTDsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0ID0gZW50cnktPnB1 YmFjdGlvbnMucHVidXBkYXRlID0KIAkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVu dHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0KLQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRk bF90YWJsZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF9pbmRleCA9IGZhbHNlOworCQkJZW50 cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlID0gZW50cnktPnB1YmFjdGlvbnMucHViZGRsX2lu ZGV4ID0KKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF9hbGwgPSBmYWxzZTsKIAkJZW50cnkt Pm5ld19zbG90ID0gTlVMTDsKIAkJZW50cnktPm9sZF9zbG90ID0gTlVMTDsKIAkJbWVtc2V0KGVu dHJ5LT5leHByc3RhdGUsIDAsIHNpemVvZihlbnRyeS0+ZXhwcnN0YXRlKSk7CkBAIC0yMjg4LDYg KzIyOTIsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlv biByZWxhdGlvbikKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKIAkJ ZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rp b25zLnB1YmRkbF9pbmRleCA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfYWxs ID0gZmFsc2U7CiAKIAkJLyoKIAkJICogVHVwbGUgc2xvdHMgY2xlYW51cHMuIChXaWxsIGJlIHJl YnVpbHQgbGF0ZXIgaWYgbmVlZGVkKS4KQEAgLTI0MDMsNiArMjQwOCw3IEBAIGdldF9yZWxfc3lu Y19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCWVudHJ5 LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsK IAkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1 YmRkbF90YWJsZTsKIAkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXggfD0gcHViLT5w dWJhY3Rpb25zLnB1YmRkbF9pbmRleDsKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfYWxs IHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfYWxsOwogCiAJCQkJLyoKIAkJCQkgKiBXZSB3YW50 IHRvIHB1Ymxpc2ggdGhlIGNoYW5nZXMgYXMgdGhlIHRvcC1tb3N0IGFuY2VzdG9yCkBAIC0yNDg4 LDYgKzI0OTQsNyBAQCBidWlsZF9kZGxfc3luY19jYWNoZShQR091dHB1dERhdGEgKmRhdGEpCiAJ CXJldHVybjsKIAogCWRkbGNhY2hlLT5wdWJpbmRleCA9IGZhbHNlOworCWRkbGNhY2hlLT5wdWJh bGwgPSBmYWxzZTsKIAogCXJlbG9hZF9wdWJsaWNhdGlvbnMoZGF0YSk7CiAKQEAgLTI0OTYsNiAr MjUwMyw3IEBAIGJ1aWxkX2RkbF9zeW5jX2NhY2hlKFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJUHVi bGljYXRpb24gKnB1YiA9IGxmaXJzdChsYyk7CiAKIAkJZGRsY2FjaGUtPnB1YmluZGV4IHw9IHB1 Yi0+cHViYWN0aW9ucy5wdWJkZGxfaW5kZXg7CisJCWRkbGNhY2hlLT5wdWJhbGwgfD0gcHViLT5w dWJhY3Rpb25zLnB1YmRkbF9hbGw7CiAJfQogCiAJZGRsY2FjaGUtPnZhbGlkID0gdHJ1ZTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvY21kdGFnLmMgYi9zcmMvYmFja2VuZC90Y29wL2Nt ZHRhZy5jCmluZGV4IGNlMDljNWYyMzMuLjdlMDM3ODI1MjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvY21kdGFnLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYwpAQCAtMTQs NiArMTQsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCiAjaW5jbHVkZSAidGNvcC9jbWR0YWcuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC01OCwxNiArNTksMTUgQEAgR2V0Q29t bWFuZFRhZ05hbWVBbmRMZW4oQ29tbWFuZFRhZyBjb21tYW5kVGFnLCBTaXplICpsZW4pCiAJcmV0 dXJuIHRhZ19iZWhhdmlvcltjb21tYW5kVGFnXS5uYW1lOwogfQogCi1Db21tYW5kVGFnICoKLUdl dENvbW1hbmRUYWdzRm9yRERMUmVwbChpbnQgKm5jb21tYW5kcykKK0xpc3QgKgorR2V0Q29tbWFu ZFRhZ3NGb3JERExSZXBsKHZvaWQpCiB7Ci0JQ29tbWFuZFRhZyAqZGRscmVwbF9jb21tYW5kcyA9 IHBhbGxvYzAoQ09NTUFORF9UQUdfTkVYVFRBRyAqIHNpemVvZihDb21tYW5kVGFnKSk7Ci0JKm5j b21tYW5kcyA9IDA7CisJTGlzdCAqZGRscmVwbF9jb21tYW5kcyA9IE5JTDsKIAogCWZvcihpbnQg aSA9IDA7IGkgPCBDT01NQU5EX1RBR19ORVhUVEFHOyBpKyspCiAJewogCQlpZiAodGFnX2JlaGF2 aW9yW2ldLmRkbF9yZXBsaWNhdGlvbl9vaykKLQkJCWRkbHJlcGxfY29tbWFuZHNbKCpuY29tbWFu ZHMpKytdID0gKENvbW1hbmRUYWcpIGk7CisJCQlkZGxyZXBsX2NvbW1hbmRzID0gbGFwcGVuZF9p bnQoZGRscmVwbF9jb21tYW5kcywgaSk7CiAJfQogCiAJcmV0dXJuIGRkbHJlcGxfY29tbWFuZHM7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCmluZGV4IDU3OGEyMjlmZmMuLjM0YTljODUzYTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5j CkBAIC0xNDQ5LDcgKzE0NDksOCBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCWFkZHJlc3MgPSBEZWZpbmVDb2xsYXRpb24ocHN0YXRlLAogCQkJCQkJCQkJ CQkJCSAgc3RtdC0+ZGVmbmFtZXMsCiAJCQkJCQkJCQkJCQkJICBzdG10LT5kZWZpbml0aW9uLAot CQkJCQkJCQkJCQkJCSAgc3RtdC0+aWZfbm90X2V4aXN0cyk7CisJCQkJCQkJCQkJCQkJICBzdG10 LT5pZl9ub3RfZXhpc3RzLAorCQkJCQkJCQkJCQkJCSAgJnNlY29uZGFyeU9iamVjdCk7CiAJCQkJ CQkJYnJlYWs7CiAJCQkJCQlkZWZhdWx0OgogCQkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgZGVmaW5lIHN0bXQgdHlwZTogJWQiLApAQCAtMTgzOSw2ICsxODQwLDcgQEAgUHJvY2Vzc1V0 aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQkJY2FzZSBUX1NlY0xhYmVsU3RtdDoK IAkJCQlhZGRyZXNzID0gRXhlY1NlY0xhYmVsU3RtdCgoU2VjTGFiZWxTdG10ICopIHBhcnNldHJl ZSk7CisJCQkJY29tbWFuZENvbGxlY3RlZCA9IHRydWU7CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2Ug VF9DcmVhdGVBbVN0bXQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVncHJv Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ3Byb2MuYwppbmRleCAyOTY5MzBlYjNiLi5l NDZjMzlkNjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVncHJvYy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTMwNyw2ICszMDcsNTcgQEAg Zm9ybWF0X3Byb2NlZHVyZV9xdWFsaWZpZWQoT2lkIHByb2NlZHVyZV9vaWQpCiAJcmV0dXJuIGZv cm1hdF9wcm9jZWR1cmVfZXh0ZW5kZWQocHJvY2VkdXJlX29pZCwgRk9STUFUX1BST0NfRk9SQ0Vf UVVBTElGWSk7CiB9CiAKKy8qCisgKiBBcHBlbmQgdGhlIHBhcmVudGhlc2l6ZWQgYXJndW1lbnRz IG9mIHRoZSBnaXZlbiBwZ19wcm9jIHJvdyBpbnRvIHRoZSBvdXRwdXQKKyAqIGJ1ZmZlci4gZm9y Y2VfcXVhbGlmeSBpbmRpY2F0ZXMgd2hldGhlciB0byBzY2hlbWEtcXVhbGlmeSB0eXBlIG5hbWVz CisgKiByZWdhcmRsZXNzIG9mIHZpc2liaWxpdHkuCisgKi8KK3N0YXRpYyB2b2lkCitmb3JtYXRf cHJvY2VkdXJlX2FyZ3NfaW50ZXJuYWwoRm9ybV9wZ19wcm9jIHByb2Nmb3JtLCBTdHJpbmdJbmZv IGJ1ZiwKKwkJCQkJCQkgICBib29sIGZvcmNlX3F1YWxpZnkpCit7CisJaW50CQkJaTsKKwljaGFy CSAgICooKmZ1bmNbMl0pIChPaWQpID0ge2Zvcm1hdF90eXBlX2JlLCBmb3JtYXRfdHlwZV9iZV9x dWFsaWZpZWR9OworCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOworCWZvciAoaSA9 IDA7IGkgPCBwcm9jZm9ybS0+cHJvbmFyZ3M7IGkrKykKKwl7CisJCU9pZAkJCXRoaXNhcmd0eXBl ID0gcHJvY2Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXTsKKwkJY2hhcgkgICAqYXJndHlwZTsK KworCQlpZiAoaSA+IDApCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcsJyk7CisKKwkJ YXJndHlwZSA9IGZ1bmNbZm9yY2VfcXVhbGlmeV0gKHRoaXNhcmd0eXBlKTsKKwkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsIGFyZ3R5cGUpOworCQlwZnJlZShhcmd0eXBlKTsKKwl9CisJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOworfQorCisvKgorICogZm9ybWF0X3Byb2NlZHVy ZV9hcmdzICAgLSBjb252ZXJ0cyBwcm9jIE9JRCB0byAiKGFyZ3MpIgorICovCitjaGFyICoKK2Zv cm1hdF9wcm9jZWR1cmVfYXJncyhPaWQgcHJvY2VkdXJlX29pZCwgYm9vbCBmb3JjZV9xdWFsaWZ5 KQoreworCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwlIZWFwVHVwbGUJcHJvY3R1cDsKKwlGb3JtX3Bn X3Byb2MgcHJvY2Zvcm07CisKKwlwcm9jdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsIE9i amVjdElkR2V0RGF0dW0ocHJvY2VkdXJlX29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChw cm9jdHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHByb2NlZHVy ZSAldSIsIHByb2NlZHVyZV9vaWQpOworCXByb2Nmb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RS VUNUKHByb2N0dXApOworCisJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CisJZm9ybWF0X3Byb2NlZHVy ZV9hcmdzX2ludGVybmFsKHByb2Nmb3JtLCAmYnVmLCBmb3JjZV9xdWFsaWZ5KTsKKworCVJlbGVh c2VTeXNDYWNoZShwcm9jdHVwKTsKKworCXJldHVybiBidWYuZGF0YTsKK30KKwogLyoKICAqIGZv cm1hdF9wcm9jZWR1cmVfZXh0ZW5kZWQgLSBjb252ZXJ0cyBwcm9jZWR1cmUgT0lEIHRvICJwcm9f bmFtZShhcmdzKSIKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggYzhmNTQ3MWIx OC4uYzQ4OWNhYzhkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzUsNiArMzUs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19yZXdyaXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0 aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCkBAIC0zNDEsNiArMzQyLDggQEAgc3RhdGljIGNoYXIgKnBnX2dl dF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHByZXR0eSk7CiBzdGF0aWMgaW50 CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBP aWQgcmVsSWQsCiAJCQkJCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsKIHN0YXRpYyBjaGFyICpwZ19n ZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQsIGludCBwcmV0dHlGbGFncyk7CitzdGF0aWMg dm9pZCBwZ19nZXRfcnVsZV93aGVyZWNsYXVzZShjaGFyICpxdWFsc3RyLCBRdWVyeSAqcXVlcnks CisJCQkJCQkJCQkgU3RyaW5nSW5mbyBidWYsIGludCBwcmV0dHlGbGFncyk7CiBzdGF0aWMgY2hh ciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihPaWQgaW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJ CQkJCQkJY29uc3QgT2lkICpleGNsdWRlT3BzLAogCQkJCQkJCQkJYm9vbCBhdHRyc09ubHksIGJv b2wga2V5c09ubHksCkBAIC0zNTgsNyArMzYxLDYgQEAgc3RhdGljIGludAlwcmludF9mdW5jdGlv bl9hcmd1bWVudHMoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBwcm9jdHVwLAogCQkJCQkJCQkJ IGJvb2wgcHJpbnRfdGFibGVfYXJncywgYm9vbCBwcmludF9kZWZhdWx0cyk7CiBzdGF0aWMgdm9p ZCBwcmludF9mdW5jdGlvbl9yZXR0eXBlKFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUgcHJvY3R1 cCk7CiBzdGF0aWMgdm9pZCBwcmludF9mdW5jdGlvbl90cmZ0eXBlcyhTdHJpbmdJbmZvIGJ1Ziwg SGVhcFR1cGxlIHByb2N0dXApOwotc3RhdGljIHZvaWQgcHJpbnRfZnVuY3Rpb25fc3FsYm9keShT dHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXApOwogc3RhdGljIHZvaWQgc2V0X3J0YWJs ZV9uYW1lcyhkZXBhcnNlX25hbWVzcGFjZSAqZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMs CiAJCQkJCQkJIEJpdG1hcHNldCAqcmVsc191c2VkKTsKIHN0YXRpYyB2b2lkIHNldF9kZXBhcnNl X2Zvcl9xdWVyeShkZXBhcnNlX25hbWVzcGFjZSAqZHBucywgUXVlcnkgKnF1ZXJ5LApAQCAtNTU1 LDYgKzU1Nyw4MCBAQCBwZ19nZXRfcnVsZWRlZl9leHQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19S RVRVUk5fVEVYVF9QKHN0cmluZ190b190ZXh0KHJlcykpOwogfQogCisvKgorICogR2l2ZW4gYSBw YWlyIG9mIERhdHVtIGNvcnJlc3BvbmRpbmcgdG8gYSBydWxlJ3MgcGdfcmV3cml0ZS5ldl9xdWFs IGFuZAorICogZXZfYWN0aW9uIGNvbHVtbnMsIHJldHVybiB0aGVpciB0ZXh0IHJlcHJlc2VudGF0 aW9uOyBldl9xdWFsIGFzIGEgc2luZ2xlCisgKiBzdHJpbmcgaW4gd2hlcmVDbGF1c2UgYW5kIGV2 X2FjdGlvbiBhcyBhIExpc3Qgb2Ygc3RyaW5ncyAod2hpY2ggbWlnaHQgYmUKKyAqIE5JTCwgc2ln bmFsbGluZyBOT1RISU5HKSBpbiBhY3Rpb25zLgorICovCit2b2lkCitwZ19nZXRfcnVsZWRlZl9k ZXRhaWxlZChEYXR1bSBldl9xdWFsLCBEYXR1bSBldl9hY3Rpb24sCisJCQkJCQljaGFyICoqd2hl cmVDbGF1c2UsIExpc3QgKiphY3Rpb25zKQoreworCWludAkJCXByZXR0eUZsYWdzID0gMDsKKwlj aGFyCSAgICpxdWFsc3RyID0gVGV4dERhdHVtR2V0Q1N0cmluZyhldl9xdWFsKTsKKwljaGFyCSAg ICphY3Rpb25zdHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGV2X2FjdGlvbik7CisJTGlzdAkgICAq YWN0aW9uTm9kZUxpc3QgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoYWN0aW9uc3RyKTsKKwlTdHJp bmdJbmZvRGF0YSBidWY7CisKKwkqd2hlcmVDbGF1c2UgPSBOVUxMOworCSphY3Rpb25zID0gTklM OworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCisJaWYgKHN0cmNtcChxdWFsc3RyLCAiPD4iKSAh PSAwKQorCXsKKwkJUXVlcnkJICAgKnF1ZXJ5ID0gKFF1ZXJ5ICopIGxpbml0aWFsKGFjdGlvbk5v ZGVMaXN0KTsKKworCQlwZ19nZXRfcnVsZV93aGVyZWNsYXVzZShxdWFsc3RyLCBxdWVyeSwgJmJ1 ZiwgMCk7CisJCSp3aGVyZUNsYXVzZSA9IHBzdHJkdXAoYnVmLmRhdGEpOworCX0KKworCWlmIChs aXN0X2xlbmd0aChhY3Rpb25Ob2RlTGlzdCkgPiAwKQorCXsKKwkJTGlzdENlbGwgICAqY2VsbDsK KworCQlmb3JlYWNoKGNlbGwsIGFjdGlvbk5vZGVMaXN0KQorCQl7CisJCQlRdWVyeQkgICAqcXVl cnkgPSAoUXVlcnkgKikgbGZpcnN0KGNlbGwpOworCisJCQlyZXNldFN0cmluZ0luZm8oJmJ1Zik7 CisJCQlnZXRfcXVlcnlfZGVmKHF1ZXJ5LCAmYnVmLCBOSUwsIE5VTEwsIHRydWUsCisJCQkJCQkg IHByZXR0eUZsYWdzLCBXUkFQX0NPTFVNTl9ERUZBVUxULCAwKTsKKwkJCSphY3Rpb25zID0gbGFw cGVuZCgqYWN0aW9ucywgcHN0cmR1cChidWYuZGF0YSkpOworCQl9CisJfQorfQorCisvKgorICog VG8gZ2V0IHRoZSByZXdyaXRlIHJ1bGUgb2YgYSB2aWV3IHdoZW4gdGhlIENSRUFURSBWSUVXIGNv bW1hbmQgZXhlY3V0aW9uIGlzCisgKiBzdGlsbCBpbiBwcm9ncmVzczogd2Ugc2VhcmNoIHRoZSBz eXN0ZW0gY2FjaGUgUlVMRVJFTE5BTUUgdG8gZ2V0IHRoZSByZXdyaXRlCisgKiBydWxlIG9mIHRo ZSB2aWV3IGFzIG9wcG9zZWQgdG8gcXVlcnlpbmcgcGdfcmV3cml0ZSBhcyBpbiBwZ19nZXRfdmll d2RlZl93b3JrZXIoKSwKKyAqIHdoaWNoIHdpbGwgcmV0dXJuIGVtcHR5IHJlc3VsdC4KKyAqLwor Y2hhciAqCitwZ19nZXRfdmlld2RlZl9zdHJpbmcoT2lkIHZpZXdvaWQpCit7CisJU3RyaW5nSW5m b0RhdGEgYnVmOworCVJlbGF0aW9uCXBnX3Jld3JpdGU7CisJSGVhcFR1cGxlCXJ1bGV0dXA7CisJ VHVwbGVEZXNjCXJ1bGV0dGM7CisKKwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKwlwZ19yZXdyaXRl ID0gdGFibGVfb3BlbihSZXdyaXRlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJ1 bGV0dXAgPSBTZWFyY2hTeXNDYWNoZTIoUlVMRVJFTE5BTUUsCisJCQkJCQkJICBPYmplY3RJZEdl dERhdHVtKHZpZXdvaWQpLAorCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFZpZXdTZWxlY3RSdWxl TmFtZSkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChydWxldHVwKSkKKwkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJld3JpdGUgcnVsZSBmb3IgdmlldyB3aXRoIE9JRCAl dSIsIHZpZXdvaWQpOworCisJcnVsZXR0YyA9IHBnX3Jld3JpdGUtPnJkX2F0dDsKKwltYWtlX3Zp ZXdkZWYoJmJ1ZiwgcnVsZXR1cCwgcnVsZXR0YywgMCwgV1JBUF9DT0xVTU5fREVGQVVMVCk7CisJ UmVsZWFzZVN5c0NhY2hlKHJ1bGV0dXApOworCXRhYmxlX2Nsb3NlKHBnX3Jld3JpdGUsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwlyZXR1cm4gYnVmLmRhdGE7Cit9CiAKIHN0YXRpYyBjaGFyICoKIHBn X2dldF9ydWxlZGVmX3dvcmtlcihPaWQgcnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKQpAQCAtMTAy NSw2NSArMTEwMSwxMiBAQCBwZ19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwgYm9v bCBwcmV0dHkpCiAJaWYgKCFpc251bGwpCiAJewogCQlOb2RlCSAgICpxdWFsOwotCQljaGFyCQly ZWxraW5kOwotCQlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKLQkJZGVwYXJzZV9uYW1lc3BhY2Ug ZHBuczsKLQkJUmFuZ2VUYmxFbnRyeSAqb2xkcnRlOwotCQlSYW5nZVRibEVudHJ5ICpuZXdydGU7 Ci0KLQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiV0hFTiAoIik7CisJCWNoYXIJICAg KnF1YWxzdHI7CiAKIAkJcXVhbCA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHZh bHVlKSk7CisJCXF1YWxzdHIgPSBwZ19nZXRfdHJpZ2dlcl93aGVuY2xhdXNlKHRyaWdyZWMsIHF1 YWwsIHByZXR0eSk7CiAKLQkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZCh0cmlncmVjLT50Z3Jl bGlkKTsKLQotCQkvKiBCdWlsZCBtaW5pbWFsIE9MRCBhbmQgTkVXIFJURXMgZm9yIHRoZSByZWwg Ki8KLQkJb2xkcnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7Ci0JCW9sZHJ0ZS0+cnRla2lu ZCA9IFJURV9SRUxBVElPTjsKLQkJb2xkcnRlLT5yZWxpZCA9IHRyaWdyZWMtPnRncmVsaWQ7Ci0J CW9sZHJ0ZS0+cmVsa2luZCA9IHJlbGtpbmQ7Ci0JCW9sZHJ0ZS0+cmVsbG9ja21vZGUgPSBBY2Nl c3NTaGFyZUxvY2s7Ci0JCW9sZHJ0ZS0+YWxpYXMgPSBtYWtlQWxpYXMoIm9sZCIsIE5JTCk7Ci0J CW9sZHJ0ZS0+ZXJlZiA9IG9sZHJ0ZS0+YWxpYXM7Ci0JCW9sZHJ0ZS0+bGF0ZXJhbCA9IGZhbHNl OwotCQlvbGRydGUtPmluaCA9IGZhbHNlOwotCQlvbGRydGUtPmluRnJvbUNsID0gdHJ1ZTsKLQot CQluZXdydGUgPSBtYWtlTm9kZShSYW5nZVRibEVudHJ5KTsKLQkJbmV3cnRlLT5ydGVraW5kID0g UlRFX1JFTEFUSU9OOwotCQluZXdydGUtPnJlbGlkID0gdHJpZ3JlYy0+dGdyZWxpZDsKLQkJbmV3 cnRlLT5yZWxraW5kID0gcmVsa2luZDsKLQkJbmV3cnRlLT5yZWxsb2NrbW9kZSA9IEFjY2Vzc1No YXJlTG9jazsKLQkJbmV3cnRlLT5hbGlhcyA9IG1ha2VBbGlhcygibmV3IiwgTklMKTsKLQkJbmV3 cnRlLT5lcmVmID0gbmV3cnRlLT5hbGlhczsKLQkJbmV3cnRlLT5sYXRlcmFsID0gZmFsc2U7Ci0J CW5ld3J0ZS0+aW5oID0gZmFsc2U7Ci0JCW5ld3J0ZS0+aW5Gcm9tQ2wgPSB0cnVlOwotCi0JCS8q IEJ1aWxkIHR3by1lbGVtZW50IHJ0YWJsZSAqLwotCQltZW1zZXQoJmRwbnMsIDAsIHNpemVvZihk cG5zKSk7Ci0JCWRwbnMucnRhYmxlID0gbGlzdF9tYWtlMihvbGRydGUsIG5ld3J0ZSk7Ci0JCWRw bnMuc3VicGxhbnMgPSBOSUw7Ci0JCWRwbnMuY3RlcyA9IE5JTDsKLQkJZHBucy5hcHBlbmRyZWxz ID0gTlVMTDsKLQkJc2V0X3J0YWJsZV9uYW1lcygmZHBucywgTklMLCBOVUxMKTsKLQkJc2V0X3Np bXBsZV9jb2x1bW5fbmFtZXMoJmRwbnMpOwotCi0JCS8qIFNldCB1cCBjb250ZXh0IHdpdGggb25l LWRlZXAgbmFtZXNwYWNlIHN0YWNrICovCi0JCWNvbnRleHQuYnVmID0gJmJ1ZjsKLQkJY29udGV4 dC5uYW1lc3BhY2VzID0gbGlzdF9tYWtlMSgmZHBucyk7Ci0JCWNvbnRleHQud2luZG93Q2xhdXNl ID0gTklMOwotCQljb250ZXh0LndpbmRvd1RMaXN0ID0gTklMOwotCQljb250ZXh0LnZhcnByZWZp eCA9IHRydWU7Ci0JCWNvbnRleHQucHJldHR5RmxhZ3MgPSBHRVRfUFJFVFRZX0ZMQUdTKHByZXR0 eSk7Ci0JCWNvbnRleHQud3JhcENvbHVtbiA9IFdSQVBfQ09MVU1OX0RFRkFVTFQ7Ci0JCWNvbnRl eHQuaW5kZW50TGV2ZWwgPSBQUkVUVFlJTkRFTlRfU1REOwotCQljb250ZXh0LnNwZWNpYWxfZXhw cmtpbmQgPSBFWFBSX0tJTkRfTk9ORTsKLQkJY29udGV4dC5hcHBlbmRwYXJlbnRzID0gTlVMTDsK LQotCQlnZXRfcnVsZV9leHByKHF1YWwsICZjb250ZXh0LCBmYWxzZSk7Ci0KLQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmYnVmLCAiKSAiKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiV0hF TiAoJXMpICIsIHF1YWxzdHIpOwogCX0KIAogCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkVYRUNV VEUgRlVOQ1RJT04gJXMoIiwKQEAgLTExMjQsNiArMTE0Nyw3NCBAQCBwZ19nZXRfdHJpZ2dlcmRl Zl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpCiAJcmV0dXJuIGJ1Zi5kYXRhOwogfQog CisvKgorICogUGFzcyBiYWNrIHRoZSBUcmlnZ2VyV2hlbiBjbGF1c2Ugb2YgYSB0cmlnZ2VyIGdp dmVuIHRoZSBwZ190cmlnZ2VyIHJlY29yZCBhbmQKKyAqIHRoZSBleHByZXNzaW9uIHRyZWUgKGlu IG5vZGVUb1N0cmluZygpIHJlcHJlc2VudGF0aW9uKSBmcm9tIHBnX3RyaWdnZXIudGdxdWFsCisg KiBmb3IgdGhlIHRyaWdnZXIncyBXSEVOIGNvbmRpdGlvbi4KKyAqLworY2hhciAqCitwZ19nZXRf dHJpZ2dlcl93aGVuY2xhdXNlKEZvcm1fcGdfdHJpZ2dlciB0cmlncmVjLCBOb2RlICp3aGVuQ2xh dXNlLCBib29sIHByZXR0eSkKK3sKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJY2hhcgkJcmVsa2lu ZDsKKwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlkZXBhcnNlX25hbWVzcGFjZSBkcG5zOwor CVJhbmdlVGJsRW50cnkgKm9sZHJ0ZTsKKwlSYW5nZVRibEVudHJ5ICpuZXdydGU7CisKKwlpbml0 U3RyaW5nSW5mbygmYnVmKTsKKworCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQodHJpZ3JlYy0+ dGdyZWxpZCk7CisKKwkvKiBCdWlsZCBtaW5pbWFsIE9MRCBhbmQgTkVXIFJURXMgZm9yIHRoZSBy ZWwgKi8KKwlvbGRydGUgPSBtYWtlTm9kZShSYW5nZVRibEVudHJ5KTsKKwlvbGRydGUtPnJ0ZWtp bmQgPSBSVEVfUkVMQVRJT047CisJb2xkcnRlLT5yZWxpZCA9IHRyaWdyZWMtPnRncmVsaWQ7CisJ b2xkcnRlLT5yZWxraW5kID0gcmVsa2luZDsKKwlvbGRydGUtPnJlbGxvY2ttb2RlID0gQWNjZXNz U2hhcmVMb2NrOworCW9sZHJ0ZS0+YWxpYXMgPSBtYWtlQWxpYXMoIm9sZCIsIE5JTCk7CisJb2xk cnRlLT5lcmVmID0gb2xkcnRlLT5hbGlhczsKKwlvbGRydGUtPmxhdGVyYWwgPSBmYWxzZTsKKwlv bGRydGUtPmluaCA9IGZhbHNlOworCW9sZHJ0ZS0+aW5Gcm9tQ2wgPSB0cnVlOworCisJbmV3cnRl ID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CisJbmV3cnRlLT5ydGVraW5kID0gUlRFX1JFTEFU SU9OOworCW5ld3J0ZS0+cmVsaWQgPSB0cmlncmVjLT50Z3JlbGlkOworCW5ld3J0ZS0+cmVsa2lu ZCA9IHJlbGtpbmQ7CisJbmV3cnRlLT5yZWxsb2NrbW9kZSA9IEFjY2Vzc1NoYXJlTG9jazsKKwlu ZXdydGUtPmFsaWFzID0gbWFrZUFsaWFzKCJuZXciLCBOSUwpOworCW5ld3J0ZS0+ZXJlZiA9IG5l d3J0ZS0+YWxpYXM7CisJbmV3cnRlLT5sYXRlcmFsID0gZmFsc2U7CisJbmV3cnRlLT5pbmggPSBm YWxzZTsKKwluZXdydGUtPmluRnJvbUNsID0gdHJ1ZTsKKworCS8qIEJ1aWxkIHR3by1lbGVtZW50 IHJ0YWJsZSAqLworCW1lbXNldCgmZHBucywgMCwgc2l6ZW9mKGRwbnMpKTsKKwlkcG5zLnJ0YWJs ZSA9IGxpc3RfbWFrZTIob2xkcnRlLCBuZXdydGUpOworCWRwbnMuc3VicGxhbnMgPSBOSUw7CisJ ZHBucy5jdGVzID0gTklMOworCWRwbnMuYXBwZW5kcmVscyA9IE5VTEw7CisJc2V0X3J0YWJsZV9u YW1lcygmZHBucywgTklMLCBOVUxMKTsKKwlzZXRfc2ltcGxlX2NvbHVtbl9uYW1lcygmZHBucyk7 CisKKwkvKiBTZXQgdXAgY29udGV4dCB3aXRoIG9uZS1kZWVwIG5hbWVzcGFjZSBzdGFjayAqLwor CWNvbnRleHQuYnVmID0gJmJ1ZjsKKwljb250ZXh0Lm5hbWVzcGFjZXMgPSBsaXN0X21ha2UxKCZk cG5zKTsKKwljb250ZXh0LndpbmRvd0NsYXVzZSA9IE5JTDsKKwljb250ZXh0LndpbmRvd1RMaXN0 ID0gTklMOworCWNvbnRleHQudmFycHJlZml4ID0gdHJ1ZTsKKwljb250ZXh0LnByZXR0eUZsYWdz ID0gR0VUX1BSRVRUWV9GTEFHUyhwcmV0dHkpOworCWNvbnRleHQud3JhcENvbHVtbiA9IFdSQVBf Q09MVU1OX0RFRkFVTFQ7CisJY29udGV4dC5pbmRlbnRMZXZlbCA9IFBSRVRUWUlOREVOVF9TVEQ7 CisJY29udGV4dC5zcGVjaWFsX2V4cHJraW5kID0gRVhQUl9LSU5EX05PTkU7CisJY29udGV4dC5h cHBlbmRwYXJlbnRzID0gTlVMTDsKKworCWdldF9ydWxlX2V4cHIod2hlbkNsYXVzZSwgJmNvbnRl eHQsIGZhbHNlKTsKKworCXJldHVybiBidWYuZGF0YTsKK30KKwogLyogLS0tLS0tLS0tLQogICog cGdfZ2V0X2luZGV4ZGVmCQkJLSBHZXQgdGhlIGRlZmluaXRpb24gb2YgYW4gaW5kZXgKICAqCkBA IC0zNDg2LDcgKzM1NzcsMTIgQEAgcGdfZ2V0X2Z1bmN0aW9uX2FyZ19kZWZhdWx0KFBHX0ZVTkNU SU9OX0FSR1MpCiAJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdfdG9fdGV4dChzdHIpKTsKIH0KIAot c3RhdGljIHZvaWQKKy8qCisgKiBQcm9kdWNlIHRoZSBmb3JtYXR0ZWQgU1FMIGJvZHkgKG5vdCB0 aGUgd2hvbGUgZnVuY3Rpb24gZGVmaW5pdGlvbikKKyAqIG9mIGEgZnVuY3Rpb24gZ2l2ZW4gdGhl IHBnX3Byb2MgdHVwbGUuIFNhdmUgdGhlIGZvcm1hdHRlZCBTUUwgaW4gdGhlCisgKiBnaXZlbiBT dHJpbmdJbmZvLgorICovCit2b2lkCiBwcmludF9mdW5jdGlvbl9zcWxib2R5KFN0cmluZ0luZm8g YnVmLCBIZWFwVHVwbGUgcHJvY3R1cCkKIHsKIAlpbnQJCQludW1hcmdzOwpAQCAtNTIzMSw0OCAr NTMyNywxOCBAQCBtYWtlX3J1bGVkZWYoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBydWxldHVw LCBUdXBsZURlc2MgcnVsZXR0YywKIAkvKiBJZiB0aGUgcnVsZSBoYXMgYW4gZXZlbnQgcXVhbGlm aWNhdGlvbiwgYWRkIGl0ICovCiAJaWYgKHN0cmNtcChldl9xdWFsLCAiPD4iKSAhPSAwKQogCXsK LQkJTm9kZQkgICAqcXVhbDsKLQkJUXVlcnkJICAgKnF1ZXJ5OwotCQlkZXBhcnNlX2NvbnRleHQg Y29udGV4dDsKLQkJZGVwYXJzZV9uYW1lc3BhY2UgZHBuczsKLQotCQlpZiAocHJldHR5RmxhZ3Mg JiBQUkVUVFlGTEFHX0lOREVOVCkKLQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiXG4g ICIpOwotCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBXSEVSRSAiKTsKLQotCQlxdWFs ID0gc3RyaW5nVG9Ob2RlKGV2X3F1YWwpOwotCiAJCS8qCiAJCSAqIFdlIG5lZWQgdG8gbWFrZSBh IGNvbnRleHQgZm9yIHJlY29nbml6aW5nIGFueSBWYXJzIGluIHRoZSBxdWFsCiAJCSAqICh3aGlj aCBjYW4gb25seSBiZSByZWZlcmVuY2VzIHRvIE9MRCBhbmQgTkVXKS4gIFVzZSB0aGUgcnRhYmxl IG9mCiAJCSAqIHRoZSBmaXJzdCBxdWVyeSBpbiB0aGUgYWN0aW9uIGxpc3QgZm9yIHRoaXMgcHVy cG9zZS4KIAkJICovCi0JCXF1ZXJ5ID0gKFF1ZXJ5ICopIGxpbml0aWFsKGFjdGlvbnMpOwotCi0J CS8qCi0JCSAqIElmIHRoZSBhY3Rpb24gaXMgSU5TRVJULi4uU0VMRUNULCBPTEQvTkVXIGhhdmUg YmVlbiBwdXNoZWQgZG93bgotCQkgKiBpbnRvIHRoZSBTRUxFQ1QsIGFuZCB0aGF0J3Mgd2hhdCB3 ZSBuZWVkIHRvIGxvb2sgYXQuIChVZ2x5IGtsdWdlCi0JCSAqIC4uLiB0cnkgdG8gZml4IHRoaXMg d2hlbiB3ZSByZWRlc2lnbiBxdWVyeXRyZWVzLikKLQkJICovCi0JCXF1ZXJ5ID0gZ2V0SW5zZXJ0 U2VsZWN0UXVlcnkocXVlcnksIE5VTEwpOwotCi0JCS8qIE11c3QgYWNxdWlyZSBsb2NrcyByaWdo dCBhd2F5OyBzZWUgbm90ZXMgaW4gZ2V0X3F1ZXJ5X2RlZigpICovCi0JCUFjcXVpcmVSZXdyaXRl TG9ja3MocXVlcnksIGZhbHNlLCBmYWxzZSk7Ci0KLQkJY29udGV4dC5idWYgPSBidWY7Ci0JCWNv bnRleHQubmFtZXNwYWNlcyA9IGxpc3RfbWFrZTEoJmRwbnMpOwotCQljb250ZXh0LndpbmRvd0Ns YXVzZSA9IE5JTDsKLQkJY29udGV4dC53aW5kb3dUTGlzdCA9IE5JTDsKLQkJY29udGV4dC52YXJw cmVmaXggPSAobGlzdF9sZW5ndGgocXVlcnktPnJ0YWJsZSkgIT0gMSk7Ci0JCWNvbnRleHQucHJl dHR5RmxhZ3MgPSBwcmV0dHlGbGFnczsKLQkJY29udGV4dC53cmFwQ29sdW1uID0gV1JBUF9DT0xV TU5fREVGQVVMVDsKLQkJY29udGV4dC5pbmRlbnRMZXZlbCA9IFBSRVRUWUlOREVOVF9TVEQ7Ci0J CWNvbnRleHQuc3BlY2lhbF9leHBya2luZCA9IEVYUFJfS0lORF9OT05FOwotCQljb250ZXh0LmFw cGVuZHBhcmVudHMgPSBOVUxMOworCQlRdWVyeQkgICAqcXVlcnkgPSAoUXVlcnkgKikgbGluaXRp YWwoYWN0aW9ucyk7CiAKLQkJc2V0X2RlcGFyc2VfZm9yX3F1ZXJ5KCZkcG5zLCBxdWVyeSwgTklM KTsKKwkJaWYgKHByZXR0eUZsYWdzICYgUFJFVFRZRkxBR19JTkRFTlQpCisJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgIlxuICAiKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICIgV0hFUkUgIik7CiAKLQkJZ2V0X3J1bGVfZXhwcihxdWFsLCAmY29udGV4dCwgZmFsc2UpOwor CQlwZ19nZXRfcnVsZV93aGVyZWNsYXVzZShldl9xdWFsLCBxdWVyeSwgYnVmLCBwcmV0dHlGbGFn cyk7CiAJfQogCiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgRE8gIik7CkBAIC01MzEz LDYgKzUzNzksNDcgQEAgbWFrZV9ydWxlZGVmKFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUgcnVs ZXR1cCwgVHVwbGVEZXNjIHJ1bGV0dGMsCiAJdGFibGVfY2xvc2UoZXZfcmVsYXRpb24sIEFjY2Vz c1NoYXJlTG9jayk7CiB9CiAKKy8qCisgKiBHaXZlbiBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRv IGEgcnVsZSdzIHBnX3Jld3JpdGUuZXZfcXVhbCBhbmQgYSBxdWVyeQorICogcGFyc2V0cmVlLCBh cHBlbmQgZXZfcXVhbCdzIHRleHQgcmVwcmVzZW50YXRpb24gaW50byB0aGUgb3V0cHV0IGJ1Zi4K KyAqCisgKiBUcmllcyB0byBwcmV0dHkgdXAgdGhlIG91dHB1dCBhY2NvcmRpbmcgdG8gcHJldHR5 RmxhZ3MuCisgKi8KK3N0YXRpYyB2b2lkCitwZ19nZXRfcnVsZV93aGVyZWNsYXVzZShjaGFyICpx dWFsc3RyLCBRdWVyeSAqcXVlcnksIFN0cmluZ0luZm8gYnVmLAorCQkJCQkJaW50IHByZXR0eUZs YWdzKQoreworCU5vZGUJICAgKnF1YWw7CisJZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7CisJZGVw YXJzZV9uYW1lc3BhY2UgZHBuczsKKworCXF1YWwgPSBzdHJpbmdUb05vZGUocXVhbHN0cik7CisK KwkvKgorCSAqIElmIHRoZSBhY3Rpb24gaXMgSU5TRVJULi4uU0VMRUNULCBPTEQvTkVXIGhhdmUg YmVlbiBwdXNoZWQgZG93bgorCSAqIGludG8gdGhlIFNFTEVDVCwgYW5kIHRoYXQncyB3aGF0IHdl IG5lZWQgdG8gbG9vayBhdC4gKFVnbHkga2x1Z2UKKwkgKiAuLi4gdHJ5IHRvIGZpeCB0aGlzIHdo ZW4gd2UgcmVkZXNpZ24gcXVlcnl0cmVlcy4pCisJICovCisJcXVlcnkgPSBnZXRJbnNlcnRTZWxl Y3RRdWVyeShxdWVyeSwgTlVMTCk7CisKKwkvKiBNdXN0IGFjcXVpcmUgbG9ja3MgcmlnaHQgYXdh eTsgc2VlIG5vdGVzIGluIGdldF9xdWVyeV9kZWYoKSAqLworCUFjcXVpcmVSZXdyaXRlTG9ja3Mo cXVlcnksIGZhbHNlLCBmYWxzZSk7CisKKwljb250ZXh0LmJ1ZiA9IGJ1ZjsKKwljb250ZXh0Lm5h bWVzcGFjZXMgPSBsaXN0X21ha2UxKCZkcG5zKTsKKwljb250ZXh0LndpbmRvd0NsYXVzZSA9IE5J TDsKKwljb250ZXh0LndpbmRvd1RMaXN0ID0gTklMOworCWNvbnRleHQudmFycHJlZml4ID0gKGxp c3RfbGVuZ3RoKHF1ZXJ5LT5ydGFibGUpICE9IDEpOworCWNvbnRleHQucHJldHR5RmxhZ3MgPSBw cmV0dHlGbGFnczsKKwljb250ZXh0LndyYXBDb2x1bW4gPSBXUkFQX0NPTFVNTl9ERUZBVUxUOwor CWNvbnRleHQuaW5kZW50TGV2ZWwgPSBQUkVUVFlJTkRFTlRfU1REOworCWNvbnRleHQuc3BlY2lh bF9leHBya2luZCA9IEVYUFJfS0lORF9OT05FOworCWNvbnRleHQuYXBwZW5kcGFyZW50cyA9IE5V TEw7CisKKwlzZXRfZGVwYXJzZV9mb3JfcXVlcnkoJmRwbnMsIHF1ZXJ5LCBOSUwpOworCisJZ2V0 X3J1bGVfZXhwcihxdWFsLCAmY29udGV4dCwgZmFsc2UpOworfQogCiAvKiAtLS0tLS0tLS0tCiAg KiBtYWtlX3ZpZXdkZWYJCQktIHJlY29uc3RydWN0IHRoZSBTRUxFQ1QgcGFydCBvZiBhCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCAxMjI1OWM5ZGQ4Li5jZTVmOWI0MTEyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3MjIsNiArNTcyMiw3IEBAIFJlbGF0aW9u QnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAq cHViZGVzYykKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSB8PSBwdWJmb3JtLT5w dWJ0cnVuY2F0ZTsKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfD0gcHViZm9y bS0+cHViZGRsX3RhYmxlOwogCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YmRkbF9pbmRleCB8PSBw dWJmb3JtLT5wdWJkZGxfaW5kZXg7CisJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHViZGRsX2FsbCB8 PSBwdWJmb3JtLT5wdWJkZGxfYWxsOwogCiAJCS8qCiAJCSAqIENoZWNrIGlmIGFsbCBjb2x1bW5z IHJlZmVyZW5jZWQgaW4gdGhlIGZpbHRlciBleHByZXNzaW9uIGFyZSBwYXJ0CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpp bmRleCBmZGNmMjdkZDFlLi4xNjIzYWJmMTQ1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQwNjcsNiArNDA2 Nyw3IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9u cykKIAlpbnQJCQlpX3B1YnRydW5jYXRlOwogCWludAkJCWlfcHViZGRsX3RhYmxlOwogCWludAkJ CWlfcHViZGRsX2luZGV4OworCWludAkJCWlfcHViZGRsX2FsbDsKIAlpbnQJCQlpX3B1YnZpYXJv b3Q7CiAJaW50CQkJaSwKIAkJCQludHVwczsKQEAgLTQwODYsMjUgKzQwODcsMjUgQEAgZ2V0UHVi bGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwg cC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRh YmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0 ZSwgcC5wdWJkZGxfdGFibGUsIHAucHViZGRsX2luZGV4LCBwLnB1YnZpYXJvb3QgIgorCQkJCQkJ CSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUs IHAucHVidHJ1bmNhdGUsIHAucHViZGRsX3RhYmxlLCBwLnB1YmRkbF9pbmRleCwgcC5wdWJkZGxf YWxsLCBwLnB1YnZpYXJvb3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJ ZWxzZSBpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMzAwMDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5h bWUsICIKIAkJCQkJCQkgInAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBw LnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxz ZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgYXMgcC5wdWJkZGxfaW5kZXgsIHAucHVidmlhcm9v dCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBw LnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNl IGFzIHAucHViZGRsX2luZGV4LCBmYWxzZSBhcyBwLnB1YmRkbF9hbGwsIHAucHVidmlhcm9vdCAi CiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNlIGlmIChmb3V0LT5yZW1v dGVWZXJzaW9uID49IDExMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJ CQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJCSAicC5w dWJvd25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVw ZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxl LCBmYWxzZSBhcyBwLnB1YmRkbF9pbmRleCwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCisJCQkJCQkJ ICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwg cC5wdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIGFzIHAucHViZGRs X2luZGV4LCBmYWxzZSBhcyBwLnB1YmRkbF9hbGwsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgogCQkJ CQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1l LCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5w dWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMgcHVidHJ1bmNhdGUs IGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBhcyBwLnB1YmRkbF9pbmRleCwgZmFsc2Ug QVMgcHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAu cHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMgcHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAu cHViZGRsX3RhYmxlLCBmYWxzZSBhcyBwLnB1YmRkbF9pbmRleCwgZmFsc2UgYXMgcC5wdWJkZGxf YWxsLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24g cCIpOwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19U VVBMRVNfT0spOwpAQCAtNDEyMiw2ICs0MTIzLDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCWlfcHVidHJ1bmNhdGUgPSBQUWZudW1iZXIo cmVzLCAicHVidHJ1bmNhdGUiKTsKIAlpX3B1YmRkbF90YWJsZSA9IFBRZm51bWJlcihyZXMsICJw dWJkZGxfdGFibGUiKTsKIAlpX3B1YmRkbF9pbmRleCA9IFBRZm51bWJlcihyZXMsICJwdWJkZGxf aW5kZXgiKTsKKwlpX3B1YmRkbF9hbGwgPSBQUWZudW1iZXIocmVzLCAicHViZGRsX2FsbCIpOwog CWlfcHVidmlhcm9vdCA9IFBRZm51bWJlcihyZXMsICJwdWJ2aWFyb290Iik7CiAKIAlwdWJpbmZv ID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKFB1YmxpY2F0aW9uSW5mbykpOwpAQCAtNDE0OSw2 ICs0MTUxLDggQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGlj YXRpb25zKQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJkZGxfdGFibGUpLCAi dCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YmRkbF9pbmRleCA9CiAJCQkoc3RyY21wKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3B1YmRkbF9pbmRleCksICJ0IikgPT0gMCk7CisJCXB1YmluZm9baV0u cHViZGRsX2FsbCA9CisJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmRkbF9hbGwp LCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YnZpYXJvb3QgPQogCQkJKHN0cmNtcChQUWdl dHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwgInQiKSA9PSAwKTsKIApAQCAtNDI1MCw2ICs0 MjU0LDE1IEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlv bkluZm8gKnB1YmluZm8pCiAJCQlmaXJzdCA9IGZhbHNlOwogCQl9CiAKKwkJaWYgKHB1YmluZm8t PnB1YmRkbF9hbGwpCisJCXsKKwkJCWlmICghZmlyc3QpCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIsICIpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgImFsbCIp OworCQkJZmlyc3QgPSBmYWxzZTsKKwkJfQorCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiJyIpOwogCX0KIApAQCAtODA0MCw3ICs4MDUzLDcgQEAgZ2V0UHVibGljYXRpb25FdmVudFRy aWdnZXJzKEFyY2hpdmUgKmZvdXQsIFNpbXBsZVN0cmluZ0xpc3QgKnNraXBUcmlnZ2VycykKIAog CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJICJTRUxFQ1Qgb2lkIEZST00gcGdf cHVibGljYXRpb24gIgotCQkJCQkJICJXSEVSRSBwdWJkZGxfdGFibGUiKTsKKwkJCQkJCSAiV0hF UkUgcHViZGRsX2FsbCBPUiBwdWJkZGxfdGFibGUiKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVy eShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIAludHVwcyA9IFBRbnR1cGxl cyhyZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggZWZkNjM0NzdhOC4uNzA2ZjIwNmM4YiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCkBAIC02MjIsNiArNjIyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwog CWJvb2wJCXB1YnRydW5jYXRlOwogCWJvb2wJCXB1YmRkbF90YWJsZTsKIAlib29sCQlwdWJkZGxf aW5kZXg7CisJYm9vbAkJcHViZGRsX2FsbDsKIAlib29sCQlwdWJ2aWFyb290OwogfSBQdWJsaWNh dGlvbkluZm87CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggZGY3OWM3OWU4ZC4uNTY4ZmUyOTZiMyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK QEAgLTYyMDgsOSArNjIwOCwxMSBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJewogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLFxuICBwdWJkZGxf dGFibGUgQVMgXCIlc1wiLFxuIgotCQkJCQkJICAiICBwdWJkZGxfaW5kZXggQVMgXCIlc1wiXG4i LAorCQkJCQkJICAiICBwdWJkZGxfaW5kZXggQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJk ZGxfYWxsIEFTIFwiJXNcIlxuIiwKIAkJCQkJCSAgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIiks Ci0JCQkJCQkgIGdldHRleHRfbm9vcCgiSW5kZXggRERMcyIpKTsKKwkJCQkJCSAgZ2V0dGV4dF9u b29wKCJJbmRleCBERExzIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiQWxsIERETHMiKSk7CiAJ fQogCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIixcbiAgcHViaW5zZXJ0IEFTIFwi JXNcIixcbiIKQEAgLTYzNDMsNyArNjM0NSw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4pCiAJCQkJCSAgIiAgcHViYWxsdGFibGVzIik7CiAJaWYgKGhhc19wdWJk ZGwpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCi0JCQkJCQkJICIsIHB1YmRkbF90YWJs ZSwgcHViZGRsX2luZGV4Iik7CisJCQkJCQkJICIsIHB1YmRkbF90YWJsZSwgcHViZGRsX2luZGV4 LCBwdWJkZGxfYWxsIik7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAogCQkJCQkJICIs ICBwdWJpbnNlcnQsIHB1YnVwZGF0ZSwgcHViZGVsZXRlIik7CkBAIC02NDA1LDcgKzY0MDcsNyBA QCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQlpZiAoaGFzX3B1 YnZpYXJvb3QpCiAJCQluY29scysrOwogCQlpZiAoaGFzX3B1YmRkbCkKLQkJCW5jb2xzICs9IDI7 CisJCQluY29scyArPSAzOwogCiAJCWluaXRQUUV4cEJ1ZmZlcigmdGl0bGUpOwogCQlwcmludGZQ UUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlB1YmxpY2F0aW9uICVzIiksIHB1Ym5hbWUpOwpAQCAtNjQx Nyw2ICs2NDE5LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikK IAkJewogCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJUYWJsZSBE RExzIiksIHRydWUsIGFsaWduKTsKIAkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRl eHRfbm9vcCgiSW5kZXggRERMcyIpLCB0cnVlLCBhbGlnbik7CisJCQlwcmludFRhYmxlQWRkSGVh ZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkFsbCBERExzIiksIHRydWUsIGFsaWduKTsKIAkJfQog CQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkluc2VydHMiKSwgdHJ1 ZSwgYWxpZ24pOwogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlVw ZGF0ZXMiKSwgdHJ1ZSwgYWxpZ24pOwpAQCAtNjQzOSw2ICs2NDQyLDcgQEAgZGVzY3JpYmVQdWJs aWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJewogCQkJcHJpbnRUYWJsZUFkZENlbGwo JmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA5KSwgZmFsc2UsIGZhbHNlKTsKIAkJCXByaW50VGFi bGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMTApLCBmYWxzZSwgZmFsc2UpOwor CQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMSksIGZhbHNl LCBmYWxzZSk7CiAJCX0KIAogCQlpZiAoIXB1YmFsbHRhYmxlcykKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaAppbmRleCA0Njc3MzFjNjFhLi4zNWIzZWEyNWU1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC02OSw2ICs2OSw5IEBAIENBVEFMT0cocGdfcHVibGlj YXRpb24sNjEwNCxQdWJsaWNhdGlvblJlbGF0aW9uSWQpCiAKIAkvKiB0cnVlIGlmIGluZGV4IGRk bHMgYXJlIHB1Ymxpc2hlZCAqLwogCWJvb2wJCXB1YmRkbF9pbmRleDsKKworCS8qIHRydWUgaWYg YWxsIHN1cHBvcnRlZCBkZGxzIGFyZSBwdWJsaXNoZWQgKi8KKwlib29sCQlwdWJkZGxfYWxsOwog fSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbjsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtODks NiArOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkFjdGlvbnMKIAlib29sCQlwdWJ0 cnVuY2F0ZTsKIAlib29sCQlwdWJkZGxfdGFibGU7CiAJYm9vbAkJcHViZGRsX2luZGV4OworCWJv b2wJCXB1YmRkbF9hbGw7CiB9IFB1YmxpY2F0aW9uQWN0aW9uczsKIAogdHlwZWRlZiBzdHJ1Y3Qg UHVibGljYXRpb25EZXNjCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb2xsYXRp b25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmgKaW5kZXggYjc2 YzdiM2RjMy4uNTNjNGExYThjMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29s bGF0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuaApA QCAtMTgsNyArMTgsOCBAQAogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCiAKLWV4dGVybiBPYmplY3RBZGRyZXNzIERlZmlu ZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0 ZXJzLCBib29sIGlmX25vdF9leGlzdHMpOworZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lQ29s bGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMs CisJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywgT2JqZWN0QWRkcmVzcyAqZnJvbV9jb2xs aWQpOwogZXh0ZXJuIHZvaWQgSXNUaGVyZUNvbGxhdGlvbkluTmFtZXNwYWNlKGNvbnN0IGNoYXIg KmNvbGxuYW1lLCBPaWQgbnNwT2lkKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyQ29sbGF0 aW9uKEFsdGVyQ29sbGF0aW9uU3RtdCAqc3RtdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3Ry aWdnZXIuaAppbmRleCBjYmE0ZTcyNDU1Li4zMzk1NTNkNDU2IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZXZlbnRfdHJpZ2dlci5oCkBAIC0xMzIsNSArMTMyLDcgQEAgZXh0ZXJuIHZvaWQgRXZlbnRUcmln Z2VyQ29sbGVjdENyZWF0ZU9wQ2xhc3MoQ3JlYXRlT3BDbGFzc1N0bXQgKnN0bXQsCiBleHRlcm4g dm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUU0NvbmZpZyhBbHRlclRTQ29uZmlndXJhdGlv blN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJCSBPaWQgY2ZnSWQsIE9pZCAqZGljdElkcywgaW50IG5k aWN0cyk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJEZWZQcml2cyhBbHRl ckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqc3RtdCk7CitleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJD b2xsZWN0U2VjTGFiZWwoT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBjaGFyICpwcm92aWRlciwKKwkJ CQkJCQkJCQlTZWNMYWJlbFN0bXQgKnN0bXQpOwogCiAjZW5kaWYJCQkJCQkJLyogRVZFTlRfVFJJ R0dFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oIGIvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWcuaAppbmRleCAwNzZjMjdlNjQyLi4wMjU5YTRiNGY2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvY21k dGFnLmgKQEAgLTUzLDcgKzUzLDcgQEAgQ29weVF1ZXJ5Q29tcGxldGlvbihRdWVyeUNvbXBsZXRp b24gKmRzdCwgY29uc3QgUXVlcnlDb21wbGV0aW9uICpzcmMpCiBleHRlcm4gdm9pZCBJbml0aWFs aXplUXVlcnlDb21wbGV0aW9uKFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwogZXh0ZXJuIGNvbnN0IGNo YXIgKkdldENvbW1hbmRUYWdOYW1lKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gY29u c3QgY2hhciAqR2V0Q29tbWFuZFRhZ05hbWVBbmRMZW4oQ29tbWFuZFRhZyBjb21tYW5kVGFnLCBT aXplICpsZW4pOwotZXh0ZXJuIENvbW1hbmRUYWcgKkdldENvbW1hbmRUYWdzRm9yRERMUmVwbChp bnQgKm5jb21tYW5kcyk7CitleHRlcm4gTGlzdCAqR2V0Q29tbWFuZFRhZ3NGb3JERExSZXBsKHZv aWQpOwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfZGlzcGxheV9yb3djb3VudChDb21tYW5kVGFn IGNvbW1hbmRUYWcpOwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfZXZlbnRfdHJpZ2dlcl9vayhD b21tYW5kVGFnIGNvbW1hbmRUYWcpOwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfdGFibGVfcmV3 cml0ZV9vayhDb21tYW5kVGFnIGNvbW1hbmRUYWcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dGNvcC9kZGxfZGVwYXJzZS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oCmluZGV4 IDJiNzc1NGJmYWMuLjU4MWE0NzBjMDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGRs X2RlcGFyc2UuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKQEAgLTEyLDEx ICsxMiwxMyBAQAogI2lmbmRlZiBERExfREVQQVJTRV9ICiAjZGVmaW5lIERETF9ERVBBUlNFX0gK IAorI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJ0Y29wL2Rl cGFyc2VfdXRpbGl0eS5oIgogCiBleHRlcm4gY2hhciAqZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQo Q29sbGVjdGVkQ29tbWFuZCAqY21kLCBib29sIGluY2x1ZGVfb3duZXIsIGJvb2wgdmVyYm9zZV9t b2RlKTsKIGV4dGVybiBjaGFyICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhjaGFyICpqc29u YiwgY2hhcioqIG93bmVyKTsKIGV4dGVybiBjaGFyICpkZXBhcnNlX2Ryb3BfY29tbWFuZChjb25z dCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAqb2JqZWN0dHlwZSwKIAkJCQkJCQkJICBE cm9wQmVoYXZpb3IgYmVoYXZpb3IpOworZXh0ZXJuIGNoYXIgKiBkZXBhcnNlX0FsdGVyUHVibGlj YXRpb25Ecm9wU3RtdChTUUxEcm9wT2JqZWN0ICpvYmopOwogCiAjZW5kaWYJCQkJCQkJLyogRERM X0RFUEFSU0VfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxp dHkuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKaW5kZXggODdhNzYxYmIz ZS4uY2NlM2MwN2ZjMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxp dHkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCkBAIC0zMCw2ICsz MCw3IEBAIHR5cGVkZWYgZW51bSBDb2xsZWN0ZWRDb21tYW5kVHlwZQogCVNDVF9BbHRlckRlZmF1 bHRQcml2aWxlZ2VzLAogCVNDVF9DcmVhdGVPcENsYXNzLAogCVNDVF9BbHRlclRTQ29uZmlnLAor CVNDVF9TZWN1cml0eUxhYmVsLAogCVNDVF9DcmVhdGVUYWJsZUFzCiB9IENvbGxlY3RlZENvbW1h bmRUeXBlOwogCkBAIC0xMDUsNiArMTA2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENvbGxlY3RlZENv bW1hbmQKIAkJCU9iamVjdFR5cGUJb2JqdHlwZTsKIAkJfQkJCWRlZnByaXZzOwogCisJCS8qIFNF Q1VSSVRZIExBQkVMICovCisJCXN0cnVjdAorCQl7CisJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7 CisJCQljaGFyCQkgKnByb3ZpZGVyOworCQl9CQkJc2VjbGFiZWw7CisKIAkJLyogQ1JFQVRFIFRB QkxFIEFTICovCiAJCXN0cnVjdAogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9h Y2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY4ZTEyMzhmYTIuLmYwNTU3OGQz MjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2FjbC5oCkBAIC0yMDksNiArMjA5LDggQEAgZXh0ZXJuIEFjbE1vZGUgYWNsbWFzayhj b25zdCBBY2wgKmFjbCwgT2lkIHJvbGVpZCwgT2lkIG93bmVySWQsCiAJCQkJCSAgIEFjbE1vZGUg bWFzaywgQWNsTWFza0hvdyBob3cpOwogZXh0ZXJuIGludAlhY2xtZW1iZXJzKGNvbnN0IEFjbCAq YWNsLCBPaWQgKipyb2xlaWRzKTsKIAorZXh0ZXJuIGNvbnN0IGNoYXIgKnByaXZpbGVnZV90b19z dHJpbmcoQWNsTW9kZSBwcml2aWxlZ2UpOworCiBleHRlcm4gYm9vbCBoYXNfcHJpdnNfb2Zfcm9s ZShPaWQgbWVtYmVyLCBPaWQgcm9sZSk7CiBleHRlcm4gYm9vbCBtZW1iZXJfY2FuX3NldF9yb2xl KE9pZCBtZW1iZXIsIE9pZCByb2xlKTsKIGV4dGVybiB2b2lkIGNoZWNrX2Nhbl9zZXRfcm9sZShP aWQgbWVtYmVyLCBPaWQgcm9sZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9hY2xj aGtfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbGNoa19pbnRlcm5hbC5oCmluZGV4 IDU1YWY2MjRmYjMuLjk0NjU0NWY1M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2Fj bGNoa19pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbGNoa19pbnRlcm5hbC5o CkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJTGlzdAkgICAqZ3JhbnRlZXM7CiAJ Ym9vbAkJZ3JhbnRfb3B0aW9uOwogCURyb3BCZWhhdmlvciBiZWhhdmlvcjsKKwlPaWQJCQlncmFu dG9yX3VpZDsKIH0gSW50ZXJuYWxHcmFudDsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9idWlsdGlucy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAppbmRleCBjOTBj MzJiZmYxLi40OGI4YmZkNzlhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlu cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKQEAgLTEyMyw2ICsxMjMsNyBA QCBleHRlcm4gRGF0dW0gbnVtZXJpY19mbG9hdDhfbm9fb3ZlcmZsb3coUEdfRlVOQ1RJT05fQVJH Uyk7CiAjZGVmaW5lIEZPUk1BVF9UWVBFX0ZPUkNFX1FVQUxJRlkJMHgwNAkvKiBmb3JjZSBxdWFs aWZpY2F0aW9uIG9mIHR5cGUgKi8KICNkZWZpbmUgRk9STUFUX1RZUEVfSU5WQUxJRF9BU19OVUxM CTB4MDgJLyogTlVMTCBpZiB1bmRlZmluZWQgKi8KIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV9l eHRlbmRlZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsIGJpdHMxNiBmbGFncyk7CitleHRl cm4gY2hhciAqZm9ybWF0X3Byb2NlZHVyZV9hcmdzKE9pZCBwcm9jZWR1cmVfb2lkLCBib29sIGZv cmNlX3F1YWxpZnkpOwogCiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfYmUoT2lkIHR5cGVfb2lk KTsKIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV9iZV9xdWFsaWZpZWQoT2lkIHR5cGVfb2lkKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggOWFkYzU4OTE3My4uYjZlMjBlN2VlNCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cnVsZXV0aWxzLmgKQEAgLTEzLDkgKzEzLDEyIEBACiAjaWZuZGVmIFJVTEVVVElMU19ICiAjZGVm aW5lIFJVTEVVVElMU19ICiAKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cC5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCiAjaW5jbHVkZSAi bm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRl ICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgogCiBzdHJ1Y3QgUGxhbjsJCQkJCS8qIGF2b2lkIGluY2x1 ZGluZyBwbGFubm9kZXMuaCBoZXJlICovCiBzdHJ1Y3QgUGxhbm5lZFN0bXQ7CkBAIC0yMyw3ICsy NiwxMCBAQCBzdHJ1Y3QgUGxhbm5lZFN0bXQ7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfaW5kZXhk ZWZfc3RyaW5nKE9pZCBpbmRleHJlbGlkKTsKIGV4dGVybiBjaGFyICpwZ19nZXRfaW5kZXhkZWZf Y29sdW1ucyhPaWQgaW5kZXhyZWxpZCwgYm9vbCBwcmV0dHkpOworZXh0ZXJuIGNoYXIgKnBnX2dl dF90cmlnZ2VyX3doZW5jbGF1c2UoRm9ybV9wZ190cmlnZ2VyIHRyaWdyZWMsCisJCQkJCQkJCQkg ICBOb2RlICp3aGVuQ2xhdXNlLCBib29sIHByZXR0eSk7CiBleHRlcm4gY2hhciAqcGdfZ2V0X3F1 ZXJ5ZGVmKFF1ZXJ5ICpxdWVyeSwgYm9vbCBwcmV0dHkpOworZXh0ZXJuIGNoYXIgKnBnX2dldF92 aWV3ZGVmX3N0cmluZyhPaWQgdmlld29pZCk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfcGFydGtl eWRlZl9jb2x1bW5zKE9pZCByZWxpZCwgYm9vbCBwcmV0dHkpOwogZXh0ZXJuIGNoYXIgKnBnX2dl dF9wYXJ0a2V5ZGVmX3N0cmluZyhPaWQgcmVsaWQpOwpAQCAtMzEsNiArMzcsOSBAQCBleHRlcm4g Y2hhciAqcGdfZ2V0X3BhcnRjb25zdHJkZWZfc3RyaW5nKE9pZCBwYXJ0aXRpb25JZCwgY2hhciAq YWxpYXNuYW1lKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9jb25zdHJhaW50ZGVmX2NvbW1hbmQo T2lkIGNvbnN0cmFpbnRJZCk7CiBleHRlcm4gY2hhciAqcGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3Ry aW5nKE9pZCBjb25zdHJhaW50SWQpOworZXh0ZXJuIHZvaWQgcGdfZ2V0X3J1bGVkZWZfZGV0YWls ZWQoRGF0dW0gZXZfcXVhbCwgRGF0dW0gZXZfYWN0aW9uLAorCQkJCQkJCQkJY2hhciAqKndoZXJl Q2xhdXNlLCBMaXN0ICoqYWN0aW9ucyk7CisKIGV4dGVybiBjaGFyICpkZXBhcnNlX2V4cHJlc3Np b24oTm9kZSAqZXhwciwgTGlzdCAqZHBjb250ZXh0LAogCQkJCQkJCQlib29sIGZvcmNlcHJlZml4 LCBib29sIHNob3dpbXBsaWNpdCk7CiBleHRlcm4gTGlzdCAqZGVwYXJzZV9jb250ZXh0X2Zvcihj b25zdCBjaGFyICphbGlhc25hbWUsIE9pZCByZWxpZCk7CkBAIC01Miw1ICs2MSw2IEBAIGV4dGVy biB2b2lkIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MsIE9pZCBhY3R1YWxfZGF0YXR5cGUs CiBleHRlcm4gY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiAKIGV4dGVybiBj aGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CitleHRl cm4gdm9pZCBwcmludF9mdW5jdGlvbl9zcWxib2R5KFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUg cHJvY3R1cCk7CiAKICNlbmRpZgkJCQkJCQkvKiBSVUxFVVRJTFNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHNxbC5vdXQKaW5kZXggM2U2ZDI3OTFjOC4uNDQ3NGMzYjczMCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BzcWwub3V0CkBAIC02MjIzLDkgKzYyMjMsOSBAQCBMaXN0IG9mIHNjaGVtYXMK ICgwIHJvd3MpCiAKIFxkUnAgIm5vLnN1Y2gucHVibGljYXRpb24iCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSBOYW1lIHwg T3duZXIgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgTmFtZSB8 IE93bmVyIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQogKDAgcm93cykKIAogXGRScyAibm8uc3VjaC5zdWJzY3JpcHRpb24iCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IGViY2ZmNDFjMGMuLmM1NGNlNTNlN2Ig MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0zMCwyMCAr MzAsMjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAx OiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAndHJ1ZScsIHB1 Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAg IE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRh YmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHBpYl9p bnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICAgIHwgZgotIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMK KyAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgdGVzdHB1 Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmCiAoMiByb3dzKQogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUnKTsKIFxk UnAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZh dWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8 ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5k ZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0 ZXN0cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCBmICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYK ICgyIHJvd3MpCiAKIC0tLSBhZGRpbmcgdGFibGVzCkBAIC04NywxMCArODcsMTAgQEAgUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBzY2hlbWEgdG8g J0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFi bGUgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBE RExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTk5LDIwICs5OSwyMCBA QCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEg ZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2Zv cnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxl CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJ bmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAg ICJwdWJsaWMudGVzdHB1Yl90YmwxIgogCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1h IHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0 YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5k ZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0IgogCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7 CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSBGT1IgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdCwgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y X3RibF9zY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMg fCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0 LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xMzUsMTAgKzEzNSwxMCBA QCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdGFibGUg b2YgdGhlIHNhbWUgc2NoZW1hIHRvIHRoZSBzY2hlbWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEFERCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7 CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CkBAIC0xNDcsMTAgKzE0NywxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0g c2hvdWxkIGJlIGFibGUgdG8gZHJvcCB0aGUgdGFibGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yc2NoZW1hIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVz dHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE2MSwxMCArMTYxLDEwIEBA IEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfbm9wayIgaXMgbm90IHBhcnQgb2YgdGhlIHB1Ymxp Y2F0aW9uCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgdGFibGUgdG8gc2NoZW1hIHB1YmxpY2F0 aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFCTEUgcHViX3Rl c3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25v cGsiCiAKQEAgLTE4NiwxMCArMTg2LDEwIEBAIFB1YmxpY2F0aW9uczoKICAgICAidGVzdHB1Yl9m b3JhbGx0YWJsZXMiCiAKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0 YWJsZXMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZXN0cHVi X3RibDI7CkBAIC0yMDEsMTkgKzIwMSwxOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMg Rk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1Ig VEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRS cCsgdGVzdHB1YjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRl eCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJw dWJsaWMudGVzdHB1Yl90YmwzIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKIAogXGRScCsg dGVzdHB1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViNAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBE RExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl90YmwzIgogCkBAIC0yMzQsMTAgKzIzNCwxMCBAQCBVUERBVEUgdGVzdHB1Yl9w YXJ0ZWQxIFNFVCBhID0gMTsKIC0tIG9ubHkgcGFyZW50IGlzIGxpc3RlZCBhcyBiZWluZyBpbiBw dWJsaWNhdGlvbiwgbm90IHRoZSBwYXJ0aXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9ycGFydGVkIEFERCBUQUJMRSB0ZXN0cHViX3BhcnRlZDsKIFxkUnArIHRlc3RwdWJfZm9ycGFy dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5k ZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAi cHVibGljLnRlc3RwdWJfcGFydGVkIgogCkBAIC0yNTIsMTAgKzI1MiwxMCBAQCBBTFRFUiBUQUJM RSB0ZXN0cHViX3BhcnRlZCBERVRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcGFydGVkMTsKIFVQREFU RSB0ZXN0cHViX3BhcnRlZDEgU0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JwYXJ0ZWQgU0VUIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogXGRScCsg dGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRh YmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAog VGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI4NCwxMCArMjg0LDEw IEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViNSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDIgV0hF UkUgKGMgPD4gJ3Rlc3QnIEFORCBkIDwgNSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRl eCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBm ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAg InB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8PiAndGVzdCc6OnRleHQpIEFORCAo ZCA8IDUpKQpAQCAtMzAwLDEwICszMDAsMTAgQEAgVGFibGVzOgogCiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMTAwMCBBTkQg ZSA8IDIwMDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRh YmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1 Yl9yZl90YmwyIiBXSEVSRSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMx OSwxMCArMzE5LDEwIEBAIFB1YmxpY2F0aW9uczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjUgRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDI7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEi CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDEwMDApIEFORCAoZSA8 IDIwMDApKQpAQCAtMzMwLDEwICszMzAsMTAgQEAgVGFibGVzOgogLS0gcmVtb3ZlIHRlc3RwdWJf cmZfdGJsMSBhbmQgYWRkIHRlc3RwdWJfcmZfdGJsMyBhZ2FpbiAoYW5vdGhlciBXSEVSRSBleHBy ZXNzaW9uKQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZf dGJsMyBXSEVSRSAoZSA+IDMwMCBBTkQgZSA8IDUwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3Ri bDMiIFdIRVJFICgoZSA+IDMwMCkgQU5EIChlIDwgNTAwKSkKIApAQCAtMzY2LDEwICszNjYsMTAg QEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfc3ludGF4MSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCBPTkxZIHRlc3RwdWJf cmZfdGJsMyBXSEVSRSAoZSA8IDk5OSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX3N5bnRheDEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3lu dGF4MQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZf dGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKGUgPCA5OTkpCkBAIC0z NzksMTAgKzM3OSwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEs IHRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUgV0hFUkUgKGggPCA5OTkpIFdJVEgg KHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsg dGVzdHB1Yl9zeW50YXgyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X3N5bnRheDIKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInRlc3RwdWJfcmZfc2NoZW1h MS50ZXN0cHViX3JmX3RibDUiIFdIRVJFIChoIDwgOTk5KQpAQCAtNDk3LDEwICs0OTcsMTAgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJf cmZfc2NoZW1hMjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRVMgSU4gU0NI RU1BIHRlc3RwdWJfcmZfc2NoZW1hMiwgVEFCTEUgdGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJf cmZfdGJsNiBXSEVSRSAoaSA8IDk5KTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJw KyB0ZXN0cHViNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjYKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4 IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInRl c3RwdWJfcmZfc2NoZW1hMi50ZXN0cHViX3JmX3RibDYiIFdIRVJFIChpIDwgOTkpCiBUYWJsZXMg ZnJvbSBzY2hlbWFzOgpAQCAtNzE0LDEwICs3MTQsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfdGFibGVfaW5zIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB0cnVuY2F0ZScpOwogUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVf aW5zIEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEpOwkJLS0gb2sKIFxkUnArIHRlc3RwdWJfdGFi bGVfaW5zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfdGFibGVfaW5zCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3RhYmxlX2lu cworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAicHVibGljLnRlc3RwdWJfdGJsNSIgKGEpCiAKQEAgLTg5MSwxMCArODkxLDEwIEBAIENSRUFU RSBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEgaW50LCBiIGludCwgYyBpbnQsIFBS SU1BUlkgS0VZIChhLGMpKTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyBS RVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVyc19wa2V5 OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMgQUREIFRBQkxFIHRlc3Rw dWJfdGJsX2JvdGhfZmlsdGVycyAoYSxjKSBXSEVSRSAoYyAhPSAxKTsKIFxkUnArIHRlc3RwdWJf Ym90aF9maWx0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Jv dGhfZmlsdGVycworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyIgKGEsIGMpIFdIRVJF IChjIDw+IDEpCiAKQEAgLTEwOTksMTAgKzEwOTksMTAgQEAgRVJST1I6ICByZWxhdGlvbiAidGVz dHB1Yl90YmwxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0 YmwKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRibCBGT1IgVEFCTEUgdGVzdHB1Yl90 YmwxOwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YmwiIGFscmVhZHkgZXhpc3Rz CiBcZFJwKyB0ZXN0cHViX2ZvcnRibAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGJsCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3J0YmwKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAgICAicHVibGljLnRlc3Rw dWJfdGJsMSIKQEAgLTExNDAsMTAgKzExNDAsMTAgQEAgUHVibGljYXRpb25zOgogICAgICJ0ZXN0 cHViX2ZvcnRibCIKIAogXGRScCsgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4 IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAg ICAicHVibGljLnRlc3RwdWJfdGJsMSIKQEAgLTEyMjEsMTAgKzEyMjEsMTAgQEAgUkVWT0tFIENS RUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uIEZST00gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy MjsKIERST1AgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMTsK IFxkUnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9kZWZhdWx0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwg ZgogKDEgcm93KQogCiAtLSBmYWlsIC0gbXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbgpAQCAt MTIzNCwyMCArMTIzNCwyMCBAQCBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24g dGVzdHB1Yl9kZWZhdWx0CiBSRVNFVCBST0xFOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9k ZWZhdWx0IFJFTkFNRSBUTyB0ZXN0cHViX2ZvbzsKIFxkUnAgdGVzdHB1Yl9mb28KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBw dWJsaWNhdGlvbnMKLSAgICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVz dHB1Yl9mb28gfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICBOYW1lICAgICB8ICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8 IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwdWJfZm9vIHwgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg fCBmCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCiBB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvbyBSRU5BTUUgVE8gdGVzdHB1Yl9kZWZhdWx0Owog QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlcjI7CiBcZFJwIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0 cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg dGVzdHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMiB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhZGRpbmcgc2NoZW1hcyBh bmQgdGFibGVzCkBAIC0xMjYzLDE5ICsxMjYzLDE5IEBAIENSRUFURSBUQUJMRSAiQ1VSUkVOVF9T Q0hFTUEiLiJDVVJSRU5UX1NDSEVNQSIoaWQgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMg fCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdDEiCiAKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3JzY2hlbWEg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDIsIHB1Yl90ZXN0MzsKIFxk UnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xMjg5LDQ0ICsxMjg5LDQ0IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNl9m b3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgIkNVUlJFTlRfU0NIRU1BIiwgQ1VSCiBDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFCTEUgIkNVUlJFTlRfU0NIRU1B Ii4iQ1VSUkVOVF9TQ0hFTUEiOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRl c3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRh YmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHViNF9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogCiBcZFJwKyB0ZXN0cHViNV9mb3JzY2hl bWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjVfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1X2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5k ZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3Rw dWI2X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjZf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEiCiAgICAgInB1YmxpYyIKIAog XGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKIFRhYmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAgLTEz NjAsMTAgKzEzNjAsMTAgQEAgRVJST1I6ICBzY2hlbWEgInRlc3RwdWJfdmlldyIgZG9lcyBub3Qg ZXhpc3QKIC0tIGRyb3BwaW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBp biBwdWJsaWNhdGlvbgogRFJPUCBTQ0hFTUEgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzNzEsMjAg KzEzNzEsMjAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbmFtaW5nIHRoZSBzY2hlbWEg c2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJsaWNhdGlvbgogQUxURVIgU0NIRU1BIHB1 Yl90ZXN0MSBSRU5BTUUgdG8gcHViX3Rlc3QxX3JlbmFtZWQ7CiBcZFJwKyB0ZXN0cHViMl9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MV9yZW5hbWVkIgogICAgICJwdWJfdGVzdDIiCiAKIEFM VEVSIFNDSEVNQSBwdWJfdGVzdDFfcmVuYW1lZCBSRU5BTUUgdG8gcHViX3Rlc3QxOwogXGRScCsg dGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIK QEAgLTEzOTIsMTAgKzEzOTIsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1 YmxpY2F0aW9uIGFkZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVt YSBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5k ZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQwNCwxMCArMTQw NCwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFf Zm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJP UjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRh YmxlIERETHMgfCBJbmRleCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBA IC0xNDE2LDEwICsxNDE2LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwog RVJST1I6ICBzY2hlbWEgInB1Yl90ZXN0MSIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRp b24gInRlc3RwdWIxX2ZvcnNjaGVtYSIKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwg QWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAg ICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDI3LDEwICsxNDI3LDEwIEBAIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBkcm9wIHNjaGVtYQogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBw dWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRl eCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIK IApAQCAtMTQzOCwxMCArMTQzOCwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDI7CiBFUlJPUjogIHRhYmxlcyBmcm9tIHNjaGVtYSAicHViX3Rlc3QyIiBhcmUgbm90IHBhcnQg b2YgdGhlIHB1YmxpY2F0aW9uCiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1 Yl90ZXN0MSIKIApAQCAtMTQ0OSwyOSArMTQ0OSwyOSBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgog QUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVN QSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hl bWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1 Yl90ZXN0MSIKIAogLS0gZHJvcCBhbGwgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIx X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKICgx IHJvdykKIAogLS0gYWx0ZXIgcHVibGljYXRpb24gc2V0IG11bHRpcGxlIHNjaGVtYQogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MSwgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5kZXggRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJf dGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0ODAsMTAgKzE0ODAsMTAgQEAgVGFibGVzIGZy b20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFC TEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9l eGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXgg RERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQ5MiwxMCArMTQ5Miwx MCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVtb3ZpbmcgdGhlIGR1cGxpY2F0ZSBzY2hl bWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbmRleCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERM cyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTU3NCwxOCArMTU3NCwxOCBAQCBTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2No ZW1hOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbmRl eCBERExzIHwgQWxsIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QxOwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXgg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBBbGwgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAK QEAgLTE1OTUsMjAgKzE1OTUsMjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2No ZW1hX2ZvcnRhYmxlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgVEEKIENSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYSBGT1IgVEFCTEUgcHViX3Rlc3Qy LnRibDEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFfZm9y dGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluZGV4IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFs bCBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRi bDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIFxkUnArIHRlc3Rw dWJfZm9ydGFibGVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluZGV4IERETHMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5kZXggRERMcyB8IEFsbCBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEiCiBUYWJsZXMgZnJvbSBz Y2hlbWFzOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4 IDljNTI4OTBmMWQuLmMyYmQ0ZDNmNjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1 YnNjcmlwdGlvbi5vdXQKQEAgLTExNSwxOCArMTE1LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViNCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qn IFBVCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5l Y3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBj cmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQg cmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwot ICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBSdW4gYXMgT3duZXI/IHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9u ZSAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBSdW4gYXMgT3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgbm9uZSAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEg cm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9yaWdpbiA9 IGFueSk7CiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFJ1biBhcyBPd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1biBhcyBPd25lcj8g fCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0xNDQsMTAgKzE0NCwxMCBAQCBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jhcic7CiBFUlJPUjogIGlu dmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFy IiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUnVuIGFzIE93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAg ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93bmVy PyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIFBVQkxJQ0FUSU9OIHRlc3RwdWIyLCB0ZXN0cHVi MyBXSVRIIChyZWZyZXNoID0gZmFsc2UpOwpAQCAtMTY2LDEwICsxNjYsMTAgQEAgRVJST1I6ICB1 bnJlY29nbml6ZWQgc3Vic2NyaXB0aW9uIHBhcmFtZXRlcjogImNyZWF0ZV9zbG90IgogLS0gb2sK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gJzAvMTIzNDUn KTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVu IGFzIE93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAg ICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 MiB8IDAvMTIzNDUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBSdW4gYXMgT3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpA QCAtMTc4LDEwICsxNzgsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT S0lQIChsc24gPSBOT05FKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJ UCAobHNuID0gJzAvMCcpOwogRVJST1I6ICBpbnZhbGlkIFdBTCBsb2NhdGlvbiAoTFNOKTogMC8w CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1biBh cyBPd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIg fCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBSdW4gYXMgT3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMjEzLDEwICsyMTMsMTAgQEAgQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUIChzeW5jaHJvbm91c19jb21taXQg PSBmb29iYXIpOwogRVJST1I6ICBpbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgInN5bmNocm9u b3VzX2NvbW1pdCI6ICJmb29iYXIiCiBISU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWwsIHJl bW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2ZmLgogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAg ICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBSdW4gYXMgT3duZXI/IHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICB8IGxv Y2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBS dW4gYXMgT3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgICAgICAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVz dCBzaW1wbGUKQEAgLTI0NSwxOSArMjQ1LDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBX QVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAog SElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUg dGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVz aCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBSdW4gYXMgT3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBSdW4gYXMgT3duZXI/IHwgTWF0Y2gg RERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYgICAgICAg ICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFyeSA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBm ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVu IGFzIE93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERS T1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTI2OSwyNyArMjY5LDI3IEBAIENS RUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVk LCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5 b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUg c3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBSdW4gYXMgT3duZXI/IHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBSdW4gYXMgT3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykK IAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBh cmFsbGVsKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93 bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQ dWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93bmVyPyB8IE1hdGNoIERETCBvd25lciB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFJ1biBhcyBPd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1biBhcyBPd25l cj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0g cHVibGljYXRpb24gYWxyZWFkeSBleGlzdHMKQEAgLTMwNCwxMCArMzA0LDEwIEBAIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0 cHViMiBXSVRIIChyZWZyCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQ VUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVS Uk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAi cmVncmVzc190ZXN0c3ViIgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlv biAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBSdW4gYXMgT3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi LHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1 biBhcyBPd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlvbiB1c2Vk IG1vcmUgdGhhbiBvbmNlCkBAIC0zMjIsMTAgKzMyMiwxMCBAQCBFUlJPUjogIHB1YmxpY2F0aW9u ICJ0ZXN0cHViMyIgaXMgbm90IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogLS0g b2sgLSBkZWxldGUgcHVibGljYXRpb25zCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZnJlc2ggPSBm YWxzZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1biBhcyBPd25l cj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1biBhcyBPd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7 CkBAIC0zNjEsMTAgKzM2MSwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklORzog IHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBU byBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBs aWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1 YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFz IE93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgcCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93bmVyPyB8IE1hdGNoIERETCBvd25l ciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgcCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBv cHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM3MywxMCArMzczLDEwIEBAIEVSUk9SOiAgdW5yZWNv Z25pemVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJ0d29fcGhhc2UiCiAtLSBidXQgY2FuIGFs dGVyIHN0cmVhbWluZyB3aGVuIHR3b19waGFzZSBlbmFibGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1biBhcyBPd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9u ICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg ZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFJ1 biBhcyBPd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7 CkBAIC0zODYsMTAgKzM4NiwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklORzog IHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBU byBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBs aWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1 YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFz IE93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93bmVyPyB8IE1hdGNoIERETCBvd25l ciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTQwMiwxOCArNDAyLDE4IEBAIENSRUFU RSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBi dXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3Ug bXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vi c2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBSdW4gYXMgT3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv ZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBS dW4gYXMgT3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3Ig PSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93 bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQ dWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUnVuIGFzIE93bmVyPyB8IE1hdGNoIERETCBvd25lciB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKLS0gCjIuMzAuMC53aW5kb3dzLjIKCg== --_007_OS0PR01MB571643602A8B7226B558DBAA94969OS0PR01MB5716jpnp_--