Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rVWTR-00HOHd-FB for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Feb 2024 12:47:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rVWTQ-004YDl-IH for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Feb 2024 12:47:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rVWTP-004YDS-Uk for pgsql-hackers@lists.postgresql.org; Thu, 01 Feb 2024 12:47:20 +0000 Received: from esa14.fujitsucc.c3s2.iphmx.com ([68.232.156.101]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rVWTM-004tjA-8k for pgsql-hackers@lists.postgresql.org; Thu, 01 Feb 2024 12:47:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1706791636; x=1738327636; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=A09T8Aag/EWPYammAvLfefPWHrI0/Cc7OqB9/CYk8C8=; b=BgTg2Zm3nvJXOUyBqb1472yxq9KhrtgLf4umTzEJfaiPY+1LzEWdxXIw iWqolz6GVY2dAzNzKjIPmrf6JW5/A0I+PAYS/eNAX388aKmLchEtwKtJY N3YetjHFSdTgOcemTjiRdSm9sKRl95NPqVDiUrYdlE/Xom6BRGfe32ZQV Z3MnQopc6gICKFykpLoz8YklSqbSPLop18Wwd/xlxYscjY6vOaxzf7Q6Y H77ukcBXXN5FRPEYyZ1MYqYlNPf0uVjxMFiv8tYKbtNdCyeDqVBNDZP/Q qysg3dYsWPk5WLpvUaqT4UlLs54zVD3S+1Pww2ip8vmoqBDWM0idEHzN8 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10969"; a="109546820" X-IronPort-AV: E=Sophos;i="6.05,234,1701097200"; d="scan'208,223";a="109546820" Received: from mail-os0jpn01lp2104.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.104]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Feb 2024 21:47:11 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fAWSsqOfC2/H6coLJFXOXE/kt8VcuzM+FBW8atCcyhZgNrWOfk90sRiRQPXM62NhWcVpT+QCkWk3HE4wd0gd1hRJ0OF4FLoG/3HamaFQzzY7C7y6TM4RiUrnt0KIzfVIF5bOmNtHDzgqERzCTjQdB0oRl6IVwkzdtR3eb6GSRD59tlBjREwK77/rJLNStrhALOmJziucADkVcOH6pVMvKz9wdR77Qhs5WVf0ag515zGRPerYKzl8AJEK5qL6rdbzo2zTyZmPfr97zysj8RZrIx4f6Z34ypeiW0wzFEyN+/V2yFIWIS3VjZhubGDibNQR0CGVnAGnodgECrNGAO0J2Q== 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=tqCh52t6Tt+1tu+mugqA0vi2b+WGfnRKyKoChwErCdo=; b=ntry6hvCeRb0jZvN0mpsevhBMGmCqs3KA3INiNsqEuEteOU/SX+3/OnzH4Xx+NF4teG2wQLdW0REuZJ+QG8vccUjZpVFOmZosDf5Rk1uJTgBWSQd/yoP1uAspbfw7DHZZX6qR4y5NHdq6jf87sxneCDrTQi6zThlwmxjOc3imF5/L7lrHbojYHXwceuKA52jqD4vjPZZ7M1/80iwUEXxbVk1nwD68pDdW7Ouqcr4HaQjybpiWqW84YxhGtvU668RoA35a3ZJSKQLMlDlsVL2B5G+5c9uycV4TBbF4BAxRB6GLgNGuMQDJul/UuzqkxHDPfND9THKzoptTIaH7MUWiw== 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 TY3PR01MB9889.jpnprd01.prod.outlook.com (2603:1096:400:22b::13) by TYWPR01MB10934.jpnprd01.prod.outlook.com (2603:1096:400:391::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.23; Thu, 1 Feb 2024 12:47:07 +0000 Received: from TY3PR01MB9889.jpnprd01.prod.outlook.com ([fe80::cd87:60f9:f281:5d81]) by TY3PR01MB9889.jpnprd01.prod.outlook.com ([fe80::cd87:60f9:f281:5d81%5]) with mapi id 15.20.7249.023; Thu, 1 Feb 2024 12:47:07 +0000 From: "Hayato Kuroda (Fujitsu)" To: "'fabriziomello@gmail.com'" , Euler Taveira CC: "pgsql-hackers@lists.postgresql.org" , vignesh C , Michael Paquier , Peter Eisentraut , Andres Freund , Ashutosh Bapat , Amit Kapila , Shlok Kyal Subject: RE: speed up a logical replica setup Thread-Topic: speed up a logical replica setup Thread-Index: AQHYJxwqCwVDEK8rxk6UuFJmWEa5OLBaerWAgBix/4CAACTuAIACleiAgACOjoCAKWVqAIApDNiAgARDvICAAC3UgIAADN4AgABJ6wCAAUerAIAHtdWAgAFvhACAAEZbgIAAWW2AgACrngCAAM0jQIAPei1wgAAshICAAp5LgIADBLQAgACKXLCABEd0gIABoIwAgAB7ucCAAcm90IAAHJgAgAACwICAAAXhgIAAC7MAgAAh+gCAAIfpEIAAGb3AgACYWmA= Date: Thu, 1 Feb 2024 12:47:06 +0000 Message-ID: References: <9a9c7e65-c47b-4400-a63e-ac6169c0860e@app.fastmail.com> 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?NTBfQWN0aW9uSWQ9YzQ1OGQ3OGEtZmIwZC00YTFlLTg0MTAtMWQyZjQyYzM1?= =?utf-8?B?YzcyO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjQtMDItMDFUMDE6NDU6NTRaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?Q?d-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: TY3PR01MB9889:EE_|TYWPR01MB10934:EE_ x-ms-office365-filtering-correlation-id: 2ee6352f-3543-4114-4377-08dc2323e61f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +qGGpumSNyI+JFUQX+906GV5BYkZUT3gQgcSpqOi+IBeiU8jsrF8hMMdrCyzf5/ngQXFChFobxyDy5rIbitp/Kfk9NCmT8JGyhsSwxLD/2/Xn+iMOKbeFj9BLtLTY1XqMWo0Wb2J32jWwWwXj6BSwAaOkpA/ZxJhRB8HFZ5ACd3y2SyeK/uukVJyT+N3fY9XbjMnL0Io20bC5f9xoJbDE+5xN8UBGBJkBeFY1PgSs/5xwGfaCMkXu2Izp+TbJpSi3puD6noUo2KBbI2s7Yd7dYaR2closyRJL1zmrDVfztE2zq038ZIiTKKhDSCVRftH8V+0cdqqvFmmMQrC7Xs8o8Kd4QZidZyR1y2L6dpnzPCs6GktwwN4V68Scv1XeLU79Xj7/fJdIbUGqFCKfG514uP6ZyGjXqLvK6Jj+XDauAQ+LKSuKVc1kGliE6tvoY/85bwn/OqeBkFz8lupRZazmrwnmjNii9G5jSYGc6zIohzFvxNmj+gR4z0Y8P4KxS02q7QdRW+sQ6vpcK9pM/eHdf4jKj3+WKdJHtAbmJfWDPqd6eJH6cVPfH1mjjRHoii/MTvU8GAIaOLKh0806IxoHmS6LjKw4Snl/PAV7rBo29ngWtBePnnZUJrw8YYCjxoz7bSAGL6yc552uSUOXd+yWdn8wPRGaBRJEQcXK2Kn37MKjvuuCobA/AWF3IfCDVV9 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY3PR01MB9889.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(396003)(136003)(346002)(376002)(39860400002)(230922051799003)(1590799021)(186009)(1800799012)(451199024)(64100799003)(1580799018)(82960400001)(2906002)(33656002)(316002)(8936002)(52536014)(5660300002)(64756008)(8676002)(4326008)(4744005)(7416002)(110136005)(66556008)(66446008)(54906003)(66946007)(86362001)(66476007)(38070700009)(85182001)(966005)(38100700002)(99936003)(122000001)(478600001)(9686003)(7696005)(2940100002)(6506007)(71200400001)(76116006)(83380400001)(26005)(41300700001)(55016003)(491001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cVNMSTRwTlBOUHRZK2pqU1MvQ0kzL0JZK1didnhwY0FwbWtnVXVRRGJhc0pr?= =?utf-8?B?S2RUTzdGNHZnejl6UkpFc0xnSW1ZSmVLdFJ6cVVQbFEzSjhmM2xnOWdCYy96?= =?utf-8?B?WlpQdmdHMy9JZ2dIb2laQnlrUkVrN3NqR0xVMnRQTVgzMzRZeTlmaDNMN2dP?= =?utf-8?B?UU9JOGpMd0N4Y0FiMU5HcHp0aGJSaGExY0Y3Nk9tMEc1eENwdzVpSnpoLzNY?= =?utf-8?B?eG9xdlRKTmdRd2VRUG43MVRvL1RocHZJVEIvWVhTUm9XMktaTlQyL3lyRHVt?= =?utf-8?B?UFFwaUxNeXhMOFpXTHlRSEwwbDJKVmplSWFvSU1DcU9MSlpEVDlTb1ppMmY3?= =?utf-8?B?eFFXVjhuMWV3M0ZCRnd4K01rclBTSmZIK1NwT3FTVjcwdXljYVZad3NRKzFt?= =?utf-8?B?Z3kxdEFyU1lxTmVMUVNnWENMQkIra1JlUFp0bXM3WkIyTVV6UWRQeEdZVTF5?= =?utf-8?B?UCtiVGtwQjVPbFk1V0lXQUw5dEtzYm9SVUdEWGVTaDJialhoa1hUelpLdFNq?= =?utf-8?B?bm4weDlVdi91L2RyeEkwUVpqaVlncWpGdEFNcDNsWHkrTUYvdk1aeDlWMnVw?= =?utf-8?B?cGFqc0Izb096bUh6Mnk2bzVQbWZxeDFYeXlRY0VKMkowS2l0ZEMzakhranZW?= =?utf-8?B?UytXNGkwWXhjYTM4ZURXdzVRK1VBNWxZVjAyYWZSSStTTjJoeGxsajlJVkgr?= =?utf-8?B?MzlnSzVvYjlVczY3c01mM1RqR2p0d0RiWkNQWFoycVdvdXd1c2ZFU1ltdnhj?= =?utf-8?B?S2VPMEZZcUFNS0RIZ2Z5bXhrUklmN3YxRGdBUHhIM0VVbE9hOElaY2xsbWIv?= =?utf-8?B?ZDdQSWNBc2NvRDV4MUxHdWwxQjhGNS9Xblh6bi9mc2gvenpSYUxXM1J4ODU1?= =?utf-8?B?TVpRQ242ZndZeHpGVnhaUDQ5YUFNN05JM2NTcmNuMGFTZkpnbXhtOGVPQVVa?= =?utf-8?B?YXZ4dWxRQVBIbTZvT0hiVVR1dnJuaGVnVXV2RlFuekk2VU42Ti9ueFlDWU1h?= =?utf-8?B?c2kzeWJ6Y3Blenh5ME1jSlptTktSbkZBNkt3SkpjSkFYYytQdUhWSk5SVzg2?= =?utf-8?B?OWV3TTFrWnd2QlYyUnN3aXJUOFZ4SmJEUmVKWTZpTjlqU1U4a2ZOZmNQd2gv?= =?utf-8?B?b3BDN01rMzI5OFNWMHFVOVUyNG5oSjVXOGF6bVNwQkkvV1lPZWJIZXpCRDkv?= =?utf-8?B?eTNjSGdZVTU0Nm4xMkROS2x4Y2krKzl2b0Npc3dGQ1cyNU0xbnV1UGpob2k2?= =?utf-8?B?S3lYTmJ5QUt3RCtMTmtjSUxJaXBmeGcxeGNsK0hiQ29hdFo1U24vVFJDS0th?= =?utf-8?B?NEpSVDhJYW5neXJGTjlaaGxEbUpvcU1lcSt6OXd5N0NrdFp5bGxGNmJDZUxP?= =?utf-8?B?emRWKzBOTTJtVXRBWi9lL1FCZW94bVFjTEJFaHVQaTNSb3NqNzhVRnhTR2FB?= =?utf-8?B?NjVVemI0SndHTkhmQ21VZ2twc3IrZS9zcXBYZ0tHQmJINUxCRm1sand2YzF0?= =?utf-8?B?c2hpdUlUamROTzVoZTJqRGxST01YdnVrYWw5dEtNbWFZZVQxUnBvU0NJZTF2?= =?utf-8?B?T2ppMXRjZE4xWVlEWFd4ZGFqa2RUS0pDdmgzVWl1UmE5TGtGQXpnQmhBNUZ4?= =?utf-8?B?ZDlRZ1UxY1Nldm54UHpON09OSEVuMkxlYzBvdU56SXlFUjc1VElPOGMvTGkv?= =?utf-8?B?OWFWVWYweDAyak9tSmlPQVIzcVVaT1F0eGpaYVJRdnFQc0ViN2ZMd3NhamhO?= =?utf-8?B?ZDNJdVJkRmlNNGs2bUtCUHRITndhRDFDSzFJYmZqU3dFd1JJWkpvcHZVZmhn?= =?utf-8?B?ckJZbmlUcWNJaVBxMFI0Z3NaMmRFSjJ5SVFMbndKektsajlscjU1R0pnKzcw?= =?utf-8?B?YzdHSGdLeHNmRW53Wk9SWUpCaCtyODVaZm0rSjVaVmFVOSt1bE5BblNVTUpG?= =?utf-8?B?YVRwTlhmTldkSm1uQ1FQTTFCYXk1ME54d0NXSE9ud1ZONFRBZGhRZXpoU3Az?= =?utf-8?B?c2xBSGxDRGRwWmtwY3pOWU9oL0pUcTJHeWhnQytlQlN6RDFuRmR3Mi9XU2F3?= =?utf-8?B?Sit2NzdYSU1yL3ZoSHp6YUFDUGh1MDF5N2huWGpQSVNRNGxIN2d4aUx4QlNw?= =?utf-8?B?Z2JjT0I2eVNqTEVFd21Hdk5sWmdJZVdpR3N0YXUrSHozMFFoRUlMazdFVCtQ?= =?utf-8?B?bXc9PQ==?= Content-Type: multipart/mixed; boundary="_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 5DKlOjpwz1VN92/bwA7XLLr45ncBbrybP/MDp6HQsBgxzBznx1Nl2mifv8xwUUIWGetJIUX47pVKwflNtti0Uo9nYJ4RvqTDQd1uYOknQQnteJb0n0HODO5J6+qh+h5NpiNOSZcXSJ9QyrldOeLr2NutMP9llEBL6UyXSIqY39NtHmFKIFNtW93IPvwaz4YUX/ud6d8KCY5vJLUhqr4IDwLC2wZuMo8OwEyduoxLtGHT3f4Q+c+/quClalzFUO3BsO9OZ0fa57K7GLtlJswwCUHBSN0uScfF6C+hnOdloc2qUC2gGvmgYFKol6rnVIkfJPhYwMzby3bvS8k/xBvD7n2p1LvxZIzu4C8AfiTSnjy2arA3fsi8dzXz5pxwm5Vip7x7gPSR3Jhy9TAGuZx7tg/JF0r/yJ1TMKleKAfnJhfu/CTPHmyxj8EV8hUK9lb/mTPkpiRfjMFE5rrE3PjNp0XitOf/kR8aq3m7aKScUKuZAx8OpZGBHPFWebkq/1THsxvdwD6KByhrRLfNO45oPjOo4dJ0aPdiJ4FoVBn7Q+nZTyJdSbs5UX18JEt8pi6/b2/YUyO+yZzwHmZYTmiJE6ACwX9sXRr2KhEtrTze6QKaB783VSxRsGKrjXr15hUA X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY3PR01MB9889.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2ee6352f-3543-4114-4377-08dc2323e61f X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Feb 2024 12:47:07.0870 (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: BEh8JU4bSfTo7PSJP6K0vlnPHYeLaM+Ux2R2e8mC+8E6XreryipgsVveMYOTGSYiTQF8L1y+JqNZM3lAXn91RYDySiX1cVWulXbqnN2EgP8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10934 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RGVhciBGYWJyw616aW8sIEV1bGVyLA0KDQpJIG1hZGUgZml4IHBhdGNoZXMgdG8gc29sdmUgcmVw b3J0ZWQgaXNzdWVzIGJ5IEZhYnLDrXppby4NCg0KKiB2MTMtMDAwMTogU2FtZSBhcyB2MTEtMDAw MSBtYWRlIGJ5IEV1bGVyLg0KKiB2MTMtMDAwMjogRml4ZXMgRVJST1JzIHdoaWxlIGRyb3BwaW5n IHJlcGxpY2F0aW9uIHNsb3RzIFsxXS4NCiAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2VlIGNv ZGVzIHdoaWNoIHdlIGdldCBhZ3JlZW1lbnQsIHBsZWFzZSBhcHBseSB1bnRpbCAwMDAyLg0KPT09 IGV4cGVyaW1lbnRhbCBwYXRjaGVzID09PQ0KKiB2MTMtMDAwMzogQXZvaWRzIHRvIHVzZSByZXBs aWNhdGlvbiBjb25uZWN0aW9ucy4gVGhlIGlzc3VlIFsyXSB3YXMgc29sdmVkIG9uIG15IGVudi4N CiogdjEzLTAwMDQ6IFJlbW92ZXMgLVAgb3B0aW9uIGFuZCB1c2UgcHJpbWFyeV9jb25uaW5mbyBp bnN0ZWFkLg0KKiB2MTMtMDAwNTogUmVmYWN0b3JzIGRhdGEgc3RydWN0dXJlcw0KDQpbMV06IGh0 dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FGY05zJTJCclNHOURjRWV3c29B JTNEODVEWGhTUmglMkJueUtycmNyNjRGRUR5dGNaZjZRYUVRJTQwbWFpbC5nbWFpbC5jb20NClsy XTogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUZjTnMlMkJwUHR3JTJC eTdCZTAwQkswTUJwSGhMazJzNjZ0TE0yODZnJTNEazVyZXc4a1V4amclNDBtYWlsLmdtYWlsLmNv bQ0KDQpCZXN0IFJlZ2FyZHMsDQpIYXlhdG8gS3Vyb2RhDQpGVUpJVFNVIExJTUlURUQNCmh0dHBz Oi8vd3d3LmZ1aml0c3UuY29tLyANCg0K --_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_ Content-Type: application/octet-stream; name="v13-0001-Creates-a-new-logical-replica-from-a-standby-ser.patch" Content-Description: v13-0001-Creates-a-new-logical-replica-from-a-standby-ser.patch Content-Disposition: attachment; filename="v13-0001-Creates-a-new-logical-replica-from-a-standby-ser.patch"; size=78056; creation-date="Thu, 01 Feb 2024 12:23:47 GMT"; modification-date="Thu, 01 Feb 2024 12:47:06 GMT" Content-Transfer-Encoding: base64 RnJvbSBmMWM4YTUzODQwNDE5Mzk4Njg4MWJkNDIwZjc1MDJlYjRkMTA1MmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVudGVycHJp c2VkYi5jb20+CkRhdGU6IE1vbiwgNSBKdW4gMjAyMyAxNDozOTo0MCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjEzIDEvNV0gQ3JlYXRlcyBhIG5ldyBsb2dpY2FsIHJlcGxpY2EgZnJvbSBhIHN0YW5k Ynkgc2VydmVyCgpBIG5ldyB0b29sIGNhbGxlZCBwZ19jcmVhdGVzdWJzY3JpYmVyIGNhbiBjb252 ZXJ0IGEgcGh5c2ljYWwgcmVwbGljYQppbnRvIGEgbG9naWNhbCByZXBsaWNhLiBJdCBydW5zIG9u IHRoZSB0YXJnZXQgc2VydmVyIGFuZCBzaG91bGQgYmUgYWJsZQp0byBjb25uZWN0IHRvIHRoZSBz b3VyY2Ugc2VydmVyIChwdWJsaXNoZXIpIGFuZCB0aGUgdGFyZ2V0IHNlcnZlcgooc3Vic2NyaWJl cikuCgpUaGUgY29udmVyc2lvbiByZXF1aXJlcyBhIGZldyBzdGVwcy4gQ2hlY2sgaWYgdGhlIHRh cmdldCBkYXRhIGRpcmVjdG9yeQpoYXMgdGhlIHNhbWUgc3lzdGVtIGlkZW50aWZpZXIgdGhhbiB0 aGUgc291cmNlIGRhdGEgZGlyZWN0b3J5LiBTdG9wIHRoZQp0YXJnZXQgc2VydmVyIGlmIGl0IGlz IHJ1bm5pbmcgYXMgYSBzdGFuZGJ5IHNlcnZlci4gQ3JlYXRlIG9uZQpyZXBsaWNhdGlvbiBzbG90 IHBlciBzcGVjaWZpZWQgZGF0YWJhc2Ugb24gdGhlIHNvdXJjZSBzZXJ2ZXIuIE9uZQphZGRpdGlv bmFsIHJlcGxpY2F0aW9uIHNsb3QgaXMgY3JlYXRlZCBhdCB0aGUgZW5kIHRvIGdldCB0aGUgY29u c2lzdGVudApMU04gKFRoaXMgY29uc2lzdGVudCBMU04gd2lsbCBiZSB1c2VkIGFzIChhKSBhIHN0 b3BwaW5nIHBvaW50IGZvciB0aGUKcmVjb3ZlcnkgcHJvY2VzcyBhbmQgKGIpIGEgc3RhcnRpbmcg cG9pbnQgZm9yIHRoZSBzdWJzY3JpcHRpb25zKS4gV3JpdGUKcmVjb3ZlcnkgcGFyYW1ldGVycyBp bnRvIHRoZSB0YXJnZXQgZGF0YSBkaXJlY3RvcnkgYW5kIHN0YXJ0IHRoZSB0YXJnZXQKc2VydmVy IChXYWl0IHVudGlsIHRoZSB0YXJnZXQgc2VydmVyIGlzIHByb21vdGVkKS4gQ3JlYXRlIG9uZQpw dWJsaWNhdGlvbiAoRk9SIEFMTCBUQUJMRVMpIHBlciBzcGVjaWZpZWQgZGF0YWJhc2Ugb24gdGhl IHNvdXJjZQpzZXJ2ZXIuIENyZWF0ZSBvbmUgc3Vic2NyaXB0aW9uIHBlciBzcGVjaWZpZWQgZGF0 YWJhc2Ugb24gdGhlIHRhcmdldApzZXJ2ZXIgKFVzZSByZXBsaWNhdGlvbiBzbG90IGFuZCBwdWJs aWNhdGlvbiBjcmVhdGVkIGluIGEgcHJldmlvdXMgc3RlcC4KRG9uJ3QgZW5hYmxlIHRoZSBzdWJz Y3JpcHRpb25zIHlldCkuIFNldHMgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIHRvCnRoZSBjb25z aXN0ZW50IExTTiB0aGF0IHdhcyBnb3QgaW4gYSBwcmV2aW91cyBzdGVwLiBFbmFibGUgdGhlCnN1 YnNjcmlwdGlvbiBmb3IgZWFjaCBzcGVjaWZpZWQgZGF0YWJhc2Ugb24gdGhlIHRhcmdldCBzZXJ2 ZXIuICBTdG9wIHRoZQp0YXJnZXQgc2VydmVyLiBDaGFuZ2UgdGhlIHN5c3RlbSBpZGVudGlmaWVy IGZyb20gdGhlIHRhcmdldCBzZXJ2ZXIuCgpEZXBlbmRpbmcgb24geW91ciB3b3JrbG9hZCBhbmQg ZGF0YWJhc2Ugc2l6ZSwgY3JlYXRpbmcgYSBsb2dpY2FsIHJlcGxpY2EKY291bGRuJ3QgYmUgYW4g b3B0aW9uIGR1ZSB0byByZXNvdXJjZSBjb25zdHJhaW50cyAoV0FMIGJhY2tsb2cgc2hvdWxkIGJl CmF2YWlsYWJsZSB1bnRpbCBhbGwgdGFibGUgZGF0YSBpcyBzeW5jaHJvbml6ZWQpLiBUaGUgaW5p dGlhbCBkYXRhIGNvcHkKYW5kIHRoZSByZXBsaWNhdGlvbiBwcm9ncmVzcyB0ZW5kcyB0byBiZSBm YXN0ZXIgb24gYSBwaHlzaWNhbCByZXBsaWNhLgpUaGUgcHVycG9zZSBvZiB0aGlzIHRvb2wgaXMg dG8gc3BlZWQgdXAgYSBsb2dpY2FsIHJlcGxpY2Egc2V0dXAuCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sICAgICAgICAgICAgICAgIHwgICAgMSArCiBkb2Mvc3JjL3NnbWwvcmVm L3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbCAgICAgfCAgMzIyICsrKwogZG9jL3NyYy9zZ21sL3Jl ZmVyZW5jZS5zZ21sICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmluL3BnX2Jhc2Vi YWNrdXAvLmdpdGlnbm9yZSAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iaW4vcGdfYmFzZWJh Y2t1cC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgIDggKy0KIHNyYy9iaW4vcGdfYmFzZWJh Y2t1cC9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMTkgKwogc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyAgIHwgMTg1MiArKysrKysrKysrKysrKysrKwogLi4u L3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwgICAgICAgICAgICAgIHwgICA0NCArCiAuLi4v dC8wNDFfcGdfY3JlYXRlc3Vic2NyaWJlcl9zdGFuZGJ5LnBsICAgICAgfCAgMTM5ICsrCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICAxICsKIDEwIGZp bGVzIGNoYW5nZWQsIDIzODcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJlci5zZ21sCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVh dGVzdWJzY3JpYmVyLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19iYXNlYmFja3Vw L3QvMDQxX3BnX2NyZWF0ZXN1YnNjcmliZXJfc3RhbmRieS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dt bAppbmRleCA0YTQyOTk5YjE4Li5hMmI1ZWVhMGUwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCkBA IC0yMTQsNiArMjE0LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmls ZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBwZ1Jlc2V0d2FsICAgICAgICAgU1lTVEVN ICJwZ19yZXNldHdhbC5zZ21sIj4KIDwhRU5USVRZIHBnUmVzdG9yZSAgICAgICAgICBTWVNURU0g InBnX3Jlc3RvcmUuc2dtbCI+CiA8IUVOVElUWSBwZ1Jld2luZCAgICAgICAgICAgU1lTVEVNICJw Z19yZXdpbmQuc2dtbCI+Cis8IUVOVElUWSBwZ0NyZWF0ZVN1YnNjcmliZXIgU1lTVEVNICJwZ19j cmVhdGVzdWJzY3JpYmVyLnNnbWwiPgogPCFFTlRJVFkgcGdWZXJpZnlCYWNrdXAgICAgIFNZU1RF TSAicGdfdmVyaWZ5YmFja3VwLnNnbWwiPgogPCFFTlRJVFkgcGd0ZXN0ZnN5bmMgICAgICAgIFNZ U1RFTSAicGd0ZXN0ZnN5bmMuc2dtbCI+CiA8IUVOVElUWSBwZ3Rlc3R0aW1pbmcgICAgICAgU1lT VEVNICJwZ3Rlc3R0aW1pbmcuc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3Bn X2NyZWF0ZXN1YnNjcmliZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2Ny aWJlci5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFjNzhmZjky ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmli ZXIuc2dtbApAQCAtMCwwICsxLDMyMiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVh dGVzdWJzY3JpYmVyLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZl bnRyeSBpZD0iYXBwLXBnY3JlYXRlc3Vic2NyaWJlciI+CisgPGluZGV4dGVybSB6b25lPSJhcHAt cGdjcmVhdGVzdWJzY3JpYmVyIj4KKyAgPHByaW1hcnk+cGdfY3JlYXRlc3Vic2NyaWJlcjwvcHJp bWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT48YXBw bGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+PC9yZWZlbnRyeXRpdGxl PgorICA8bWFudm9sbnVtPjE8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPkFwcGxpY2F0aW9u PC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+ cGdfY3JlYXRlc3Vic2NyaWJlcjwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+Y29udmVydCBhIHBo eXNpY2FsIHJlcGxpY2EgaW50byBhIG5ldyBsb2dpY2FsIHJlcGxpY2E8L3JlZnB1cnBvc2U+Cisg PC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorICA8Y21kc3lub3BzaXM+CisgICA8 Y29tbWFuZD5wZ19jcmVhdGVzdWJzY3JpYmVyPC9jb21tYW5kPgorICAgPGFyZyByZXA9InJlcGVh dCI+PHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFjZWFibGU+PC9hcmc+CisgICA8Z3JvdXAgY2hv aWNlPSJwbGFpbiI+CisgICAgPGdyb3VwIGNob2ljZT0icmVxIj4KKyAgICAgPGFyZyBjaG9pY2U9 InBsYWluIj48b3B0aW9uPi1EPC9vcHRpb24+IDwvYXJnPgorICAgICA8YXJnIGNob2ljZT0icGxh aW4iPjxvcHRpb24+LS1wZ2RhdGE8L29wdGlvbj48L2FyZz4KKyAgICA8L2dyb3VwPgorICAgIDxy ZXBsYWNlYWJsZT5kYXRhZGlyPC9yZXBsYWNlYWJsZT4KKyAgICA8Z3JvdXAgY2hvaWNlPSJyZXEi PgorICAgICA8YXJnIGNob2ljZT0icGxhaW4iPjxvcHRpb24+LVA8L29wdGlvbj48L2FyZz4KKyAg ICAgPGFyZyBjaG9pY2U9InBsYWluIj48b3B0aW9uPi0tcHVibGlzaGVyLXNlcnZlcjwvb3B0aW9u PjwvYXJnPgorICAgIDwvZ3JvdXA+CisgICAgPHJlcGxhY2VhYmxlPmNvbm5zdHI8L3JlcGxhY2Vh YmxlPgorICAgIDxncm91cCBjaG9pY2U9InJlcSI+CisgICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+ PG9wdGlvbj4tUzwvb3B0aW9uPjwvYXJnPgorICAgICA8YXJnIGNob2ljZT0icGxhaW4iPjxvcHRp b24+LS1zdWJzY3JpYmVyLXNlcnZlcjwvb3B0aW9uPjwvYXJnPgorICAgIDwvZ3JvdXA+CisgICAg PHJlcGxhY2VhYmxlPmNvbm5zdHI8L3JlcGxhY2VhYmxlPgorICAgIDxncm91cCBjaG9pY2U9InJl cSI+CisgICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+PG9wdGlvbj4tZDwvb3B0aW9uPjwvYXJnPgor ICAgICA8YXJnIGNob2ljZT0icGxhaW4iPjxvcHRpb24+LS1kYXRhYmFzZTwvb3B0aW9uPjwvYXJn PgorICAgIDwvZ3JvdXA+CisgICAgPHJlcGxhY2VhYmxlPmRibmFtZTwvcmVwbGFjZWFibGU+Cisg ICA8L2dyb3VwPgorICA8L2NtZHN5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVm c2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisgIDxwYXJhPgorICAgPGFwcGxp Y2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9uPiB0YWtlcyB0aGUgcHVibGlz aGVyIGFuZCBzdWJzY3JpYmVyCisgICBjb25uZWN0aW9uIHN0cmluZ3MsIGEgY2x1c3RlciBkaXJl Y3RvcnkgZnJvbSBhIHBoeXNpY2FsIHJlcGxpY2EgYW5kIGEgbGlzdCBvZgorICAgZGF0YWJhc2Ug bmFtZXMgYW5kIGl0IHNldHMgdXAgYSBuZXcgbG9naWNhbCByZXBsaWNhIHVzaW5nIHRoZSBwaHlz aWNhbAorICAgcmVjb3ZlcnkgcHJvY2Vzcy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhl IDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4gc2hvdWxkIGJl IHJ1biBhdCB0aGUgdGFyZ2V0CisgICBzZXJ2ZXIuIFRoZSBzb3VyY2Ugc2VydmVyIChrbm93biBh cyBwdWJsaXNoZXIgc2VydmVyKSBzaG91bGQgYWNjZXB0IGxvZ2ljYWwKKyAgIHJlcGxpY2F0aW9u IGNvbm5lY3Rpb25zIGZyb20gdGhlIHRhcmdldCBzZXJ2ZXIgKGtub3duIGFzIHN1YnNjcmliZXIg c2VydmVyKS4KKyAgIFRoZSB0YXJnZXQgc2VydmVyIHNob3VsZCBhY2NlcHQgbG9jYWwgbG9naWNh bCByZXBsaWNhdGlvbiBjb25uZWN0aW9uLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxy ZWZzZWN0MT4KKyAgPHRpdGxlPk9wdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICA8YXBw bGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+IGFjY2VwdHMgdGhlIGZv bGxvd2luZworICAgIGNvbW1hbmQtbGluZSBhcmd1bWVudHM6CisKKyAgICA8dmFyaWFibGVsaXN0 PgorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tRCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rl cm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tcGdkYXRhPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHRhcmdldCBkaXJlY3RvcnkgdGhh dCBjb250YWlucyBhIGNsdXN0ZXIgZGlyZWN0b3J5IGZyb20gYSBwaHlzaWNhbAorICAgICAgICBy ZXBsaWNhLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlz dGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48b3B0aW9uPi1QICA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubnN0cjwvcmVwbGFjZWFibGU+PC9vcHRp b24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4tLXB1Ymxpc2hlci1zZXJ2ZXI9PHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5zdHI8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwv dGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGNvbm5l Y3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIuIEZvciBkZXRhaWxzIHNlZSA8eHJlZiBsaW5r ZW5kPSJsaWJwcS1jb25uc3RyaW5nIi8+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8 dGVybT48b3B0aW9uPi1TIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25uc3RyPC9y ZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tc3Vic2Ny aWJlci1zZXJ2ZXI9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5zdHI8L3JlcGxh Y2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGhlIGNvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBzdWJzY3JpYmVyLiBGb3IgZGV0 YWlscyBzZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtY29ubnN0cmluZyIvPi4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFy bGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tZCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZGJuYW1lPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVy bT48b3B0aW9uPi0tZGF0YWJhc2U9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRibmFt ZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAg IDxwYXJhPgorICAgICAgICBUaGUgZGF0YWJhc2UgbmFtZSB0byBjcmVhdGUgdGhlIHN1YnNjcmlw dGlvbi4gTXVsdGlwbGUgZGF0YWJhc2VzIGNhbiBiZQorICAgICAgICBzZWxlY3RlZCBieSB3cml0 aW5nIG11bHRpcGxlIDxvcHRpb24+LWQ8L29wdGlvbj4gc3dpdGNoZXMuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LW48L29wdGlvbj48L3Rlcm0+CisgICAgICA8 dGVybT48b3B0aW9uPi0tZHJ5LXJ1bjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgRG8gZXZlcnl0aGluZyBleGNlcHQgYWN0dWFsbHkgbW9k aWZ5aW5nIHRoZSB0YXJnZXQgZGlyZWN0b3J5LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlz dGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAg ICA8dGVybT48b3B0aW9uPi1yPC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4t LXJldGFpbjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgUmV0YWluIGxvZyBmaWxlIGV2ZW4gYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21wbGV0aW9u LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5 PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+PG9wdGlvbj4tdCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2Vjb25kczwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90 ZXJtPgorICAgICAgIDx0ZXJtPjxvcHRpb24+LS1yZWNvdmVyeS10aW1lb3V0PTxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zZWNvbmRzPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+ CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbWF4aW11bSBu dW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGZvciByZWNvdmVyeSB0byBlbmQuIFNldHRpbmcgdG8g MAorICAgICAgICBkaXNhYmxlcy4gVGhlIGRlZmF1bHQgaXMgMC4KKyAgICAgICA8L3BhcmE+Cisg ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LXY8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVy bT48b3B0aW9uPi0tdmVyYm9zZTwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgRW5hYmxlcyB2ZXJib3NlIG1vZGUuIFRoaXMgd2lsbCBjYXVz ZQorICAgICAgICA8YXBwbGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+ IHRvIG91dHB1dCBwcm9ncmVzcyBtZXNzYWdlcworICAgICAgICBhbmQgZGV0YWlsZWQgaW5mb3Jt YXRpb24gYWJvdXQgZWFjaCBzdGVwIHRvIHN0YW5kYXJkIGVycm9yLgorICAgICAgICBSZXBlYXRp bmcgdGhlIG9wdGlvbiBjYXVzZXMgYWRkaXRpb25hbCBkZWJ1Zy1sZXZlbCBtZXNzYWdlcyB0byBh cHBlYXIgb24KKyAgICAgICAgc3RhbmRhcmQgZXJyb3IuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+Cisg ICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE90aGVyIG9wdGlvbnMgYXJlIGFsc28gYXZhaWxh YmxlOgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8 dGVybT48b3B0aW9uPi1WPC9vcHRpb24+PC90ZXJtPgorICAgICAgIDx0ZXJtPjxvcHRpb24+LS12 ZXJzaW9uPC9vcHRpb24+PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4K KyAgICAgICBQcmludCB0aGUgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxp Y2F0aW9uPiB2ZXJzaW9uIGFuZCBleGl0LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3Rp dGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAg IDx0ZXJtPjxvcHRpb24+LT88L29wdGlvbj48L3Rlcm0+CisgICAgICAgPHRlcm0+PG9wdGlvbj4t LWhlbHA8L29wdGlvbj48L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgIFNob3cgaGVscCBhYm91dCA8YXBwbGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwv YXBwbGljYXRpb24+IGNvbW1hbmQKKyAgICAgICBsaW5lIGFyZ3VtZW50cywgYW5kIGV4aXQuCisg ICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgPC92YXJpYWJsZWxpc3Q+CisgICA8L3BhcmE+CisKKyA8L3JlZnNlY3QxPgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHRyYW5z Zm9ybWF0aW9uIHByb2NlZWRzIGluIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgIDwvcGFyYT4KKwor ICA8cHJvY2VkdXJlPgorICAgPHN0ZXA+CisgICAgPHBhcmE+CisgICAgIDxhcHBsaWNhdGlvbj5w Z19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4gY2hlY2tzIGlmIHRoZSBnaXZlbiB0YXJn ZXQgZGF0YQorICAgICBkaXJlY3RvcnkgaGFzIHRoZSBzYW1lIHN5c3RlbSBpZGVudGlmaWVyIHRo YW4gdGhlIHNvdXJjZSBkYXRhIGRpcmVjdG9yeS4KKyAgICAgU2luY2UgaXQgdXNlcyB0aGUgcmVj b3ZlcnkgcHJvY2VzcyBhcyBvbmUgb2YgdGhlIHN0ZXBzLCBpdCBzdGFydHMgdGhlCisgICAgIHRh cmdldCBzZXJ2ZXIgYXMgYSByZXBsaWNhIGZyb20gdGhlIHNvdXJjZSBzZXJ2ZXIuIElmIHRoZSBz eXN0ZW0KKyAgICAgaWRlbnRpZmllciBpcyBub3QgdGhlIHNhbWUsIDxhcHBsaWNhdGlvbj5wZ19j cmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4gd2lsbAorICAgICB0ZXJtaW5hdGUgd2l0aCBh biBlcnJvci4KKyAgICA8L3BhcmE+CisgICA8L3N0ZXA+CisKKyAgIDxzdGVwPgorICAgIDxwYXJh PgorICAgICA8YXBwbGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+IGNo ZWNrcyBpZiB0aGUgdGFyZ2V0IGRhdGEKKyAgICAgZGlyZWN0b3J5IGlzIHVzZWQgYnkgYSBwaHlz aWNhbCByZXBsaWNhLiBTdG9wIHRoZSBwaHlzaWNhbCByZXBsaWNhIGlmIGl0IGlzCisgICAgIHJ1 bm5pbmcuIE9uZSBvZiB0aGUgbmV4dCBzdGVwcyBpcyB0byBhZGQgc29tZSByZWNvdmVyeSBwYXJh bWV0ZXJzIHRoYXQKKyAgICAgcmVxdWlyZXMgYSBzZXJ2ZXIgc3RhcnQuIFRoaXMgc3RlcCBhdm9p ZHMgYW4gZXJyb3IuCisgICAgPC9wYXJhPgorICAgPC9zdGVwPgorCisgICA8c3RlcD4KKyAgICA8 cGFyYT4KKyAgICAgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9u PiBjcmVhdGVzIG9uZSByZXBsaWNhdGlvbiBzbG90IGZvcgorICAgICBlYWNoIHNwZWNpZmllZCBk YXRhYmFzZSBvbiB0aGUgc291cmNlIHNlcnZlci4gVGhlIHJlcGxpY2F0aW9uIHNsb3QgbmFtZQor ICAgICBjb250YWlucyBhIDxsaXRlcmFsPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2xpdGVyYWw+IHBy ZWZpeC4gVGhlc2UgcmVwbGljYXRpb24KKyAgICAgc2xvdHMgd2lsbCBiZSB1c2VkIGJ5IHRoZSBz dWJzY3JpcHRpb25zIGluIGEgZnV0dXJlIHN0ZXAuICBBIHRlbXBvcmFyeQorICAgICByZXBsaWNh dGlvbiBzbG90IGlzIHVzZWQgdG8gZ2V0IGEgY29uc2lzdGVudCBzdGFydCBsb2NhdGlvbi4gVGhp cworICAgICBjb25zaXN0ZW50IExTTiB3aWxsIGJlIHVzZWQgYXMgYSBzdG9wcGluZyBwb2ludCBp biB0aGUgPHhyZWYKKyAgICAgbGlua2VuZD0iZ3VjLXJlY292ZXJ5LXRhcmdldC1sc24iLz4gcGFy YW1ldGVyIGFuZCBieSB0aGUKKyAgICAgc3Vic2NyaXB0aW9ucyBhcyBhIHJlcGxpY2F0aW9uIHN0 YXJ0aW5nIHBvaW50LiBJdCBndWFyYW50ZWVzIHRoYXQgbm8KKyAgICAgdHJhbnNhY3Rpb24gd2ls bCBiZSBsb3N0LgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAgPHN0ZXA+CisgICAgPHBh cmE+CisgICAgIDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4g d3JpdGVzIHJlY292ZXJ5IHBhcmFtZXRlcnMgaW50bworICAgICB0aGUgdGFyZ2V0IGRhdGEgZGly ZWN0b3J5IGFuZCBzdGFydCB0aGUgdGFyZ2V0IHNlcnZlci4gSXQgc3BlY2lmaWVzIGEgTFNOCisg ICAgIChjb25zaXN0ZW50IExTTiB0aGF0IHdhcyBvYnRhaW5lZCBpbiB0aGUgcHJldmlvdXMgc3Rl cCkgb2Ygd3JpdGUtYWhlYWQKKyAgICAgbG9nIGxvY2F0aW9uIHVwIHRvIHdoaWNoIHJlY292ZXJ5 IHdpbGwgcHJvY2VlZC4gSXQgYWxzbyBzcGVjaWZpZXMKKyAgICAgPGxpdGVyYWw+cHJvbW90ZTwv bGl0ZXJhbD4gYXMgdGhlIGFjdGlvbiB0aGF0IHRoZSBzZXJ2ZXIgc2hvdWxkIHRha2Ugb25jZQor ICAgICB0aGUgcmVjb3ZlcnkgdGFyZ2V0IGlzIHJlYWNoZWQuIFRoaXMgc3RlcCBmaW5pc2hlcyBv bmNlIHRoZSBzZXJ2ZXIgZW5kcworICAgICBzdGFuZGJ5IG1vZGUgYW5kIGlzIGFjY2VwdGluZyBy ZWFkLXdyaXRlIG9wZXJhdGlvbnMuCisgICAgPC9wYXJhPgorICAgPC9zdGVwPgorCisgICA8c3Rl cD4KKyAgICA8cGFyYT4KKyAgICAgTmV4dCwgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmli ZXI8L2FwcGxpY2F0aW9uPiBjcmVhdGVzIG9uZSBwdWJsaWNhdGlvbgorICAgICBmb3IgZWFjaCBz cGVjaWZpZWQgZGF0YWJhc2Ugb24gdGhlIHNvdXJjZSBzZXJ2ZXIuIEVhY2ggcHVibGljYXRpb24K KyAgICAgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGluIHRoZSBkYXRhYmFzZS4g VGhlIHB1YmxpY2F0aW9uIG5hbWUKKyAgICAgY29udGFpbnMgYSA8bGl0ZXJhbD5wZ19jcmVhdGVz dWJzY3JpYmVyPC9saXRlcmFsPiBwcmVmaXguIFRoZXNlIHB1YmxpY2F0aW9uCisgICAgIHdpbGwg YmUgdXNlZCBieSBhIGNvcnJlc3BvbmRpbmcgc3Vic2NyaXB0aW9uIGluIGEgbmV4dCBzdGVwLgor ICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKworICAgPHN0ZXA+CisgICAgPHBhcmE+CisgICAgIDxh cHBsaWNhdGlvbj5wZ19jcmVhdGVzdWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4gY3JlYXRlcyBvbmUg c3Vic2NyaXB0aW9uIGZvcgorICAgICBlYWNoIHNwZWNpZmllZCBkYXRhYmFzZSBvbiB0aGUgdGFy Z2V0IHNlcnZlci4gRWFjaCBzdWJzY3JpcHRpb24gbmFtZQorICAgICBjb250YWlucyBhIDxsaXRl cmFsPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2xpdGVyYWw+IHByZWZpeC4gVGhlIHJlcGxpY2F0aW9u IHNsb3QKKyAgICAgbmFtZSBpcyBpZGVudGljYWwgdG8gdGhlIHN1YnNjcmlwdGlvbiBuYW1lLiBJ dCBkb2VzIG5vdCBjb3B5IGV4aXN0aW5nIGRhdGEKKyAgICAgZnJvbSB0aGUgc291cmNlIHNlcnZl ci4gSXQgZG9lcyBub3QgY3JlYXRlIGEgcmVwbGljYXRpb24gc2xvdC4gSW5zdGVhZCwgaXQKKyAg ICAgdXNlcyB0aGUgcmVwbGljYXRpb24gc2xvdCB0aGF0IHdhcyBjcmVhdGVkIGluIGEgcHJldmlv dXMgc3RlcC4gVGhlCisgICAgIHN1YnNjcmlwdGlvbiBpcyBjcmVhdGVkIGJ1dCBpdCBpcyBub3Qg ZW5hYmxlZCB5ZXQuIFRoZSByZWFzb24gaXMgdGhlCisgICAgIHJlcGxpY2F0aW9uIHByb2dyZXNz IG11c3QgYmUgc2V0IHRvIHRoZSBjb25zaXN0ZW50IExTTiBidXQgcmVwbGljYXRpb24KKyAgICAg b3JpZ2luIG5hbWUgY29udGFpbnMgdGhlIHN1YnNjcmlwdGlvbiBvaWQgaW4gaXRzIG5hbWUuIEhl bmNlLCB0aGUKKyAgICAgc3Vic2NyaXB0aW9uIHdpbGwgYmUgZW5hYmxlZCBpbiBhIHNlcGFyYXRl IHN0ZXAuCisgICAgPC9wYXJhPgorICAgPC9zdGVwPgorCisgICA8c3RlcD4KKyAgICA8cGFyYT4K KyAgICAgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9uPiBzZXRz IHRoZSByZXBsaWNhdGlvbiBwcm9ncmVzcyB0bworICAgICB0aGUgY29uc2lzdGVudCBMU04gdGhh dCB3YXMgb2J0YWluZWQgaW4gYSBwcmV2aW91cyBzdGVwLiBXaGVuIHRoZSB0YXJnZXQKKyAgICAg c2VydmVyIHN0YXJ0ZWQgdGhlIHJlY292ZXJ5IHByb2Nlc3MsIGl0IGNhdWdodCB1cCB0byB0aGUg Y29uc2lzdGVudCBMU04uCisgICAgIFRoaXMgaXMgdGhlIGV4YWN0IExTTiB0byBiZSB1c2VkIGFz IGEgaW5pdGlhbCBsb2NhdGlvbiBmb3IgZWFjaAorICAgICBzdWJzY3JpcHRpb24uCisgICAgPC9w YXJhPgorICAgPC9zdGVwPgorCisgICA8c3RlcD4KKyAgICA8cGFyYT4KKyAgICAgRmluYWxseSwg PGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2FwcGxpY2F0aW9uPiBlbmFibGVzIHRo ZSBzdWJzY3JpcHRpb24KKyAgICAgZm9yIGVhY2ggc3BlY2lmaWVkIGRhdGFiYXNlIG9uIHRoZSB0 YXJnZXQgc2VydmVyLiBUaGUgc3Vic2NyaXB0aW9uIHN0YXJ0cworICAgICBzdHJlYW1pbmcgZnJv bSB0aGUgY29uc2lzdGVudCBMU04uCisgICAgPC9wYXJhPgorICAgPC9zdGVwPgorCisgICA8c3Rl cD4KKyAgICA8cGFyYT4KKyAgICAgPGFwcGxpY2F0aW9uPnBnX2NyZWF0ZXN1YnNjcmliZXI8L2Fw cGxpY2F0aW9uPiBzdG9wcyB0aGUgdGFyZ2V0IHNlcnZlciB0byBjaGFuZ2UKKyAgICAgaXRzIHN5 c3RlbSBpZGVudGlmaWVyLgorICAgIDwvcGFyYT4KKyAgIDwvc3RlcD4KKyAgPC9wcm9jZWR1cmU+ CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4K KworICA8cGFyYT4KKyAgIFRvIGNyZWF0ZSBhIGxvZ2ljYWwgcmVwbGljYSBmb3IgZGF0YWJhc2Vz IDxsaXRlcmFsPmhyPC9saXRlcmFsPiBhbmQKKyAgIDxsaXRlcmFsPmZpbmFuY2U8L2xpdGVyYWw+ IGZyb20gYSBwaHlzaWNhbCByZXBsaWNhIGF0IDxsaXRlcmFsPmZvbzwvbGl0ZXJhbD46Cis8c2Ny ZWVuPgorPHByb21wdD4kPC9wcm9tcHQ+IDx1c2VyaW5wdXQ+cGdfY3JlYXRlc3Vic2NyaWJlciAt RCAvdXNyL2xvY2FsL3Bnc3FsL2RhdGEgLVAgImhvc3Q9Zm9vIiAtUyAiaG9zdD1sb2NhbGhvc3Qi IC1kIGhyIC1kIGZpbmFuY2U8L3VzZXJpbnB1dD4KKzwvc2NyZWVuPgorICA8L3BhcmE+CisKKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisg IDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9ImFw cC1wZ2Jhc2ViYWNrdXAiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+ CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggYWE5NGY2YWRmNi4uYzVlZGQyNDRl ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtMjg1LDYgKzI4NSw3IEBACiAgICAmcGdDdGw7CiAgICAm cGdSZXNldHdhbDsKICAgICZwZ1Jld2luZDsKKyAgICZwZ0NyZWF0ZVN1YnNjcmliZXI7CiAgICAm cGd0ZXN0ZnN5bmM7CiAgICAmcGd0ZXN0dGltaW5nOwogICAgJnBndXBncmFkZTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC8uZ2l0aWdub3JlIGIvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwLy5naXRpZ25vcmUKaW5kZXggMjYwNDhiZGJkOC4uYjNhNmY1YTJmZSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19iYXNlYmFja3VwLy5naXRpZ25vcmUKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwLy5naXRpZ25vcmUKQEAgLTEsNSArMSw2IEBACiAvcGdfYmFzZWJhY2t1cAogL3BnX3JlY2Vp dmV3YWwKIC9wZ19yZWN2bG9naWNhbAorL3BnX2NyZWF0ZXN1YnNjcmliZXIKIAogL3RtcF9jaGVj ay8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9NYWtlZmlsZSBiL3NyYy9iaW4v cGdfYmFzZWJhY2t1cC9NYWtlZmlsZQppbmRleCBhYmZiNjQ0MGVjLi5kZWQ0MzRiNjgzIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ19i YXNlYmFja3VwL01ha2VmaWxlCkBAIC00NCw3ICs0NCw3IEBAIEJCT0JKUyA9IFwKIAliYnN0cmVh bWVyX3Rhci5vIFwKIAliYnN0cmVhbWVyX3pzdGQubwogCi1hbGw6IHBnX2Jhc2ViYWNrdXAgcGdf cmVjZWl2ZXdhbCBwZ19yZWN2bG9naWNhbAorYWxsOiBwZ19iYXNlYmFja3VwIHBnX3JlY2VpdmV3 YWwgcGdfcmVjdmxvZ2ljYWwgcGdfY3JlYXRlc3Vic2NyaWJlcgogCiBwZ19iYXNlYmFja3VwOiAk KEJCT0JKUykgJChPQkpTKSB8IHN1Ym1ha2UtbGlicHEgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFr ZS1saWJwZ2ZldXRpbHMKIAkkKENDKSAkKENGTEFHUykgJChCQk9CSlMpICQoT0JKUykgJChMREZM QUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgpCkBAIC01NSwxMCArNTUsMTQgQEAg cGdfcmVjZWl2ZXdhbDogcGdfcmVjZWl2ZXdhbC5vICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1 Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UKIHBnX3JlY3Zsb2dpY2FsOiBwZ19yZWN2bG9naWNhbC5v ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdm ZXV0aWxzCiAJJChDQykgJChDRkxBR1MpIHBnX3JlY3Zsb2dpY2FsLm8gJChPQkpTKSAkKExERkxB R1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAorcGdfY3JlYXRlc3Vic2NyaWJl cjogJChXSU4zMlJFUykgcGdfY3JlYXRlc3Vic2NyaWJlci5vIHwgc3VibWFrZS1saWJwcSBzdWJt YWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscworCSQoQ0MpICQoQ0ZMQUdTKSAkXiAk KExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKKwogaW5zdGFsbDogYWxs IGluc3RhbGxkaXJzCiAJJChJTlNUQUxMX1BST0dSQU0pIHBnX2Jhc2ViYWNrdXAkKFgpICckKERF U1RESVIpJChiaW5kaXIpL3BnX2Jhc2ViYWNrdXAkKFgpJwogCSQoSU5TVEFMTF9QUk9HUkFNKSBw Z19yZWNlaXZld2FsJChYKSAnJChERVNURElSKSQoYmluZGlyKS9wZ19yZWNlaXZld2FsJChYKScK IAkkKElOU1RBTExfUFJPR1JBTSkgcGdfcmVjdmxvZ2ljYWwkKFgpICckKERFU1RESVIpJChiaW5k aXIpL3BnX3JlY3Zsb2dpY2FsJChYKScKKwkkKElOU1RBTExfUFJPR1JBTSkgcGdfY3JlYXRlc3Vi c2NyaWJlciQoWCkgJyQoREVTVERJUikkKGJpbmRpcikvcGdfY3JlYXRlc3Vic2NyaWJlciQoWCkn CiAKIGluc3RhbGxkaXJzOgogCSQoTUtESVJfUCkgJyQoREVTVERJUikkKGJpbmRpciknCkBAIC02 NywxMCArNzEsMTIgQEAgdW5pbnN0YWxsOgogCXJtIC1mICckKERFU1RESVIpJChiaW5kaXIpL3Bn X2Jhc2ViYWNrdXAkKFgpJwogCXJtIC1mICckKERFU1RESVIpJChiaW5kaXIpL3BnX3JlY2VpdmV3 YWwkKFgpJwogCXJtIC1mICckKERFU1RESVIpJChiaW5kaXIpL3BnX3JlY3Zsb2dpY2FsJChYKScK KwlybSAtZiAnJChERVNURElSKSQoYmluZGlyKS9wZ19jcmVhdGVzdWJzY3JpYmVyJChYKScKIAog Y2xlYW4gZGlzdGNsZWFuOgogCXJtIC1mIHBnX2Jhc2ViYWNrdXAkKFgpIHBnX3JlY2VpdmV3YWwk KFgpIHBnX3JlY3Zsb2dpY2FsJChYKSBcCiAJCSQoQkJPQkpTKSBwZ19yZWNlaXZld2FsLm8gcGdf cmVjdmxvZ2ljYWwubyBcCisJCXBnX2NyZWF0ZXN1YnNjcmliZXIkKFgpIHBnX2NyZWF0ZXN1YnNj cmliZXIubyBcCiAJCSQoT0JKUykKIAlybSAtcmYgdG1wX2NoZWNrCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9t ZXNvbi5idWlsZAppbmRleCBmN2U2MGU2NjcwLi4zNDVhMmQ2ZmNkIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3Vw L21lc29uLmJ1aWxkCkBAIC03NSw2ICs3NSwyMyBAQCBwZ19yZWN2bG9naWNhbCA9IGV4ZWN1dGFi bGUoJ3BnX3JlY3Zsb2dpY2FsJywKICkKIGJpbl90YXJnZXRzICs9IHBnX3JlY3Zsb2dpY2FsCiAK K3BnX2NyZWF0ZXN1YnNjcmliZXJfc291cmNlcyA9IGZpbGVzKAorICAncGdfY3JlYXRlc3Vic2Ny aWJlci5jJworKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgcGdfY3JlYXRlc3Vi c2NyaWJlcl9zb3VyY2VzICs9IHJjX2Jpbl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFf YXJnczogWworCSctLU5BTUUnLCAncGdfY3JlYXRlc3Vic2NyaWJlcicsCisJJy0tRklMRURFU0Mn LCAncGdfY3JlYXRlc3Vic2NyaWJlciAtIGNyZWF0ZSBhIG5ldyBsb2dpY2FsIHJlcGxpY2EgZnJv bSBhIHN0YW5kYnkgc2VydmVyJyxdKQorZW5kaWYKKworcGdfY3JlYXRlc3Vic2NyaWJlciA9IGV4 ZWN1dGFibGUoJ3BnX2NyZWF0ZXN1YnNjcmliZXInLAorICBwZ19jcmVhdGVzdWJzY3JpYmVyX3Nv dXJjZXMsCisgIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX2NvZGUsIGxpYnBxXSwKKyAga3dhcmdz OiBkZWZhdWx0X2Jpbl9hcmdzLAorKQorYmluX3RhcmdldHMgKz0gcGdfY3JlYXRlc3Vic2NyaWJl cgorCiB0ZXN0cyArPSB7CiAgICduYW1lJzogJ3BnX2Jhc2ViYWNrdXAnLAogICAnc2QnOiBtZXNv bi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKQEAgLTg5LDYgKzEwNiw4IEBAIHRlc3RzICs9IHsKICAg ICAgICd0LzAxMV9pbl9wbGFjZV90YWJsZXNwYWNlLnBsJywKICAgICAgICd0LzAyMF9wZ19yZWNl aXZld2FsLnBsJywKICAgICAgICd0LzAzMF9wZ19yZWN2bG9naWNhbC5wbCcsCisgICAgICAndC8w NDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbCcsCisgICAgICAndC8wNDFfcGdfY3JlYXRlc3Vic2Ny aWJlcl9zdGFuZGJ5LnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNDc4NTYwYjNlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKQEAgLTAsMCArMSwxODUyIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBwZ19jcmVhdGVzdWJzY3JpYmVyLmMKKyAqCSAgQ3JlYXRlIGEgbmV3IGxv Z2ljYWwgcmVwbGljYSBmcm9tIGEgc3RhbmRieSBzZXJ2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCQlzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgor CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxz eXMvdGltZS5oPgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisj aW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9s LmgiCisjaW5jbHVkZSAiY29tbW9uL2Nvbm5lY3QuaCIKKyNpbmNsdWRlICJjb21tb24vY29udHJv bGRhdGFfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCisjaW5jbHVkZSAi Y29tbW9uL2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgorI2luY2x1 ZGUgImZlX3V0aWxzL3JlY292ZXJ5X2dlbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL3NpbXBsZV9s aXN0LmgiCisjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKKyNpbmNsdWRlICJ1dGlscy9waWRmaWxl LmgiCisKKyNkZWZpbmUJUEdTX09VVFBVVF9ESVIJInBnX2NyZWF0ZXN1YnNjcmliZXJfb3V0cHV0 LmQiCisKK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBJbmZvCit7CisJT2lkCQkJb2lkOwkJCS8q IGRhdGFiYXNlIE9JRCAqLworCWNoYXIJICAgKmRibmFtZTsJCQkvKiBkYXRhYmFzZSBuYW1lICov CisJY2hhcgkgICAqcHViY29ubmluZm87CS8qIHB1YmxpY2F0aW9uIGNvbm5lY3Rpb24gc3RyaW5n IGZvciBsb2dpY2FsCisJCQkJCQkJCSAqIHJlcGxpY2F0aW9uICovCisJY2hhcgkgICAqc3ViY29u bmluZm87CS8qIHN1YnNjcmlwdGlvbiBjb25uZWN0aW9uIHN0cmluZyBmb3IgbG9naWNhbAorCQkJ CQkJCQkgKiByZXBsaWNhdGlvbiAqLworCWNoYXIJICAgKnB1Ym5hbWU7CQkvKiBwdWJsaWNhdGlv biBuYW1lICovCisJY2hhcgkgICAqc3VibmFtZTsJCS8qIHN1YnNjcmlwdGlvbiBuYW1lIChhbHNv IHJlcGxpY2F0aW9uIHNsb3QKKwkJCQkJCQkJICogbmFtZSkgKi8KKworCWJvb2wJCW1hZGVfcmVw bHNsb3Q7CS8qIHJlcGxpY2F0aW9uIHNsb3Qgd2FzIGNyZWF0ZWQgKi8KKwlib29sCQltYWRlX3B1 YmxpY2F0aW9uOwkvKiBwdWJsaWNhdGlvbiB3YXMgY3JlYXRlZCAqLworCWJvb2wJCW1hZGVfc3Vi c2NyaXB0aW9uOwkvKiBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQgKi8KK30gTG9naWNhbFJlcElu Zm87CisKK3N0YXRpYyB2b2lkIGNsZWFudXBfb2JqZWN0c19hdGV4aXQodm9pZCk7CitzdGF0aWMg dm9pZCB1c2FnZSgpOworc3RhdGljIGNoYXIgKmdldF9iYXNlX2Nvbm5pbmZvKGNoYXIgKmNvbm5p bmZvLCBjaGFyICpkYm5hbWUsCisJCQkJCQkJICAgY29uc3QgY2hhciAqbm9kZXJvbGUpOworc3Rh dGljIGJvb2wgZ2V0X2V4ZWNfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKK3N0YXRpYyBib29sIGNo ZWNrX2RhdGFfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRhdGFkaXIpOworc3RhdGljIGNoYXIgKmNv bmNhdF9jb25uaW5mb19kYm5hbWUoY29uc3QgY2hhciAqY29ubmluZm8sIGNvbnN0IGNoYXIgKmRi bmFtZSk7CitzdGF0aWMgTG9naWNhbFJlcEluZm8gKnN0b3JlX3B1Yl9zdWJfaW5mbyhjb25zdCBj aGFyICpwdWJfYmFzZV9jb25uaW5mbywgY29uc3QgY2hhciAqc3ViX2Jhc2VfY29ubmluZm8pOwor c3RhdGljIFBHY29ubiAqY29ubmVjdF9kYXRhYmFzZShjb25zdCBjaGFyICpjb25uaW5mbyk7Citz dGF0aWMgdm9pZCBkaXNjb25uZWN0X2RhdGFiYXNlKFBHY29ubiAqY29ubik7CitzdGF0aWMgdWlu dDY0IGdldF9zeXNpZF9mcm9tX2Nvbm4oY29uc3QgY2hhciAqY29ubmluZm8pOworc3RhdGljIHVp bnQ2NCBnZXRfY29udHJvbF9mcm9tX2RhdGFkaXIoY29uc3QgY2hhciAqZGF0YWRpcik7CitzdGF0 aWMgdm9pZCBtb2RpZnlfc3lzaWQoY29uc3QgY2hhciAqcGdfcmVzZXR3YWxfcGF0aCwgY29uc3Qg Y2hhciAqZGF0YWRpcik7CitzdGF0aWMgYm9vbCBjaGVja19wdWJsaXNoZXIoTG9naWNhbFJlcElu Zm8gKmRiaW5mbyk7CitzdGF0aWMgYm9vbCBzZXR1cF9wdWJsaXNoZXIoTG9naWNhbFJlcEluZm8g KmRiaW5mbyk7CitzdGF0aWMgYm9vbCBjaGVja19zdWJzY3JpYmVyKExvZ2ljYWxSZXBJbmZvICpk YmluZm8pOworc3RhdGljIGJvb2wgc2V0dXBfc3Vic2NyaWJlcihMb2dpY2FsUmVwSW5mbyAqZGJp bmZvLCBjb25zdCBjaGFyICpjb25zaXN0ZW50X2xzbik7CitzdGF0aWMgY2hhciAqY3JlYXRlX2xv Z2ljYWxfcmVwbGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmlu Zm8sCisJCQkJCQkJCQkJCSBjaGFyICpzbG90X25hbWUpOworc3RhdGljIHZvaWQgZHJvcF9yZXBs aWNhdGlvbl9zbG90KFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbywgY29uc3Qg Y2hhciAqc2xvdF9uYW1lKTsKK3N0YXRpYyBjaGFyICpzZXJ2ZXJfbG9nZmlsZV9uYW1lKGNvbnN0 IGNoYXIgKmRhdGFkaXIpOworc3RhdGljIHZvaWQgc3RhcnRfc3RhbmRieV9zZXJ2ZXIoY29uc3Qg Y2hhciAqcGdfY3RsX3BhdGgsIGNvbnN0IGNoYXIgKmRhdGFkaXIsIGNvbnN0IGNoYXIgKmxvZ2Zp bGUpOworc3RhdGljIHZvaWQgc3RvcF9zdGFuZGJ5X3NlcnZlcihjb25zdCBjaGFyICpwZ19jdGxf cGF0aCwgY29uc3QgY2hhciAqZGF0YWRpcik7CitzdGF0aWMgdm9pZCBwZ19jdGxfc3RhdHVzKGNv bnN0IGNoYXIgKnBnX2N0bF9jbWQsIGludCByYywgaW50IGFjdGlvbik7CitzdGF0aWMgdm9pZCB3 YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoY29uc3QgY2hhciAqY29ubmluZm8pOworc3RhdGljIHZvaWQg Y3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7 CitzdGF0aWMgdm9pZCBkcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNhbFJlcElu Zm8gKmRiaW5mbyk7CitzdGF0aWMgdm9pZCBjcmVhdGVfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29u biwgTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7CitzdGF0aWMgdm9pZCBkcm9wX3N1YnNjcmlwdGlv bihQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8pOworc3RhdGljIHZvaWQgc2V0 X3JlcGxpY2F0aW9uX3Byb2dyZXNzKFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5m bywgY29uc3QgY2hhciAqbHNuKTsKK3N0YXRpYyB2b2lkIGVuYWJsZV9zdWJzY3JpcHRpb24oUEdj b25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKTsKKworI2RlZmluZQlVU0VDX1BFUl9T RUMJMTAwMDAwMAorI2RlZmluZQlXQUlUX0lOVEVSVkFMCTEJCS8qIDEgc2Vjb25kICovCisKKy8q IE9wdGlvbnMgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpwcm9nbmFtZTsKKworc3RhdGljIGNoYXIg KnN1YnNjcmliZXJfZGlyID0gTlVMTDsKK3N0YXRpYyBjaGFyICpwdWJfY29ubmluZm9fc3RyID0g TlVMTDsKK3N0YXRpYyBjaGFyICpzdWJfY29ubmluZm9fc3RyID0gTlVMTDsKK3N0YXRpYyBTaW1w bGVTdHJpbmdMaXN0IGRhdGFiYXNlX25hbWVzID0ge05VTEwsIE5VTEx9Oworc3RhdGljIGNoYXIg KnByaW1hcnlfc2xvdF9uYW1lID0gTlVMTDsKK3N0YXRpYyBib29sIGRyeV9ydW4gPSBmYWxzZTsK K3N0YXRpYyBib29sIHJldGFpbiA9IGZhbHNlOworc3RhdGljIGludAlyZWNvdmVyeV90aW1lb3V0 ID0gMDsKKworc3RhdGljIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworCitzdGF0aWMgY2hhciAqcGdf Y3RsX3BhdGggPSBOVUxMOworc3RhdGljIGNoYXIgKnBnX3Jlc2V0d2FsX3BhdGggPSBOVUxMOwor CitzdGF0aWMgTG9naWNhbFJlcEluZm8gKmRiaW5mbzsKK3N0YXRpYyBpbnQJbnVtX2RicyA9IDA7 CisKK2VudW0gV2FpdFBNUmVzdWx0Cit7CisJUE9TVE1BU1RFUl9SRUFEWSwKKwlQT1NUTUFTVEVS X1NUQU5EQlksCisJUE9TVE1BU1RFUl9TVElMTF9TVEFSVElORywKKwlQT1NUTUFTVEVSX0ZBSUxF RAorfTsKKworCisvKgorICogQ2xlYW51cCBvYmplY3RzIHRoYXQgd2VyZSBjcmVhdGVkIGJ5IHBn X2NyZWF0ZXN1YnNjcmliZXIgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCisgKgorICogUmVwbGljYXRp b24gc2xvdHMsIHB1YmxpY2F0aW9ucyBhbmQgc3Vic2NyaXB0aW9ucyBhcmUgY3JlYXRlZC4gRGVw ZW5kaW5nIG9uCisgKiB0aGUgc3RlcCBpdCBmYWlsZWQsIGl0IHNob3VsZCByZW1vdmUgdGhlIGFs cmVhZHkgY3JlYXRlZCBvYmplY3RzIGlmIGl0IGlzCisgKiBwb3NzaWJsZSAoc29tZXRpbWVzIGl0 IHdvbid0IHdvcmsgZHVlIHRvIGEgY29ubmVjdGlvbiBpc3N1ZSkuCisgKi8KK3N0YXRpYyB2b2lk CitjbGVhbnVwX29iamVjdHNfYXRleGl0KHZvaWQpCit7CisJUEdjb25uCSAgICpjb25uOworCWlu dAkJCWk7CisKKwlpZiAoc3VjY2VzcykKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSA8IG51 bV9kYnM7IGkrKykKKwl7CisJCWlmIChkYmluZm9baV0ubWFkZV9zdWJzY3JpcHRpb24pCisJCXsK KwkJCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNlKGRiaW5mb1tpXS5zdWJjb25uaW5mbyk7CisJCQlp ZiAoY29ubiAhPSBOVUxMKQorCQkJeworCQkJCWRyb3Bfc3Vic2NyaXB0aW9uKGNvbm4sICZkYmlu Zm9baV0pOworCQkJCWlmIChkYmluZm9baV0ubWFkZV9wdWJsaWNhdGlvbikKKwkJCQkJZHJvcF9w dWJsaWNhdGlvbihjb25uLCAmZGJpbmZvW2ldKTsKKwkJCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNv bm4pOworCQkJfQorCQl9CisKKwkJaWYgKGRiaW5mb1tpXS5tYWRlX3B1YmxpY2F0aW9uIHx8IGRi aW5mb1tpXS5tYWRlX3JlcGxzbG90KQorCQl7CisJCQljb25uID0gY29ubmVjdF9kYXRhYmFzZShk YmluZm9baV0ucHViY29ubmluZm8pOworCQkJaWYgKGNvbm4gIT0gTlVMTCkKKwkJCXsKKwkJCQlp ZiAoZGJpbmZvW2ldLm1hZGVfcHVibGljYXRpb24pCisJCQkJCWRyb3BfcHVibGljYXRpb24oY29u biwgJmRiaW5mb1tpXSk7CisJCQkJaWYgKGRiaW5mb1tpXS5tYWRlX3JlcGxzbG90KQorCQkJCQlk cm9wX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgJmRiaW5mb1tpXSwgTlVMTCk7CisJCQkJZGlzY29u bmVjdF9kYXRhYmFzZShjb25uKTsKKwkJCX0KKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQKK3Vz YWdlKHZvaWQpCit7CisJcHJpbnRmKF8oIiVzIGNyZWF0ZXMgYSBuZXcgbG9naWNhbCByZXBsaWNh IGZyb20gYSBzdGFuZGJ5IHNlcnZlci5cblxuIiksCisJCSAgIHByb2duYW1lKTsKKwlwcmludGYo XygiVXNhZ2U6XG4iKSk7CisJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi5cbiIpLCBwcm9nbmFt ZSk7CisJcHJpbnRmKF8oIlxuT3B0aW9uczpcbiIpKTsKKwlwcmludGYoXygiIC1ELCAtLXBnZGF0 YT1EQVRBRElSICAgICAgICAgICAgICAgIGxvY2F0aW9uIGZvciB0aGUgc3Vic2NyaWJlciBkYXRh IGRpcmVjdG9yeVxuIikpOworCXByaW50ZihfKCIgLVAsIC0tcHVibGlzaGVyLXNlcnZlcj1DT05O U1RSICAgICAgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nXG4iKSk7CisJcHJpbnRmKF8oIiAt UywgLS1zdWJzY3JpYmVyLXNlcnZlcj1DT05OU1RSICAgICBzdWJzY3JpYmVyIGNvbm5lY3Rpb24g c3RyaW5nXG4iKSk7CisJcHJpbnRmKF8oIiAtZCwgLS1kYXRhYmFzZT1EQk5BTUUgICAgICAgICAg ICAgICBkYXRhYmFzZSB0byBjcmVhdGUgYSBzdWJzY3JpcHRpb25cbiIpKTsKKwlwcmludGYoXygi IC1uLCAtLWRyeS1ydW4gICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYmVmb3JlIG1vZGlmeWlu ZyBhbnl0aGluZ1xuIikpOworCXByaW50ZihfKCIgLXQsIC0tcmVjb3ZlcnktdGltZW91dD1TRUNT ICAgICAgICAgc2Vjb25kcyB0byB3YWl0IGZvciByZWNvdmVyeSB0byBlbmRcbiIpKTsKKwlwcmlu dGYoXygiIC1yLCAtLXJldGFpbiAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbiBsb2cgZmls ZSBhZnRlciBzdWNjZXNzXG4iKSk7CisJcHJpbnRmKF8oIiAtdiwgLS12ZXJib3NlICAgICAgICAg ICAgICAgICAgICAgICBvdXRwdXQgdmVyYm9zZSBtZXNzYWdlc1xuIikpOworCXByaW50ZihfKCIg LVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5mb3Jt YXRpb24sIHRoZW4gZXhpdFxuIikpOworCXByaW50ZihfKCIgLT8sIC0taGVscCAgICAgICAgICAg ICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhpdFxuIikpOworCXByaW50Zihf KCJcblJlcG9ydCBidWdzIHRvIDwlcz4uXG4iKSwgUEFDS0FHRV9CVUdSRVBPUlQpOworCXByaW50 ZihfKCIlcyBob21lIHBhZ2U6IDwlcz5cbiIpLCBQQUNLQUdFX05BTUUsIFBBQ0tBR0VfVVJMKTsK K30KKworLyoKKyAqIFZhbGlkYXRlIGEgY29ubmVjdGlvbiBzdHJpbmcuIFJldHVybnMgYSBiYXNl IGNvbm5lY3Rpb24gc3RyaW5nIHRoYXQgaXMgYQorICogY29ubmVjdGlvbiBzdHJpbmcgd2l0aG91 dCBhIGRhdGFiYXNlIG5hbWUuCisgKiBTaW5jZSB3ZSBtaWdodCBwcm9jZXNzIG11bHRpcGxlIGRh dGFiYXNlcywgZWFjaCBkYXRhYmFzZSBuYW1lIHdpbGwgYmUKKyAqIGFwcGVuZGVkIHRvIHRoaXMg YmFzZSBjb25uZWN0aW9uIHN0cmluZyB0byBwcm92aWRlIGEgZmluYWwgY29ubmVjdGlvbiBzdHJp bmcuCisgKiBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IChkYm5hbWUpIGlzIG5vdCBudWxsLCByZXR1 cm5zIGRibmFtZSBpZiB0aGUgcHJvdmlkZWQKKyAqIGNvbm5lY3Rpb24gc3RyaW5nIGNvbnRhaW5z IGl0LiBJZiBvcHRpb24gLS1kYXRhYmFzZSBpcyBub3QgcHJvdmlkZWQsIHVzZXMKKyAqIGRibmFt ZSBhcyB0aGUgb25seSBkYXRhYmFzZSB0byBzZXR1cCB0aGUgbG9naWNhbCByZXBsaWNhLgorICog SXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhlIHJldHVybmVkIGNv bm5lY3Rpb24gc3RyaW5nIGFuZAorICogZGJuYW1lLgorICovCitzdGF0aWMgY2hhciAqCitnZXRf YmFzZV9jb25uaW5mbyhjaGFyICpjb25uaW5mbywgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpu b2Rlcm9sZSkKK3sKKwlQUUV4cEJ1ZmZlciBidWYgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBR Y29ubmluZm9PcHRpb24gKmNvbm5fb3B0cyA9IE5VTEw7CisJUFFjb25uaW5mb09wdGlvbiAqY29u bl9vcHQ7CisJY2hhcgkgICAqZXJybXNnID0gTlVMTDsKKwljaGFyCSAgICpyZXQ7CisJaW50CQkJ aTsKKworCXBnX2xvZ19pbmZvKCJ2YWxpZGF0aW5nIGNvbm5lY3Rpb24gc3RyaW5nIG9uICVzIiwg bm9kZXJvbGUpOworCisJY29ubl9vcHRzID0gUFFjb25uaW5mb1BhcnNlKGNvbm5pbmZvLCAmZXJy bXNnKTsKKwlpZiAoY29ubl9vcHRzID09IE5VTEwpCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBwYXJzZSBjb25uZWN0aW9uIHN0cmluZzogJXMiLCBlcnJtc2cpOworCQlyZXR1cm4gTlVM TDsKKwl9CisKKwlpID0gMDsKKwlmb3IgKGNvbm5fb3B0ID0gY29ubl9vcHRzOyBjb25uX29wdC0+ a2V5d29yZCAhPSBOVUxMOyBjb25uX29wdCsrKQorCXsKKwkJaWYgKHN0cmNtcChjb25uX29wdC0+ a2V5d29yZCwgImRibmFtZSIpID09IDAgJiYgY29ubl9vcHQtPnZhbCAhPSBOVUxMKQorCQl7CisJ CQlpZiAoZGJuYW1lKQorCQkJCWRibmFtZSA9IHBnX3N0cmR1cChjb25uX29wdC0+dmFsKTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGNvbm5fb3B0LT52YWwgIT0gTlVMTCAmJiBjb25uX29w dC0+dmFsWzBdICE9ICdcMCcpCisJCXsKKwkJCWlmIChpID4gMCkKKwkJCQlhcHBlbmRQUUV4cEJ1 ZmZlckNoYXIoYnVmLCAnICcpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIoYnVmLCAiJXM9JXMiLCBj b25uX29wdC0+a2V5d29yZCwgY29ubl9vcHQtPnZhbCk7CisJCQlpKys7CisJCX0KKwl9CisKKwly ZXQgPSBwZ19zdHJkdXAoYnVmLT5kYXRhKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihidWYpOwor CVBRY29ubmluZm9GcmVlKGNvbm5fb3B0cyk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICog R2V0IHRoZSBhYnNvbHV0ZSBwYXRoIGZyb20gb3RoZXIgUG9zdGdyZVNRTCBiaW5hcmllcyAocGdf Y3RsIGFuZAorICogcGdfcmVzZXR3YWwpIHRoYXQgaXMgdXNlZCBieSBpdC4KKyAqLworc3RhdGlj IGJvb2wKK2dldF9leGVjX3BhdGgoY29uc3QgY2hhciAqcGF0aCkKK3sKKwlpbnQJCQlyYzsKKwor CXBnX2N0bF9wYXRoID0gcGdfbWFsbG9jKE1BWFBHUEFUSCk7CisJcmMgPSBmaW5kX290aGVyX2V4 ZWMocGF0aCwgInBnX2N0bCIsCisJCQkJCQkgInBnX2N0bCAoUG9zdGdyZVNRTCkgIiBQR19WRVJT SU9OICJcbiIsCisJCQkJCQkgcGdfY3RsX3BhdGgpOworCWlmIChyYyA8IDApCisJeworCQljaGFy CQlmdWxsX3BhdGhbTUFYUEdQQVRIXTsKKworCQlpZiAoZmluZF9teV9leGVjKHBhdGgsIGZ1bGxf cGF0aCkgPCAwKQorCQkJc3RybGNweShmdWxsX3BhdGgsIHByb2duYW1lLCBzaXplb2YoZnVsbF9w YXRoKSk7CisJCWlmIChyYyA9PSAtMSkKKwkJCXBnX2xvZ19lcnJvcigiVGhlIHByb2dyYW0gXCIl c1wiIGlzIG5lZWRlZCBieSAlcyBidXQgd2FzIG5vdCBmb3VuZCBpbiB0aGVcbiIKKwkJCQkJCSAi c2FtZSBkaXJlY3RvcnkgYXMgXCIlc1wiLlxuIgorCQkJCQkJICJDaGVjayB5b3VyIGluc3RhbGxh dGlvbi4iLAorCQkJCQkJICJwZ19jdGwiLCBwcm9nbmFtZSwgZnVsbF9wYXRoKTsKKwkJZWxzZQor CQkJcGdfbG9nX2Vycm9yKCJUaGUgcHJvZ3JhbSBcIiVzXCIgd2FzIGZvdW5kIGJ5IFwiJXNcIlxu IgorCQkJCQkJICJidXQgd2FzIG5vdCB0aGUgc2FtZSB2ZXJzaW9uIGFzICVzLlxuIgorCQkJCQkJ ICJDaGVjayB5b3VyIGluc3RhbGxhdGlvbi4iLAorCQkJCQkJICJwZ19jdGwiLCBmdWxsX3BhdGgs IHByb2duYW1lKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXBnX2xvZ19kZWJ1ZygicGdfY3Rs IHBhdGggaXM6ICVzIiwgcGdfY3RsX3BhdGgpOworCisJcGdfcmVzZXR3YWxfcGF0aCA9IHBnX21h bGxvYyhNQVhQR1BBVEgpOworCXJjID0gZmluZF9vdGhlcl9leGVjKHBhdGgsICJwZ19yZXNldHdh bCIsCisJCQkJCQkgInBnX3Jlc2V0d2FsIChQb3N0Z3JlU1FMKSAiIFBHX1ZFUlNJT04gIlxuIiwK KwkJCQkJCSBwZ19yZXNldHdhbF9wYXRoKTsKKwlpZiAocmMgPCAwKQorCXsKKwkJY2hhcgkJZnVs bF9wYXRoW01BWFBHUEFUSF07CisKKwkJaWYgKGZpbmRfbXlfZXhlYyhwYXRoLCBmdWxsX3BhdGgp IDwgMCkKKwkJCXN0cmxjcHkoZnVsbF9wYXRoLCBwcm9nbmFtZSwgc2l6ZW9mKGZ1bGxfcGF0aCkp OworCQlpZiAocmMgPT0gLTEpCisJCQlwZ19sb2dfZXJyb3IoIlRoZSBwcm9ncmFtIFwiJXNcIiBp cyBuZWVkZWQgYnkgJXMgYnV0IHdhcyBub3QgZm91bmQgaW4gdGhlXG4iCisJCQkJCQkgInNhbWUg ZGlyZWN0b3J5IGFzIFwiJXNcIi5cbiIKKwkJCQkJCSAiQ2hlY2sgeW91ciBpbnN0YWxsYXRpb24u IiwKKwkJCQkJCSAicGdfcmVzZXR3YWwiLCBwcm9nbmFtZSwgZnVsbF9wYXRoKTsKKwkJZWxzZQor CQkJcGdfbG9nX2Vycm9yKCJUaGUgcHJvZ3JhbSBcIiVzXCIgd2FzIGZvdW5kIGJ5IFwiJXNcIlxu IgorCQkJCQkJICJidXQgd2FzIG5vdCB0aGUgc2FtZSB2ZXJzaW9uIGFzICVzLlxuIgorCQkJCQkJ ICJDaGVjayB5b3VyIGluc3RhbGxhdGlvbi4iLAorCQkJCQkJICJwZ19yZXNldHdhbCIsIGZ1bGxf cGF0aCwgcHJvZ25hbWUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcGdfbG9nX2RlYnVnKCJw Z19yZXNldHdhbCBwYXRoIGlzOiAlcyIsIHBnX3Jlc2V0d2FsX3BhdGgpOworCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBJcyBpdCBhIGNsdXN0ZXIgZGlyZWN0b3J5PyBUaGVzZSBhcmUgcHJl bGltaW5hcnkgY2hlY2tzLiBJdCBpcyBmYXIgZnJvbQorICogbWFraW5nIGFuIGFjY3VyYXRlIGNo ZWNrLiBJZiBpdCBpcyBub3QgYSBjbG9uZSBmcm9tIHRoZSBwdWJsaXNoZXIsIGl0IHdpbGwKKyAq IGV2ZW50dWFsbHkgZmFpbCBpbiBhIGZ1dHVyZSBzdGVwLgorICovCitzdGF0aWMgYm9vbAorY2hl Y2tfZGF0YV9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGF0YWRpcikKK3sKKwlzdHJ1Y3Qgc3RhdCBz dGF0YnVmOworCWNoYXIJCXZlcnNpb25maWxlW01BWFBHUEFUSF07CisKKwlwZ19sb2dfaW5mbygi Y2hlY2tpbmcgaWYgZGlyZWN0b3J5IFwiJXNcIiBpcyBhIGNsdXN0ZXIgZGF0YSBkaXJlY3Rvcnki LAorCQkJCWRhdGFkaXIpOworCisJaWYgKHN0YXQoZGF0YWRpciwgJnN0YXRidWYpICE9IDApCisJ eworCQlpZiAoZXJybm8gPT0gRU5PRU5UKQorCQkJcGdfbG9nX2Vycm9yKCJkYXRhIGRpcmVjdG9y eSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLCBkYXRhZGlyKTsKKwkJZWxzZQorCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgYWNjZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVzIiwgZGF0YWRpciwgc3Ry ZXJyb3IoZXJybm8pKTsKKworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJc25wcmludGYodmVyc2lv bmZpbGUsIE1BWFBHUEFUSCwgIiVzL1BHX1ZFUlNJT04iLCBkYXRhZGlyKTsKKwlpZiAoc3RhdCh2 ZXJzaW9uZmlsZSwgJnN0YXRidWYpICE9IDAgJiYgZXJybm8gPT0gRU5PRU5UKQorCXsKKwkJcGdf bG9nX2Vycm9yKCJkaXJlY3RvcnkgXCIlc1wiIGlzIG5vdCBhIGRhdGFiYXNlIGNsdXN0ZXIgZGly ZWN0b3J5IiwgZGF0YWRpcik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsK K30KKworLyoKKyAqIEFwcGVuZCBkYXRhYmFzZSBuYW1lIGludG8gYSBiYXNlIGNvbm5lY3Rpb24g c3RyaW5nLgorICoKKyAqIGRibmFtZSBpcyB0aGUgb25seSBwYXJhbWV0ZXIgdGhhdCBjaGFuZ2Vz IHNvIGl0IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgYmFzZQorICogY29ubmVjdGlvbiBzdHJpbmcu IFRoaXMgZnVuY3Rpb24gY29uY2F0ZW5hdGVzIGRibmFtZSB0byBidWlsZCBhICJyZWFsIgorICog Y29ubmVjdGlvbiBzdHJpbmcuCisgKi8KK3N0YXRpYyBjaGFyICoKK2NvbmNhdF9jb25uaW5mb19k Ym5hbWUoY29uc3QgY2hhciAqY29ubmluZm8sIGNvbnN0IGNoYXIgKmRibmFtZSkKK3sKKwlQUUV4 cEJ1ZmZlciBidWYgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCWNoYXIJICAgKnJldDsKKworCUFz c2VydChjb25uaW5mbyAhPSBOVUxMKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZiwgY29u bmluZm8pOworCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiBkYm5hbWU9JXMiLCBkYm5hbWUpOwor CisJcmV0ID0gcGdfc3RyZHVwKGJ1Zi0+ZGF0YSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGJ1Zik7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogU3RvcmUgcHVibGljYXRpb24gYW5kIHN1YnNj cmlwdGlvbiBpbmZvcm1hdGlvbi4KKyAqLworc3RhdGljIExvZ2ljYWxSZXBJbmZvICoKK3N0b3Jl X3B1Yl9zdWJfaW5mbyhjb25zdCBjaGFyICpwdWJfYmFzZV9jb25uaW5mbywgY29uc3QgY2hhciAq c3ViX2Jhc2VfY29ubmluZm8pCit7CisJTG9naWNhbFJlcEluZm8gKmRiaW5mbzsKKwlTaW1wbGVT dHJpbmdMaXN0Q2VsbCAqY2VsbDsKKwlpbnQJCQlpID0gMDsKKworCWRiaW5mbyA9IChMb2dpY2Fs UmVwSW5mbyAqKSBwZ19tYWxsb2MobnVtX2RicyAqIHNpemVvZihMb2dpY2FsUmVwSW5mbykpOwor CisJZm9yIChjZWxsID0gZGF0YWJhc2VfbmFtZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5l eHQpCisJeworCQljaGFyCSAgICpjb25uaW5mbzsKKworCQkvKiBQdWJsaXNoZXIuICovCisJCWNv bm5pbmZvID0gY29uY2F0X2Nvbm5pbmZvX2RibmFtZShwdWJfYmFzZV9jb25uaW5mbywgY2VsbC0+ dmFsKTsKKwkJZGJpbmZvW2ldLnB1YmNvbm5pbmZvID0gY29ubmluZm87CisJCWRiaW5mb1tpXS5k Ym5hbWUgPSBjZWxsLT52YWw7CisJCWRiaW5mb1tpXS5tYWRlX3JlcGxzbG90ID0gZmFsc2U7CisJ CWRiaW5mb1tpXS5tYWRlX3B1YmxpY2F0aW9uID0gZmFsc2U7CisJCWRiaW5mb1tpXS5tYWRlX3N1 YnNjcmlwdGlvbiA9IGZhbHNlOworCQkvKiBvdGhlciBzdHJ1Y3QgZmllbGRzIHdpbGwgYmUgZmls bGVkIGxhdGVyLiAqLworCisJCS8qIFN1YnNjcmliZXIuICovCisJCWNvbm5pbmZvID0gY29uY2F0 X2Nvbm5pbmZvX2RibmFtZShzdWJfYmFzZV9jb25uaW5mbywgY2VsbC0+dmFsKTsKKwkJZGJpbmZv W2ldLnN1YmNvbm5pbmZvID0gY29ubmluZm87CisKKwkJaSsrOworCX0KKworCXJldHVybiBkYmlu Zm87Cit9CisKK3N0YXRpYyBQR2Nvbm4gKgorY29ubmVjdF9kYXRhYmFzZShjb25zdCBjaGFyICpj b25uaW5mbykKK3sKKwlQR2Nvbm4JICAgKmNvbm47CisJUEdyZXN1bHQgICAqcmVzOworCWNvbnN0 IGNoYXIgKnJjb25uaW5mbzsKKworCS8qIGxvZ2ljYWwgcmVwbGljYXRpb24gbW9kZSAqLworCXJj b25uaW5mbyA9IHBzcHJpbnRmKCIlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIsIGNvbm5pbmZvKTsK KworCWNvbm4gPSBQUWNvbm5lY3RkYihyY29ubmluZm8pOworCWlmIChQUXN0YXR1cyhjb25uKSAh PSBDT05ORUNUSU9OX09LKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb25uZWN0aW9uIHRvIGRhdGFi YXNlIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXJldHVybiBOVUxMOwor CX0KKworCS8qIHNlY3VyZSBzZWFyY2hfcGF0aCAqLworCXJlcyA9IFBRZXhlYyhjb25uLCBBTFdB WVNfU0VDVVJFX1NFQVJDSF9QQVRIX1NRTCk7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfVFVQTEVTX09LKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xlYXIgc2Vh cmNoX3BhdGg6ICVzIiwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCXJldHVybiBOVUxM OworCX0KKwlQUWNsZWFyKHJlcyk7CisKKwlyZXR1cm4gY29ubjsKK30KKworc3RhdGljIHZvaWQK K2Rpc2Nvbm5lY3RfZGF0YWJhc2UoUEdjb25uICpjb25uKQoreworCUFzc2VydChjb25uICE9IE5V TEwpOworCisJUFFmaW5pc2goY29ubik7Cit9CisKKy8qCisgKiBPYnRhaW4gdGhlIHN5c3RlbSBp ZGVudGlmaWVyIHVzaW5nIHRoZSBwcm92aWRlZCBjb25uZWN0aW9uLiBJdCB3aWxsIGJlIHVzZWQK KyAqIHRvIGNvbXBhcmUgaWYgYSBkYXRhIGRpcmVjdG9yeSBpcyBhIGNsb25lIG9mIGFub3RoZXIg b25lLgorICovCitzdGF0aWMgdWludDY0CitnZXRfc3lzaWRfZnJvbV9jb25uKGNvbnN0IGNoYXIg KmNvbm5pbmZvKQoreworCVBHY29ubgkgICAqY29ubjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJdWlu dDY0CQlzeXNpZDsKKworCXBnX2xvZ19pbmZvKCJnZXR0aW5nIHN5c3RlbSBpZGVudGlmaWVyIGZy b20gcHVibGlzaGVyIik7CisKKwljb25uID0gY29ubmVjdF9kYXRhYmFzZShjb25uaW5mbyk7CisJ aWYgKGNvbm4gPT0gTlVMTCkKKwkJZXhpdCgxKTsKKworCXJlcyA9IFBRZXhlYyhjb25uLCAiSURF TlRJRllfU1lTVEVNIik7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVT X09LKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21t YW5kIFwiJXNcIjogJXMiLAorCQkJCQkgIklERU5USUZZX1NZU1RFTSIsIFBRcmVzdWx0RXJyb3JN ZXNzYWdlKHJlcykpOworCQlQUWNsZWFyKHJlcyk7CisJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29u bik7CisJCWV4aXQoMSk7CisJfQorCWlmIChQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxk cyhyZXMpIDwgMykKKwl7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGlkZW50aWZ5IHN5c3Rl bTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgb3Ig bW9yZSBmaWVsZHMiLAorCQkJCQkgUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCAz KTsKKworCQlQUWNsZWFyKHJlcyk7CisJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubik7CisJCWV4 aXQoMSk7CisJfQorCisJc3lzaWQgPSBzdHJ0b3U2NChQUWdldHZhbHVlKHJlcywgMCwgMCksIE5V TEwsIDEwKTsKKworCXBnX2xvZ19pbmZvKCJzeXN0ZW0gaWRlbnRpZmllciBpcyAlbGx1IG9uIHB1 Ymxpc2hlciIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN5c2lkKTsKKworCWRpc2Nvbm5lY3RfZGF0 YWJhc2UoY29ubik7CisKKwlyZXR1cm4gc3lzaWQ7Cit9CisKKy8qCisgKiBPYnRhaW4gdGhlIHN5 c3RlbSBpZGVudGlmaWVyIGZyb20gY29udHJvbCBmaWxlLiBJdCB3aWxsIGJlIHVzZWQgdG8gY29t cGFyZQorICogaWYgYSBkYXRhIGRpcmVjdG9yeSBpcyBhIGNsb25lIG9mIGFub3RoZXIgb25lLiBU aGlzIHJvdXRpbmUgaXMgdXNlZCBsb2NhbGx5CisgKiBhbmQgYXZvaWRzIGEgcmVwbGljYXRpb24g Y29ubmVjdGlvbi4KKyAqLworc3RhdGljIHVpbnQ2NAorZ2V0X2NvbnRyb2xfZnJvbV9kYXRhZGly KGNvbnN0IGNoYXIgKmRhdGFkaXIpCit7CisJQ29udHJvbEZpbGVEYXRhICpjZjsKKwlib29sCQlj cmNfb2s7CisJdWludDY0CQlzeXNpZDsKKworCXBnX2xvZ19pbmZvKCJnZXR0aW5nIHN5c3RlbSBp ZGVudGlmaWVyIGZyb20gc3Vic2NyaWJlciIpOworCisJY2YgPSBnZXRfY29udHJvbGZpbGUoZGF0 YWRpciwgJmNyY19vayk7CisJaWYgKCFjcmNfb2spCisJeworCQlwZ19sb2dfZXJyb3IoImNvbnRy b2wgZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlzeXNp ZCA9IGNmLT5zeXN0ZW1faWRlbnRpZmllcjsKKworCXBnX2xvZ19pbmZvKCJzeXN0ZW0gaWRlbnRp ZmllciBpcyAlbGx1IG9uIHN1YnNjcmliZXIiLCAodW5zaWduZWQgbG9uZyBsb25nKSBzeXNpZCk7 CisKKwlwZnJlZShjZik7CisKKwlyZXR1cm4gc3lzaWQ7Cit9CisKKy8qCisgKiBNb2RpZnkgdGhl IHN5c3RlbSBpZGVudGlmaWVyLiBTaW5jZSBhIHN0YW5kYnkgc2VydmVyIHByZXNlcnZlcyB0aGUg c3lzdGVtCisgKiBpZGVudGlmaWVyLCBpdCBtYWtlcyBzZW5zZSB0byBjaGFuZ2UgaXQgdG8gYXZv aWQgc2l0dWF0aW9ucyBpbiB3aGljaCBXQUwKKyAqIGZpbGVzIGZyb20gb25lIG9mIHRoZSBzeXN0 ZW1zIG1pZ2h0IGJlIHVzZWQgaW4gdGhlIG90aGVyIG9uZS4KKyAqLworc3RhdGljIHZvaWQKK21v ZGlmeV9zeXNpZChjb25zdCBjaGFyICpwZ19yZXNldHdhbF9wYXRoLCBjb25zdCBjaGFyICpkYXRh ZGlyKQoreworCUNvbnRyb2xGaWxlRGF0YSAqY2Y7CisJYm9vbAkJY3JjX29rOworCXN0cnVjdCB0 aW1ldmFsIHR2OworCisJY2hhcgkgICAqY21kX3N0cjsKKwlpbnQJCQlyYzsKKworCXBnX2xvZ19p bmZvKCJtb2RpZnlpbmcgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBzdWJzY3JpYmVyIik7CisKKwlj ZiA9IGdldF9jb250cm9sZmlsZShkYXRhZGlyLCAmY3JjX29rKTsKKwlpZiAoIWNyY19vaykKKwl7 CisJCXBnX2xvZ19lcnJvcigiY29udHJvbCBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIpOwor CQlleGl0KDEpOworCX0KKworCS8qCisJICogU2VsZWN0IGEgbmV3IHN5c3RlbSBpZGVudGlmaWVy LgorCSAqCisJICogWFhYIHRoaXMgY29kZSB3YXMgZXh0cmFjdGVkIGZyb20gQm9vdFN0cmFwWExP RygpLgorCSAqLworCWdldHRpbWVvZmRheSgmdHYsIE5VTEwpOworCWNmLT5zeXN0ZW1faWRlbnRp ZmllciA9ICgodWludDY0KSB0di50dl9zZWMpIDw8IDMyOworCWNmLT5zeXN0ZW1faWRlbnRpZmll ciB8PSAoKHVpbnQ2NCkgdHYudHZfdXNlYykgPDwgMTI7CisJY2YtPnN5c3RlbV9pZGVudGlmaWVy IHw9IGdldHBpZCgpICYgMHhGRkY7CisKKwlpZiAoIWRyeV9ydW4pCisJCXVwZGF0ZV9jb250cm9s ZmlsZShkYXRhZGlyLCBjZiwgdHJ1ZSk7CisKKwlwZ19sb2dfaW5mbygic3lzdGVtIGlkZW50aWZp ZXIgaXMgJWxsdSBvbiBzdWJzY3JpYmVyIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgY2YtPnN5c3Rl bV9pZGVudGlmaWVyKTsKKworCXBnX2xvZ19pbmZvKCJydW5uaW5nIHBnX3Jlc2V0d2FsIG9uIHRo ZSBzdWJzY3JpYmVyIik7CisKKwljbWRfc3RyID0gcHNwcmludGYoIlwiJXNcIiAtRCBcIiVzXCIi LCBwZ19yZXNldHdhbF9wYXRoLCBkYXRhZGlyKTsKKworCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBp czogJXMiLCBjbWRfc3RyKTsKKworCWlmICghZHJ5X3J1bikKKwl7CisJCXJjID0gc3lzdGVtKGNt ZF9zdHIpOworCQlpZiAocmMgPT0gMCkKKwkJCXBnX2xvZ19pbmZvKCJzdWJzY3JpYmVyIHN1Y2Nl c3NmdWxseSBjaGFuZ2VkIHRoZSBzeXN0ZW0gaWRlbnRpZmllciIpOworCQllbHNlCisJCQlwZ19s b2dfZXJyb3IoInN1YnNjcmliZXIgZmFpbGVkIHRvIGNoYW5nZSBzeXN0ZW0gaWRlbnRpZmllcjog ZXhpdCBjb2RlOiAlZCIsIHJjKTsKKwl9CisKKwlwZnJlZShjZik7Cit9CisKKy8qCisgKiBDcmVh dGUgdGhlIHB1YmxpY2F0aW9ucyBhbmQgcmVwbGljYXRpb24gc2xvdHMgaW4gcHJlcGFyYXRpb24g Zm9yIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uLgorICovCitzdGF0aWMgYm9vbAorc2V0dXBfcHVi bGlzaGVyKExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCit7CisJUEdjb25uCSAgICpjb25uOworCVBH cmVzdWx0ICAgKnJlczsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2RiczsgaSsrKQorCXsK KwkJY2hhcgkJcHVibmFtZVtOQU1FREFUQUxFTl07CisJCWNoYXIJCXJlcGxzbG90bmFtZVtOQU1F REFUQUxFTl07CisKKwkJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoZGJpbmZvW2ldLnB1YmNvbm5p bmZvKTsKKwkJaWYgKGNvbm4gPT0gTlVMTCkKKwkJCWV4aXQoMSk7CisKKwkJcmVzID0gUFFleGVj KGNvbm4sCisJCQkJCSAiU0VMRUNUIG9pZCBGUk9NIHBnX2NhdGFsb2cucGdfZGF0YWJhc2UgV0hF UkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSIpOworCQlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IG9idGFpbiBkYXRhYmFzZSBPSUQ6ICVzIiwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJ CQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKKwkJewor CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIGRhdGFiYXNlIE9JRDogZ290ICVkIHJv d3MsIGV4cGVjdGVkICVkIHJvd3MiLAorCQkJCQkJIFBRbnR1cGxlcyhyZXMpLCAxKTsKKwkJCXJl dHVybiBmYWxzZTsKKwkJfQorCisJCS8qIFJlbWVtYmVyIGRhdGFiYXNlIE9JRC4gKi8KKwkJZGJp bmZvW2ldLm9pZCA9IHN0cnRvdWwoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBOVUxMLCAxMCk7CisK KwkJUFFjbGVhcihyZXMpOworCisJCS8qCisJCSAqIEJ1aWxkIHRoZSBwdWJsaWNhdGlvbiBuYW1l LiBUaGUgbmFtZSBtdXN0IG5vdCBleGNlZWQgTkFNRURBVEFMRU4gLQorCQkgKiAxLiBUaGlzIGN1 cnJlbnQgc2NoZW1hIHVzZXMgYSBtYXhpbXVtIG9mIDMxIGNoYXJhY3RlcnMgKDIwICsgMTAgKwor CQkgKiAnXDAnKS4KKwkJICovCisJCXNucHJpbnRmKHB1Ym5hbWUsIHNpemVvZihwdWJuYW1lKSwg InBnX2NyZWF0ZXN1YnNjcmliZXJfJXUiLCBkYmluZm9baV0ub2lkKTsKKwkJZGJpbmZvW2ldLnB1 Ym5hbWUgPSBwZ19zdHJkdXAocHVibmFtZSk7CisKKwkJLyoKKwkJICogQ3JlYXRlIHB1YmxpY2F0 aW9uIG9uIHB1Ymxpc2hlci4gVGhpcyBzdGVwIHNob3VsZCBiZSBleGVjdXRlZAorCQkgKiAqYmVm b3JlKiBwcm9tb3RpbmcgdGhlIHN1YnNjcmliZXIgdG8gYXZvaWQgYW55IHRyYW5zYWN0aW9ucyBi ZXR3ZWVuCisJCSAqIGNvbnNpc3RlbnQgTFNOIGFuZCB0aGUgbmV3IHB1YmxpY2F0aW9uIHJvd3Mg KHN1Y2ggdHJhbnNhY3Rpb25zCisJCSAqIHdvdWxkbid0IHNlZSB0aGUgbmV3IHB1YmxpY2F0aW9u IHJvd3MgcmVzdWx0aW5nIGluIGFuIGVycm9yKS4KKwkJICovCisJCWNyZWF0ZV9wdWJsaWNhdGlv bihjb25uLCAmZGJpbmZvW2ldKTsKKworCQkvKgorCQkgKiBCdWlsZCB0aGUgcmVwbGljYXRpb24g c2xvdCBuYW1lLiBUaGUgbmFtZSBtdXN0IG5vdCBleGNlZWQKKwkJICogTkFNRURBVEFMRU4gLSAx LiBUaGlzIGN1cnJlbnQgc2NoZW1hIHVzZXMgYSBtYXhpbXVtIG9mIDQyCisJCSAqIGNoYXJhY3Rl cnMgKDIwICsgMTAgKyAxICsgMTAgKyAnXDAnKS4gUElEIGlzIGluY2x1ZGVkIHRvIHJlZHVjZSB0 aGUKKwkJICogcHJvYmFiaWxpdHkgb2YgY29sbGlzaW9uLiBCeSBkZWZhdWx0LCBzdWJzY3JpcHRp b24gbmFtZSBpcyB1c2VkIGFzCisJCSAqIHJlcGxpY2F0aW9uIHNsb3QgbmFtZS4KKwkJICovCisJ CXNucHJpbnRmKHJlcGxzbG90bmFtZSwgc2l6ZW9mKHJlcGxzbG90bmFtZSksCisJCQkJICJwZ19j cmVhdGVzdWJzY3JpYmVyXyV1XyVkIiwKKwkJCQkgZGJpbmZvW2ldLm9pZCwKKwkJCQkgKGludCkg Z2V0cGlkKCkpOworCQlkYmluZm9baV0uc3VibmFtZSA9IHBnX3N0cmR1cChyZXBsc2xvdG5hbWUp OworCisJCS8qIENyZWF0ZSByZXBsaWNhdGlvbiBzbG90IG9uIHB1Ymxpc2hlci4gKi8KKwkJaWYg KGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgJmRiaW5mb1tpXSwgcmVwbHNs b3RuYW1lKSAhPSBOVUxMIHx8IGRyeV9ydW4pCisJCQlwZ19sb2dfaW5mbygiY3JlYXRlIHJlcGxp Y2F0aW9uIHNsb3QgXCIlc1wiIG9uIHB1Ymxpc2hlciIsIHJlcGxzbG90bmFtZSk7CisJCWVsc2UK KwkJCXJldHVybiBmYWxzZTsKKworCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4pOworCX0KKwor CXJldHVybiB0cnVlOworfQorCisvKgorICogSXMgdGhlIHByaW1hcnkgc2VydmVyIHJlYWR5IGZv ciBsb2dpY2FsIHJlcGxpY2F0aW9uPworICovCitzdGF0aWMgYm9vbAorY2hlY2tfcHVibGlzaGVy KExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCit7CisJUEdjb25uCSAgICpjb25uOworCVBHcmVzdWx0 ICAgKnJlczsKKwlQUUV4cEJ1ZmZlciBzdHIgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJY2hh cgkgICAqd2FsX2xldmVsOworCWludAkJCW1heF9yZXBzbG90czsKKwlpbnQJCQljdXJfcmVwc2xv dHM7CisJaW50CQkJbWF4X3dhbHNlbmRlcnM7CisJaW50CQkJY3VyX3dhbHNlbmRlcnM7CisKKwlw Z19sb2dfaW5mbygiY2hlY2tpbmcgc2V0dGluZ3Mgb24gcHVibGlzaGVyIik7CisKKwkvKgorCSAq IExvZ2ljYWwgcmVwbGljYXRpb24gcmVxdWlyZXMgYSBmZXcgcGFyYW1ldGVycyB0byBiZSBzZXQg b24gcHVibGlzaGVyLgorCSAqIFNpbmNlIHRoZXNlIHBhcmFtZXRlcnMgYXJlIG5vdCBhIHJlcXVp cmVtZW50IGZvciBwaHlzaWNhbCByZXBsaWNhdGlvbiwKKwkgKiB3ZSBzaG91bGQgY2hlY2sgaXQg dG8gbWFrZSBzdXJlIGl0IHdvbid0IGZhaWwuCisJICoKKwkgKiB3YWxfbGV2ZWwgPSBsb2dpY2Fs CisJICogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID49IGN1cnJlbnQgKyBudW1iZXIgb2YgZGJzIHRv IGJlIGNvbnZlcnRlZAorCSAqIG1heF93YWxfc2VuZGVycyA+PSBjdXJyZW50ICsgbnVtYmVyIG9m IGRicyB0byBiZSBjb252ZXJ0ZWQKKwkgKi8KKwljb25uID0gY29ubmVjdF9kYXRhYmFzZShkYmlu Zm9bMF0ucHViY29ubmluZm8pOworCWlmIChjb25uID09IE5VTEwpCisJCWV4aXQoMSk7CisKKwly ZXMgPSBQUWV4ZWMoY29ubiwKKwkJCQkgIldJVEggd2wgQVMgKFNFTEVDVCBzZXR0aW5nIEFTIHdh bGxldmVsIEZST00gcGdfc2V0dGluZ3MgV0hFUkUgbmFtZSA9ICd3YWxfbGV2ZWwnKSwiCisJCQkJ ICIgICAgIHRvdGFsX21ycyBBUyAoU0VMRUNUIHNldHRpbmcgQVMgdG1ycyBGUk9NIHBnX3NldHRp bmdzIFdIRVJFIG5hbWUgPSAnbWF4X3JlcGxpY2F0aW9uX3Nsb3RzJyksIgorCQkJCSAiICAgICBj dXJfbXJzIEFTIChTRUxFQ1QgY291bnQoKikgQVMgY21ycyBGUk9NIHBnX3JlcGxpY2F0aW9uX3Ns b3RzKSwiCisJCQkJICIgICAgIHRvdGFsX213cyBBUyAoU0VMRUNUIHNldHRpbmcgQVMgdG13cyBG Uk9NIHBnX3NldHRpbmdzIFdIRVJFIG5hbWUgPSAnbWF4X3dhbF9zZW5kZXJzJyksIgorCQkJCSAi ICAgICBjdXJfbXdzIEFTIChTRUxFQ1QgY291bnQoKikgQVMgY213cyBGUk9NIHBnX3N0YXRfYWN0 aXZpdHkgV0hFUkUgYmFja2VuZF90eXBlID0gJ3dhbHNlbmRlcicpIgorCQkJCSAiU0VMRUNUIHdh bGxldmVsLCB0bXJzLCBjbXJzLCB0bXdzLCBjbXdzIEZST00gd2wsIHRvdGFsX21ycywgY3VyX21y cywgdG90YWxfbXdzLCBjdXJfbXdzIik7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gcHVi bGlzaGVyIHNldHRpbmdzOiAlcyIsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlyZXR1 cm4gZmFsc2U7CisJfQorCisJd2FsX2xldmVsID0gc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCAwLCAw KSk7CisJbWF4X3JlcHNsb3RzID0gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgMSkpOworCWN1cl9y ZXBzbG90cyA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIDIpKTsKKwltYXhfd2Fsc2VuZGVycyA9 IGF0b2koUFFnZXR2YWx1ZShyZXMsIDAsIDMpKTsKKwljdXJfd2Fsc2VuZGVycyA9IGF0b2koUFFn ZXR2YWx1ZShyZXMsIDAsIDQpKTsKKworCVBRY2xlYXIocmVzKTsKKworCXBnX2xvZ19kZWJ1Zygi c3Vic2NyaWJlcjogd2FsX2xldmVsOiAlcyIsIHdhbF9sZXZlbCk7CisJcGdfbG9nX2RlYnVnKCJz dWJzY3JpYmVyOiBtYXhfcmVwbGljYXRpb25fc2xvdHM6ICVkIiwgbWF4X3JlcHNsb3RzKTsKKwlw Z19sb2dfZGVidWcoInN1YnNjcmliZXI6IGN1cnJlbnQgcmVwbGljYXRpb24gc2xvdHM6ICVkIiwg Y3VyX3JlcHNsb3RzKTsKKwlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1heF93YWxfc2VuZGVy czogJWQiLCBtYXhfd2Fsc2VuZGVycyk7CisJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBjdXJy ZW50IHdhbCBzZW5kZXJzOiAlZCIsIGN1cl93YWxzZW5kZXJzKTsKKworCS8qCisJICogSWYgc3Rh bmRieSBzZXRzIHByaW1hcnlfc2xvdF9uYW1lLCBjaGVjayBpZiB0aGlzIHJlcGxpY2F0aW9uIHNs b3QgaXMgaW4KKwkgKiB1c2Ugb24gcHJpbWFyeSBmb3IgV0FMIHJldGVudGlvbiBwdXJwb3Nlcy4g VGhpcyByZXBsaWNhdGlvbiBzbG90IGhhcyBubworCSAqIHVzZSBhZnRlciB0aGUgdHJhbnNmb3Jt YXRpb24sIGhlbmNlLCBpdCB3aWxsIGJlIHJlbW92ZWQgYXQgdGhlIGVuZCBvZgorCSAqIHRoaXMg cHJvY2Vzcy4KKwkgKi8KKwlpZiAocHJpbWFyeV9zbG90X25hbWUpCisJeworCQlhcHBlbmRQUUV4 cEJ1ZmZlcihzdHIsCisJCQkJCQkgICJTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz IFdIRVJFIGFjdGl2ZSBBTkQgc2xvdF9uYW1lID0gJyVzJyIsIHByaW1hcnlfc2xvdF9uYW1lKTsK KworCQlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKworCQlyZXMg PSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKKwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfVFVQTEVTX09LKQorCQl7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4g cmVwbGljYXRpb24gc2xvdCBpbmZvcm1hdGlvbjogJXMiLCBQUXJlc3VsdEVycm9yTWVzc2FnZShy ZXMpKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCWlmIChQUW50dXBsZXMocmVzKSAhPSAx KQorCQl7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gcmVwbGljYXRpb24gc2xv dCBpbmZvcm1hdGlvbjogZ290ICVkIHJvd3MsIGV4cGVjdGVkICVkIHJvdyIsCisJCQkJCQkgUFFu dHVwbGVzKHJlcyksIDEpOworCQkJcGdfZnJlZShwcmltYXJ5X3Nsb3RfbmFtZSk7IC8qIGl0IGlz IG5vdCBiZWluZyB1c2VkLiAqLworCQkJcHJpbWFyeV9zbG90X25hbWUgPSBOVUxMOworCQkJcmV0 dXJuIGZhbHNlOworCQl9CisJCWVsc2UKKwkJeworCQkJcGdfbG9nX2luZm8oInByaW1hcnkgaGFz IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwgcHJpbWFyeV9zbG90X25hbWUpOworCQl9CisKKwkJ UFFjbGVhcihyZXMpOworCX0KKworCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubik7CisKKwlpZiAo c3RyY21wKHdhbF9sZXZlbCwgImxvZ2ljYWwiKSAhPSAwKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJw dWJsaXNoZXIgcmVxdWlyZXMgd2FsX2xldmVsID49IGxvZ2ljYWwiKTsKKwkJcmV0dXJuIGZhbHNl OworCX0KKworCWlmIChtYXhfcmVwc2xvdHMgLSBjdXJfcmVwc2xvdHMgPCBudW1fZGJzKQorCXsK KwkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIgcmVxdWlyZXMgJWQgcmVwbGljYXRpb24gc2xvdHMs IGJ1dCBvbmx5ICVkIHJlbWFpbiIsIG51bV9kYnMsIG1heF9yZXBzbG90cyAtIGN1cl9yZXBzbG90 cyk7CisJCXBnX2xvZ19lcnJvcl9oaW50KCJDb25zaWRlciBpbmNyZWFzaW5nIG1heF9yZXBsaWNh dGlvbl9zbG90cyB0byBhdCBsZWFzdCAlZC4iLCBjdXJfcmVwc2xvdHMgKyBudW1fZGJzKTsKKwkJ cmV0dXJuIGZhbHNlOworCX0KKworCWlmIChtYXhfd2Fsc2VuZGVycyAtIGN1cl93YWxzZW5kZXJz IDwgbnVtX2RicykKKwl7CisJCXBnX2xvZ19lcnJvcigicHVibGlzaGVyIHJlcXVpcmVzICVkIHdh bCBzZW5kZXIgcHJvY2Vzc2VzLCBidXQgb25seSAlZCByZW1haW4iLCBudW1fZGJzLCBtYXhfd2Fs c2VuZGVycyAtIGN1cl93YWxzZW5kZXJzKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIkNvbnNpZGVy IGluY3JlYXNpbmcgbWF4X3dhbF9zZW5kZXJzIHRvIGF0IGxlYXN0ICVkLiIsIGN1cl93YWxzZW5k ZXJzICsgbnVtX2Ricyk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIElzIHRoZSBzdGFuZGJ5IHNlcnZlciByZWFkeSBmb3IgbG9naWNhbCByZXBsaWNh dGlvbj8KKyAqLworc3RhdGljIGJvb2wKK2NoZWNrX3N1YnNjcmliZXIoTG9naWNhbFJlcEluZm8g KmRiaW5mbykKK3sKKwlQR2Nvbm4JICAgKmNvbm47CisJUEdyZXN1bHQgICAqcmVzOworCisJaW50 CQkJbWF4X2xyd29ya2VyczsKKwlpbnQJCQltYXhfcmVwc2xvdHM7CisJaW50CQkJbWF4X3dwcm9j czsKKworCXBnX2xvZ19pbmZvKCJjaGVja2luZyBzZXR0aW5ncyBvbiBzdWJzY3JpYmVyIik7CisK KwkvKgorCSAqIExvZ2ljYWwgcmVwbGljYXRpb24gcmVxdWlyZXMgYSBmZXcgcGFyYW1ldGVycyB0 byBiZSBzZXQgb24gc3Vic2NyaWJlci4KKwkgKiBTaW5jZSB0aGVzZSBwYXJhbWV0ZXJzIGFyZSBu b3QgYSByZXF1aXJlbWVudCBmb3IgcGh5c2ljYWwgcmVwbGljYXRpb24sCisJICogd2Ugc2hvdWxk IGNoZWNrIGl0IHRvIG1ha2Ugc3VyZSBpdCB3b24ndCBmYWlsLgorCSAqCisJICogbWF4X3JlcGxp Y2F0aW9uX3Nsb3RzID49IG51bWJlciBvZiBkYnMgdG8gYmUgY29udmVydGVkCisJICogbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA+PSBudW1iZXIgb2YgZGJzIHRvIGJlIGNvbnZlcnRl ZAorCSAqIG1heF93b3JrZXJfcHJvY2Vzc2VzID49IDEgKyBudW1iZXIgb2YgZGJzIHRvIGJlIGNv bnZlcnRlZAorCSAqLworCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNlKGRiaW5mb1swXS5zdWJjb25u aW5mbyk7CisJaWYgKGNvbm4gPT0gTlVMTCkKKwkJZXhpdCgxKTsKKworCXJlcyA9IFBRZXhlYyhj b25uLAorCQkJCSAiU0VMRUNUIHNldHRpbmcgRlJPTSBwZ19zZXR0aW5ncyBXSEVSRSBuYW1lIElO ICgnbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycycsICdtYXhfcmVwbGljYXRpb25fc2xv dHMnLCAnbWF4X3dvcmtlcl9wcm9jZXNzZXMnLCAncHJpbWFyeV9zbG90X25hbWUnKSBPUkRFUiBC WSBuYW1lIik7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0sp CisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gc3Vic2NyaWJlciBzZXR0aW5n czogJXMiLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0K KworCW1heF9scndvcmtlcnMgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CisJbWF4X3Jl cHNsb3RzID0gYXRvaShQUWdldHZhbHVlKHJlcywgMSwgMCkpOworCW1heF93cHJvY3MgPSBhdG9p KFBRZ2V0dmFsdWUocmVzLCAyLCAwKSk7CisJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlcywgMywg MCksICIiKSAhPSAwKQorCQlwcmltYXJ5X3Nsb3RfbmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgMywgMCkpOworCisJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzOiAlZCIsIG1heF9scndvcmtlcnMpOworCXBnX2xvZ19kZWJ1Zygi c3Vic2NyaWJlcjogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOiAlZCIsIG1heF9yZXBzbG90cyk7CisJ cGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBtYXhfd29ya2VyX3Byb2Nlc3NlczogJWQiLCBtYXhf d3Byb2NzKTsKKwlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IHByaW1hcnlfc2xvdF9uYW1lOiAl cyIsIHByaW1hcnlfc2xvdF9uYW1lKTsKKworCVBRY2xlYXIocmVzKTsKKworCWRpc2Nvbm5lY3Rf ZGF0YWJhc2UoY29ubik7CisKKwlpZiAobWF4X3JlcHNsb3RzIDwgbnVtX2RicykKKwl7CisJCXBn X2xvZ19lcnJvcigic3Vic2NyaWJlciByZXF1aXJlcyAlZCByZXBsaWNhdGlvbiBzbG90cywgYnV0 IG9ubHkgJWQgcmVtYWluIiwgbnVtX2RicywgbWF4X3JlcHNsb3RzKTsKKwkJcGdfbG9nX2Vycm9y X2hpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzIHRvIGF0IGxl YXN0ICVkLiIsIG51bV9kYnMpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKG1heF9scndv cmtlcnMgPCBudW1fZGJzKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVz ICVkIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VycywgYnV0IG9ubHkgJWQgcmVtYWluIiwgbnVt X2RicywgbWF4X2xyd29ya2Vycyk7CisJCXBnX2xvZ19lcnJvcl9oaW50KCJDb25zaWRlciBpbmNy ZWFzaW5nIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgdG8gYXQgbGVhc3QgJWQuIiwg bnVtX2Ricyk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAobWF4X3dwcm9jcyA8IG51bV9k YnMgKyAxKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVzICVkIHdvcmtl ciBwcm9jZXNzZXMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsIG51bV9kYnMgKyAxLCBtYXhfd3Byb2Nz KTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcgbWF4X3dvcmtlcl9w cm9jZXNzZXMgdG8gYXQgbGVhc3QgJWQuIiwgbnVtX2RicyArIDEpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBDcmVhdGUgdGhlIHN1YnNjcmlwdGlv bnMsIGFkanVzdCB0aGUgaW5pdGlhbCBsb2NhdGlvbiBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBh bmQKKyAqIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9ucy4gVGhhdCdzIHRoZSBsYXN0IHN0ZXAgZm9y IGxvZ2ljYWwgcmVwbGlhdGlvbiBzZXR1cC4KKyAqLworc3RhdGljIGJvb2wKK3NldHVwX3N1YnNj cmliZXIoTG9naWNhbFJlcEluZm8gKmRiaW5mbywgY29uc3QgY2hhciAqY29uc2lzdGVudF9sc24p Cit7CisJUEdjb25uCSAgICpjb25uOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZGJzOyBp KyspCisJeworCQkvKiBDb25uZWN0IHRvIHN1YnNjcmliZXIuICovCisJCWNvbm4gPSBjb25uZWN0 X2RhdGFiYXNlKGRiaW5mb1tpXS5zdWJjb25uaW5mbyk7CisJCWlmIChjb25uID09IE5VTEwpCisJ CQlleGl0KDEpOworCisJCS8qCisJCSAqIFNpbmNlIHRoZSBwdWJsaWNhdGlvbiB3YXMgY3JlYXRl ZCBiZWZvcmUgdGhlIGNvbnNpc3RlbnQgTFNOLCBpdCBpcworCQkgKiBhdmFpbGFibGUgb24gdGhl IHN1YnNjcmliZXIgd2hlbiB0aGUgcGh5c2ljYWwgcmVwbGljYSBpcyBwcm9tb3RlZC4KKwkJICog UmVtb3ZlIHB1YmxpY2F0aW9ucyBmcm9tIHRoZSBzdWJzY3JpYmVyIGJlY2F1c2UgaXQgaGFzIG5v IHVzZS4KKwkJICovCisJCWRyb3BfcHVibGljYXRpb24oY29ubiwgJmRiaW5mb1tpXSk7CisKKwkJ Y3JlYXRlX3N1YnNjcmlwdGlvbihjb25uLCAmZGJpbmZvW2ldKTsKKworCQkvKiBTZXQgdGhlIHJl cGxpY2F0aW9uIHByb2dyZXNzIHRvIHRoZSBjb3JyZWN0IExTTi4gKi8KKwkJc2V0X3JlcGxpY2F0 aW9uX3Byb2dyZXNzKGNvbm4sICZkYmluZm9baV0sIGNvbnNpc3RlbnRfbHNuKTsKKworCQkvKiBF bmFibGUgc3Vic2NyaXB0aW9uLiAqLworCQllbmFibGVfc3Vic2NyaXB0aW9uKGNvbm4sICZkYmlu Zm9baV0pOworCisJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubik7CisJfQorCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBDcmVhdGUgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgYW5kIHJl dHVybnMgYSBjb25zaXN0ZW50IExTTi4gVGhlIHJldHVybmVkCisgKiBMU04gbWlnaHQgYmUgdXNl ZCB0byBjYXRjaCB1cCB0aGUgc3Vic2NyaWJlciB1cCB0byB0aGUgcmVxdWlyZWQgcG9pbnQuCisg KgorICogQ3JlYXRlUmVwbGljYXRpb25TbG90KCkgaXMgbm90IHVzZWQgYmVjYXVzZSBpdCBkb2Vz IG5vdCBwcm92aWRlIHRoZSBvbmUtcm93CisgKiByZXN1bHQgc2V0IHRoYXQgY29udGFpbnMgdGhl IGNvbnNpc3RlbnQgTFNOLgorICovCitzdGF0aWMgY2hhciAqCitjcmVhdGVfbG9naWNhbF9yZXBs aWNhdGlvbl9zbG90KFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbywKKwkJCQkJ CQkJY2hhciAqc2xvdF9uYW1lKQoreworCVBRRXhwQnVmZmVyIHN0ciA9IGNyZWF0ZVBRRXhwQnVm ZmVyKCk7CisJUEdyZXN1bHQgICAqcmVzID0gTlVMTDsKKwljaGFyCSAgICpsc24gPSBOVUxMOwor CWJvb2wJCXRyYW5zaWVudF9yZXBsc2xvdCA9IGZhbHNlOworCisJQXNzZXJ0KGNvbm4gIT0gTlVM TCk7CisKKwkvKgorCSAqIElmIG5vIHNsb3QgbmFtZSBpcyBpbmZvcm1lZCwgaXQgaXMgYSB0cmFu c2llbnQgcmVwbGljYXRpb24gc2xvdCB1c2VkCisJICogb25seSBmb3IgY2F0Y2ggdXAgcHVycG9z ZXMuCisJICovCisJaWYgKHNsb3RfbmFtZVswXSA9PSAnXDAnKQorCXsKKwkJc25wcmludGYoc2xv dF9uYW1lLCBOQU1FREFUQUxFTiwgInBnX2NyZWF0ZXN1YnNjcmliZXJfJWRfc3RhcnRwb2ludCIs CisJCQkJIChpbnQpIGdldHBpZCgpKTsKKwkJdHJhbnNpZW50X3JlcGxzbG90ID0gdHJ1ZTsKKwl9 CisKKwlwZ19sb2dfaW5mbygiY3JlYXRpbmcgdGhlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9u IGRhdGFiYXNlIFwiJXNcIiIsIHNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCisJYXBwZW5k UFFFeHBCdWZmZXIoc3RyLCAiQ1JFQVRFX1JFUExJQ0FUSU9OX1NMT1QgXCIlc1wiIiwgc2xvdF9u YW1lKTsKKwlpZiAodHJhbnNpZW50X3JlcGxzbG90KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihz dHIsICIgVEVNUE9SQVJZIik7CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoc3RyLCAiIExPR0lDQUwg XCJwZ291dHB1dFwiIE5PRVhQT1JUX1NOQVBTSE9UIik7CisKKwlwZ19sb2dfZGVidWcoImNvbW1h bmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKworCWlmICghZHJ5X3J1bikKKwl7CisJCXJlcyA9IFBR ZXhlYyhjb25uLCBzdHItPmRhdGEpOworCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JF U19UVVBMRVNfT0spCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSByZXBs aWNhdGlvbiBzbG90IFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwgc2xvdF9uYW1lLCBk YmluZm8tPmRibmFtZSwKKwkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJCXJl dHVybiBsc247CisJCX0KKwl9CisKKwkvKiBmb3IgY2xlYW51cCBwdXJwb3NlcyAqLworCWlmICgh dHJhbnNpZW50X3JlcGxzbG90KQorCQlkYmluZm8tPm1hZGVfcmVwbHNsb3QgPSB0cnVlOworCisJ aWYgKCFkcnlfcnVuKQorCXsKKwkJbHNuID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCAwLCAx KSk7CisJCVBRY2xlYXIocmVzKTsKKwl9CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoc3RyKTsKKwor CXJldHVybiBsc247Cit9CisKK3N0YXRpYyB2b2lkCitkcm9wX3JlcGxpY2F0aW9uX3Nsb3QoUEdj b25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpzbG90X25hbWUp Cit7CisJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jlc3VsdCAg ICpyZXM7CisKKwlBc3NlcnQoY29ubiAhPSBOVUxMKTsKKworCXBnX2xvZ19pbmZvKCJkcm9wcGlu ZyB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwgc2xvdF9u YW1lLCBkYmluZm8tPmRibmFtZSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsICJEUk9QX1JF UExJQ0FUSU9OX1NMT1QgXCIlc1wiIiwgc2xvdF9uYW1lKTsKKworCXBnX2xvZ19kZWJ1ZygiY29t bWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCisJaWYgKCFkcnlfcnVuKQorCXsKKwkJcmVzID0g UFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBH UkVTX0NPTU1BTkRfT0spCisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBkcm9wIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIjogJXMiLCBzbG90X25hbWUsIGRiaW5m by0+ZGJuYW1lLAorCQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKworCQlQUWNsZWFyKHJl cyk7CisJfQorCisJZGVzdHJveVBRRXhwQnVmZmVyKHN0cik7Cit9CisKK3N0YXRpYyBjaGFyICoK K3NlcnZlcl9sb2dmaWxlX25hbWUoY29uc3QgY2hhciAqZGF0YWRpcikKK3sKKwljaGFyCQl0aW1l YnVmWzEyOF07CisJc3RydWN0IHRpbWV2YWwgdGltZTsKKwl0aW1lX3QJCXR0OworCWludAkJCWxl bjsKKwljaGFyCSAgICpmaWxlbmFtZTsKKworCS8qIGFwcGVuZCB0aW1lc3RhbXAgd2l0aCBJU08g ODYwMSBmb3JtYXQuICovCisJZ2V0dGltZW9mZGF5KCZ0aW1lLCBOVUxMKTsKKwl0dCA9ICh0aW1l X3QpIHRpbWUudHZfc2VjOworCXN0cmZ0aW1lKHRpbWVidWYsIHNpemVvZih0aW1lYnVmKSwgIiVZ JW0lZFQlSCVNJVMiLCBsb2NhbHRpbWUoJnR0KSk7CisJc25wcmludGYodGltZWJ1ZiArIHN0cmxl bih0aW1lYnVmKSwgc2l6ZW9mKHRpbWVidWYpIC0gc3RybGVuKHRpbWVidWYpLAorCQkJICIuJTAz ZCIsIChpbnQpICh0aW1lLnR2X3VzZWMgLyAxMDAwKSk7CisKKwlmaWxlbmFtZSA9IChjaGFyICop IHBnX21hbGxvYzAoTUFYUEdQQVRIKTsKKwlsZW4gPSBzbnByaW50ZihmaWxlbmFtZSwgTUFYUEdQ QVRILCAiJXMvJXMvc2VydmVyX3N0YXJ0XyVzLmxvZyIsIGRhdGFkaXIsIFBHU19PVVRQVVRfRElS LCB0aW1lYnVmKTsKKwlpZiAobGVuID49IE1BWFBHUEFUSCkKKwl7CisJCXBnX2xvZ19lcnJvcigi bG9nIGZpbGUgcGF0aCBpcyB0b28gbG9uZyIpOworCQlleGl0KDEpOworCX0KKworCXJldHVybiBm aWxlbmFtZTsKK30KKworc3RhdGljIHZvaWQKK3N0YXJ0X3N0YW5kYnlfc2VydmVyKGNvbnN0IGNo YXIgKnBnX2N0bF9wYXRoLCBjb25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBjaGFyICpsb2dmaWxl KQoreworCWNoYXIJICAgKnBnX2N0bF9jbWQ7CisJaW50CQkJcmM7CisKKwlwZ19jdGxfY21kID0g cHNwcmludGYoIlwiJXNcIiBzdGFydCAtRCBcIiVzXCIgLXMgLWwgXCIlc1wiIiwgcGdfY3RsX3Bh dGgsIGRhdGFkaXIsIGxvZ2ZpbGUpOworCXJjID0gc3lzdGVtKHBnX2N0bF9jbWQpOworCXBnX2N0 bF9zdGF0dXMocGdfY3RsX2NtZCwgcmMsIDEpOworfQorCitzdGF0aWMgdm9pZAorc3RvcF9zdGFu ZGJ5X3NlcnZlcihjb25zdCBjaGFyICpwZ19jdGxfcGF0aCwgY29uc3QgY2hhciAqZGF0YWRpcikK K3sKKwljaGFyCSAgICpwZ19jdGxfY21kOworCWludAkJCXJjOworCisJcGdfY3RsX2NtZCA9IHBz cHJpbnRmKCJcIiVzXCIgc3RvcCAtRCBcIiVzXCIgLXMiLCBwZ19jdGxfcGF0aCwgZGF0YWRpcik7 CisJcmMgPSBzeXN0ZW0ocGdfY3RsX2NtZCk7CisJcGdfY3RsX3N0YXR1cyhwZ19jdGxfY21kLCBy YywgMCk7Cit9CisKKy8qCisgKiBSZXBvcnRzIGEgc3VpdGFibGUgbWVzc2FnZSBpZiBwZ19jdGwg ZmFpbHMuCisgKi8KK3N0YXRpYyB2b2lkCitwZ19jdGxfc3RhdHVzKGNvbnN0IGNoYXIgKnBnX2N0 bF9jbWQsIGludCByYywgaW50IGFjdGlvbikKK3sKKwlpZiAocmMgIT0gMCkKKwl7CisJCWlmIChX SUZFWElURUQocmMpKQorCQl7CisJCQlwZ19sb2dfZXJyb3IoInBnX2N0bCBmYWlsZWQgd2l0aCBl eGl0IGNvZGUgJWQiLCBXRVhJVFNUQVRVUyhyYykpOworCQl9CisJCWVsc2UgaWYgKFdJRlNJR05B TEVEKHJjKSkKKwkJeworI2lmIGRlZmluZWQoV0lOMzIpCisJCQlwZ19sb2dfZXJyb3IoInBnX2N0 bCB3YXMgdGVybWluYXRlZCBieSBleGNlcHRpb24gMHglWCIsIFdURVJNU0lHKHJjKSk7CisJCQlw Z19sb2dfZXJyb3JfZGV0YWlsKCJTZWUgQyBpbmNsdWRlIGZpbGUgXCJudHN0YXR1cy5oXCIgZm9y IGEgZGVzY3JpcHRpb24gb2YgdGhlIGhleGFkZWNpbWFsIHZhbHVlLiIpOworI2Vsc2UKKwkJCXBn X2xvZ19lcnJvcigicGdfY3RsIHdhcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAlZDogJXMiLAorCQkJ CQkJIFdURVJNU0lHKHJjKSwgcGdfc3Ryc2lnbmFsKFdURVJNU0lHKHJjKSkpOworI2VuZGlmCisJ CX0KKwkJZWxzZQorCQl7CisJCQlwZ19sb2dfZXJyb3IoInBnX2N0bCBleGl0ZWQgd2l0aCB1bnJl Y29nbml6ZWQgc3RhdHVzICVkIiwgcmMpOworCQl9CisKKwkJcGdfbG9nX2Vycm9yX2RldGFpbCgi VGhlIGZhaWxlZCBjb21tYW5kIHdhczogJXMiLCBwZ19jdGxfY21kKTsKKwkJZXhpdCgxKTsKKwl9 CisKKwlpZiAoYWN0aW9uKQorCQlwZ19sb2dfaW5mbygicG9zdG1hc3RlciB3YXMgc3RhcnRlZCIp OworCWVsc2UKKwkJcGdfbG9nX2luZm8oInBvc3RtYXN0ZXIgd2FzIHN0b3BwZWQiKTsKK30KKwor LyoKKyAqIFJldHVybnMgYWZ0ZXIgdGhlIHNlcnZlciBmaW5pc2hlcyB0aGUgcmVjb3ZlcnkgcHJv Y2Vzcy4KKyAqCisgKiBJZiByZWNvdmVyeV90aW1lb3V0IG9wdGlvbiBpcyBzZXQsIHRlcm1pbmF0 ZSBhYm5vcm1hbGx5IHdpdGhvdXQgZmluaXNoaW5nCisgKiB0aGUgcmVjb3ZlcnkgcHJvY2Vzcy4g QnkgZGVmYXVsdCwgaXQgd2FpdHMgZm9yZXZlci4KKyAqLworc3RhdGljIHZvaWQKK3dhaXRfZm9y X2VuZF9yZWNvdmVyeShjb25zdCBjaGFyICpjb25uaW5mbykKK3sKKwlQR2Nvbm4JICAgKmNvbm47 CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCXN0YXR1cyA9IFBPU1RNQVNURVJfU1RJTExfU1RB UlRJTkc7CisJaW50CQkJdGltZXIgPSAwOworCisJcGdfbG9nX2luZm8oIndhaXRpbmcgdGhlIHBv c3RtYXN0ZXIgdG8gcmVhY2ggdGhlIGNvbnNpc3RlbnQgc3RhdGUiKTsKKworCWNvbm4gPSBjb25u ZWN0X2RhdGFiYXNlKGNvbm5pbmZvKTsKKwlpZiAoY29ubiA9PSBOVUxMKQorCQlleGl0KDEpOwor CisJZm9yICg7OykKKwl7CisJCWJvb2wJCWluX3JlY292ZXJ5OworCisJCXJlcyA9IFBRZXhlYyhj b25uLCAiU0VMRUNUIHBnX2NhdGFsb2cucGdfaXNfaW5fcmVjb3ZlcnkoKSIpOworCisJCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKKwkJeworCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3Qgb2J0YWluIHJlY292ZXJ5IHByb2dyZXNzIik7CisJCQlleGl0KDEpOwor CQl9CisKKwkJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCisJCXsKKwkJCXBnX2xvZ19lcnJvcigi dW5leHBlY3RlZCByZXN1bHQgZnJvbSBwZ19pc19pbl9yZWNvdmVyeSBmdW5jdGlvbiIpOworCQkJ ZXhpdCgxKTsKKwkJfQorCisJCWluX3JlY292ZXJ5ID0gKHN0cmNtcChQUWdldHZhbHVlKHJlcywg MCwgMCksICJ0IikgPT0gMCk7CisKKwkJUFFjbGVhcihyZXMpOworCisJCS8qCisJCSAqIERvZXMg dGhlIHJlY292ZXJ5IHByb2Nlc3MgZmluaXNoPyBJbiBkcnkgcnVuIG1vZGUsIHRoZXJlIGlzIG5v CisJCSAqIHJlY292ZXJ5IG1vZGUuIEJhaWwgb3V0IGFzIHRoZSByZWNvdmVyeSBwcm9jZXNzIGhh cyBlbmRlZC4KKwkJICovCisJCWlmICghaW5fcmVjb3ZlcnkgfHwgZHJ5X3J1bikKKwkJeworCQkJ c3RhdHVzID0gUE9TVE1BU1RFUl9SRUFEWTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJICog QmFpbCBvdXQgYWZ0ZXIgcmVjb3ZlcnlfdGltZW91dCBzZWNvbmRzIGlmIHRoaXMgb3B0aW9uIGlz IHNldC4KKwkJICovCisJCWlmIChyZWNvdmVyeV90aW1lb3V0ID4gMCAmJiB0aW1lciA+PSByZWNv dmVyeV90aW1lb3V0KQorCQl7CisJCQlwZ19sb2dfZXJyb3IoInJlY292ZXJ5IHRpbWVkIG91dCIp OworCQkJc3RvcF9zdGFuZGJ5X3NlcnZlcihwZ19jdGxfcGF0aCwgc3Vic2NyaWJlcl9kaXIpOwor CQkJZXhpdCgxKTsKKwkJfQorCisJCS8qIEtlZXAgd2FpdGluZy4gKi8KKwkJcGdfdXNsZWVwKFdB SVRfSU5URVJWQUwgKiBVU0VDX1BFUl9TRUMpOworCisJCXRpbWVyICs9IFdBSVRfSU5URVJWQUw7 CisJfQorCisJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uKTsKKworCWlmIChzdGF0dXMgPT0gUE9T VE1BU1RFUl9TVElMTF9TVEFSVElORykKKwl7CisJCXBnX2xvZ19lcnJvcigic2VydmVyIGRpZCBu b3QgZW5kIHJlY292ZXJ5Iik7CisJCWV4aXQoMSk7CisJfQorCisJcGdfbG9nX2luZm8oInBvc3Rt YXN0ZXIgcmVhY2hlZCB0aGUgY29uc2lzdGVudCBzdGF0ZSIpOworfQorCisvKgorICogQ3JlYXRl IGEgcHVibGljYXRpb24gdGhhdCBpbmNsdWRlcyBhbGwgdGFibGVzIGluIHRoZSBkYXRhYmFzZS4K KyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9wdWJsaWNhdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2lj YWxSZXBJbmZvICpkYmluZm8pCit7CisJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFFeHBCdWZm ZXIoKTsKKwlQR3Jlc3VsdCAgICpyZXM7CisKKwlBc3NlcnQoY29ubiAhPSBOVUxMKTsKKworCS8q IENoZWNrIGlmIHRoZSBwdWJsaWNhdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkLiAqLworCWFwcGVu ZFBRRXhwQnVmZmVyKHN0ciwKKwkJCQkJICAiU0VMRUNUIHB1YmFsbHRhYmxlcyBGUk9NIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICclcyciLAorCQkJCQkgIGRiaW5m by0+cHVibmFtZSk7CisJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7CisJaWYgKFBRcmVz dWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3Qgb2J0YWluIHB1YmxpY2F0aW9uIGluZm9ybWF0aW9uOiAlcyIsCisJCQkJCSBQUXJl c3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJUFFjbGVhcihyZXMpOworCQlQUWZpbmlzaChjb25u KTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoUFFudHVwbGVzKHJlcykgPT0gMSkKKwl7CisJCS8q CisJCSAqIElmIHB1YmxpY2F0aW9uIG5hbWUgYWxyZWFkeSBleGlzdHMgYW5kIHB1YmFsbHRhYmxl cyBpcyB0cnVlLCBsZXQncworCQkgKiB1c2UgaXQuIEEgcHJldmlvdXMgcnVuIG9mIHBnX2NyZWF0 ZXN1YnNjcmliZXIgbXVzdCBoYXZlIGNyZWF0ZWQKKwkJICogdGhpcyBwdWJsaWNhdGlvbi4gQmFp bCBvdXQuCisJCSAqLworCQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSwgInQiKSA9 PSAwKQorCQl7CisJCQlwZ19sb2dfaW5mbygicHVibGljYXRpb24gXCIlc1wiIGFscmVhZHkgZXhp c3RzIiwgZGJpbmZvLT5wdWJuYW1lKTsKKwkJCXJldHVybjsKKwkJfQorCQllbHNlCisJCXsKKwkJ CS8qCisJCQkgKiBVbmZvcnR1bmF0ZWx5LCBpZiBpdCByZWFjaGVzIHRoaXMgY29kZSBwYXRoLCBp dCB3aWxsIGFsd2F5cworCQkJICogZmFpbCAodW5sZXNzIHlvdSBkZWNpZGUgdG8gY2hhbmdlIHRo ZSBleGlzdGluZyBwdWJsaWNhdGlvbgorCQkJICogbmFtZSkuIFRoYXQncyBiYWQgYnV0IGl0IGlz IHZlcnkgdW5saWtlbHkgdGhhdCB0aGUgdXNlciB3aWxsCisJCQkgKiBjaG9vc2UgYSBuYW1lIHdp dGggcGdfY3JlYXRlc3Vic2NyaWJlcl8gcHJlZml4IGZvbGxvd2VkIGJ5IHRoZQorCQkJICogZXhh Y3QgZGF0YWJhc2Ugb2lkIGluIHdoaWNoIHB1YmFsbHRhYmxlcyBpcyBmYWxzZS4KKwkJCSAqLwor CQkJcGdfbG9nX2Vycm9yKCJwdWJsaWNhdGlvbiBcIiVzXCIgZG9lcyBub3QgcmVwbGljYXRlIGNo YW5nZXMgZm9yIGFsbCB0YWJsZXMiLAorCQkJCQkJIGRiaW5mby0+cHVibmFtZSk7CisJCQlwZ19s b2dfZXJyb3JfaGludCgiQ29uc2lkZXIgcmVuYW1pbmcgdGhpcyBwdWJsaWNhdGlvbi4iKTsKKwkJ CVBRY2xlYXIocmVzKTsKKwkJCVBRZmluaXNoKGNvbm4pOworCQkJZXhpdCgxKTsKKwkJfQorCX0K KworCVBRY2xlYXIocmVzKTsKKwlyZXNldFBRRXhwQnVmZmVyKHN0cik7CisKKwlwZ19sb2dfaW5m bygiY3JlYXRpbmcgcHVibGljYXRpb24gXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIiIsIGRiaW5m by0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCisJYXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAi Q1JFQVRFIFBVQkxJQ0FUSU9OICVzIEZPUiBBTEwgVEFCTEVTIiwgZGJpbmZvLT5wdWJuYW1lKTsK KworCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCisJaWYgKCFk cnlfcnVuKQorCXsKKwkJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7CisJCWlmIChQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCXsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGNyZWF0ZSBwdWJsaWNhdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wi OiAlcyIsCisJCQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFlcnJvck1l c3NhZ2UoY29ubikpOworCQkJUFFmaW5pc2goY29ubik7CisJCQlleGl0KDEpOworCQl9CisJfQor CisJLyogZm9yIGNsZWFudXAgcHVycG9zZXMgKi8KKwlkYmluZm8tPm1hZGVfcHVibGljYXRpb24g PSB0cnVlOworCisJaWYgKCFkcnlfcnVuKQorCQlQUWNsZWFyKHJlcyk7CisKKwlkZXN0cm95UFFF eHBCdWZmZXIoc3RyKTsKK30KKworLyoKKyAqIFJlbW92ZSBwdWJsaWNhdGlvbiBpZiBpdCBjb3Vs ZG4ndCBmaW5pc2ggYWxsIHN0ZXBzLgorICovCitzdGF0aWMgdm9pZAorZHJvcF9wdWJsaWNhdGlv bihQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCit7CisJUFFFeHBCdWZmZXIg c3RyID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jlc3VsdCAgICpyZXM7CisKKwlBc3NlcnQo Y29ubiAhPSBOVUxMKTsKKworCXBnX2xvZ19pbmZvKCJkcm9wcGluZyBwdWJsaWNhdGlvbiBcIiVz XCIgb24gZGF0YWJhc2UgXCIlc1wiIiwgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsICJEUk9QIFBVQkxJQ0FUSU9OICVzIiwgZGJpbmZv LT5wdWJuYW1lKTsKKworCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEp OworCisJaWYgKCFkcnlfcnVuKQorCXsKKwkJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7 CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBkcm9wIHB1YmxpY2F0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBc IiVzXCI6ICVzIiwgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCisJCVBRY2xlYXIocmVzKTsKKwl9CisKKwlkZXN0cm95UFFFeHBCdWZmZXIo c3RyKTsKK30KKworLyoKKyAqIENyZWF0ZSBhIHN1YnNjcmlwdGlvbiB3aXRoIHNvbWUgcHJlZGVm aW5lZCBvcHRpb25zLgorICoKKyAqIEEgcmVwbGljYXRpb24gc2xvdCB3YXMgYWxyZWFkeSBjcmVh dGVkIGluIGEgcHJldmlvdXMgc3RlcC4gTGV0J3MgdXNlIGl0LiBCeQorICogZGVmYXVsdCwgdGhl IHN1YnNjcmlwdGlvbiBuYW1lIGlzIHVzZWQgYXMgcmVwbGljYXRpb24gc2xvdCBuYW1lLiBJdCBp cworICogbm90IHJlcXVpcmVkIHRvIGNvcHkgZGF0YS4gVGhlIHN1YnNjcmlwdGlvbiB3aWxsIGJl IGNyZWF0ZWQgYnV0IGl0IHdpbGwgbm90CisgKiBiZSBlbmFibGVkIG5vdy4gVGhhdCdzIGJlY2F1 c2UgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIG11c3QgYmUgc2V0IGFuZCB0aGUKKyAqIHJlcGxp Y2F0aW9uIG9yaWdpbiBuYW1lIChvbmUgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cykgY29udGFp bnMgdGhlCisgKiBzdWJzY3JpcHRpb24gT0lEIGluIGl0cyBuYW1lLiBPbmNlIHRoZSBzdWJzY3Jp cHRpb24gaXMgY3JlYXRlZCwKKyAqIHNldF9yZXBsaWNhdGlvbl9wcm9ncmVzcygpIGNhbiBvYnRh aW4gdGhlIGNob3NlbiBvcmlnaW4gbmFtZSBhbmQgc2V0IHVwIGl0cworICogaW5pdGlhbCBsb2Nh dGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9zdWJzY3JpcHRpb24oUEdjb25uICpjb25u LCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQoreworCVBRRXhwQnVmZmVyIHN0ciA9IGNyZWF0ZVBR RXhwQnVmZmVyKCk7CisJUEdyZXN1bHQgICAqcmVzOworCisJQXNzZXJ0KGNvbm4gIT0gTlVMTCk7 CisKKwlwZ19sb2dfaW5mbygiY3JlYXRpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFz ZSBcIiVzXCIiLCBkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKworCWFwcGVuZFBR RXhwQnVmZmVyKHN0ciwKKwkJCQkJICAiQ1JFQVRFIFNVQlNDUklQVElPTiAlcyBDT05ORUNUSU9O ICclcycgUFVCTElDQVRJT04gJXMgIgorCQkJCQkgICJXSVRIIChjcmVhdGVfc2xvdCA9IGZhbHNl LCBjb3B5X2RhdGEgPSBmYWxzZSwgZW5hYmxlZCA9IGZhbHNlKSIsCisJCQkJCSAgZGJpbmZvLT5z dWJuYW1lLCBkYmluZm8tPnB1YmNvbm5pbmZvLCBkYmluZm8tPnB1Ym5hbWUpOworCisJcGdfbG9n X2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisKKwlpZiAoIWRyeV9ydW4pCisJ eworCQlyZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKKwkJaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgY3JlYXRlIHN1YnNjcmlwdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCisJ CQkJCQkgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFlcnJvck1lc3NhZ2UoY29u bikpOworCQkJUFFmaW5pc2goY29ubik7CisJCQlleGl0KDEpOworCQl9CisJfQorCisJLyogZm9y IGNsZWFudXAgcHVycG9zZXMgKi8KKwlkYmluZm8tPm1hZGVfc3Vic2NyaXB0aW9uID0gdHJ1ZTsK KworCWlmICghZHJ5X3J1bikKKwkJUFFjbGVhcihyZXMpOworCisJZGVzdHJveVBRRXhwQnVmZmVy KHN0cik7Cit9CisKKy8qCisgKiBSZW1vdmUgc3Vic2NyaXB0aW9uIGlmIGl0IGNvdWxkbid0IGZp bmlzaCBhbGwgc3RlcHMuCisgKi8KK3N0YXRpYyB2b2lkCitkcm9wX3N1YnNjcmlwdGlvbihQR2Nv bm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCit7CisJUFFFeHBCdWZmZXIgc3RyID0g Y3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jlc3VsdCAgICpyZXM7CisKKwlBc3NlcnQoY29ubiAh PSBOVUxMKTsKKworCXBnX2xvZ19pbmZvKCJkcm9wcGluZyBzdWJzY3JpcHRpb24gXCIlc1wiIG9u IGRhdGFiYXNlIFwiJXNcIiIsIGRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCisJ YXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiRFJPUCBTVUJTQ1JJUFRJT04gJXMiLCBkYmluZm8tPnN1 Ym5hbWUpOworCisJcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisK KwlpZiAoIWRyeV9ydW4pCisJeworCQlyZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKKwkJ aWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IGRyb3Agc3Vic2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVz XCI6ICVzIiwgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCisJCVBRY2xlYXIocmVzKTsKKwl9CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoc3Ry KTsKK30KKworLyoKKyAqIFNldHMgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIHRvIHRoZSBjb25z aXN0ZW50IExTTi4KKyAqCisgKiBUaGUgc3Vic2NyaWJlciBjYXVnaHQgdXAgdG8gdGhlIGNvbnNp c3RlbnQgTFNOIHByb3ZpZGVkIGJ5IHRoZSB0ZW1wb3JhcnkKKyAqIHJlcGxpY2F0aW9uIHNsb3Qu IFRoZSBnb2FsIGlzIHRvIHNldCB1cCB0aGUgaW5pdGlhbCBsb2NhdGlvbiBmb3IgdGhlIGxvZ2lj YWwKKyAqIHJlcGxpY2F0aW9uIHRoYXQgaXMgdGhlIGV4YWN0IExTTiB0aGF0IHRoZSBzdWJzY3Jp YmVyIHdhcyBwcm9tb3RlZC4gT25jZSB0aGUKKyAqIHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkIGl0 IHdpbGwgc3RhcnQgc3RyZWFtaW5nIGZyb20gdGhhdCBsb2NhdGlvbiBvbndhcmRzLgorICogSW4g ZHJ5IHJ1biBtb2RlLCB0aGUgc3Vic2NyaXB0aW9uIE9JRCBhbmQgTFNOIGFyZSBzZXQgdG8gaW52 YWxpZCB2YWx1ZXMgZm9yCisgKiBwcmludGluZyBwdXJwb3Nlcy4KKyAqLworc3RhdGljIHZvaWQK K3NldF9yZXBsaWNhdGlvbl9wcm9ncmVzcyhQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpk YmluZm8sIGNvbnN0IGNoYXIgKmxzbikKK3sKKwlQUUV4cEJ1ZmZlciBzdHIgPSBjcmVhdGVQUUV4 cEJ1ZmZlcigpOworCVBHcmVzdWx0ICAgKnJlczsKKwlPaWQJCQlzdWJvaWQ7CisJY2hhcgkJb3Jp Z2lubmFtZVtOQU1FREFUQUxFTl07CisJY2hhcgkJbHNuc3RyWzE3ICsgMV07IC8qIE1BWFBHX0xT TkxFTiA9IDE3ICovCisKKwlBc3NlcnQoY29ubiAhPSBOVUxMKTsKKworCWFwcGVuZFBRRXhwQnVm ZmVyKHN0ciwKKwkJCQkJICAiU0VMRUNUIG9pZCBGUk9NIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0 aW9uIFdIRVJFIHN1Ym5hbWUgPSAnJXMnIiwgZGJpbmZvLT5zdWJuYW1lKTsKKworCXJlcyA9IFBR ZXhlYyhjb25uLCBzdHItPmRhdGEpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X1RVUExFU19PSykKKwl7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9idGFpbiBzdWJzY3Jp cHRpb24gT0lEOiAlcyIsCisJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJUFFj bGVhcihyZXMpOworCQlQUWZpbmlzaChjb25uKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoUFFu dHVwbGVzKHJlcykgIT0gMSAmJiAhZHJ5X3J1bikKKwl7CisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IG9idGFpbiBzdWJzY3JpcHRpb24gT0lEOiBnb3QgJWQgcm93cywgZXhwZWN0ZWQgJWQgcm93 cyIsCisJCQkJCSBQUW50dXBsZXMocmVzKSwgMSk7CisJCVBRY2xlYXIocmVzKTsKKwkJUFFmaW5p c2goY29ubik7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGRyeV9ydW4pCisJeworCQlzdWJvaWQg PSBJbnZhbGlkT2lkOworCQlzbnByaW50Zihsc25zdHIsIHNpemVvZihsc25zdHIpLCAiJVgvJVgi LCBMU05fRk9STUFUX0FSR1MoKFhMb2dSZWNQdHIpIEludmFsaWRYTG9nUmVjUHRyKSk7CisJfQor CWVsc2UKKwl7CisJCXN1Ym9pZCA9IHN0cnRvdWwoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBOVUxM LCAxMCk7CisJCXNucHJpbnRmKGxzbnN0ciwgc2l6ZW9mKGxzbnN0ciksICIlcyIsIGxzbik7CisJ fQorCisJLyoKKwkgKiBUaGUgb3JpZ2luIG5hbWUgaXMgZGVmaW5lZCBhcyBwZ18ldS4gJXUgaXMg dGhlIHN1YnNjcmlwdGlvbiBPSUQuIFNlZQorCSAqIEFwcGx5V29ya2VyTWFpbigpLgorCSAqLwor CXNucHJpbnRmKG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSwgInBnXyV1Iiwgc3Vib2lk KTsKKworCVBRY2xlYXIocmVzKTsKKworCXBnX2xvZ19pbmZvKCJzZXR0aW5nIHRoZSByZXBsaWNh dGlvbiBwcm9ncmVzcyAobm9kZSBuYW1lIFwiJXNcIiA7IExTTiAlcykgb24gZGF0YWJhc2UgXCIl c1wiIiwKKwkJCQlvcmlnaW5uYW1lLCBsc25zdHIsIGRiaW5mby0+ZGJuYW1lKTsKKworCXJlc2V0 UFFFeHBCdWZmZXIoc3RyKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsCisJCQkJCSAgIlNFTEVD VCBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX29yaWdpbl9hZHZhbmNlKCclcycsICclcycpIiwg b3JpZ2lubmFtZSwgbHNuc3RyKTsKKworCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBz dHItPmRhdGEpOworCisJaWYgKCFkcnlfcnVuKQorCXsKKwkJcmVzID0gUFFleGVjKGNvbm4sIHN0 ci0+ZGF0YSk7CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykK KwkJeworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2V0IHJlcGxpY2F0aW9uIHByb2dyZXNz IGZvciB0aGUgc3Vic2NyaXB0aW9uIFwiJXNcIjogJXMiLAorCQkJCQkJIGRiaW5mby0+c3VibmFt ZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlQUWZpbmlzaChjb25uKTsKKwkJCWV4 aXQoMSk7CisJCX0KKworCQlQUWNsZWFyKHJlcyk7CisJfQorCisJZGVzdHJveVBRRXhwQnVmZmVy KHN0cik7Cit9CisKKy8qCisgKiBFbmFibGVzIHRoZSBzdWJzY3JpcHRpb24uCisgKgorICogVGhl IHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCBpbiBhIHByZXZpb3VzIHN0ZXAgYnV0IGl0IHdhcyBk aXNhYmxlZC4gQWZ0ZXIKKyAqIGFkanVzdGluZyB0aGUgaW5pdGlhbCBsb2NhdGlvbiwgZW5hYmxp bmcgdGhlIHN1YnNjcmlwdGlvbiBpcyB0aGUgbGFzdCBzdGVwCisgKiBvZiB0aGlzIHNldHVwLgor ICovCitzdGF0aWMgdm9pZAorZW5hYmxlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2lj YWxSZXBJbmZvICpkYmluZm8pCit7CisJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFFeHBCdWZm ZXIoKTsKKwlQR3Jlc3VsdCAgICpyZXM7CisKKwlBc3NlcnQoY29ubiAhPSBOVUxMKTsKKworCXBn X2xvZ19pbmZvKCJlbmFibGluZyBzdWJzY3JpcHRpb24gXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNc IiIsIGRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCisJYXBwZW5kUFFFeHBCdWZm ZXIoc3RyLCAiQUxURVIgU1VCU0NSSVBUSU9OICVzIEVOQUJMRSIsIGRiaW5mby0+c3VibmFtZSk7 CisKKwlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKworCWlmICgh ZHJ5X3J1bikKKwl7CisJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOworCQlpZiAoUFFy ZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCQl7CisJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBlbmFibGUgc3Vic2NyaXB0aW9uIFwiJXNcIjogJXMiLCBkYmluZm8tPnN1 Ym5hbWUsCisJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJUFFmaW5pc2goY29ubik7 CisJCQlleGl0KDEpOworCQl9CisKKwkJUFFjbGVhcihyZXMpOworCX0KKworCWRlc3Ryb3lQUUV4 cEJ1ZmZlcihzdHIpOworfQorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorewor CXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0KKwl7CisJCXsiaGVscCIsIG5v X2FyZ3VtZW50LCBOVUxMLCAnPyd9LAorCQl7InZlcnNpb24iLCBub19hcmd1bWVudCwgTlVMTCwg J1YnfSwKKwkJeyJwZ2RhdGEiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0QnfSwKKwkJeyJw dWJsaXNoZXItc2VydmVyIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisJCXsic3Vi c2NyaWJlci1zZXJ2ZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1MnfSwKKwkJeyJkYXRh YmFzZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnZCd9LAorCQl7ImRyeS1ydW4iLCBub19h cmd1bWVudCwgTlVMTCwgJ24nfSwKKwkJeyJyZWNvdmVyeS10aW1lb3V0IiwgcmVxdWlyZWRfYXJn dW1lbnQsIE5VTEwsICd0J30sCisJCXsicmV0YWluIiwgbm9fYXJndW1lbnQsIE5VTEwsICdyJ30s CisJCXsidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCBOVUxMLCAndid9LAorCQl7TlVMTCwgMCwgTlVM TCwgMH0KKwl9OworCisJaW50CQkJYzsKKwlpbnQJCQlvcHRpb25faW5kZXg7CisKKwljaGFyCSAg ICpiYXNlX2RpcjsKKwljaGFyCSAgICpzZXJ2ZXJfc3RhcnRfbG9nOworCWludAkJCWxlbjsKKwor CWNoYXIJICAgKnB1Yl9iYXNlX2Nvbm5pbmZvID0gTlVMTDsKKwljaGFyCSAgICpzdWJfYmFzZV9j b25uaW5mbyA9IE5VTEw7CisJY2hhcgkgICAqZGJuYW1lX2Nvbm5pbmZvID0gTlVMTDsKKwljaGFy CQl0ZW1wX3JlcGxzbG90W05BTUVEQVRBTEVOXSA9IHswfTsKKworCXVpbnQ2NAkJcHViX3N5c2lk OworCXVpbnQ2NAkJc3ViX3N5c2lkOworCXN0cnVjdCBzdGF0IHN0YXRidWY7CisKKwlQR2Nvbm4J ICAgKmNvbm47CisJY2hhcgkgICAqY29uc2lzdGVudF9sc247CisKKwlQUUV4cEJ1ZmZlciByZWNv dmVyeWNvbmZjb250ZW50cyA9IE5VTEw7CisKKwljaGFyCQlwaWRmaWxlW01BWFBHUEFUSF07CisK KwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CisJcGdfbG9nZ2luZ19zZXRfbGV2ZWwoUEdfTE9H X1dBUk5JTkcpOworCXByb2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOworCXNldF9wZ2xv Y2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfY3JlYXRlc3Vic2NyaWJl ciIpKTsKKworCWlmIChhcmdjID4gMSkKKwl7CisJCWlmIChzdHJjbXAoYXJndlsxXSwgIi0taGVs cCIpID09IDAgfHwgc3RyY21wKGFyZ3ZbMV0sICItPyIpID09IDApCisJCXsKKwkJCXVzYWdlKCk7 CisJCQlleGl0KDApOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiLVYiKSA9PSAw CisJCQkJIHx8IHN0cmNtcChhcmd2WzFdLCAiLS12ZXJzaW9uIikgPT0gMCkKKwkJeworCQkJcHV0 cygicGdfY3JlYXRlc3Vic2NyaWJlciAoUG9zdGdyZVNRTCkgIiBQR19WRVJTSU9OKTsKKwkJCWV4 aXQoMCk7CisJCX0KKwl9CisKKwkvKgorCSAqIERvbid0IGFsbG93IGl0IHRvIGJlIHJ1biBhcyBy b290LiBJdCB1c2VzIHBnX2N0bCB3aGljaCBkb2VzIG5vdCBhbGxvdworCSAqIGl0IGVpdGhlci4K KwkgKi8KKyNpZm5kZWYgV0lOMzIKKwlpZiAoZ2V0ZXVpZCgpID09IDApCisJeworCQlwZ19sb2df ZXJyb3IoImNhbm5vdCBiZSBleGVjdXRlZCBieSBcInJvb3RcIiIpOworCQlwZ19sb2dfZXJyb3Jf aGludCgiWW91IG11c3QgcnVuICVzIGFzIHRoZSBQb3N0Z3JlU1FMIHN1cGVydXNlci4iLAorCQkJ CQkJICBwcm9nbmFtZSk7CisJCWV4aXQoMSk7CisJfQorI2VuZGlmCisKKwl3aGlsZSAoKGMgPSBn ZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiRDpQOlM6ZDpucnQ6diIsCisJCQkJCQkJbG9uZ19vcHRp b25zLCAmb3B0aW9uX2luZGV4KSkgIT0gLTEpCisJeworCQlzd2l0Y2ggKGMpCisJCXsKKwkJCWNh c2UgJ0QnOgorCQkJCXN1YnNjcmliZXJfZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJYnJl YWs7CisJCQljYXNlICdQJzoKKwkJCQlwdWJfY29ubmluZm9fc3RyID0gcGdfc3RyZHVwKG9wdGFy Zyk7CisJCQkJYnJlYWs7CisJCQljYXNlICdTJzoKKwkJCQlzdWJfY29ubmluZm9fc3RyID0gcGdf c3RyZHVwKG9wdGFyZyk7CisJCQkJYnJlYWs7CisJCQljYXNlICdkJzoKKwkJCQkvKiBJZ25vcmUg ZHVwbGljYXRlZCBkYXRhYmFzZSBuYW1lcy4gKi8KKwkJCQlpZiAoIXNpbXBsZV9zdHJpbmdfbGlz dF9tZW1iZXIoJmRhdGFiYXNlX25hbWVzLCBvcHRhcmcpKQorCQkJCXsKKwkJCQkJc2ltcGxlX3N0 cmluZ19saXN0X2FwcGVuZCgmZGF0YWJhc2VfbmFtZXMsIG9wdGFyZyk7CisJCQkJCW51bV9kYnMr KzsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlICduJzoKKwkJCQlkcnlfcnVuID0gdHJ1ZTsK KwkJCQlicmVhazsKKwkJCWNhc2UgJ3InOgorCQkJCXJldGFpbiA9IHRydWU7CisJCQkJYnJlYWs7 CisJCQljYXNlICd0JzoKKwkJCQlyZWNvdmVyeV90aW1lb3V0ID0gYXRvaShvcHRhcmcpOworCQkJ CWJyZWFrOworCQkJY2FzZSAndic6CisJCQkJcGdfbG9nZ2luZ19pbmNyZWFzZV92ZXJib3NpdHko KTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFkeSBl bWl0dGVkIGEgY29tcGxhaW50ICovCisJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0t aGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKKwkJCQlleGl0KDEpOwor CQl9CisJfQorCisJLyoKKwkgKiBBbnkgbm9uLW9wdGlvbiBhcmd1bWVudHM/CisJICovCisJaWYg KG9wdGluZCA8IGFyZ2MpCisJeworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGlu ZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKKwkJ cGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9u LiIsIHByb2duYW1lKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKgorCSAqIFJlcXVpcmVkIGFyZ3Vt ZW50cworCSAqLworCWlmIChzdWJzY3JpYmVyX2RpciA9PSBOVUxMKQorCXsKKwkJcGdfbG9nX2Vy cm9yKCJubyBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmllZCIpOworCQlwZ19sb2df ZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJv Z25hbWUpOworCQlleGl0KDEpOworCX0KKworCS8qCisJICogUGFyc2UgY29ubmVjdGlvbiBzdHJp bmcuIEJ1aWxkIGEgYmFzZSBjb25uZWN0aW9uIHN0cmluZyB0aGF0IG1pZ2h0IGJlCisJICogcmV1 c2VkIGJ5IG11bHRpcGxlIGRhdGFiYXNlcy4KKwkgKi8KKwlpZiAocHViX2Nvbm5pbmZvX3N0ciA9 PSBOVUxMKQorCXsKKwkJLyoKKwkJICogVE9ETyB1c2UgcHJpbWFyeV9jb25uaW5mbyAoaWYgYXZh aWxhYmxlKSBmcm9tIHN1YnNjcmliZXIgYW5kCisJCSAqIGV4dHJhY3QgcHVibGlzaGVyIGNvbm5l Y3Rpb24gc3RyaW5nLiBBc3N1bWUgdGhhdCB0aGVyZSBhcmUKKwkJICogaWRlbnRpY2FsIGVudHJp ZXMgZm9yIHBoeXNpY2FsIGFuZCBsb2dpY2FsIHJlcGxpY2F0aW9uLiBJZiB0aGVyZSBpcworCQkg KiBub3QsIHdlIHdvdWxkIGZhaWwgYW55d2F5LgorCQkgKi8KKwkJcGdfbG9nX2Vycm9yKCJubyBw dWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgc3BlY2lmaWVkIik7CisJCXBnX2xvZ19lcnJvcl9o aW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7 CisJCWV4aXQoMSk7CisJfQorCXB1Yl9iYXNlX2Nvbm5pbmZvID0gZ2V0X2Jhc2VfY29ubmluZm8o cHViX2Nvbm5pbmZvX3N0ciwgZGJuYW1lX2Nvbm5pbmZvLAorCQkJCQkJCQkJCSAgInB1Ymxpc2hl ciIpOworCWlmIChwdWJfYmFzZV9jb25uaW5mbyA9PSBOVUxMKQorCQlleGl0KDEpOworCisJaWYg KHN1Yl9jb25uaW5mb19zdHIgPT0gTlVMTCkKKwl7CisJCXBnX2xvZ19lcnJvcigibm8gc3Vic2Ny aWJlciBjb25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQiKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQo IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKKwkJ ZXhpdCgxKTsKKwl9CisJc3ViX2Jhc2VfY29ubmluZm8gPSBnZXRfYmFzZV9jb25uaW5mbyhzdWJf Y29ubmluZm9fc3RyLCBOVUxMLCAic3Vic2NyaWJlciIpOworCWlmIChzdWJfYmFzZV9jb25uaW5m byA9PSBOVUxMKQorCQlleGl0KDEpOworCisJaWYgKGRhdGFiYXNlX25hbWVzLmhlYWQgPT0gTlVM TCkKKwl7CisJCXBnX2xvZ19pbmZvKCJubyBkYXRhYmFzZSB3YXMgc3BlY2lmaWVkIik7CisKKwkJ LyoKKwkJICogSWYgLS1kYXRhYmFzZSBvcHRpb24gaXMgbm90IHByb3ZpZGVkLCB0cnkgdG8gb2J0 YWluIHRoZSBkYm5hbWUgZnJvbQorCQkgKiB0aGUgcHVibGlzaGVyIGNvbm5pbmZvLiBJZiBkYm5h bWUgcGFyYW1ldGVyIGlzIG5vdCBhdmFpbGFibGUsIGVycm9yCisJCSAqIG91dC4KKwkJICovCisJ CWlmIChkYm5hbWVfY29ubmluZm8pCisJCXsKKwkJCXNpbXBsZV9zdHJpbmdfbGlzdF9hcHBlbmQo JmRhdGFiYXNlX25hbWVzLCBkYm5hbWVfY29ubmluZm8pOworCQkJbnVtX2RicysrOworCisJCQlw Z19sb2dfaW5mbygiZGF0YWJhc2UgXCIlc1wiIHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgcHVibGlz aGVyIGNvbm5lY3Rpb24gc3RyaW5nIiwKKwkJCQkJCWRibmFtZV9jb25uaW5mbyk7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQlwZ19sb2dfZXJyb3IoIm5vIGRhdGFiYXNlIG5hbWUgc3BlY2lmaWVkIik7 CisJCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uIiwgcHJvZ25hbWUpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCS8qCisJICogR2V0 IHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHBnX2N0bCBhbmQgcGdfcmVzZXR3YWwgb24gdGhlIHN1YnNj cmliZXIuCisJICovCisJaWYgKCFnZXRfZXhlY19wYXRoKGFyZ3ZbMF0pKQorCQlleGl0KDEpOwor CisJLyogcnVkaW1lbnRhcnkgY2hlY2sgZm9yIGEgZGF0YSBkaXJlY3RvcnkuICovCisJaWYgKCFj aGVja19kYXRhX2RpcmVjdG9yeShzdWJzY3JpYmVyX2RpcikpCisJCWV4aXQoMSk7CisKKwkvKiBT dG9yZSBkYXRhYmFzZSBpbmZvcm1hdGlvbiBmb3IgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiAq LworCWRiaW5mbyA9IHN0b3JlX3B1Yl9zdWJfaW5mbyhwdWJfYmFzZV9jb25uaW5mbywgc3ViX2Jh c2VfY29ubmluZm8pOworCisJLyogUmVnaXN0ZXIgYSBmdW5jdGlvbiB0byBjbGVhbiB1cCBvYmpl Y3RzIGluIGNhc2Ugb2YgZmFpbHVyZS4gKi8KKwlhdGV4aXQoY2xlYW51cF9vYmplY3RzX2F0ZXhp dCk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5IGhh cyB0aGUgc2FtZSBzeXN0ZW0gaWRlbnRpZmllcgorCSAqIHRoYW4gdGhlIHB1Ymxpc2hlciBkYXRh IGRpcmVjdG9yeS4KKwkgKi8KKwlwdWJfc3lzaWQgPSBnZXRfc3lzaWRfZnJvbV9jb25uKGRiaW5m b1swXS5wdWJjb25uaW5mbyk7CisJc3ViX3N5c2lkID0gZ2V0X2NvbnRyb2xfZnJvbV9kYXRhZGly KHN1YnNjcmliZXJfZGlyKTsKKwlpZiAocHViX3N5c2lkICE9IHN1Yl9zeXNpZCkKKwl7CisJCXBn X2xvZ19lcnJvcigic3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeSBpcyBub3QgYSBjb3B5IG9mIHRo ZSBzb3VyY2UgZGF0YWJhc2UgY2x1c3RlciIpOworCQlleGl0KDEpOworCX0KKworCS8qCisJICog Q3JlYXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIHN0b3JlIGFueSBkYXRhIGdlbmVyYXRlZCBi eSB0aGlzIHRvb2wuCisJICovCisJYmFzZV9kaXIgPSAoY2hhciAqKSBwZ19tYWxsb2MwKE1BWFBH UEFUSCk7CisJbGVuID0gc25wcmludGYoYmFzZV9kaXIsIE1BWFBHUEFUSCwgIiVzLyVzIiwgc3Vi c2NyaWJlcl9kaXIsIFBHU19PVVRQVVRfRElSKTsKKwlpZiAobGVuID49IE1BWFBHUEFUSCkKKwl7 CisJCXBnX2xvZ19lcnJvcigiZGlyZWN0b3J5IHBhdGggZm9yIHN1YnNjcmliZXIgaXMgdG9vIGxv bmciKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAobWtkaXIoYmFzZV9kaXIsIHBnX2Rpcl9jcmVh dGVfbW9kZSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkKKwl7CisJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIGJhc2VfZGlyKTsKKwkJZXhpdCgx KTsKKwl9CisKKwlzZXJ2ZXJfc3RhcnRfbG9nID0gc2VydmVyX2xvZ2ZpbGVfbmFtZShzdWJzY3Jp YmVyX2Rpcik7CisKKwkvKiBzdWJzY3JpYmVyIFBJRCBmaWxlLiAqLworCXNucHJpbnRmKHBpZGZp bGUsIE1BWFBHUEFUSCwgIiVzL3Bvc3RtYXN0ZXIucGlkIiwgc3Vic2NyaWJlcl9kaXIpOworCisJ LyoKKwkgKiBUaGUgc3RhbmRieSBzZXJ2ZXIgbXVzdCBiZSBydW5uaW5nLiBUaGF0J3MgYmVjYXVz ZSBzb21lIGNoZWNrcyB3aWxsIGJlCisJICogZG9uZSAoaXMgaXQgcmVhZHkgZm9yIGEgbG9naWNh bCByZXBsaWNhdGlvbiBzZXR1cD8pLiBBZnRlciB0aGF0LCBzdG9wCisJICogdGhlIHN1YnNjcmli ZXIgaW4gcHJlcGFyYXRpb24gdG8gbW9kaWZ5IHNvbWUgcmVjb3ZlcnkgcGFyYW1ldGVycyB0aGF0 CisJICogcmVxdWlyZSBhIHJlc3RhcnQuCisJICovCisJaWYgKHN0YXQocGlkZmlsZSwgJnN0YXRi dWYpID09IDApCisJeworCQkvKgorCQkgKiBDaGVjayBpZiB0aGUgc3RhbmRieSBzZXJ2ZXIgaXMg cmVhZHkgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24uCisJCSAqLworCQlpZiAoIWNoZWNrX3N1YnNj cmliZXIoZGJpbmZvKSkKKwkJCWV4aXQoMSk7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgdGhlIHBy aW1hcnkgc2VydmVyIGlzIHJlYWR5IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uLiBUaGlzCisJCSAq IHJvdXRpbmUgY2hlY2tzIGlmIGEgcmVwbGljYXRpb24gc2xvdCBpcyBpbiB1c2Ugb24gcHJpbWFy eSBzbyBpdAorCQkgKiByZWxpZXMgb24gY2hlY2tfc3Vic2NyaWJlcigpIHRvIG9idGFpbiB0aGUg cHJpbWFyeV9zbG90X25hbWUuCisJCSAqIFRoYXQncyB3aHkgaXQgaXMgY2FsbGVkIGFmdGVyIGl0 LgorCQkgKi8KKwkJaWYgKCFjaGVja19wdWJsaXNoZXIoZGJpbmZvKSkKKwkJCWV4aXQoMSk7CisK KwkJLyoKKwkJICogQ3JlYXRlIHRoZSByZXF1aXJlZCBvYmplY3RzIGZvciBlYWNoIGRhdGFiYXNl IG9uIHB1Ymxpc2hlci4gVGhpcworCQkgKiBzdGVwIGlzIGhlcmUgbWFpbmx5IGJlY2F1c2UgaWYg d2Ugc3RvcCB0aGUgc3RhbmRieSB3ZSBjYW5ub3QgdmVyaWZ5CisJCSAqIGlmIHRoZSBwcmltYXJ5 IHNsb3QgaXMgaW4gdXNlLiBXZSBjb3VsZCB1c2UgYW4gZXh0cmEgY29ubmVjdGlvbiBmb3IKKwkJ ICogaXQgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB3b3J0aC4KKwkJICovCisJCWlmICghc2V0dXBfcHVi bGlzaGVyKGRiaW5mbykpCisJCQlleGl0KDEpOworCisJCS8qIFN0b3AgdGhlIHN0YW5kYnkgc2Vy dmVyLiAqLworCQlwZ19sb2dfaW5mbygic3RhbmRieSBpcyB1cCBhbmQgcnVubmluZyIpOworCQlw Z19sb2dfaW5mbygic3RvcHBpbmcgdGhlIHNlcnZlciB0byBzdGFydCB0aGUgdHJhbnNmb3JtYXRp b24gc3RlcHMiKTsKKwkJc3RvcF9zdGFuZGJ5X3NlcnZlcihwZ19jdGxfcGF0aCwgc3Vic2NyaWJl cl9kaXIpOworCX0KKwllbHNlCisJeworCQlwZ19sb2dfZXJyb3IoInN0YW5kYnkgaXMgbm90IHJ1 bm5pbmciKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIlN0YXJ0IHRoZSBzdGFuZGJ5IGFuZCB0cnkg YWdhaW4uIik7CisJCWV4aXQoMSk7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgYSB0ZW1wb3Jhcnkg bG9naWNhbCByZXBsaWNhdGlvbiBzbG90IHRvIGdldCBhIGNvbnNpc3RlbnQgTFNOLgorCSAqCisJ ICogVGhpcyBjb25zaXN0ZW50IExTTiB3aWxsIGJlIHVzZWQgbGF0ZXIgdG8gYWR2YW5jZWQgdGhl IHJlY2VudGx5IGNyZWF0ZWQKKwkgKiByZXBsaWNhdGlvbiBzbG90cy4gSXQgaXMgb2sgdG8gdXNl IGEgdGVtcG9yYXJ5IHJlcGxpY2F0aW9uIHNsb3QgaGVyZQorCSAqIGJlY2F1c2UgaXQgd2lsbCBo YXZlIGEgc2hvcnQgbGlmZXRpbWUgYW5kIGl0IGlzIG9ubHkgdXNlZCBhcyBhIG1hcmsgdG8KKwkg KiBzdGFydCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbi4KKwkgKgorCSAqIFhYWCB3ZSBzaG91bGQg cHJvYmFibHkgdXNlIHRoZSBsYXN0IGNyZWF0ZWQgcmVwbGljYXRpb24gc2xvdCB0byBnZXQgYQor CSAqIGNvbnNpc3RlbnQgTFNOIGJ1dCBpdCBzaG91bGQgYmUgY2hhbmdlZCBhZnRlciBhZGRpbmcg cGdfYmFzZWJhY2t1cAorCSAqIHN1cHBvcnQuCisJICovCisJY29ubiA9IGNvbm5lY3RfZGF0YWJh c2UoZGJpbmZvWzBdLnB1YmNvbm5pbmZvKTsKKwlpZiAoY29ubiA9PSBOVUxMKQorCQlleGl0KDEp OworCWNvbnNpc3RlbnRfbHNuID0gY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdChjb25u LCAmZGJpbmZvWzBdLAorCQkJCQkJCQkJCQkJCSB0ZW1wX3JlcGxzbG90KTsKKworCS8qCisJICog V3JpdGUgcmVjb3ZlcnkgcGFyYW1ldGVycy4KKwkgKgorCSAqIERlc3BpdGUgb2YgdGhlIHJlY292 ZXJ5IHBhcmFtZXRlcnMgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBzdWJzY3JpYmVyLAorCSAqIHVz ZSBhIHB1Ymxpc2hlciBjb25uZWN0aW9uIGZvciB0aGUgZm9sbHdpbmcgcmVjb3ZlcnkgZnVuY3Rp b25zLiBUaGUKKwkgKiBjb25uZWN0aW9uIGlzIG9ubHkgdXNlZCB0byBjaGVjayB0aGUgY3VycmVu dCBzZXJ2ZXIgdmVyc2lvbiAocGh5c2ljYWwKKwkgKiByZXBsaWNhLCBzYW1lIHNlcnZlciB2ZXJz aW9uKS4gVGhlIHN1YnNjcmliZXIgaXMgbm90IHJ1bm5pbmcgeWV0LiBJbgorCSAqIGRyeSBydW4g bW9kZSwgdGhlIHJlY292ZXJ5IHBhcmFtZXRlcnMgKndvbid0KiBiZSB3cml0dGVuLiBBbiBpbnZh bGlkCisJICogTFNOIGlzIHVzZWQgZm9yIHByaW50aW5nIHB1cnBvc2VzLgorCSAqLworCXJlY292 ZXJ5Y29uZmNvbnRlbnRzID0gR2VuZXJhdGVSZWNvdmVyeUNvbmZpZyhjb25uLCBOVUxMKTsKKwlh cHBlbmRQUUV4cEJ1ZmZlcihyZWNvdmVyeWNvbmZjb250ZW50cywgInJlY292ZXJ5X3RhcmdldF9p bmNsdXNpdmUgPSB0cnVlXG4iKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihyZWNvdmVyeWNvbmZjb250 ZW50cywgInJlY292ZXJ5X3RhcmdldF9hY3Rpb24gPSBwcm9tb3RlXG4iKTsKKworCWlmIChkcnlf cnVuKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocmVjb3Zlcnljb25mY29udGVudHMsICIjIGRy eSBydW4gbW9kZSIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcihyZWNvdmVyeWNvbmZjb250ZW50cywg InJlY292ZXJ5X3RhcmdldF9sc24gPSAnJVgvJVgnXG4iLAorCQkJCQkJICBMU05fRk9STUFUX0FS R1MoKFhMb2dSZWNQdHIpIEludmFsaWRYTG9nUmVjUHRyKSk7CisJfQorCWVsc2UKKwl7CisJCWFw cGVuZFBRRXhwQnVmZmVyKHJlY292ZXJ5Y29uZmNvbnRlbnRzLCAicmVjb3ZlcnlfdGFyZ2V0X2xz biA9ICclcydcbiIsCisJCQkJCQkgIGNvbnNpc3RlbnRfbHNuKTsKKwkJV3JpdGVSZWNvdmVyeUNv bmZpZyhjb25uLCBzdWJzY3JpYmVyX2RpciwgcmVjb3Zlcnljb25mY29udGVudHMpOworCX0KKwlk aXNjb25uZWN0X2RhdGFiYXNlKGNvbm4pOworCisJcGdfbG9nX2RlYnVnKCJyZWNvdmVyeSBwYXJh bWV0ZXJzOlxuJXMiLCByZWNvdmVyeWNvbmZjb250ZW50cy0+ZGF0YSk7CisKKwkvKgorCSAqIFN0 YXJ0IHN1YnNjcmliZXIgYW5kIHdhaXQgdW50aWwgYWNjZXB0aW5nIGNvbm5lY3Rpb25zLgorCSAq LworCXBnX2xvZ19pbmZvKCJzdGFydGluZyB0aGUgc3Vic2NyaWJlciIpOworCXN0YXJ0X3N0YW5k Ynlfc2VydmVyKHBnX2N0bF9wYXRoLCBzdWJzY3JpYmVyX2Rpciwgc2VydmVyX3N0YXJ0X2xvZyk7 CisKKwkvKgorCSAqIFdhaXRpbmcgdGhlIHN1YnNjcmliZXIgdG8gYmUgcHJvbW90ZWQuCisJICov CisJd2FpdF9mb3JfZW5kX3JlY292ZXJ5KGRiaW5mb1swXS5zdWJjb25uaW5mbyk7CisKKwkvKgor CSAqIENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uIGZvciBlYWNoIGRhdGFiYXNlIG9uIHN1YnNjcmli ZXIuIEl0IGRvZXMgbm90CisJICogZW5hYmxlIGl0IGltbWVkaWF0ZWx5IGJlY2F1c2UgaXQgbmVl ZHMgdG8gYWRqdXN0IHRoZSBsb2dpY2FsCisJICogcmVwbGljYXRpb24gc3RhcnQgcG9pbnQgdG8g dGhlIExTTiByZXBvcnRlZCBieSBjb25zaXN0ZW50X2xzbiAoc2VlCisJICogc2V0X3JlcGxpY2F0 aW9uX3Byb2dyZXNzKS4gSXQgYWxzbyBjbGVhbnMgdXAgcHVibGljYXRpb25zIGNyZWF0ZWQgYnkK KwkgKiB0aGlzIHRvb2wgYW5kIHJlcGxpY2F0aW9uIHRvIHRoZSBzdGFuZGJ5LgorCSAqLworCWlm ICghc2V0dXBfc3Vic2NyaWJlcihkYmluZm8sIGNvbnNpc3RlbnRfbHNuKSkKKwkJZXhpdCgxKTsK KworCS8qCisJICogSWYgdGhlIHByaW1hcnlfc2xvdF9uYW1lIGV4aXN0cyBvbiBwcmltYXJ5LCBk cm9wIGl0LgorCSAqCisJICogWFhYIHdlIG1pZ2h0IG5vdCBmYWlsIGhlcmUuIEluc3RlYWQsIHdl IHByb3ZpZGUgYSB3YXJuaW5nIHNvIHRoZSB1c2VyCisJICogZXZlbnR1YWxseSBkcm9wcyB0aGlz IHJlcGxpY2F0aW9uIHNsb3QgbGF0ZXIuCisJICovCisJaWYgKHByaW1hcnlfc2xvdF9uYW1lICE9 IE5VTEwpCisJeworCQljb25uID0gY29ubmVjdF9kYXRhYmFzZShkYmluZm9bMF0ucHViY29ubmlu Zm8pOworCQlpZiAoY29ubiAhPSBOVUxMKQorCQl7CisJCQlkcm9wX3JlcGxpY2F0aW9uX3Nsb3Qo Y29ubiwgJmRiaW5mb1swXSwgdGVtcF9yZXBsc2xvdCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlw Z19sb2dfd2FybmluZygiY291bGQgbm90IGRyb3AgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb24g cHJpbWFyeSIsIHByaW1hcnlfc2xvdF9uYW1lKTsKKwkJCXBnX2xvZ193YXJuaW5nX2hpbnQoIkRy b3AgdGhpcyByZXBsaWNhdGlvbiBzbG90IHNvb24gdG8gYXZvaWQgcmV0ZW50aW9uIG9mIFdBTCBm aWxlcy4iKTsKKwkJfQorCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4pOworCX0KKworCS8qCisJ ICogU3RvcCB0aGUgc3Vic2NyaWJlci4KKwkgKi8KKwlwZ19sb2dfaW5mbygic3RvcHBpbmcgdGhl IHN1YnNjcmliZXIiKTsKKwlzdG9wX3N0YW5kYnlfc2VydmVyKHBnX2N0bF9wYXRoLCBzdWJzY3Jp YmVyX2Rpcik7CisKKwkvKgorCSAqIENoYW5nZSBzeXN0ZW0gaWRlbnRpZmllci4KKwkgKi8KKwlt b2RpZnlfc3lzaWQocGdfcmVzZXR3YWxfcGF0aCwgc3Vic2NyaWJlcl9kaXIpOworCisJLyoKKwkg KiBUaGUgbG9nIGZpbGUgaXMga2VwdCBpZiByZXRhaW4gb3B0aW9uIGlzIHNwZWNpZmllZCBvciB0 aGlzIHRvb2wgZG9lcworCSAqIG5vdCBydW4gc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIGxvZyBm aWxlIGlzIHJlbW92ZWQuCisJICovCisJaWYgKCFyZXRhaW4pCisJCXVubGluayhzZXJ2ZXJfc3Rh cnRfbG9nKTsKKworCXN1Y2Nlc3MgPSB0cnVlOworCisJcGdfbG9nX2luZm8oIkRvbmUhIik7CisK KwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9w Z19jcmVhdGVzdWJzY3JpYmVyLnBsIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQwX3BnX2Ny ZWF0ZXN1YnNjcmliZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MGYwMmIxYmZhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0 MF9wZ19jcmVhdGVzdWJzY3JpYmVyLnBsCkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChj KSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjCisjIFRlc3Qg Y2hlY2tpbmcgb3B0aW9ucyBvZiBwZ19jcmVhdGVzdWJzY3JpYmVyLgorIworCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6 Ok1vcmU7CisKK3Byb2dyYW1faGVscF9vaygncGdfY3JlYXRlc3Vic2NyaWJlcicpOworcHJvZ3Jh bV92ZXJzaW9uX29rKCdwZ19jcmVhdGVzdWJzY3JpYmVyJyk7Citwcm9ncmFtX29wdGlvbnNfaGFu ZGxpbmdfb2soJ3BnX2NyZWF0ZXN1YnNjcmliZXInKTsKKworbXkgJGRhdGFkaXIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKKworY29tbWFuZF9mYWlscyhbJ3BnX2NyZWF0ZXN1 YnNjcmliZXInXSwKKwknbm8gc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeSBzcGVjaWZpZWQnKTsK K2NvbW1hbmRfZmFpbHMoCisJWworCQkncGdfY3JlYXRlc3Vic2NyaWJlcicsCisJCSctLXBnZGF0 YScsICRkYXRhZGlyCisJXSwKKwknbm8gcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNp ZmllZCcpOworY29tbWFuZF9mYWlscygKKwlbCisJCSdwZ19jcmVhdGVzdWJzY3JpYmVyJywKKwkJ Jy0tZHJ5LXJ1bicsCisJCSctLXBnZGF0YScsICRkYXRhZGlyLAorCQknLS1wdWJsaXNoZXItc2Vy dmVyJywgJ2RibmFtZT1wb3N0Z3JlcycKKwldLAorCSdubyBzdWJzY3JpYmVyIGNvbm5lY3Rpb24g c3RyaW5nIHNwZWNpZmllZCcpOworY29tbWFuZF9mYWlscygKKwlbCisJCSdwZ19jcmVhdGVzdWJz Y3JpYmVyJywKKwkJJy0tdmVyYm9zZScsCisJCSctLXBnZGF0YScsICRkYXRhZGlyLAorCQknLS1w dWJsaXNoZXItc2VydmVyJywgJ2RibmFtZT1wb3N0Z3JlcycsCisJCSctLXN1YnNjcmliZXItc2Vy dmVyJywgJ2RibmFtZT1wb3N0Z3JlcycKKwldLAorCSdubyBkYXRhYmFzZSBuYW1lIHNwZWNpZmll ZCcpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC90LzA0MV9wZ19jcmVhdGVzdWJzY3JpYmVyX3N0YW5kYnkucGwgYi9zcmMvYmluL3BnX2Jhc2Vi YWNrdXAvdC8wNDFfcGdfY3JlYXRlc3Vic2NyaWJlcl9zdGFuZGJ5LnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUzNGJjNTNhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wNDFfcGdfY3JlYXRlc3Vic2NyaWJlcl9zdGFuZGJ5LnBs CkBAIC0wLDAgKzEsMTM5IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIworIyBUZXN0IHVzaW5nIGEgc3RhbmRieSBzZXJ2ZXIg YXMgdGhlIHN1YnNjcmliZXIuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3Vz ZSBUZXN0OjpNb3JlOworCitteSAkbm9kZV9wOworbXkgJG5vZGVfZjsKK215ICRub2RlX3M7Citt eSAkcmVzdWx0OworCisjIFNldCB1cCBub2RlIFAgYXMgcHJpbWFyeQorJG5vZGVfcCA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZV9wJyk7Ciskbm9kZV9wLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3AtPnN0YXJ0OworCisjIFNldCB1cCBu b2RlIEYgYXMgYWJvdXQtdG8tZmFpbCBub2RlCisjIFRoZSBleHRyYSBvcHRpb24gZm9yY2VzIGl0 IHRvIGluaXRpYWxpemUgYSBuZXcgY2x1c3RlciBpbnN0ZWFkIG9mIGNvcHlpbmcgYQorIyBwcmV2 aW91c2x5IGluaXRkYidzIGNsdXN0ZXIuCiskbm9kZV9mID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlci0+bmV3KCdub2RlX2YnKTsKKyRub2RlX2YtPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcsIGV4dHJhID0+IFsgJy0tbm8taW5zdHJ1Y3Rpb25zJyBdKTsKKyRub2RlX2YtPnN0 YXJ0OworCisjIE9uIG5vZGUgUAorIyAtIGNyZWF0ZSBkYXRhYmFzZXMKKyMgLSBjcmVhdGUgdGVz dCB0YWJsZXMKKyMgLSBpbnNlcnQgYSByb3cKKyRub2RlX3AtPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxKAorCUNSRUFURSBEQVRBQkFTRSBwZzE7CisJQ1JFQVRFIERBVEFCQVNFIHBnMjsKKykp OworJG5vZGVfcC0+c2FmZV9wc3FsKCdwZzEnLCAnQ1JFQVRFIFRBQkxFIHRibDEgKGEgdGV4dCkn KTsKKyRub2RlX3AtPnNhZmVfcHNxbCgncGcxJywgIklOU0VSVCBJTlRPIHRibDEgVkFMVUVTKCdm aXJzdCByb3cnKSIpOworJG5vZGVfcC0+c2FmZV9wc3FsKCdwZzInLCAnQ1JFQVRFIFRBQkxFIHRi bDIgKGEgdGV4dCknKTsKKworIyBTZXQgdXAgbm9kZSBTIGFzIHN0YW5kYnkgbGlua2luZyB0byBu b2RlIFAKKyRub2RlX3AtPmJhY2t1cCgnYmFja3VwXzEnKTsKKyRub2RlX3MgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGVfcycpOworJG5vZGVfcy0+aW5pdF9mcm9tX2JhY2t1 cCgkbm9kZV9wLCAnYmFja3VwXzEnLCBoYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcy0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdsb2dfbWluX21lc3NhZ2VzID0gZGVidWcyJyk7 Ciskbm9kZV9zLT5zZXRfc3RhbmRieV9tb2RlKCk7Ciskbm9kZV9zLT5zdGFydDsKKworIyBJbnNl cnQgYW5vdGhlciByb3cgb24gbm9kZSBQIGFuZCB3YWl0IG5vZGUgUyB0byBjYXRjaCB1cAorJG5v ZGVfcC0+c2FmZV9wc3FsKCdwZzEnLCAiSU5TRVJUIElOVE8gdGJsMSBWQUxVRVMoJ3NlY29uZCBy b3cnKSIpOworJG5vZGVfcC0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfcyk7CisKKyMg UnVuIHBnX2NyZWF0ZXN1YnNjcmliZXIgb24gYWJvdXQtdG8tZmFpbCBub2RlIEYKK2NvbW1hbmRf ZmFpbHMoCisJWworCQkncGdfY3JlYXRlc3Vic2NyaWJlcicsICctLXZlcmJvc2UnLAorCQknLS1w Z2RhdGEnLCAkbm9kZV9mLT5kYXRhX2RpciwKKwkJJy0tcHVibGlzaGVyLXNlcnZlcicsICRub2Rl X3AtPmNvbm5zdHIoJ3BnMScpLAorCQknLS1zdWJzY3JpYmVyLXNlcnZlcicsICRub2RlX2YtPmNv bm5zdHIoJ3BnMScpLAorCQknLS1kYXRhYmFzZScsICdwZzEnLAorCQknLS1kYXRhYmFzZScsICdw ZzInCisJXSwKKwknc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeSBpcyBub3QgYSBjb3B5IG9mIHRo ZSBzb3VyY2UgZGF0YWJhc2UgY2x1c3RlcicpOworCisjIGRyeSBydW4gbW9kZSBvbiBub2RlIFMK K2NvbW1hbmRfb2soCisJWworCQkncGdfY3JlYXRlc3Vic2NyaWJlcicsICctLXZlcmJvc2UnLCAn LS1kcnktcnVuJywKKwkJJy0tcGdkYXRhJywgJG5vZGVfcy0+ZGF0YV9kaXIsCisJCSctLXB1Ymxp c2hlci1zZXJ2ZXInLCAkbm9kZV9wLT5jb25uc3RyKCdwZzEnKSwKKwkJJy0tc3Vic2NyaWJlci1z ZXJ2ZXInLCAkbm9kZV9zLT5jb25uc3RyKCdwZzEnKSwKKwkJJy0tZGF0YWJhc2UnLCAncGcxJywK KwkJJy0tZGF0YWJhc2UnLCAncGcyJworCV0sCisJJ3J1biBwZ19jcmVhdGVzdWJzY3JpYmVyIC0t ZHJ5LXJ1biBvbiBub2RlIFMnKTsKKworIyBQSUQgc2V0cyB0byB1bmRlZmluZWQgYmVjYXVzZSBz dWJzY3JpYmVyIHdhcyBzdG9wcGVkIGJlaGluZCB0aGUgc2NlbmVzLgorIyBTdGFydCBzdWJzY3Jp YmVyCiskbm9kZV9zLT57X3BpZH0gPSB1bmRlZjsKKyRub2RlX3MtPnN0YXJ0OworIyBDaGVjayBp ZiBub2RlIFMgaXMgc3RpbGwgYSBzdGFuZGJ5Citpcygkbm9kZV9zLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ1NFTEVDVCBwZ19pc19pbl9yZWNvdmVyeSgpJyksCisJJ3QnLCAnc3RhbmRieSBpcyBp biByZWNvdmVyeScpOworCisjIFJ1biBwZ19jcmVhdGVzdWJzY3JpYmVyIG9uIG5vZGUgUworY29t bWFuZF9vaygKKwlbCisJCSdwZ19jcmVhdGVzdWJzY3JpYmVyJywgJy0tdmVyYm9zZScsCisJCSct LXBnZGF0YScsICRub2RlX3MtPmRhdGFfZGlyLAorCQknLS1wdWJsaXNoZXItc2VydmVyJywgJG5v ZGVfcC0+Y29ubnN0cigncGcxJyksCisJCSctLXN1YnNjcmliZXItc2VydmVyJywgJG5vZGVfcy0+ Y29ubnN0cigncGcxJyksCisJCSctLWRhdGFiYXNlJywgJ3BnMScsCisJCSctLWRhdGFiYXNlJywg J3BnMicKKwldLAorCSdydW4gcGdfY3JlYXRlc3Vic2NyaWJlciBvbiBub2RlIFMnKTsKKworIyBJ bnNlcnQgcm93cyBvbiBQCiskbm9kZV9wLT5zYWZlX3BzcWwoJ3BnMScsICJJTlNFUlQgSU5UTyB0 YmwxIFZBTFVFUygndGhpcmQgcm93JykiKTsKKyRub2RlX3AtPnNhZmVfcHNxbCgncGcyJywgIklO U0VSVCBJTlRPIHRibDIgVkFMVUVTKCdyb3cgMScpIik7CisKKyMgUElEIHNldHMgdG8gdW5kZWZp bmVkIGJlY2F1c2Ugc3Vic2NyaWJlciB3YXMgc3RvcHBlZCBiZWhpbmQgdGhlIHNjZW5lcy4KKyMg U3RhcnQgc3Vic2NyaWJlcgorJG5vZGVfcy0+e19waWR9ID0gdW5kZWY7Ciskbm9kZV9zLT5zdGFy dDsKKworIyBHZXQgc3Vic2NyaXB0aW9uIG5hbWVzCiskcmVzdWx0ID0gJG5vZGVfcy0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCBzdWJuYW1lIEZST00gcGdfc3Vic2NyaXB0 aW9uIFdIRVJFIHN1Ym5hbWUgfiAnXnBnX2NyZWF0ZXN1YnNjcmliZXJfJworKSk7CitteSBAc3Vi bmFtZXMgPSBzcGxpdCgiXG4iLCAkcmVzdWx0KTsKKworIyBXYWl0IHN1YnNjcmliZXIgdG8gY2F0 Y2ggdXAKKyRub2RlX3MtPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3AsICRzdWJu YW1lc1swXSk7Ciskbm9kZV9zLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wLCAk c3VibmFtZXNbMV0pOworCisjIENoZWNrIHJlc3VsdCBvbiBkYXRhYmFzZSBwZzEKKyRyZXN1bHQg PSAkbm9kZV9zLT5zYWZlX3BzcWwoJ3BnMScsICdTRUxFQ1QgKiBGUk9NIHRibDEnKTsKK2lzKCAk cmVzdWx0LCBxcShmaXJzdCByb3cKK3NlY29uZCByb3cKK3RoaXJkIHJvdyksCisJJ2xvZ2ljYWwg cmVwbGljYXRpb24gd29ya3Mgb24gZGF0YWJhc2UgcGcxJyk7CisKKyMgQ2hlY2sgcmVzdWx0IG9u IGRhdGFiYXNlIHBnMgorJHJlc3VsdCA9ICRub2RlX3MtPnNhZmVfcHNxbCgncGcyJywgJ1NFTEVD VCAqIEZST00gdGJsMicpOworaXMoICRyZXN1bHQsIHFxKHJvdyAxKSwKKwknbG9naWNhbCByZXBs aWNhdGlvbiB3b3JrcyBvbiBkYXRhYmFzZSBwZzInKTsKKworIyBEaWZmZXJlbnQgc3lzdGVtIGlk ZW50aWZpZXI/CitteSAkc3lzaWRfcCA9ICRub2RlX3AtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn U0VMRUNUIHN5c3RlbV9pZGVudGlmaWVyIEZST00gcGdfY29udHJvbF9zeXN0ZW0oKScpOworbXkg JHN5c2lkX3MgPSAkbm9kZV9zLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBzeXN0ZW1f aWRlbnRpZmllciBGUk9NIHBnX2NvbnRyb2xfc3lzdGVtKCknKTsKK29rKCRzeXNpZF9wICE9ICRz eXNpZF9zLCAnc3lzdGVtIGlkZW50aWZpZXIgd2FzIGNoYW5nZWQnKTsKKworIyBjbGVhbiB1cAor JG5vZGVfcC0+dGVhcmRvd25fbm9kZTsKKyRub2RlX3MtPnRlYXJkb3duX25vZGU7CisKK2RvbmVf dGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5MTQzM2Q0MzliLi5mNTFm MWZmMjNmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTUwNSw2ICsxNTA1LDcgQEAg TG9naWNhbFJlcEJlZ2luRGF0YQogTG9naWNhbFJlcENvbW1pdERhdGEKIExvZ2ljYWxSZXBDb21t aXRQcmVwYXJlZFR4bkRhdGEKIExvZ2ljYWxSZXBDdHhTdHJ1Y3QKK0xvZ2ljYWxSZXBJbmZvCiBM b2dpY2FsUmVwTXNnVHlwZQogTG9naWNhbFJlcFBhcnRNYXBFbnRyeQogTG9naWNhbFJlcFByZXBh cmVkVHhuRGF0YQotLSAKMi40My4wCgo= --_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_ Content-Type: application/octet-stream; name="v13-0002-Fix-wrong-argument-for-drop_replication_slot.patch" Content-Description: v13-0002-Fix-wrong-argument-for-drop_replication_slot.patch Content-Disposition: attachment; filename="v13-0002-Fix-wrong-argument-for-drop_replication_slot.patch"; size=1181; creation-date="Thu, 01 Feb 2024 12:23:47 GMT"; modification-date="Thu, 01 Feb 2024 12:47:06 GMT" Content-Transfer-Encoding: base64 RnJvbSBhZTMzYTg5MmRjNzQzNzg3MTMyMTU2ZGYyN2ViNWY5MWJlMmViYzYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBUaHUsIDEgRmViIDIwMjQgMDY6MTM6MTYgKzAwMDAKU3ViamVjdDogW1BBVENI IHYxMyAyLzVdIEZpeCB3cm9uZyBhcmd1bWVudCBmb3IgZHJvcF9yZXBsaWNhdGlvbl9zbG90KCkK Ci0tLQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jIGIvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwppbmRleCA0Nzg1NjBiM2U0 Li4wYzBmMzFkODZkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRl c3Vic2NyaWJlci5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3Jp YmVyLmMKQEAgLTE1MSw3ICsxNTEsNyBAQCBjbGVhbnVwX29iamVjdHNfYXRleGl0KHZvaWQpCiAJ CQkJaWYgKGRiaW5mb1tpXS5tYWRlX3B1YmxpY2F0aW9uKQogCQkJCQlkcm9wX3B1YmxpY2F0aW9u KGNvbm4sICZkYmluZm9baV0pOwogCQkJCWlmIChkYmluZm9baV0ubWFkZV9yZXBsc2xvdCkKLQkJ CQkJZHJvcF9yZXBsaWNhdGlvbl9zbG90KGNvbm4sICZkYmluZm9baV0sIE5VTEwpOworCQkJCQlk cm9wX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgJmRiaW5mb1tpXSwgZGJpbmZvW2ldLnN1Ym5hbWUp OwogCQkJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubik7CiAJCQl9CiAJCX0KQEAgLTE4MTYsNyAr MTgxNiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQljb25uID0gY29ubmVjdF9k YXRhYmFzZShkYmluZm9bMF0ucHViY29ubmluZm8pOwogCQlpZiAoY29ubiAhPSBOVUxMKQogCQl7 Ci0JCQlkcm9wX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgJmRiaW5mb1swXSwgdGVtcF9yZXBsc2xv dCk7CisJCQlkcm9wX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgJmRiaW5mb1swXSwgcHJpbWFyeV9z bG90X25hbWUpOwogCQl9CiAJCWVsc2UKIAkJewotLSAKMi40My4wCgo= --_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_ Content-Type: application/octet-stream; name="v13-0003-Avoid-to-use-replication-connections.patch" Content-Description: v13-0003-Avoid-to-use-replication-connections.patch Content-Disposition: attachment; filename="v13-0003-Avoid-to-use-replication-connections.patch"; size=4449; creation-date="Thu, 01 Feb 2024 12:23:47 GMT"; modification-date="Thu, 01 Feb 2024 12:47:06 GMT" Content-Transfer-Encoding: base64 RnJvbSA2YWZkNzM3NzQwNzlmNGExNDQwNmNjMDI1YTJkMjVkYjk1OWRiNjhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBXZWQsIDMxIEphbiAyMDI0IDA3OjM5OjM1ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTMgMy81XSBBdm9pZCB0byB1c2UgcmVwbGljYXRpb24gY29ubmVjdGlvbnMKCi0tLQogZG9j L3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwgICB8ICAxIC0KIHNyYy9iaW4v cGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMgfCAyOSArKysrKysrKystLS0tLS0t LS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbAppbmRleCAxYzc4ZmY5 MmUwLi41M2I0MmU2MTYxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1 YnNjcmliZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIu c2dtbApAQCAtNjEsNyArNjEsNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgIFRoZSA8 YXBwbGljYXRpb24+cGdfY3JlYXRlc3Vic2NyaWJlcjwvYXBwbGljYXRpb24+IHNob3VsZCBiZSBy dW4gYXQgdGhlIHRhcmdldAogICAgc2VydmVyLiBUaGUgc291cmNlIHNlcnZlciAoa25vd24gYXMg cHVibGlzaGVyIHNlcnZlcikgc2hvdWxkIGFjY2VwdCBsb2dpY2FsCiAgICByZXBsaWNhdGlvbiBj b25uZWN0aW9ucyBmcm9tIHRoZSB0YXJnZXQgc2VydmVyIChrbm93biBhcyBzdWJzY3JpYmVyIHNl cnZlcikuCi0gICBUaGUgdGFyZ2V0IHNlcnZlciBzaG91bGQgYWNjZXB0IGxvY2FsIGxvZ2ljYWwg cmVwbGljYXRpb24gY29ubmVjdGlvbi4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMgYi9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCmluZGV4IDBjMGYzMWQ4NmQu LjljMTY1MzM0NTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVz dWJzY3JpYmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmli ZXIuYwpAQCAtMzk3LDEyICszOTcsOCBAQCBjb25uZWN0X2RhdGFiYXNlKGNvbnN0IGNoYXIgKmNv bm5pbmZvKQogewogCVBHY29ubgkgICAqY29ubjsKIAlQR3Jlc3VsdCAgICpyZXM7Ci0JY29uc3Qg Y2hhciAqcmNvbm5pbmZvOwogCi0JLyogbG9naWNhbCByZXBsaWNhdGlvbiBtb2RlICovCi0JcmNv bm5pbmZvID0gcHNwcmludGYoIiVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiwgY29ubmluZm8pOwot Ci0JY29ubiA9IFBRY29ubmVjdGRiKHJjb25uaW5mbyk7CisJY29ubiA9IFBRY29ubmVjdGRiKGNv bm5pbmZvKTsKIAlpZiAoUFFzdGF0dXMoY29ubikgIT0gQ09OTkVDVElPTl9PSykKIAl7CiAJCXBn X2xvZ19lcnJvcigiY29ubmVjdGlvbiB0byBkYXRhYmFzZSBmYWlsZWQ6ICVzIiwgUFFlcnJvck1l c3NhZ2UoY29ubikpOwpAQCAtNDQ2LDI2ICs0NDIsMjYgQEAgZ2V0X3N5c2lkX2Zyb21fY29ubihj b25zdCBjaGFyICpjb25uaW5mbykKIAlpZiAoY29ubiA9PSBOVUxMKQogCQlleGl0KDEpOwogCi0J cmVzID0gUFFleGVjKGNvbm4sICJJREVOVElGWV9TWVNURU0iKTsKKwlyZXMgPSBQUWV4ZWMoY29u biwgIlNFTEVDVCAqIEZST00gcGdfY29udHJvbF9zeXN0ZW0oKTsiKTsKIAlpZiAoUFFyZXN1bHRT dGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHNlbmQgY29tbWFuZCBcIiVzXCI6ICVzIiwKIAkJCQkJICJJREVOVElGWV9T WVNURU0iLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJUFFjbGVhcihyZXMpOwogCQlk aXNjb25uZWN0X2RhdGFiYXNlKGNvbm4pOwogCQlleGl0KDEpOwogCX0KLQlpZiAoUFFudHVwbGVz KHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSA8IDMpCisJaWYgKFBRbnR1cGxlcyhyZXMpICE9 IDEgfHwgUFFuZmllbGRzKHJlcykgPCA0KQogCXsKIAkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg aWRlbnRpZnkgc3lzdGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCBy b3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCi0JCQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmll bGRzKHJlcyksIDEsIDMpOworCQkJCQkgUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAx LCA0KTsKIAogCQlQUWNsZWFyKHJlcyk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubik7CiAJ CWV4aXQoMSk7CiAJfQogCi0Jc3lzaWQgPSBzdHJ0b3U2NChQUWdldHZhbHVlKHJlcywgMCwgMCks IE5VTEwsIDEwKTsKKwlzeXNpZCA9IHN0cnRvdTY0KFBRZ2V0dmFsdWUocmVzLCAwLCAyKSwgTlVM TCwgMTApOwogCiAJcGdfbG9nX2luZm8oInN5c3RlbSBpZGVudGlmaWVyIGlzICVsbHUgb24gcHVi bGlzaGVyIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3lzaWQpOwogCkBAIC00NzcsNyArNDczLDcg QEAgZ2V0X3N5c2lkX2Zyb21fY29ubihjb25zdCBjaGFyICpjb25uaW5mbykKIC8qCiAgKiBPYnRh aW4gdGhlIHN5c3RlbSBpZGVudGlmaWVyIGZyb20gY29udHJvbCBmaWxlLiBJdCB3aWxsIGJlIHVz ZWQgdG8gY29tcGFyZQogICogaWYgYSBkYXRhIGRpcmVjdG9yeSBpcyBhIGNsb25lIG9mIGFub3Ro ZXIgb25lLiBUaGlzIHJvdXRpbmUgaXMgdXNlZCBsb2NhbGx5Ci0gKiBhbmQgYXZvaWRzIGEgcmVw bGljYXRpb24gY29ubmVjdGlvbi4KKyAqIGFuZCBhdm9pZHMgYSBjb25uZWN0aW9uIGVzdGFibGlz aG1lbnQuCiAgKi8KIHN0YXRpYyB1aW50NjQKIGdldF9jb250cm9sX2Zyb21fZGF0YWRpcihjb25z dCBjaGFyICpkYXRhZGlyKQpAQCAtOTA1LDEwICs5MDEsOCBAQCBjcmVhdGVfbG9naWNhbF9yZXBs aWNhdGlvbl9zbG90KFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbywKIAogCXBn X2xvZ19pbmZvKCJjcmVhdGluZyB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgb24gZGF0YWJh c2UgXCIlc1wiIiwgc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CiAKLQlhcHBlbmRQUUV4cEJ1 ZmZlcihzdHIsICJDUkVBVEVfUkVQTElDQVRJT05fU0xPVCBcIiVzXCIiLCBzbG90X25hbWUpOwot CWlmICh0cmFuc2llbnRfcmVwbHNsb3QpCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHN0ciwgIiBU RU1QT1JBUlkiKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihzdHIsICIgTE9HSUNBTCBcInBnb3V0 cHV0XCIgTk9FWFBPUlRfU05BUFNIT1QiKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsICJTRUxF Q1QgKiBGUk9NIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyVzJywgJ3Bnb3V0 cHV0JywgJXMsIGZhbHNlLCBmYWxzZSk7IiwKKwkJCQkJICBzbG90X25hbWUsIHRyYW5zaWVudF9y ZXBsc2xvdCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCiAJcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlz OiAlcyIsIHN0ci0+ZGF0YSk7CiAKQEAgLTk0OCwxNCArOTQyLDE1IEBAIGRyb3BfcmVwbGljYXRp b25fc2xvdChQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNvbnN0IGNoYXIg KnNsb3RfbmFtCiAKIAlwZ19sb2dfaW5mbygiZHJvcHBpbmcgdGhlIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIiIsIHNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUpOwog Ci0JYXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiRFJPUF9SRVBMSUNBVElPTl9TTE9UIFwiJXNcIiIs IHNsb3RfbmFtZSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiU0VMRUNUICogRlJPTSBwZ19k cm9wX3JlcGxpY2F0aW9uX3Nsb3QoJyVzJyk7IiwKKwkJCQkJICBzbG90X25hbWUpOwogCiAJcGdf bG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4p CiAJewogCQlyZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKLQkJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykg IT0gUEdSRVNfVFVQTEVTX09LKQogCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZHJvcCByZXBs aWNhdGlvbiBzbG90IFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwgc2xvdF9uYW1lLCBk YmluZm8tPmRibmFtZSwKIAkJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAKLS0gCjIuNDMu MAoK --_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_ Content-Type: application/octet-stream; name="v13-0004-Remove-P-and-use-primary_conninfo-instead.patch" Content-Description: v13-0004-Remove-P-and-use-primary_conninfo-instead.patch Content-Disposition: attachment; filename="v13-0004-Remove-P-and-use-primary_conninfo-instead.patch"; size=13093; creation-date="Thu, 01 Feb 2024 12:23:47 GMT"; modification-date="Thu, 01 Feb 2024 12:47:06 GMT" Content-Transfer-Encoding: base64 RnJvbSA5MTA2ZjcxZmUxZmVkYzhjM2I3M2U3ZGYzZTgwMzQzZmJiMmRjN2I2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBXZWQsIDMxIEphbiAyMDI0IDA5OjIwOjU0ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTMgNC81XSBSZW1vdmUgLVAgYW5kIHVzZSBwcmltYXJ5X2Nvbm5pbmZvIGluc3RlYWQKClhY WDogVGhpcyBtYXkgYmUgYSBwcm9ibGVtYXRpYyB3aGVuIHRoZSBPUyB1c2VyIHdobyBzdGFydGVk IHRhcmdldCBpbnN0YW5jZSBpcwpub3QgdGhlIGN1cnJlbnQgT1MgdXNlciBhbmQgUEdQQVNTV09S RCBlbnZpcm9ubWVudCB2YXJpYWJsZSB3YXMgdXNlZCBmb3IKY29ubmVjdGluZyB0byB0aGUgcHJp bWFyeSBzZXJ2ZXIuIEluIHRoaXMgY2FzZSwgdGhlIHBhc3N3b3JkIHdvdWxkIG5vdCBiZQp3cml0 dGVuIGluIHRoZSBwcmltYXJ5X2Nvbm5pbmZvIGFuZCB0aGUgUEdQQVNTV09SRCB2YXJpYWJsZSBt aWdodCBub3QgYmUgc2V0LgpUaGlzIG1heSBsZWFkIGFuIGNvbm5lY3Rpb24gZXJyb3IuIElzIHRo aXMgYSByZWFsIGlzc3VlPyBOb3RlIHRoYXQgdXNpbmcKUEdQQVNTV09SRCBpcyBub3QgcmVjb21t ZW5kZWQuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwgICAg IHwgIDE3ICstLQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyAg IHwgMTA1ICsrKysrKysrKysrKy0tLS0tLQogLi4uL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIu cGwgICAgICAgICAgICAgIHwgICA4IC0tCiAuLi4vdC8wNDFfcGdfY3JlYXRlc3Vic2NyaWJlcl9z dGFuZGJ5LnBsICAgICAgfCAgIDUgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygr KSwgNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVh dGVzdWJzY3JpYmVyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIu c2dtbAppbmRleCA1M2I0MmU2MTYxLi4wYWJlMWY2ZjI4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3Bn X2NyZWF0ZXN1YnNjcmliZXIuc2dtbApAQCAtMjksMTEgKzI5LDYgQEAgUG9zdGdyZVNRTCBkb2N1 bWVudGF0aW9uCiAgICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+PG9wdGlvbj4tLXBnZGF0YTwvb3B0 aW9uPjwvYXJnPgogICAgIDwvZ3JvdXA+CiAgICAgPHJlcGxhY2VhYmxlPmRhdGFkaXI8L3JlcGxh Y2VhYmxlPgotICAgIDxncm91cCBjaG9pY2U9InJlcSI+Ci0gICAgIDxhcmcgY2hvaWNlPSJwbGFp biI+PG9wdGlvbj4tUDwvb3B0aW9uPjwvYXJnPgotICAgICA8YXJnIGNob2ljZT0icGxhaW4iPjxv cHRpb24+LS1wdWJsaXNoZXItc2VydmVyPC9vcHRpb24+PC9hcmc+Ci0gICAgPC9ncm91cD4KLSAg ICA8cmVwbGFjZWFibGU+Y29ubnN0cjwvcmVwbGFjZWFibGU+CiAgICAgPGdyb3VwIGNob2ljZT0i cmVxIj4KICAgICAgPGFyZyBjaG9pY2U9InBsYWluIj48b3B0aW9uPi1TPC9vcHRpb24+PC9hcmc+ CiAgICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+PG9wdGlvbj4tLXN1YnNjcmliZXItc2VydmVyPC9v cHRpb24+PC9hcmc+CkBAIC04MywxNiArNzgsNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24K ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCi0gICAgIDx2YXJsaXN0 ZW50cnk+Ci0gICAgICA8dGVybT48b3B0aW9uPi1QICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29ubnN0cjwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgotICAgICAgPHRlcm0+ PG9wdGlvbj4tLXB1Ymxpc2hlci1zZXJ2ZXI9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbm5zdHI8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KLSAgICAgIDxsaXN0aXRlbT4K LSAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIGNvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJs aXNoZXIuIEZvciBkZXRhaWxzIHNlZSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25uc3RyaW5nIi8+ LgotICAgICAgIDwvcGFyYT4KLSAgICAgIDwvbGlzdGl0ZW0+Ci0gICAgIDwvdmFybGlzdGVudHJ5 PgotCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi1TIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25uc3RyPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rl cm0+CiAgICAgICA8dGVybT48b3B0aW9uPi0tc3Vic2NyaWJlci1zZXJ2ZXI9PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5zdHI8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4K QEAgLTMwNCw3ICsyODksNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgIFRvIGNyZWF0 ZSBhIGxvZ2ljYWwgcmVwbGljYSBmb3IgZGF0YWJhc2VzIDxsaXRlcmFsPmhyPC9saXRlcmFsPiBh bmQKICAgIDxsaXRlcmFsPmZpbmFuY2U8L2xpdGVyYWw+IGZyb20gYSBwaHlzaWNhbCByZXBsaWNh IGF0IDxsaXRlcmFsPmZvbzwvbGl0ZXJhbD46CiA8c2NyZWVuPgotPHByb21wdD4kPC9wcm9tcHQ+ IDx1c2VyaW5wdXQ+cGdfY3JlYXRlc3Vic2NyaWJlciAtRCAvdXNyL2xvY2FsL3Bnc3FsL2RhdGEg LVAgImhvc3Q9Zm9vIiAtUyAiaG9zdD1sb2NhbGhvc3QiIC1kIGhyIC1kIGZpbmFuY2U8L3VzZXJp bnB1dD4KKzxwcm9tcHQ+JDwvcHJvbXB0PiA8dXNlcmlucHV0PnBnX2NyZWF0ZXN1YnNjcmliZXIg LUQgL3Vzci9sb2NhbC9wZ3NxbC9kYXRhIC1TICJob3N0PWxvY2FsaG9zdCIgLWQgaHIgLWQgZmlu YW5jZTwvdXNlcmlucHV0PgogPC9zY3JlZW4+CiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyBiL3NyYy9iaW4vcGdfYmFz ZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKaW5kZXggOWMxNjUzMzQ1OC4uMDIyOTFiYTUw NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIu YworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCkBAIC0y OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiZmVfdXRpbHMvcmVjb3ZlcnlfZ2VuLmgiCiAjaW5jbHVk ZSAiZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgorI2lu Y2x1ZGUgInBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy9waWRmaWxlLmgiCiAKICNkZWZpbmUJUEdT X09VVFBVVF9ESVIJInBnX2NyZWF0ZXN1YnNjcmliZXJfb3V0cHV0LmQiCkBAIC01MSwxMCArNTIs MTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcEluZm8KIAogc3RhdGljIHZvaWQgY2xlYW51 cF9vYmplY3RzX2F0ZXhpdCh2b2lkKTsKIHN0YXRpYyB2b2lkIHVzYWdlKCk7Ci1zdGF0aWMgY2hh ciAqZ2V0X2Jhc2VfY29ubmluZm8oY2hhciAqY29ubmluZm8sIGNoYXIgKmRibmFtZSwKLQkJCQkJ CQkgICBjb25zdCBjaGFyICpub2Rlcm9sZSk7CitzdGF0aWMgY2hhciAqZ2V0X2Jhc2VfY29ubmlu Zm8oY2hhciAqY29ubmluZm8sIGNoYXIgKmRibmFtZSk7CiBzdGF0aWMgYm9vbCBnZXRfZXhlY19w YXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogc3RhdGljIGJvb2wgY2hlY2tfZGF0YV9kaXJlY3Rvcnko Y29uc3QgY2hhciAqZGF0YWRpcik7CitzdGF0aWMgY2hhciAqZ2V0X3ByaW1hcnlfY29ubmluZm8o Y29uc3QgY2hhciAqYmFzZV9jb25uaW5mbyk7CiBzdGF0aWMgY2hhciAqY29uY2F0X2Nvbm5pbmZv X2RibmFtZShjb25zdCBjaGFyICpjb25uaW5mbywgY29uc3QgY2hhciAqZGJuYW1lKTsKIHN0YXRp YyBMb2dpY2FsUmVwSW5mbyAqc3RvcmVfcHViX3N1Yl9pbmZvKGNvbnN0IGNoYXIgKnB1Yl9iYXNl X2Nvbm5pbmZvLCBjb25zdCBjaGFyICpzdWJfYmFzZV9jb25uaW5mbyk7CiBzdGF0aWMgUEdjb25u ICpjb25uZWN0X2RhdGFiYXNlKGNvbnN0IGNoYXIgKmNvbm5pbmZvKTsKQEAgLTg4LDcgKzg5LDYg QEAgc3RhdGljIHZvaWQgZW5hYmxlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2ljYWxS ZXBJbmZvICpkYmluZm8pOwogc3RhdGljIGNvbnN0IGNoYXIgKnByb2duYW1lOwogCiBzdGF0aWMg Y2hhciAqc3Vic2NyaWJlcl9kaXIgPSBOVUxMOwotc3RhdGljIGNoYXIgKnB1Yl9jb25uaW5mb19z dHIgPSBOVUxMOwogc3RhdGljIGNoYXIgKnN1Yl9jb25uaW5mb19zdHIgPSBOVUxMOwogc3RhdGlj IFNpbXBsZVN0cmluZ0xpc3QgZGF0YWJhc2VfbmFtZXMgPSB7TlVMTCwgTlVMTH07CiBzdGF0aWMg Y2hhciAqcHJpbWFyeV9zbG90X25hbWUgPSBOVUxMOwpAQCAtMTY3LDcgKzE2Nyw2IEBAIHVzYWdl KHZvaWQpCiAJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi5cbiIpLCBwcm9nbmFtZSk7CiAJcHJp bnRmKF8oIlxuT3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiIC1ELCAtLXBnZGF0YT1EQVRBRElS ICAgICAgICAgICAgICAgIGxvY2F0aW9uIGZvciB0aGUgc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9y eVxuIikpOwotCXByaW50ZihfKCIgLVAsIC0tcHVibGlzaGVyLXNlcnZlcj1DT05OU1RSICAgICAg cHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nXG4iKSk7CiAJcHJpbnRmKF8oIiAtUywgLS1zdWJz Y3JpYmVyLXNlcnZlcj1DT05OU1RSICAgICBzdWJzY3JpYmVyIGNvbm5lY3Rpb24gc3RyaW5nXG4i KSk7CiAJcHJpbnRmKF8oIiAtZCwgLS1kYXRhYmFzZT1EQk5BTUUgICAgICAgICAgICAgICBkYXRh YmFzZSB0byBjcmVhdGUgYSBzdWJzY3JpcHRpb25cbiIpKTsKIAlwcmludGYoXygiIC1uLCAtLWRy eS1ydW4gICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYmVmb3JlIG1vZGlmeWluZyBhbnl0aGlu Z1xuIikpOwpAQCAtMTkyLDcgKzE5MSw3IEBAIHVzYWdlKHZvaWQpCiAgKiBkYm5hbWUuCiAgKi8K IHN0YXRpYyBjaGFyICoKLWdldF9iYXNlX2Nvbm5pbmZvKGNoYXIgKmNvbm5pbmZvLCBjaGFyICpk Ym5hbWUsIGNvbnN0IGNoYXIgKm5vZGVyb2xlKQorZ2V0X2Jhc2VfY29ubmluZm8oY2hhciAqY29u bmluZm8sIGNoYXIgKmRibmFtZSkKIHsKIAlQUUV4cEJ1ZmZlciBidWYgPSBjcmVhdGVQUUV4cEJ1 ZmZlcigpOwogCVBRY29ubmluZm9PcHRpb24gKmNvbm5fb3B0cyA9IE5VTEw7CkBAIC0yMDEsNyAr MjAwLDcgQEAgZ2V0X2Jhc2VfY29ubmluZm8oY2hhciAqY29ubmluZm8sIGNoYXIgKmRibmFtZSwg Y29uc3QgY2hhciAqbm9kZXJvbGUpCiAJY2hhcgkgICAqcmV0OwogCWludAkJCWk7CiAKLQlwZ19s b2dfaW5mbygidmFsaWRhdGluZyBjb25uZWN0aW9uIHN0cmluZyBvbiAlcyIsIG5vZGVyb2xlKTsK KwlwZ19sb2dfaW5mbygidmFsaWRhdGluZyBjb25uZWN0aW9uIHN0cmluZyBvbiBzdWJzY3JpYmVy Iik7CiAKIAljb25uX29wdHMgPSBQUWNvbm5pbmZvUGFyc2UoY29ubmluZm8sICZlcnJtc2cpOwog CWlmIChjb25uX29wdHMgPT0gTlVMTCkKQEAgLTQyNSw2ICs0MjQsNTggQEAgZGlzY29ubmVjdF9k YXRhYmFzZShQR2Nvbm4gKmNvbm4pCiAJUFFmaW5pc2goY29ubik7CiB9CiAKKy8qCisgKiBPYnRh aW4gcHJpbWFyeV9jb25uaW5mbyBmcm9tIHRoZSB0YXJnZXQgc2VydmVyLiBUaGUgdmFsdWUgd291 bGQgYmUgdXNlZCBmb3IKKyAqIGNvbm5lY3RpbmcgZnJvbSB0aGUgcGdfY3JlYXRlc3Vic2NyaWJl ciBpdHNlbGYgYW5kIGxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkKKyAqIHdvcmtlci4KKyAqLwor c3RhdGljIGNoYXIgKgorZ2V0X3ByaW1hcnlfY29ubmluZm8oY29uc3QgY2hhciAqYmFzZV9jb25u aW5mbykKK3sKKwlQR2Nvbm4JICAgKmNvbm47CisJUEdyZXN1bHQgICAqcmVzOworCWNoYXIJICAg KmNvbm5pbmZvOworCWNoYXIJICAgKnByaW1hcnljb25uaW5mbzsKKworCXBnX2xvZ19pbmZvKCJn ZXR0aW5nIHByaW1hcnlfY29ubmluZm8gZnJvbSBzdGFuZGJ5Iik7CisKKwkvKgorCSAqIENvbnN0 cnVjdCBhIGNvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSB0YXJnZXQgaW5zdGFuY2UuIFNpbmNlIGRi aW5mbyBoYXMKKwkgKiBub3Qgc3RvcmVkIGluZm9tYXRpb24geWV0LCB3ZSBtdXN0IGRpcmVjdGx5 IGdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUKKwkgKiBkYXRhYmFzZSBsaXN0LgorCSAqLwor CWNvbm5pbmZvID0gY29uY2F0X2Nvbm5pbmZvX2RibmFtZShiYXNlX2Nvbm5pbmZvLCBkYXRhYmFz ZV9uYW1lcy5oZWFkLT52YWwpOworCisJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoY29ubmluZm8p OworCWlmIChjb25uID09IE5VTEwpCisJCWV4aXQoMSk7CisKKwlyZXMgPSBQUWV4ZWMoY29ubiwg IlNIT1cgcHJpbWFyeV9jb25uaW5mbzsiKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIGNvbW1h bmQgXCIlc1wiOiAlcyIsCisJCQkJCSAiU0hPVyBwcmltYXJ5X2Nvbm5pbmZvOyIsIFBRcmVzdWx0 RXJyb3JNZXNzYWdlKHJlcykpOworCQlQUWNsZWFyKHJlcyk7CisJCWRpc2Nvbm5lY3RfZGF0YWJh c2UoY29ubik7CisJCWV4aXQoMSk7CisJfQorCisJcHJpbWFyeWNvbm5pbmZvID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CisKKwlpZiAoc3RybGVuKHByaW1hcnljb25uaW5mbykg PT0gMCkKKwl7CisJCXBnX2xvZ19lcnJvcigicHJpbWFyeV9jb25uaW5mbyBpcyBlbXB0eSIpOwor CQlwZ19sb2dfZXJyb3JfaGludCgiQ2hlY2sgd2hldGhlciB0aGUgdGFyZ2V0IHNlcnZlciBpcyBy ZWFsbHkgYSBwaHlzaWNhbCBzdGFuZGJ5LiIpOworCQlleGl0KDEpOworCX0KKworCXBnX2ZyZWUo Y29ubmluZm8pOworCVBRY2xlYXIocmVzKTsKKwlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4pOwor CisJcmV0dXJuIHByaW1hcnljb25uaW5mbzsKK30KKwogLyoKICAqIE9idGFpbiB0aGUgc3lzdGVt IGlkZW50aWZpZXIgdXNpbmcgdGhlIHByb3ZpZGVkIGNvbm5lY3Rpb24uIEl0IHdpbGwgYmUgdXNl ZAogICogdG8gY29tcGFyZSBpZiBhIGRhdGEgZGlyZWN0b3J5IGlzIGEgY2xvbmUgb2YgYW5vdGhl ciBvbmUuCkBAIC0xMjU2LDE1ICsxMzA3LDE4IEBAIGNyZWF0ZV9zdWJzY3JpcHRpb24oUEdjb25u ICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogewogCVBRRXhwQnVmZmVyIHN0ciA9IGNy ZWF0ZVBRRXhwQnVmZmVyKCk7CiAJUEdyZXN1bHQgICAqcmVzOworCWNoYXIJICAgKmNvbm5pbmZv OwogCiAJQXNzZXJ0KGNvbm4gIT0gTlVMTCk7CiAKIAlwZ19sb2dfaW5mbygiY3JlYXRpbmcgc3Vi c2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCIiLCBkYmluZm8tPnN1Ym5hbWUsIGRi aW5mby0+ZGJuYW1lKTsKIAorCWNvbm5pbmZvID0gZXNjYXBlX3NpbmdsZV9xdW90ZXNfYXNjaWko ZGJpbmZvLT5wdWJjb25uaW5mbyk7CisKIAlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsCiAJCQkJCSAg IkNSRUFURSBTVUJTQ1JJUFRJT04gJXMgQ09OTkVDVElPTiAnJXMnIFBVQkxJQ0FUSU9OICVzICIK IAkJCQkJICAiV0lUSCAoY3JlYXRlX3Nsb3QgPSBmYWxzZSwgY29weV9kYXRhID0gZmFsc2UsIGVu YWJsZWQgPSBmYWxzZSkiLAotCQkJCQkgIGRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5wdWJjb25u aW5mbywgZGJpbmZvLT5wdWJuYW1lKTsKKwkJCQkJICBkYmluZm8tPnN1Ym5hbWUsIGNvbm5pbmZv LCBkYmluZm8tPnB1Ym5hbWUpOwogCiAJcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0 ci0+ZGF0YSk7CiAKQEAgLTEyODYsNiArMTM0MCw3IEBAIGNyZWF0ZV9zdWJzY3JpcHRpb24oUEdj b25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCWlmICghZHJ5X3J1bikKIAkJUFFj bGVhcihyZXMpOwogCisJcGdfZnJlZShjb25uaW5mbyk7CiAJZGVzdHJveVBRRXhwQnVmZmVyKHN0 cik7CiB9CiAKQEAgLTE0NTIsNyArMTUwNyw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCQl7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwgJz8nfSwKIAkJeyJ2ZXJzaW9uIiwgbm9f YXJndW1lbnQsIE5VTEwsICdWJ30sCiAJCXsicGdkYXRhIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsICdEJ30sCi0JCXsicHVibGlzaGVyLXNlcnZlciIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxM LCAnUCd9LAogCQl7InN1YnNjcmliZXItc2VydmVyIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws ICdTJ30sCiAJCXsiZGF0YWJhc2UiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2QnfSwKIAkJ eyJkcnktcnVuIiwgbm9fYXJndW1lbnQsIE5VTEwsICduJ30sCkBAIC0xNTE5LDcgKzE1NzMsNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl9CiAjZW5kaWYKIAotCXdoaWxlICgoYyA9 IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJEOlA6UzpkOm5ydDp2IiwKKwl3aGlsZSAoKGMgPSBn ZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiRDpTOmQ6bnJ0OnYiLAogCQkJCQkJCWxvbmdfb3B0aW9u cywgJm9wdGlvbl9pbmRleCkpICE9IC0xKQogCXsKIAkJc3dpdGNoIChjKQpAQCAtMTUyNyw5ICsx NTgxLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlICdEJzoKIAkJCQlz dWJzY3JpYmVyX2RpciA9IHBnX3N0cmR1cChvcHRhcmcpOwogCQkJCWJyZWFrOwotCQkJY2FzZSAn UCc6Ci0JCQkJcHViX2Nvbm5pbmZvX3N0ciA9IHBnX3N0cmR1cChvcHRhcmcpOwotCQkJCWJyZWFr OwogCQkJY2FzZSAnUyc6CiAJCQkJc3ViX2Nvbm5pbmZvX3N0ciA9IHBnX3N0cmR1cChvcHRhcmcp OwogCQkJCWJyZWFrOwpAQCAtMTU4MSwzNCArMTYzMiwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkJZXhpdCgxKTsKIAl9CiAKLQkvKgotCSAqIFBhcnNlIGNvbm5lY3Rpb24gc3Ry aW5nLiBCdWlsZCBhIGJhc2UgY29ubmVjdGlvbiBzdHJpbmcgdGhhdCBtaWdodCBiZQotCSAqIHJl dXNlZCBieSBtdWx0aXBsZSBkYXRhYmFzZXMuCi0JICovCi0JaWYgKHB1Yl9jb25uaW5mb19zdHIg PT0gTlVMTCkKLQl7Ci0JCS8qCi0JCSAqIFRPRE8gdXNlIHByaW1hcnlfY29ubmluZm8gKGlmIGF2 YWlsYWJsZSkgZnJvbSBzdWJzY3JpYmVyIGFuZAotCQkgKiBleHRyYWN0IHB1Ymxpc2hlciBjb25u ZWN0aW9uIHN0cmluZy4gQXNzdW1lIHRoYXQgdGhlcmUgYXJlCi0JCSAqIGlkZW50aWNhbCBlbnRy aWVzIGZvciBwaHlzaWNhbCBhbmQgbG9naWNhbCByZXBsaWNhdGlvbi4gSWYgdGhlcmUgaXMKLQkJ ICogbm90LCB3ZSB3b3VsZCBmYWlsIGFueXdheS4KLQkJICovCi0JCXBnX2xvZ19lcnJvcigibm8g cHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNpZmllZCIpOwotCQlwZ19sb2dfZXJyb3Jf aGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUp OwotCQlleGl0KDEpOwotCX0KLQlwdWJfYmFzZV9jb25uaW5mbyA9IGdldF9iYXNlX2Nvbm5pbmZv KHB1Yl9jb25uaW5mb19zdHIsIGRibmFtZV9jb25uaW5mbywKLQkJCQkJCQkJCQkgICJwdWJsaXNo ZXIiKTsKLQlpZiAocHViX2Jhc2VfY29ubmluZm8gPT0gTlVMTCkKLQkJZXhpdCgxKTsKLQogCWlm IChzdWJfY29ubmluZm9fc3RyID09IE5VTEwpCiAJewogCQlwZ19sb2dfZXJyb3IoIm5vIHN1YnNj cmliZXIgY29ubmVjdGlvbiBzdHJpbmcgc3BlY2lmaWVkIik7CiAJCXBnX2xvZ19lcnJvcl9oaW50 KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CiAJ CWV4aXQoMSk7CiAJfQotCXN1Yl9iYXNlX2Nvbm5pbmZvID0gZ2V0X2Jhc2VfY29ubmluZm8oc3Vi X2Nvbm5pbmZvX3N0ciwgTlVMTCwgInN1YnNjcmliZXIiKTsKKwlzdWJfYmFzZV9jb25uaW5mbyA9 IGdldF9iYXNlX2Nvbm5pbmZvKHN1Yl9jb25uaW5mb19zdHIsIGRibmFtZV9jb25uaW5mbyk7CiAJ aWYgKHN1Yl9iYXNlX2Nvbm5pbmZvID09IE5VTEwpCiAJCWV4aXQoMSk7CiAKQEAgLTE2MTgsNyAr MTY0OCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCS8qCiAJCSAqIElmIC0t ZGF0YWJhc2Ugb3B0aW9uIGlzIG5vdCBwcm92aWRlZCwgdHJ5IHRvIG9idGFpbiB0aGUgZGJuYW1l IGZyb20KLQkJICogdGhlIHB1Ymxpc2hlciBjb25uaW5mby4gSWYgZGJuYW1lIHBhcmFtZXRlciBp cyBub3QgYXZhaWxhYmxlLCBlcnJvcgorCQkgKiB0aGUgc3Vic2NyaWJlciBjb25uaW5mby4gSWYg ZGJuYW1lIHBhcmFtZXRlciBpcyBub3QgYXZhaWxhYmxlLCBlcnJvcgogCQkgKiBvdXQuCiAJCSAq LwogCQlpZiAoZGJuYW1lX2Nvbm5pbmZvKQpAQCAtMTYyNiw3ICsxNjU2LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKCZkYXRhYmFz ZV9uYW1lcywgZGJuYW1lX2Nvbm5pbmZvKTsKIAkJCW51bV9kYnMrKzsKIAotCQkJcGdfbG9nX2lu Zm8oImRhdGFiYXNlIFwiJXNcIiB3YXMgZXh0cmFjdGVkIGZyb20gdGhlIHB1Ymxpc2hlciBjb25u ZWN0aW9uIHN0cmluZyIsCisJCQlwZ19sb2dfaW5mbygiZGF0YWJhc2UgXCIlc1wiIHdhcyBleHRy YWN0ZWQgZnJvbSB0aGUgc3Vic2NyaWJlciBjb25uZWN0aW9uIHN0cmluZyIsCiAJCQkJCQlkYm5h bWVfY29ubmluZm8pOwogCQl9CiAJCWVsc2UKQEAgLTE2MzcsNiArMTY2Nyw5IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJfQogCisJLyogT2J0YWluIGEgY29ubmVjdGlvbiBz dHJpbmcgZnJvbSB0aGUgdGFyZ2V0ICovCisJcHViX2Jhc2VfY29ubmluZm8gPSBnZXRfcHJpbWFy eV9jb25uaW5mbyhzdWJfYmFzZV9jb25uaW5mbyk7CisKIAkvKgogCSAqIEdldCB0aGUgYWJzb2x1 dGUgcGF0aCBvZiBwZ19jdGwgYW5kIHBnX3Jlc2V0d2FsIG9uIHRoZSBzdWJzY3JpYmVyLgogCSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNj cmliZXIucGwgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJl ci5wbAppbmRleCAwZjAyYjFiZmFjLi41YzI0MGE1NDE3IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2Jhc2ViYWNrdXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbAorKysgYi9zcmMvYmluL3Bn X2Jhc2ViYWNrdXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbApAQCAtMTcsMTggKzE3LDEx IEBAIG15ICRkYXRhZGlyID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRlbXBkaXI7CiAKIGNv bW1hbmRfZmFpbHMoWydwZ19jcmVhdGVzdWJzY3JpYmVyJ10sCiAJJ25vIHN1YnNjcmliZXIgZGF0 YSBkaXJlY3Rvcnkgc3BlY2lmaWVkJyk7Ci1jb21tYW5kX2ZhaWxzKAotCVsKLQkJJ3BnX2NyZWF0 ZXN1YnNjcmliZXInLAotCQknLS1wZ2RhdGEnLCAkZGF0YWRpcgotCV0sCi0JJ25vIHB1Ymxpc2hl ciBjb25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQnKTsKIGNvbW1hbmRfZmFpbHMoCiAJWwogCQkn cGdfY3JlYXRlc3Vic2NyaWJlcicsCiAJCSctLWRyeS1ydW4nLAogCQknLS1wZ2RhdGEnLCAkZGF0 YWRpciwKLQkJJy0tcHVibGlzaGVyLXNlcnZlcicsICdkYm5hbWU9cG9zdGdyZXMnCiAJXSwKIAkn bm8gc3Vic2NyaWJlciBjb25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQnKTsKIGNvbW1hbmRfZmFp bHMoCkBAIC0zNiw3ICsyOSw2IEBAIGNvbW1hbmRfZmFpbHMoCiAJCSdwZ19jcmVhdGVzdWJzY3Jp YmVyJywKIAkJJy0tdmVyYm9zZScsCiAJCSctLXBnZGF0YScsICRkYXRhZGlyLAotCQknLS1wdWJs aXNoZXItc2VydmVyJywgJ2RibmFtZT1wb3N0Z3JlcycsCiAJCSctLXN1YnNjcmliZXItc2VydmVy JywgJ2RibmFtZT1wb3N0Z3JlcycKIAldLAogCSdubyBkYXRhYmFzZSBuYW1lIHNwZWNpZmllZCcp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQxX3BnX2NyZWF0ZXN1YnNj cmliZXJfc3RhbmRieS5wbCBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MV9wZ19jcmVhdGVz dWJzY3JpYmVyX3N0YW5kYnkucGwKaW5kZXggNTM0YmM1M2E3Ni4uYTlkMDNhY2M4NyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQxX3BnX2NyZWF0ZXN1YnNjcmliZXJfc3Rh bmRieS5wbAorKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wNDFfcGdfY3JlYXRlc3Vic2Ny aWJlcl9zdGFuZGJ5LnBsCkBAIC01NiwxOSArNTYsMTcgQEAgY29tbWFuZF9mYWlscygKIAlbCiAJ CSdwZ19jcmVhdGVzdWJzY3JpYmVyJywgJy0tdmVyYm9zZScsCiAJCSctLXBnZGF0YScsICRub2Rl X2YtPmRhdGFfZGlyLAotCQknLS1wdWJsaXNoZXItc2VydmVyJywgJG5vZGVfcC0+Y29ubnN0cign cGcxJyksCiAJCSctLXN1YnNjcmliZXItc2VydmVyJywgJG5vZGVfZi0+Y29ubnN0cigncGcxJyks CiAJCSctLWRhdGFiYXNlJywgJ3BnMScsCiAJCSctLWRhdGFiYXNlJywgJ3BnMicKIAldLAotCSdz dWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5IGlzIG5vdCBhIGNvcHkgb2YgdGhlIHNvdXJjZSBkYXRh YmFzZSBjbHVzdGVyJyk7CisJJ3RhcmdldCBkYXRhYmFzZSBpcyBub3QgYSBwaHlzaWNhbCBzdGFu ZGJ5Jyk7CiAKICMgZHJ5IHJ1biBtb2RlIG9uIG5vZGUgUwogY29tbWFuZF9vaygKIAlbCiAJCSdw Z19jcmVhdGVzdWJzY3JpYmVyJywgJy0tdmVyYm9zZScsICctLWRyeS1ydW4nLAogCQknLS1wZ2Rh dGEnLCAkbm9kZV9zLT5kYXRhX2RpciwKLQkJJy0tcHVibGlzaGVyLXNlcnZlcicsICRub2RlX3At PmNvbm5zdHIoJ3BnMScpLAogCQknLS1zdWJzY3JpYmVyLXNlcnZlcicsICRub2RlX3MtPmNvbm5z dHIoJ3BnMScpLAogCQknLS1kYXRhYmFzZScsICdwZzEnLAogCQknLS1kYXRhYmFzZScsICdwZzIn CkBAIC04OCw3ICs4Niw2IEBAIGNvbW1hbmRfb2soCiAJWwogCQkncGdfY3JlYXRlc3Vic2NyaWJl cicsICctLXZlcmJvc2UnLAogCQknLS1wZ2RhdGEnLCAkbm9kZV9zLT5kYXRhX2RpciwKLQkJJy0t cHVibGlzaGVyLXNlcnZlcicsICRub2RlX3AtPmNvbm5zdHIoJ3BnMScpLAogCQknLS1zdWJzY3Jp YmVyLXNlcnZlcicsICRub2RlX3MtPmNvbm5zdHIoJ3BnMScpLAogCQknLS1kYXRhYmFzZScsICdw ZzEnLAogCQknLS1kYXRhYmFzZScsICdwZzInCi0tIAoyLjQzLjAKCg== --_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_ Content-Type: application/octet-stream; name="v13-0005-Divide-LogicalReplInfo-into-some-strcutures.patch" Content-Description: v13-0005-Divide-LogicalReplInfo-into-some-strcutures.patch Content-Disposition: attachment; filename="v13-0005-Divide-LogicalReplInfo-into-some-strcutures.patch"; size=51130; creation-date="Thu, 01 Feb 2024 12:23:46 GMT"; modification-date="Thu, 01 Feb 2024 12:47:06 GMT" Content-Transfer-Encoding: base64 RnJvbSA2YWQ5Y2UyZWJjNWMwZmVjZjk0MTJlNjZiZjdlYzJmYzYyZDc2MjEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDI5IEphbiAyMDI0IDA3OjAzOjU5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTMgNS81XSBEaXZpZGUgTG9naWNhbFJlcGxJbmZvIGludG8gc29tZSBzdHJjdXR1cmVzCgot LS0KIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMgICB8IDY0OCAr KysrKysrKysrLS0tLS0tLS0KIC4uLi90LzA0MV9wZ19jcmVhdGVzdWJzY3JpYmVyX3N0YW5kYnku cGwgICAgICB8ICAgMyArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAg ICAgICAgIHwgICA1ICstCiAzIGZpbGVzIGNoYW5nZWQsIDM1MSBpbnNlcnRpb25zKCspLCAzMDUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0 ZXN1YnNjcmliZXIuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVy LmMKaW5kZXggMDIyOTFiYTUwNS4uYmQ1NTYzOTI1MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19i YXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCkBAIC0zMyw1NCArMzMsNzggQEAKIAogI2RlZmluZQlQ R1NfT1VUUFVUX0RJUgkicGdfY3JlYXRlc3Vic2NyaWJlcl9vdXRwdXQuZCIKIAotdHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcEluZm8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBQZXJkYkluZm8K IHsKLQlPaWQJCQlvaWQ7CQkJLyogZGF0YWJhc2UgT0lEICovCi0JY2hhcgkgICAqZGJuYW1lOwkJ CS8qIGRhdGFiYXNlIG5hbWUgKi8KLQljaGFyCSAgICpwdWJjb25uaW5mbzsJLyogcHVibGljYXRp b24gY29ubmVjdGlvbiBzdHJpbmcgZm9yIGxvZ2ljYWwKLQkJCQkJCQkJICogcmVwbGljYXRpb24g Ki8KLQljaGFyCSAgICpzdWJjb25uaW5mbzsJLyogc3Vic2NyaXB0aW9uIGNvbm5lY3Rpb24gc3Ry aW5nIGZvciBsb2dpY2FsCi0JCQkJCQkJCSAqIHJlcGxpY2F0aW9uICovCi0JY2hhcgkgICAqcHVi bmFtZTsJCS8qIHB1YmxpY2F0aW9uIG5hbWUgKi8KLQljaGFyCSAgICpzdWJuYW1lOwkJLyogc3Vi c2NyaXB0aW9uIG5hbWUgKGFsc28gcmVwbGljYXRpb24gc2xvdAotCQkJCQkJCQkgKiBuYW1lKSAq LwotCi0JYm9vbAkJbWFkZV9yZXBsc2xvdDsJLyogcmVwbGljYXRpb24gc2xvdCB3YXMgY3JlYXRl ZCAqLwotCWJvb2wJCW1hZGVfcHVibGljYXRpb247CS8qIHB1YmxpY2F0aW9uIHdhcyBjcmVhdGVk ICovCi0JYm9vbAkJbWFkZV9zdWJzY3JpcHRpb247CS8qIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRl ZCAqLwotfSBMb2dpY2FsUmVwSW5mbzsKKwlPaWQJCW9pZDsKKwljaGFyICAgKmRibmFtZTsKKwli b29sCW1hZGVfcmVwbHNsb3Q7CQkvKiByZXBsaWNhdGlvbiBzbG90IHdhcyBjcmVhdGVkICovCisJ Ym9vbAltYWRlX3B1YmxpY2F0aW9uOwkvKiBwdWJsaWNhdGlvbiB3YXMgY3JlYXRlZCAqLworCWJv b2wJbWFkZV9zdWJzY3JpcHRpb247IAkvKiBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQgKi8KK30g TG9naWNhbFJlcFBlcmRiSW5mbzsKKwordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFBlcmRiSW5m b0FycgoreworCUxvZ2ljYWxSZXBQZXJkYkluZm8gICAgKnBlcmRiOwkvKiBhcnJheSBvZiBkYiBp bmZvcyAqLworCWludAkJCQkJCW5kYnM7CS8qIG51bWJlciBvZiBkYiBpbmZvcyAqLworfSBMb2dp Y2FsUmVwUGVyZGJJbmZvQXJyOworCit0eXBlZGVmIHN0cnVjdCBQcmltYXJ5SW5mbworeworCWNo YXIgICAqYmFzZV9jb25uaW5mbzsKKwl1aW50NjQJc3lzaWQ7CisJYm9vbAltYWRlX3RyYW5zaWVu dF9yZXBsc2xvdDsKK30gUHJpbWFyeUluZm87CisKK3R5cGVkZWYgc3RydWN0IFN0YW5kYnlJbmZv Cit7CisJY2hhciAgICpiYXNlX2Nvbm5pbmZvOworCWNoYXIgICAqYmluZGlyOworCWNoYXIgICAq cGdkYXRhOworCWNoYXIgICAqcHJpbWFyeV9zbG90X25hbWU7CisJY2hhciAgICpzZXJ2ZXJfbG9n OworCXVpbnQ2NAlzeXNpZDsKK30gU3RhbmRieUluZm87CiAKIHN0YXRpYyB2b2lkIGNsZWFudXBf b2JqZWN0c19hdGV4aXQodm9pZCk7CiBzdGF0aWMgdm9pZCB1c2FnZSgpOwotc3RhdGljIGNoYXIg KmdldF9iYXNlX2Nvbm5pbmZvKGNoYXIgKmNvbm5pbmZvLCBjaGFyICpkYm5hbWUpOwotc3RhdGlj IGJvb2wgZ2V0X2V4ZWNfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKK3N0YXRpYyBib29sIGdldF9l eGVjX2Jhc2VfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKIHN0YXRpYyBib29sIGNoZWNrX2RhdGFf ZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRhdGFkaXIpOwotc3RhdGljIGNoYXIgKmdldF9wcmltYXJ5 X2Nvbm5pbmZvKGNvbnN0IGNoYXIgKmJhc2VfY29ubmluZm8pOworc3RhdGljIGNoYXIgKmdldF9w cmltYXJ5X2Nvbm5pbmZvKFN0YW5kYnlJbmZvICpzdGFuZGJ5KTsKIHN0YXRpYyBjaGFyICpjb25j YXRfY29ubmluZm9fZGJuYW1lKGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBjb25zdCBjaGFyICpkYm5h bWUpOwotc3RhdGljIExvZ2ljYWxSZXBJbmZvICpzdG9yZV9wdWJfc3ViX2luZm8oY29uc3QgY2hh ciAqcHViX2Jhc2VfY29ubmluZm8sIGNvbnN0IGNoYXIgKnN1Yl9iYXNlX2Nvbm5pbmZvKTsKLXN0 YXRpYyBQR2Nvbm4gKmNvbm5lY3RfZGF0YWJhc2UoY29uc3QgY2hhciAqY29ubmluZm8pOworc3Rh dGljIHZvaWQgc3RvcmVfZGJfbmFtZXMoTG9naWNhbFJlcFBlcmRiSW5mbyAqKnBlcmRiLCBpbnQg bmRicyk7CitzdGF0aWMgUEdjb25uICpjb25uZWN0X2RhdGFiYXNlKGNvbnN0IGNoYXIgKmJhc2Vf Y29ubmluZm8sIGNvbnN0IGNoYXIqZGJuYW1lKTsKIHN0YXRpYyB2b2lkIGRpc2Nvbm5lY3RfZGF0 YWJhc2UoUEdjb25uICpjb25uKTsKLXN0YXRpYyB1aW50NjQgZ2V0X3N5c2lkX2Zyb21fY29ubihj b25zdCBjaGFyICpjb25uaW5mbyk7Ci1zdGF0aWMgdWludDY0IGdldF9jb250cm9sX2Zyb21fZGF0 YWRpcihjb25zdCBjaGFyICpkYXRhZGlyKTsKLXN0YXRpYyB2b2lkIG1vZGlmeV9zeXNpZChjb25z dCBjaGFyICpwZ19yZXNldHdhbF9wYXRoLCBjb25zdCBjaGFyICpkYXRhZGlyKTsKLXN0YXRpYyBi b29sIGNoZWNrX3B1Ymxpc2hlcihMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKTsKLXN0YXRpYyBib29s IHNldHVwX3B1Ymxpc2hlcihMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKTsKLXN0YXRpYyBib29sIGNo ZWNrX3N1YnNjcmliZXIoTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7Ci1zdGF0aWMgYm9vbCBzZXR1 cF9zdWJzY3JpYmVyKExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNvbnN0IGNoYXIgKmNvbnNpc3Rl bnRfbHNuKTsKLXN0YXRpYyBjaGFyICpjcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KFBH Y29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbywKLQkJCQkJCQkJCQkJIGNoYXIgKnNs b3RfbmFtZSk7Ci1zdGF0aWMgdm9pZCBkcm9wX3JlcGxpY2F0aW9uX3Nsb3QoUEdjb25uICpjb25u LCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpzbG90X25hbWUpOworc3RhdGlj IHZvaWQgZ2V0X3N5c2lkX2Zvcl9wcmltYXJ5KFByaW1hcnlJbmZvICpwcmltYXJ5LCBjaGFyICpk Ym5hbWUpOworc3RhdGljIHZvaWQgZ2V0X3N5c2lkX2Zvcl9zdGFuZGJ5KFN0YW5kYnlJbmZvICpz dGFuZGJ5KTsKK3N0YXRpYyB2b2lkIG1vZGlmeV9zeXNpZChjb25zdCBjaGFyICpiaW5kaXIsIGNv bnN0IGNoYXIgKmRhdGFkaXIpOworc3RhdGljIGJvb2wgY2hlY2tfcHVibGlzaGVyKFByaW1hcnlJ bmZvICpwcmltYXJ5LCBMb2dpY2FsUmVwUGVyZGJJbmZvQXJyICpkYmFycik7CitzdGF0aWMgYm9v bCBzZXR1cF9wdWJsaXNoZXIoUHJpbWFyeUluZm8gKnByaW1hcnksIExvZ2ljYWxSZXBQZXJkYklu Zm9BcnIgKmRiYXJyKTsKK3N0YXRpYyBib29sIGNoZWNrX3N1YnNjcmliZXIoU3RhbmRieUluZm8g KnN0YW5kYnksIExvZ2ljYWxSZXBQZXJkYkluZm9BcnIgKmRiYXJyKTsKK3N0YXRpYyBib29sIHNl dHVwX3N1YnNjcmliZXIoU3RhbmRieUluZm8gKnN0YW5kYnksIFByaW1hcnlJbmZvICpwcmltYXJ5 LAorCQkJCQkJCSBMb2dpY2FsUmVwUGVyZGJJbmZvQXJyICpkYmFyciwKKwkJCQkJCQkgY29uc3Qg Y2hhciAqY29uc2lzdGVudF9sc24pOworc3RhdGljIGNoYXIgKmNyZWF0ZV9sb2dpY2FsX3JlcGxp Y2F0aW9uX3Nsb3QoUEdjb25uICpjb25uLCBib29sIHRlbXBvcmFyeSwKKwkJCQkJCQkJCQkJIExv Z2ljYWxSZXBQZXJkYkluZm8gKnBlcmRiKTsKK3N0YXRpYyB2b2lkIGRyb3BfcmVwbGljYXRpb25f c2xvdChQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBQZXJkYkluZm8gKnBlcmRiLAorCQkJCQkJCQkg IGNvbnN0IGNoYXIgKnNsb3RfbmFtZSk7CiBzdGF0aWMgY2hhciAqc2VydmVyX2xvZ2ZpbGVfbmFt ZShjb25zdCBjaGFyICpkYXRhZGlyKTsKLXN0YXRpYyB2b2lkIHN0YXJ0X3N0YW5kYnlfc2VydmVy KGNvbnN0IGNoYXIgKnBnX2N0bF9wYXRoLCBjb25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBjaGFy ICpsb2dmaWxlKTsKLXN0YXRpYyB2b2lkIHN0b3Bfc3RhbmRieV9zZXJ2ZXIoY29uc3QgY2hhciAq cGdfY3RsX3BhdGgsIGNvbnN0IGNoYXIgKmRhdGFkaXIpOworc3RhdGljIHZvaWQgc3RhcnRfc3Rh bmRieV9zZXJ2ZXIoU3RhbmRieUluZm8gKnN0YW5kYnkpOworc3RhdGljIHZvaWQgc3RvcF9zdGFu ZGJ5X3NlcnZlcihTdGFuZGJ5SW5mbyAqc3RhbmRieSk7CiBzdGF0aWMgdm9pZCBwZ19jdGxfc3Rh dHVzKGNvbnN0IGNoYXIgKnBnX2N0bF9jbWQsIGludCByYywgaW50IGFjdGlvbik7Ci1zdGF0aWMg dm9pZCB3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoY29uc3QgY2hhciAqY29ubmluZm8pOwotc3RhdGlj IHZvaWQgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRi aW5mbyk7Ci1zdGF0aWMgdm9pZCBkcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNh bFJlcEluZm8gKmRiaW5mbyk7Ci1zdGF0aWMgdm9pZCBjcmVhdGVfc3Vic2NyaXB0aW9uKFBHY29u biAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbyk7Ci1zdGF0aWMgdm9pZCBkcm9wX3N1YnNj cmlwdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8pOwotc3RhdGljIHZv aWQgc2V0X3JlcGxpY2F0aW9uX3Byb2dyZXNzKFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8g KmRiaW5mbywgY29uc3QgY2hhciAqbHNuKTsKLXN0YXRpYyB2b2lkIGVuYWJsZV9zdWJzY3JpcHRp b24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKTsKKworCitzdGF0aWMgdm9p ZCB3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoU3RhbmRieUluZm8gKnN0YW5kYnksCisJCQkJCQkJCSAg Y29uc3QgY2hhciAqZGJuYW1lKTsKK3N0YXRpYyB2b2lkIGNyZWF0ZV9wdWJsaWNhdGlvbihQR2Nv bm4gKmNvbm4sIFByaW1hcnlJbmZvICpwcmltYXJ5LAorCQkJCQkJCSAgIExvZ2ljYWxSZXBQZXJk YkluZm8gKnBlcmRiKTsKK3N0YXRpYyB2b2lkIGRyb3BfcHVibGljYXRpb24oUEdjb25uICpjb25u LCBMb2dpY2FsUmVwUGVyZGJJbmZvICpwZXJkYik7CitzdGF0aWMgdm9pZCBjcmVhdGVfc3Vic2Ny aXB0aW9uKFBHY29ubiAqY29ubiwgU3RhbmRieUluZm8gKnN0YW5kYnksCisJCQkJCQkJCVByaW1h cnlJbmZvICpwcmltYXJ5LAorCQkJCQkJCQlMb2dpY2FsUmVwUGVyZGJJbmZvICpwZXJkYik7Citz dGF0aWMgdm9pZCBkcm9wX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBQZXJk YkluZm8gKnBlcmRiKTsKK3N0YXRpYyB2b2lkIHNldF9yZXBsaWNhdGlvbl9wcm9ncmVzcyhQR2Nv bm4gKmNvbm4sIExvZ2ljYWxSZXBQZXJkYkluZm8gKnBlcmRiLAorCQkJCQkJCQkJIGNvbnN0IGNo YXIgKmxzbik7CitzdGF0aWMgdm9pZCBlbmFibGVfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29ubiwg TG9naWNhbFJlcFBlcmRiSW5mbyAqcGVyZGIpOwogCiAjZGVmaW5lCVVTRUNfUEVSX1NFQwkxMDAw MDAwCiAjZGVmaW5lCVdBSVRfSU5URVJWQUwJMQkJLyogMSBzZWNvbmQgKi8KQEAgLTg4LDIxICsx MTIsMTcgQEAgc3RhdGljIHZvaWQgZW5hYmxlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIExv Z2ljYWxSZXBJbmZvICpkYmluZm8pOwogLyogT3B0aW9ucyAqLwogc3RhdGljIGNvbnN0IGNoYXIg KnByb2duYW1lOwogCi1zdGF0aWMgY2hhciAqc3Vic2NyaWJlcl9kaXIgPSBOVUxMOwogc3RhdGlj IGNoYXIgKnN1Yl9jb25uaW5mb19zdHIgPSBOVUxMOwogc3RhdGljIFNpbXBsZVN0cmluZ0xpc3Qg ZGF0YWJhc2VfbmFtZXMgPSB7TlVMTCwgTlVMTH07Ci1zdGF0aWMgY2hhciAqcHJpbWFyeV9zbG90 X25hbWUgPSBOVUxMOwogc3RhdGljIGJvb2wgZHJ5X3J1biA9IGZhbHNlOwogc3RhdGljIGJvb2wg cmV0YWluID0gZmFsc2U7CiBzdGF0aWMgaW50CXJlY292ZXJ5X3RpbWVvdXQgPSAwOwogCiBzdGF0 aWMgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAKLXN0YXRpYyBjaGFyICpwZ19jdGxfcGF0aCA9IE5V TEw7Ci1zdGF0aWMgY2hhciAqcGdfcmVzZXR3YWxfcGF0aCA9IE5VTEw7Ci0KLXN0YXRpYyBMb2dp Y2FsUmVwSW5mbyAqZGJpbmZvOwotc3RhdGljIGludAludW1fZGJzID0gMDsKK3N0YXRpYyBMb2dp Y2FsUmVwUGVyZGJJbmZvQXJyIGRiYXJyOworc3RhdGljIFByaW1hcnlJbmZvIHByaW1hcnk7Citz dGF0aWMgU3RhbmRieUluZm8gc3RhbmRieTsKIAogZW51bSBXYWl0UE1SZXN1bHQKIHsKQEAgLTEx Miw2ICsxMzIsMzAgQEAgZW51bSBXYWl0UE1SZXN1bHQKIAlQT1NUTUFTVEVSX0ZBSUxFRAogfTsK IAorLyoKKyAqIEJ1aWxkIHRoZSByZXBsaWNhdGlvbiBzbG90IG5hbWUuIFRoZSBuYW1lIG11c3Qg bm90IGV4Y2VlZAorICogTkFNRURBVEFMRU4gLSAxLiBUaGlzIGN1cnJlbnQgc2NoZW1hIHVzZXMg YSBtYXhpbXVtIG9mIDQyCisgKiBjaGFyYWN0ZXJzICgyMCArIDEwICsgMSArIDEwICsgJ1wwJyku IFBJRCBpcyBpbmNsdWRlZCB0byByZWR1Y2UgdGhlCisgKiBwcm9iYWJpbGl0eSBvZiBjb2xsaXNp b24uIEJ5IGRlZmF1bHQsIHN1YnNjcmlwdGlvbiBuYW1lIGlzIHVzZWQgYXMKKyAqIHJlcGxpY2F0 aW9uIHNsb3QgbmFtZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitnZXRfc3Vic2NyaXB0aW9u X25hbWUoT2lkIG9pZCwgaW50IHBpZCwgY2hhciAqc3VibmFtZSwgU2l6ZSBzenN1YikKK3sKKwlz bnByaW50ZihzdWJuYW1lLCBzenN1YiwgInBnX2NyZWF0ZXN1YnNjcmliZXJfJXVfJWQiLCBvaWQs IHBpZCk7Cit9CisKKy8qCisgKiBCdWlsZCB0aGUgcHVibGljYXRpb24gbmFtZS4gVGhlIG5hbWUg bXVzdCBub3QgZXhjZWVkIE5BTUVEQVRBTEVOIC0KKyAqIDEuIFRoaXMgY3VycmVudCBzY2hlbWEg dXNlcyBhIG1heGltdW0gb2YgMzEgY2hhcmFjdGVycyAoMjAgKyAxMCArCisgKiAnXDAnKS4KKyAq Lworc3RhdGljIGlubGluZSB2b2lkCitnZXRfcHVibGljYXRpb25fbmFtZShPaWQgb2lkLCBjaGFy ICpwdWJuYW1lLCBTaXplIHN6cHViKQoreworCXNucHJpbnRmKHB1Ym5hbWUsIHN6cHViLCAicGdf Y3JlYXRlc3Vic2NyaWJlcl8ldSIsIG9pZCk7Cit9CisKIAogLyoKICAqIENsZWFudXAgb2JqZWN0 cyB0aGF0IHdlcmUgY3JlYXRlZCBieSBwZ19jcmVhdGVzdWJzY3JpYmVyIGlmIHRoZXJlIGlzIGFu IGVycm9yLgpAQCAtMTI5LDMwICsxNzMsMzUgQEAgY2xlYW51cF9vYmplY3RzX2F0ZXhpdCh2b2lk KQogCWlmIChzdWNjZXNzKQogCQlyZXR1cm47CiAKLQlmb3IgKGkgPSAwOyBpIDwgbnVtX2Riczsg aSsrKQorCWZvciAoaSA9IDA7IGkgPCBkYmFyci5uZGJzOyBpKyspCiAJewotCQlpZiAoZGJpbmZv W2ldLm1hZGVfc3Vic2NyaXB0aW9uKQorCQlMb2dpY2FsUmVwUGVyZGJJbmZvICpwZXJkYiA9ICZk YmFyci5wZXJkYltpXTsKKworCQlpZiAocGVyZGItPm1hZGVfc3Vic2NyaXB0aW9uKQogCQl7Ci0J CQljb25uID0gY29ubmVjdF9kYXRhYmFzZShkYmluZm9baV0uc3ViY29ubmluZm8pOworCisJCQlj b25uID0gY29ubmVjdF9kYXRhYmFzZShzdGFuZGJ5LmJhc2VfY29ubmluZm8sIHBlcmRiLT5kYm5h bWUpOwogCQkJaWYgKGNvbm4gIT0gTlVMTCkKIAkJCXsKLQkJCQlkcm9wX3N1YnNjcmlwdGlvbihj b25uLCAmZGJpbmZvW2ldKTsKLQkJCQlpZiAoZGJpbmZvW2ldLm1hZGVfcHVibGljYXRpb24pCi0J CQkJCWRyb3BfcHVibGljYXRpb24oY29ubiwgJmRiaW5mb1tpXSk7CisJCQkJZHJvcF9zdWJzY3Jp cHRpb24oY29ubiwgcGVyZGIpOworCisJCQkJaWYgKHBlcmRiLT5tYWRlX3B1YmxpY2F0aW9uKQor CQkJCQlkcm9wX3B1YmxpY2F0aW9uKGNvbm4sIHBlcmRiKTsKIAkJCQlkaXNjb25uZWN0X2RhdGFi YXNlKGNvbm4pOwogCQkJfQogCQl9CiAKLQkJaWYgKGRiaW5mb1tpXS5tYWRlX3B1YmxpY2F0aW9u IHx8IGRiaW5mb1tpXS5tYWRlX3JlcGxzbG90KQorCQlpZiAocGVyZGItPm1hZGVfcHVibGljYXRp b24gfHwgcGVyZGItPm1hZGVfcmVwbHNsb3QpCiAJCXsKLQkJCWNvbm4gPSBjb25uZWN0X2RhdGFi YXNlKGRiaW5mb1tpXS5wdWJjb25uaW5mbyk7Ci0JCQlpZiAoY29ubiAhPSBOVUxMKQorCQkJaWYg KHBlcmRiLT5tYWRlX3B1YmxpY2F0aW9uKQorCQkJCWRyb3BfcHVibGljYXRpb24oY29ubiwgcGVy ZGIpOworCQkJaWYgKHBlcmRiLT5tYWRlX3JlcGxzbG90KQogCQkJewotCQkJCWlmIChkYmluZm9b aV0ubWFkZV9wdWJsaWNhdGlvbikKLQkJCQkJZHJvcF9wdWJsaWNhdGlvbihjb25uLCAmZGJpbmZv W2ldKTsKLQkJCQlpZiAoZGJpbmZvW2ldLm1hZGVfcmVwbHNsb3QpCi0JCQkJCWRyb3BfcmVwbGlj YXRpb25fc2xvdChjb25uLCAmZGJpbmZvW2ldLCBkYmluZm9baV0uc3VibmFtZSk7Ci0JCQkJZGlz Y29ubmVjdF9kYXRhYmFzZShjb25uKTsKKwkJCQljaGFyIHJlcGxzbG90bmFtZVtOQU1FREFUQUxF Tl07CisKKwkJCQlnZXRfc3Vic2NyaXB0aW9uX25hbWUocGVyZGItPm9pZCwgKGludCkgZ2V0cGlk KCksCisJCQkJCQkJCQkgIHJlcGxzbG90bmFtZSwgTkFNRURBVEFMRU4pOworCQkJCWRyb3BfcmVw bGljYXRpb25fc2xvdChjb25uLCBwZXJkYiwgcmVwbHNsb3RuYW1lKTsKIAkJCX0KIAkJfQogCX0K QEAgLTIzNywxNSArMjg2LDE2IEBAIGdldF9iYXNlX2Nvbm5pbmZvKGNoYXIgKmNvbm5pbmZvLCBj aGFyICpkYm5hbWUpCiB9CiAKIC8qCi0gKiBHZXQgdGhlIGFic29sdXRlIHBhdGggZnJvbSBvdGhl ciBQb3N0Z3JlU1FMIGJpbmFyaWVzIChwZ19jdGwgYW5kCi0gKiBwZ19yZXNldHdhbCkgdGhhdCBp cyB1c2VkIGJ5IGl0LgorICogR2V0IHRoZSBhYnNvbHV0ZSBiaW5hcnkgcGF0aCBmcm9tIGFub3Ro ZXIgUG9zdGdyZVNRTCBiaW5hcnkgKHBnX2N0bCkgYW5kIHNldAorICogdG8gU3RhbmRieUluZm8u CiAgKi8KIHN0YXRpYyBib29sCi1nZXRfZXhlY19wYXRoKGNvbnN0IGNoYXIgKnBhdGgpCitnZXRf ZXhlY19iYXNlX3BhdGgoY29uc3QgY2hhciAqcGF0aCkKIHsKLQlpbnQJCQlyYzsKKwlpbnQJCXJj OworCWNoYXIJcGdfY3RsX3BhdGhbTUFYUEdQQVRIXTsKKwljaGFyICAgKnA7CiAKLQlwZ19jdGxf cGF0aCA9IHBnX21hbGxvYyhNQVhQR1BBVEgpOwogCXJjID0gZmluZF9vdGhlcl9leGVjKHBhdGgs ICJwZ19jdGwiLAogCQkJCQkJICJwZ19jdGwgKFBvc3RncmVTUUwpICIgUEdfVkVSU0lPTiAiXG4i LAogCQkJCQkJIHBnX2N0bF9wYXRoKTsKQEAgLTI3MCwzMCArMzIwLDEyIEBAIGdldF9leGVjX3Bh dGgoY29uc3QgY2hhciAqcGF0aCkKIAogCXBnX2xvZ19kZWJ1ZygicGdfY3RsIHBhdGggaXM6ICVz IiwgcGdfY3RsX3BhdGgpOwogCi0JcGdfcmVzZXR3YWxfcGF0aCA9IHBnX21hbGxvYyhNQVhQR1BB VEgpOwotCXJjID0gZmluZF9vdGhlcl9leGVjKHBhdGgsICJwZ19yZXNldHdhbCIsCi0JCQkJCQkg InBnX3Jlc2V0d2FsIChQb3N0Z3JlU1FMKSAiIFBHX1ZFUlNJT04gIlxuIiwKLQkJCQkJCSBwZ19y ZXNldHdhbF9wYXRoKTsKLQlpZiAocmMgPCAwKQotCXsKLQkJY2hhcgkJZnVsbF9wYXRoW01BWFBH UEFUSF07CisJLyogRXh0cmFjdCB0aGUgZGlyZWN0b3J5IHBhcnQgZnJvbSB0aGUgcGF0aCAqLwor CXAgPSBzdHJyY2hyKHBnX2N0bF9wYXRoLCAncCcpOworCUFzc2VydChwKTsKIAotCQlpZiAoZmlu ZF9teV9leGVjKHBhdGgsIGZ1bGxfcGF0aCkgPCAwKQotCQkJc3RybGNweShmdWxsX3BhdGgsIHBy b2duYW1lLCBzaXplb2YoZnVsbF9wYXRoKSk7Ci0JCWlmIChyYyA9PSAtMSkKLQkJCXBnX2xvZ19l cnJvcigiVGhlIHByb2dyYW0gXCIlc1wiIGlzIG5lZWRlZCBieSAlcyBidXQgd2FzIG5vdCBmb3Vu ZCBpbiB0aGVcbiIKLQkJCQkJCSAic2FtZSBkaXJlY3RvcnkgYXMgXCIlc1wiLlxuIgotCQkJCQkJ ICJDaGVjayB5b3VyIGluc3RhbGxhdGlvbi4iLAotCQkJCQkJICJwZ19yZXNldHdhbCIsIHByb2du YW1lLCBmdWxsX3BhdGgpOwotCQllbHNlCi0JCQlwZ19sb2dfZXJyb3IoIlRoZSBwcm9ncmFtIFwi JXNcIiB3YXMgZm91bmQgYnkgXCIlc1wiXG4iCi0JCQkJCQkgImJ1dCB3YXMgbm90IHRoZSBzYW1l IHZlcnNpb24gYXMgJXMuXG4iCi0JCQkJCQkgIkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLiIsCi0J CQkJCQkgInBnX3Jlc2V0d2FsIiwgZnVsbF9wYXRoLCBwcm9nbmFtZSk7Ci0JCXJldHVybiBmYWxz ZTsKLQl9Ci0KLQlwZ19sb2dfZGVidWcoInBnX3Jlc2V0d2FsIHBhdGggaXM6ICVzIiwgcGdfcmVz ZXR3YWxfcGF0aCk7CisJKnAgPSAnXDAnOworCXN0YW5kYnkuYmluZGlyID0gcGdfc3RyZHVwKHBn X2N0bF9wYXRoKTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMzU3LDQ1ICszODksMzEgQEAgY29u Y2F0X2Nvbm5pbmZvX2RibmFtZShjb25zdCBjaGFyICpjb25uaW5mbywgY29uc3QgY2hhciAqZGJu YW1lKQogfQogCiAvKgotICogU3RvcmUgcHVibGljYXRpb24gYW5kIHN1YnNjcmlwdGlvbiBpbmZv cm1hdGlvbi4KKyAqIEluaXRpYWxpemUgcGVyLWRiIHN0cnVjdHVyZSBhbmQgc3RvcmUgdGhlIG5h bWUgb2YgZGF0YWJhc2VzLgogICovCi1zdGF0aWMgTG9naWNhbFJlcEluZm8gKgotc3RvcmVfcHVi X3N1Yl9pbmZvKGNvbnN0IGNoYXIgKnB1Yl9iYXNlX2Nvbm5pbmZvLCBjb25zdCBjaGFyICpzdWJf YmFzZV9jb25uaW5mbykKK3N0YXRpYyB2b2lkCitzdG9yZV9kYl9uYW1lcyhMb2dpY2FsUmVwUGVy ZGJJbmZvICoqcGVyZGIsIGludCBuZGJzKQogewotCUxvZ2ljYWxSZXBJbmZvICpkYmluZm87Ci0J U2ltcGxlU3RyaW5nTGlzdENlbGwgKmNlbGw7Ci0JaW50CQkJaSA9IDA7CisJU2ltcGxlU3RyaW5n TGlzdENlbGwgICAqY2VsbDsKKwlpbnQJCQkJCQlpID0gMDsKIAotCWRiaW5mbyA9IChMb2dpY2Fs UmVwSW5mbyAqKSBwZ19tYWxsb2MobnVtX2RicyAqIHNpemVvZihMb2dpY2FsUmVwSW5mbykpOwor CWRiYXJyLnBlcmRiID0gKExvZ2ljYWxSZXBQZXJkYkluZm8gKikgcGdfbWFsbG9jMChuZGJzICoK KwkJCQkJCQkJCQkJICAgc2l6ZW9mKExvZ2ljYWxSZXBQZXJkYkluZm8pKTsKIAogCWZvciAoY2Vs bCA9IGRhdGFiYXNlX25hbWVzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQogCXsKLQkJ Y2hhcgkgICAqY29ubmluZm87Ci0KLQkJLyogUHVibGlzaGVyLiAqLwotCQljb25uaW5mbyA9IGNv bmNhdF9jb25uaW5mb19kYm5hbWUocHViX2Jhc2VfY29ubmluZm8sIGNlbGwtPnZhbCk7Ci0JCWRi aW5mb1tpXS5wdWJjb25uaW5mbyA9IGNvbm5pbmZvOwotCQlkYmluZm9baV0uZGJuYW1lID0gY2Vs bC0+dmFsOwotCQlkYmluZm9baV0ubWFkZV9yZXBsc2xvdCA9IGZhbHNlOwotCQlkYmluZm9baV0u bWFkZV9wdWJsaWNhdGlvbiA9IGZhbHNlOwotCQlkYmluZm9baV0ubWFkZV9zdWJzY3JpcHRpb24g PSBmYWxzZTsKLQkJLyogb3RoZXIgc3RydWN0IGZpZWxkcyB3aWxsIGJlIGZpbGxlZCBsYXRlci4g Ki8KLQotCQkvKiBTdWJzY3JpYmVyLiAqLwotCQljb25uaW5mbyA9IGNvbmNhdF9jb25uaW5mb19k Ym5hbWUoc3ViX2Jhc2VfY29ubmluZm8sIGNlbGwtPnZhbCk7Ci0JCWRiaW5mb1tpXS5zdWJjb25u aW5mbyA9IGNvbm5pbmZvOwotCisJCSgqcGVyZGIpW2ldLmRibmFtZSA9IHBnX3N0cmR1cChjZWxs LT52YWwpOwogCQlpKys7CiAJfQotCi0JcmV0dXJuIGRiaW5mbzsKIH0KIAogc3RhdGljIFBHY29u biAqCi1jb25uZWN0X2RhdGFiYXNlKGNvbnN0IGNoYXIgKmNvbm5pbmZvKQorY29ubmVjdF9kYXRh YmFzZShjb25zdCBjaGFyICpiYXNlX2Nvbm5pbmZvLCBjb25zdCBjaGFyKmRibmFtZSkKIHsKIAlQ R2Nvbm4JICAgKmNvbm47CiAJUEdyZXN1bHQgICAqcmVzOworCWNoYXIJICAgKmNvbm5pbmZvID0g Y29uY2F0X2Nvbm5pbmZvX2RibmFtZShiYXNlX2Nvbm5pbmZvLAorCQkJCQkJCQkJCQkJCQkgZGJu YW1lKTsKIAogCWNvbm4gPSBQUWNvbm5lY3RkYihjb25uaW5mbyk7CiAJaWYgKFBRc3RhdHVzKGNv bm4pICE9IENPTk5FQ1RJT05fT0spCkBAIC00MTMsNiArNDMxLDcgQEAgY29ubmVjdF9kYXRhYmFz ZShjb25zdCBjaGFyICpjb25uaW5mbykKIAl9CiAJUFFjbGVhcihyZXMpOwogCisJcGZyZWUoY29u bmluZm8pOwogCXJldHVybiBjb25uOwogfQogCkBAIC00MzAsMTEgKzQ0OSwxMCBAQCBkaXNjb25u ZWN0X2RhdGFiYXNlKFBHY29ubiAqY29ubikKICAqIHdvcmtlci4KICAqLwogc3RhdGljIGNoYXIg KgotZ2V0X3ByaW1hcnlfY29ubmluZm8oY29uc3QgY2hhciAqYmFzZV9jb25uaW5mbykKK2dldF9w cmltYXJ5X2Nvbm5pbmZvKFN0YW5kYnlJbmZvICpzdGFuZGJ5KQogewogCVBHY29ubgkgICAqY29u bjsKIAlQR3Jlc3VsdCAgICpyZXM7Ci0JY2hhcgkgICAqY29ubmluZm87CiAJY2hhcgkgICAqcHJp bWFyeWNvbm5pbmZvOwogCiAJcGdfbG9nX2luZm8oImdldHRpbmcgcHJpbWFyeV9jb25uaW5mbyBm cm9tIHN0YW5kYnkiKTsKQEAgLTQ0NCw5ICs0NjIsNyBAQCBnZXRfcHJpbWFyeV9jb25uaW5mbyhj b25zdCBjaGFyICpiYXNlX2Nvbm5pbmZvKQogCSAqIG5vdCBzdG9yZWQgaW5mb21hdGlvbiB5ZXQs IHdlIG11c3QgZGlyZWN0bHkgZ2V0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZQogCSAqIGRhdGFi YXNlIGxpc3QuCiAJICovCi0JY29ubmluZm8gPSBjb25jYXRfY29ubmluZm9fZGJuYW1lKGJhc2Vf Y29ubmluZm8sIGRhdGFiYXNlX25hbWVzLmhlYWQtPnZhbCk7Ci0KLQljb25uID0gY29ubmVjdF9k YXRhYmFzZShjb25uaW5mbyk7CisJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2Uoc3RhbmRieS0+YmFz ZV9jb25uaW5mbywgZGF0YWJhc2VfbmFtZXMuaGVhZC0+dmFsKTsKIAlpZiAoY29ubiA9PSBOVUxM KQogCQlleGl0KDEpOwogCkBAIC00NjksNyArNDg1LDYgQEAgZ2V0X3ByaW1hcnlfY29ubmluZm8o Y29uc3QgY2hhciAqYmFzZV9jb25uaW5mbykKIAkJZXhpdCgxKTsKIAl9CiAKLQlwZ19mcmVlKGNv bm5pbmZvKTsKIAlQUWNsZWFyKHJlcyk7CiAJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uKTsKIApA QCAtNDc3LDE5ICs0OTIsMTggQEAgZ2V0X3ByaW1hcnlfY29ubmluZm8oY29uc3QgY2hhciAqYmFz ZV9jb25uaW5mbykKIH0KIAogLyoKLSAqIE9idGFpbiB0aGUgc3lzdGVtIGlkZW50aWZpZXIgdXNp bmcgdGhlIHByb3ZpZGVkIGNvbm5lY3Rpb24uIEl0IHdpbGwgYmUgdXNlZAotICogdG8gY29tcGFy ZSBpZiBhIGRhdGEgZGlyZWN0b3J5IGlzIGEgY2xvbmUgb2YgYW5vdGhlciBvbmUuCisgKiBPYnRh aW4gdGhlIHN5c3RlbSBpZGVudGlmaWVyIGZyb20gdGhlIHByaW1hcnkgc2VydmVyLiBJdCB3aWxs IGJlIHVzZWQgdG8KKyAqIGNvbXBhcmUgaWYgYSBkYXRhIGRpcmVjdG9yeSBpcyBhIGNsb25lIG9m IGFub3RoZXIgb25lLgogICovCi1zdGF0aWMgdWludDY0Ci1nZXRfc3lzaWRfZnJvbV9jb25uKGNv bnN0IGNoYXIgKmNvbm5pbmZvKQorc3RhdGljIHZvaWQKK2dldF9zeXNpZF9mb3JfcHJpbWFyeShQ cmltYXJ5SW5mbyAqcHJpbWFyeSwgY2hhciAqZGJuYW1lKQogewogCVBHY29ubgkgICAqY29ubjsK IAlQR3Jlc3VsdCAgICpyZXM7Ci0JdWludDY0CQlzeXNpZDsKIAogCXBnX2xvZ19pbmZvKCJnZXR0 aW5nIHN5c3RlbSBpZGVudGlmaWVyIGZyb20gcHVibGlzaGVyIik7CiAKLQljb25uID0gY29ubmVj dF9kYXRhYmFzZShjb25uaW5mbyk7CisJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UocHJpbWFyeS0+ YmFzZV9jb25uaW5mbywgZGJuYW1lKTsKIAlpZiAoY29ubiA9PSBOVUxMKQogCQlleGl0KDEpOwog CkBAIC01MTIsMTMgKzUyNiwxMiBAQCBnZXRfc3lzaWRfZnJvbV9jb25uKGNvbnN0IGNoYXIgKmNv bm5pbmZvKQogCQlleGl0KDEpOwogCX0KIAotCXN5c2lkID0gc3RydG91NjQoUFFnZXR2YWx1ZShy ZXMsIDAsIDIpLCBOVUxMLCAxMCk7CisJcHJpbWFyeS0+c3lzaWQgPSBzdHJ0b3U2NChQUWdldHZh bHVlKHJlcywgMCwgMiksIE5VTEwsIDEwKTsKIAotCXBnX2xvZ19pbmZvKCJzeXN0ZW0gaWRlbnRp ZmllciBpcyAlbGx1IG9uIHB1Ymxpc2hlciIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN5c2lkKTsK KwlwZ19sb2dfaW5mbygic3lzdGVtIGlkZW50aWZpZXIgaXMgJWxsdSBvbiBwdWJsaXNoZXIiLAor CQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIHByaW1hcnktPnN5c2lkKTsKIAogCWRpc2Nvbm5lY3Rf ZGF0YWJhc2UoY29ubik7Ci0KLQlyZXR1cm4gc3lzaWQ7CiB9CiAKIC8qCkBAIC01MjYsMjkgKzUz OSwyNiBAQCBnZXRfc3lzaWRfZnJvbV9jb25uKGNvbnN0IGNoYXIgKmNvbm5pbmZvKQogICogaWYg YSBkYXRhIGRpcmVjdG9yeSBpcyBhIGNsb25lIG9mIGFub3RoZXIgb25lLiBUaGlzIHJvdXRpbmUg aXMgdXNlZCBsb2NhbGx5CiAgKiBhbmQgYXZvaWRzIGEgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50 LgogICovCi1zdGF0aWMgdWludDY0Ci1nZXRfY29udHJvbF9mcm9tX2RhdGFkaXIoY29uc3QgY2hh ciAqZGF0YWRpcikKK3N0YXRpYyB2b2lkCitnZXRfc3lzaWRfZm9yX3N0YW5kYnkoU3RhbmRieUlu Zm8gKnN0YW5kYnkpCiB7CiAJQ29udHJvbEZpbGVEYXRhICpjZjsKIAlib29sCQljcmNfb2s7Ci0J dWludDY0CQlzeXNpZDsKIAogCXBnX2xvZ19pbmZvKCJnZXR0aW5nIHN5c3RlbSBpZGVudGlmaWVy IGZyb20gc3Vic2NyaWJlciIpOwogCi0JY2YgPSBnZXRfY29udHJvbGZpbGUoZGF0YWRpciwgJmNy Y19vayk7CisJY2YgPSBnZXRfY29udHJvbGZpbGUoc3RhbmRieS0+cGdkYXRhLCAmY3JjX29rKTsK IAlpZiAoIWNyY19vaykKIAl7CiAJCXBnX2xvZ19lcnJvcigiY29udHJvbCBmaWxlIGFwcGVhcnMg dG8gYmUgY29ycnVwdCIpOwogCQlleGl0KDEpOwogCX0KIAotCXN5c2lkID0gY2YtPnN5c3RlbV9p ZGVudGlmaWVyOworCXN0YW5kYnktPnN5c2lkID0gY2YtPnN5c3RlbV9pZGVudGlmaWVyOwogCi0J cGdfbG9nX2luZm8oInN5c3RlbSBpZGVudGlmaWVyIGlzICVsbHUgb24gc3Vic2NyaWJlciIsICh1 bnNpZ25lZCBsb25nIGxvbmcpIHN5c2lkKTsKKwlwZ19sb2dfaW5mbygic3lzdGVtIGlkZW50aWZp ZXIgaXMgJWxsdSBvbiBzdWJzY3JpYmVyIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhbmRieS0+ c3lzaWQpOwogCiAJcGZyZWUoY2YpOwotCi0JcmV0dXJuIHN5c2lkOwogfQogCiAvKgpAQCAtNTU3 LDcgKzU2Nyw3IEBAIGdldF9jb250cm9sX2Zyb21fZGF0YWRpcihjb25zdCBjaGFyICpkYXRhZGly KQogICogZmlsZXMgZnJvbSBvbmUgb2YgdGhlIHN5c3RlbXMgbWlnaHQgYmUgdXNlZCBpbiB0aGUg b3RoZXIgb25lLgogICovCiBzdGF0aWMgdm9pZAotbW9kaWZ5X3N5c2lkKGNvbnN0IGNoYXIgKnBn X3Jlc2V0d2FsX3BhdGgsIGNvbnN0IGNoYXIgKmRhdGFkaXIpCittb2RpZnlfc3lzaWQoY29uc3Qg Y2hhciAqYmluZGlyLCBjb25zdCBjaGFyICpkYXRhZGlyKQogewogCUNvbnRyb2xGaWxlRGF0YSAq Y2Y7CiAJYm9vbAkJY3JjX29rOwpAQCAtNTkyLDcgKzYwMiw3IEBAIG1vZGlmeV9zeXNpZChjb25z dCBjaGFyICpwZ19yZXNldHdhbF9wYXRoLCBjb25zdCBjaGFyICpkYXRhZGlyKQogCiAJcGdfbG9n X2luZm8oInJ1bm5pbmcgcGdfcmVzZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKIAotCWNtZF9z dHIgPSBwc3ByaW50ZigiXCIlc1wiIC1EIFwiJXNcIiIsIHBnX3Jlc2V0d2FsX3BhdGgsIGRhdGFk aXIpOworCWNtZF9zdHIgPSBwc3ByaW50ZigiXCIlcy9wZ19yZXNldHdhbFwiIC1EIFwiJXNcIiIs IGJpbmRpciwgZGF0YWRpcik7CiAKIAlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgY21k X3N0cik7CiAKQEAgLTYxMywxNyArNjIzLDE2IEBAIG1vZGlmeV9zeXNpZChjb25zdCBjaGFyICpw Z19yZXNldHdhbF9wYXRoLCBjb25zdCBjaGFyICpkYXRhZGlyKQogICogcmVwbGljYXRpb24uCiAg Ki8KIHN0YXRpYyBib29sCi1zZXR1cF9wdWJsaXNoZXIoTG9naWNhbFJlcEluZm8gKmRiaW5mbykK K3NldHVwX3B1Ymxpc2hlcihQcmltYXJ5SW5mbyAqcHJpbWFyeSwgTG9naWNhbFJlcFBlcmRiSW5m b0FyciAqZGJhcnIpCiB7CiAJUEdjb25uCSAgICpjb25uOwogCVBHcmVzdWx0ICAgKnJlczsKIAot CWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2RiczsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwg ZGJhcnItPm5kYnM7IGkrKykKIAl7Ci0JCWNoYXIJCXB1Ym5hbWVbTkFNRURBVEFMRU5dOwotCQlj aGFyCQlyZXBsc2xvdG5hbWVbTkFNRURBVEFMRU5dOworCQlMb2dpY2FsUmVwUGVyZGJJbmZvICpw ZXJkYiA9ICZkYmFyci0+cGVyZGJbaV07CiAKLQkJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoZGJp bmZvW2ldLnB1YmNvbm5pbmZvKTsKKwkJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UocHJpbWFyeS0+ YmFzZV9jb25uaW5mbywgcGVyZGItPmRibmFtZSk7CiAJCWlmIChjb25uID09IE5VTEwpCiAJCQll eGl0KDEpOwogCkBAIC02NDMsNDMgKzY1MiwyMCBAQCBzZXR1cF9wdWJsaXNoZXIoTG9naWNhbFJl cEluZm8gKmRiaW5mbykKIAkJfQogCiAJCS8qIFJlbWVtYmVyIGRhdGFiYXNlIE9JRC4gKi8KLQkJ ZGJpbmZvW2ldLm9pZCA9IHN0cnRvdWwoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBOVUxMLCAxMCk7 CisJCXBlcmRiLT5vaWQgPSBzdHJ0b3VsKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSwgTlVMTCwgMTAp OwogCiAJCVBRY2xlYXIocmVzKTsKIAotCQkvKgotCQkgKiBCdWlsZCB0aGUgcHVibGljYXRpb24g bmFtZS4gVGhlIG5hbWUgbXVzdCBub3QgZXhjZWVkIE5BTUVEQVRBTEVOIC0KLQkJICogMS4gVGhp cyBjdXJyZW50IHNjaGVtYSB1c2VzIGEgbWF4aW11bSBvZiAzMSBjaGFyYWN0ZXJzICgyMCArIDEw ICsKLQkJICogJ1wwJykuCi0JCSAqLwotCQlzbnByaW50ZihwdWJuYW1lLCBzaXplb2YocHVibmFt ZSksICJwZ19jcmVhdGVzdWJzY3JpYmVyXyV1IiwgZGJpbmZvW2ldLm9pZCk7Ci0JCWRiaW5mb1tp XS5wdWJuYW1lID0gcGdfc3RyZHVwKHB1Ym5hbWUpOwotCiAJCS8qCiAJCSAqIENyZWF0ZSBwdWJs aWNhdGlvbiBvbiBwdWJsaXNoZXIuIFRoaXMgc3RlcCBzaG91bGQgYmUgZXhlY3V0ZWQKIAkJICog KmJlZm9yZSogcHJvbW90aW5nIHRoZSBzdWJzY3JpYmVyIHRvIGF2b2lkIGFueSB0cmFuc2FjdGlv bnMgYmV0d2VlbgogCQkgKiBjb25zaXN0ZW50IExTTiBhbmQgdGhlIG5ldyBwdWJsaWNhdGlvbiBy b3dzIChzdWNoIHRyYW5zYWN0aW9ucwogCQkgKiB3b3VsZG4ndCBzZWUgdGhlIG5ldyBwdWJsaWNh dGlvbiByb3dzIHJlc3VsdGluZyBpbiBhbiBlcnJvcikuCiAJCSAqLwotCQljcmVhdGVfcHVibGlj YXRpb24oY29ubiwgJmRiaW5mb1tpXSk7Ci0KLQkJLyoKLQkJICogQnVpbGQgdGhlIHJlcGxpY2F0 aW9uIHNsb3QgbmFtZS4gVGhlIG5hbWUgbXVzdCBub3QgZXhjZWVkCi0JCSAqIE5BTUVEQVRBTEVO IC0gMS4gVGhpcyBjdXJyZW50IHNjaGVtYSB1c2VzIGEgbWF4aW11bSBvZiA0MgotCQkgKiBjaGFy YWN0ZXJzICgyMCArIDEwICsgMSArIDEwICsgJ1wwJykuIFBJRCBpcyBpbmNsdWRlZCB0byByZWR1 Y2UgdGhlCi0JCSAqIHByb2JhYmlsaXR5IG9mIGNvbGxpc2lvbi4gQnkgZGVmYXVsdCwgc3Vic2Ny aXB0aW9uIG5hbWUgaXMgdXNlZCBhcwotCQkgKiByZXBsaWNhdGlvbiBzbG90IG5hbWUuCi0JCSAq LwotCQlzbnByaW50ZihyZXBsc2xvdG5hbWUsIHNpemVvZihyZXBsc2xvdG5hbWUpLAotCQkJCSAi cGdfY3JlYXRlc3Vic2NyaWJlcl8ldV8lZCIsCi0JCQkJIGRiaW5mb1tpXS5vaWQsCi0JCQkJIChp bnQpIGdldHBpZCgpKTsKLQkJZGJpbmZvW2ldLnN1Ym5hbWUgPSBwZ19zdHJkdXAocmVwbHNsb3Ru YW1lKTsKKwkJY3JlYXRlX3B1YmxpY2F0aW9uKGNvbm4sIHByaW1hcnksIHBlcmRiKTsKIAogCQkv KiBDcmVhdGUgcmVwbGljYXRpb24gc2xvdCBvbiBwdWJsaXNoZXIuICovCi0JCWlmIChjcmVhdGVf bG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KGNvbm4sICZkYmluZm9baV0sIHJlcGxzbG90bmFtZSkg IT0gTlVMTCB8fCBkcnlfcnVuKQotCQkJcGdfbG9nX2luZm8oImNyZWF0ZSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBvbiBwdWJsaXNoZXIiLCByZXBsc2xvdG5hbWUpOwotCQllbHNlCisJCWlmIChj cmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KGNvbm4sIGZhbHNlLCBwZXJkYikgPT0gTlVM TCAmJiAhZHJ5X3J1bikKIAkJCXJldHVybiBmYWxzZTsKIAogCQlkaXNjb25uZWN0X2RhdGFiYXNl KGNvbm4pOwpAQCAtNjkyLDcgKzY3OCw3IEBAIHNldHVwX3B1Ymxpc2hlcihMb2dpY2FsUmVwSW5m byAqZGJpbmZvKQogICogSXMgdGhlIHByaW1hcnkgc2VydmVyIHJlYWR5IGZvciBsb2dpY2FsIHJl cGxpY2F0aW9uPwogICovCiBzdGF0aWMgYm9vbAotY2hlY2tfcHVibGlzaGVyKExvZ2ljYWxSZXBJ bmZvICpkYmluZm8pCitjaGVja19wdWJsaXNoZXIoUHJpbWFyeUluZm8gKnByaW1hcnksIExvZ2lj YWxSZXBQZXJkYkluZm9BcnIgKmRiYXJyKQogewogCVBHY29ubgkgICAqY29ubjsKIAlQR3Jlc3Vs dCAgICpyZXM7CkBAIC03MTUsNyArNzAxLDcgQEAgY2hlY2tfcHVibGlzaGVyKExvZ2ljYWxSZXBJ bmZvICpkYmluZm8pCiAJICogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID49IGN1cnJlbnQgKyBudW1i ZXIgb2YgZGJzIHRvIGJlIGNvbnZlcnRlZAogCSAqIG1heF93YWxfc2VuZGVycyA+PSBjdXJyZW50 ICsgbnVtYmVyIG9mIGRicyB0byBiZSBjb252ZXJ0ZWQKIAkgKi8KLQljb25uID0gY29ubmVjdF9k YXRhYmFzZShkYmluZm9bMF0ucHViY29ubmluZm8pOworCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNl KHByaW1hcnktPmJhc2VfY29ubmluZm8sIGRiYXJyLT5wZXJkYlswXS5kYm5hbWUpOwogCWlmIChj b25uID09IE5VTEwpCiAJCWV4aXQoMSk7CiAKQEAgLTc1MywxMCArNzM5LDExIEBAIGNoZWNrX3B1 Ymxpc2hlcihMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCSAqIHVzZSBhZnRlciB0aGUgdHJhbnNm b3JtYXRpb24sIGhlbmNlLCBpdCB3aWxsIGJlIHJlbW92ZWQgYXQgdGhlIGVuZCBvZgogCSAqIHRo aXMgcHJvY2Vzcy4KIAkgKi8KLQlpZiAocHJpbWFyeV9zbG90X25hbWUpCisJaWYgKHN0YW5kYnku cHJpbWFyeV9zbG90X25hbWUpCiAJewogCQlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsCi0JCQkJCQkg ICJTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIGFjdGl2ZSBBTkQgc2xv dF9uYW1lID0gJyVzJyIsIHByaW1hcnlfc2xvdF9uYW1lKTsKKwkJCQkJCSAgIlNFTEVDVCAxIEZS T00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgYWN0aXZlIEFORCBzbG90X25hbWUgPSAnJXMn IiwKKwkJCQkJCSAgc3RhbmRieS5wcmltYXJ5X3Nsb3RfbmFtZSk7CiAKIAkJcGdfbG9nX2RlYnVn KCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKQEAgLTc3MSwxMyArNzU4LDE0IEBAIGNo ZWNrX3B1Ymxpc2hlcihMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCQl7CiAJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBvYnRhaW4gcmVwbGljYXRpb24gc2xvdCBpbmZvcm1hdGlvbjogZ290ICVk IHJvd3MsIGV4cGVjdGVkICVkIHJvdyIsCiAJCQkJCQkgUFFudHVwbGVzKHJlcyksIDEpOwotCQkJ cGdfZnJlZShwcmltYXJ5X3Nsb3RfbmFtZSk7IC8qIGl0IGlzIG5vdCBiZWluZyB1c2VkLiAqLwot CQkJcHJpbWFyeV9zbG90X25hbWUgPSBOVUxMOworCQkJcGdfZnJlZShzdGFuZGJ5LnByaW1hcnlf c2xvdF9uYW1lKTsgLyogaXQgaXMgbm90IGJlaW5nIHVzZWQuICovCisJCQlzdGFuZGJ5LnByaW1h cnlfc2xvdF9uYW1lID0gTlVMTDsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQllbHNlCiAJCXsK LQkJCXBnX2xvZ19pbmZvKCJwcmltYXJ5IGhhcyByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsIHBy aW1hcnlfc2xvdF9uYW1lKTsKKwkJCXBnX2xvZ19pbmZvKCJwcmltYXJ5IGhhcyByZXBsaWNhdGlv biBzbG90IFwiJXNcIiIsCisJCQkJCQlzdGFuZGJ5LnByaW1hcnlfc2xvdF9uYW1lKTsKIAkJfQog CiAJCVBRY2xlYXIocmVzKTsKQEAgLTc5MSwxNyArNzc5LDIxIEBAIGNoZWNrX3B1Ymxpc2hlcihM b2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JaWYgKG1heF9y ZXBzbG90cyAtIGN1cl9yZXBzbG90cyA8IG51bV9kYnMpCisJaWYgKG1heF9yZXBzbG90cyAtIGN1 cl9yZXBzbG90cyA8IGRiYXJyLT5uZGJzKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIg cmVxdWlyZXMgJWQgcmVwbGljYXRpb24gc2xvdHMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsIG51bV9k YnMsIG1heF9yZXBzbG90cyAtIGN1cl9yZXBzbG90cyk7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJD b25zaWRlciBpbmNyZWFzaW5nIG1heF9yZXBsaWNhdGlvbl9zbG90cyB0byBhdCBsZWFzdCAlZC4i LCBjdXJfcmVwc2xvdHMgKyBudW1fZGJzKTsKKwkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIgcmVx dWlyZXMgJWQgcmVwbGljYXRpb24gc2xvdHMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCisJCQkJCSBk YmFyci0+bmRicywgbWF4X3JlcHNsb3RzIC0gY3VyX3JlcHNsb3RzKTsKKwkJcGdfbG9nX2Vycm9y X2hpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzIHRvIGF0IGxl YXN0ICVkLiIsCisJCQkJCQkgIGN1cl9yZXBzbG90cyArIGRiYXJyLT5uZGJzKTsKIAkJcmV0dXJu IGZhbHNlOwogCX0KIAotCWlmIChtYXhfd2Fsc2VuZGVycyAtIGN1cl93YWxzZW5kZXJzIDwgbnVt X2RicykKKwlpZiAobWF4X3dhbHNlbmRlcnMgLSBjdXJfd2Fsc2VuZGVycyA8IGRiYXJyLT5uZGJz KQogCXsKLQkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIgcmVxdWlyZXMgJWQgd2FsIHNlbmRlciBw cm9jZXNzZXMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsIG51bV9kYnMsIG1heF93YWxzZW5kZXJzIC0g Y3VyX3dhbHNlbmRlcnMpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiQ29uc2lkZXIgaW5jcmVhc2lu ZyBtYXhfd2FsX3NlbmRlcnMgdG8gYXQgbGVhc3QgJWQuIiwgY3VyX3dhbHNlbmRlcnMgKyBudW1f ZGJzKTsKKwkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIgcmVxdWlyZXMgJWQgd2FsIHNlbmRlciBw cm9jZXNzZXMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCisJCQkJCSBkYmFyci0+bmRicywgbWF4X3dh bHNlbmRlcnMgLSBjdXJfd2Fsc2VuZGVycyk7CisJCXBnX2xvZ19lcnJvcl9oaW50KCJDb25zaWRl ciBpbmNyZWFzaW5nIG1heF93YWxfc2VuZGVycyB0byBhdCBsZWFzdCAlZC4iLAorCQkJCQkJICBj dXJfd2Fsc2VuZGVycyArIGRiYXJyLT5uZGJzKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAt ODEyLDcgKzgwNCw3IEBAIGNoZWNrX3B1Ymxpc2hlcihMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQog ICogSXMgdGhlIHN0YW5kYnkgc2VydmVyIHJlYWR5IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uPwog ICovCiBzdGF0aWMgYm9vbAotY2hlY2tfc3Vic2NyaWJlcihMb2dpY2FsUmVwSW5mbyAqZGJpbmZv KQorY2hlY2tfc3Vic2NyaWJlcihTdGFuZGJ5SW5mbyAqc3RhbmRieSwgTG9naWNhbFJlcFBlcmRi SW5mb0FyciAqZGJhcnIpCiB7CiAJUEdjb25uCSAgICpjb25uOwogCVBHcmVzdWx0ICAgKnJlczsK QEAgLTgzMiw3ICs4MjQsNyBAQCBjaGVja19zdWJzY3JpYmVyKExvZ2ljYWxSZXBJbmZvICpkYmlu Zm8pCiAJICogbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA+PSBudW1iZXIgb2YgZGJz IHRvIGJlIGNvbnZlcnRlZAogCSAqIG1heF93b3JrZXJfcHJvY2Vzc2VzID49IDEgKyBudW1iZXIg b2YgZGJzIHRvIGJlIGNvbnZlcnRlZAogCSAqLwotCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNlKGRi aW5mb1swXS5zdWJjb25uaW5mbyk7CisJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2Uoc3RhbmRieS0+ YmFzZV9jb25uaW5mbywgZGJhcnItPnBlcmRiWzBdLmRibmFtZSk7CiAJaWYgKGNvbm4gPT0gTlVM TCkKIAkJZXhpdCgxKTsKIApAQCAtODQ5LDM1ICs4NDEsNDEgQEAgY2hlY2tfc3Vic2NyaWJlcihM b2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCW1heF9yZXBzbG90cyA9IGF0b2koUFFnZXR2YWx1ZShy ZXMsIDEsIDApKTsKIAltYXhfd3Byb2NzID0gYXRvaShQUWdldHZhbHVlKHJlcywgMiwgMCkpOwog CWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIDMsIDApLCAiIikgIT0gMCkKLQkJcHJpbWFyeV9z bG90X25hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIDMsIDApKTsKKwkJc3RhbmRieS0+ cHJpbWFyeV9zbG90X25hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIDMsIDApKTsKIAog CXBnX2xvZ19kZWJ1Zygic3Vic2NyaWJlcjogbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy czogJWQiLCBtYXhfbHJ3b3JrZXJzKTsKIAlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1heF9y ZXBsaWNhdGlvbl9zbG90czogJWQiLCBtYXhfcmVwc2xvdHMpOwogCXBnX2xvZ19kZWJ1Zygic3Vi c2NyaWJlcjogbWF4X3dvcmtlcl9wcm9jZXNzZXM6ICVkIiwgbWF4X3dwcm9jcyk7Ci0JcGdfbG9n X2RlYnVnKCJzdWJzY3JpYmVyOiBwcmltYXJ5X3Nsb3RfbmFtZTogJXMiLCBwcmltYXJ5X3Nsb3Rf bmFtZSk7CisJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBwcmltYXJ5X3Nsb3RfbmFtZTogJXMi LCBzdGFuZGJ5LT5wcmltYXJ5X3Nsb3RfbmFtZSk7CiAKIAlQUWNsZWFyKHJlcyk7CiAKIAlkaXNj b25uZWN0X2RhdGFiYXNlKGNvbm4pOwogCi0JaWYgKG1heF9yZXBzbG90cyA8IG51bV9kYnMpCisJ aWYgKG1heF9yZXBzbG90cyA8IGRiYXJyLT5uZGJzKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJzdWJz Y3JpYmVyIHJlcXVpcmVzICVkIHJlcGxpY2F0aW9uIHNsb3RzLCBidXQgb25seSAlZCByZW1haW4i LCBudW1fZGJzLCBtYXhfcmVwc2xvdHMpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiQ29uc2lkZXIg aW5jcmVhc2luZyBtYXhfcmVwbGljYXRpb25fc2xvdHMgdG8gYXQgbGVhc3QgJWQuIiwgbnVtX2Ri cyk7CisJCXBnX2xvZ19lcnJvcigic3Vic2NyaWJlciByZXF1aXJlcyAlZCByZXBsaWNhdGlvbiBz bG90cywgYnV0IG9ubHkgJWQgcmVtYWluIiwKKwkJCQkJIGRiYXJyLT5uZGJzLCBtYXhfcmVwc2xv dHMpOworCQlwZ19sb2dfZXJyb3JfaGludCgiQ29uc2lkZXIgaW5jcmVhc2luZyBtYXhfcmVwbGlj YXRpb25fc2xvdHMgdG8gYXQgbGVhc3QgJWQuIiwKKwkJCQkJCSAgZGJhcnItPm5kYnMpOwogCQly ZXR1cm4gZmFsc2U7CiAJfQogCi0JaWYgKG1heF9scndvcmtlcnMgPCBudW1fZGJzKQorCWlmICht YXhfbHJ3b3JrZXJzIDwgZGJhcnItPm5kYnMpCiAJewotCQlwZ19sb2dfZXJyb3IoInN1YnNjcmli ZXIgcmVxdWlyZXMgJWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzLCBidXQgb25seSAlZCBy ZW1haW4iLCBudW1fZGJzLCBtYXhfbHJ3b3JrZXJzKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIkNv bnNpZGVyIGluY3JlYXNpbmcgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyB0byBhdCBs ZWFzdCAlZC4iLCBudW1fZGJzKTsKKwkJcGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVz ICVkIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VycywgYnV0IG9ubHkgJWQgcmVtYWluIiwKKwkJ CQkJIGRiYXJyLT5uZGJzLCBtYXhfbHJ3b3JrZXJzKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIkNv bnNpZGVyIGluY3JlYXNpbmcgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyB0byBhdCBs ZWFzdCAlZC4iLAorCQkJCQkJICBkYmFyci0+bmRicyk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAK LQlpZiAobWF4X3dwcm9jcyA8IG51bV9kYnMgKyAxKQorCWlmIChtYXhfd3Byb2NzIDwgZGJhcnIt Pm5kYnMgKyAxKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJzdWJzY3JpYmVyIHJlcXVpcmVzICVkIHdv cmtlciBwcm9jZXNzZXMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsIG51bV9kYnMgKyAxLCBtYXhfd3By b2NzKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcgbWF4X3dvcmtl cl9wcm9jZXNzZXMgdG8gYXQgbGVhc3QgJWQuIiwgbnVtX2RicyArIDEpOworCQlwZ19sb2dfZXJy b3IoInN1YnNjcmliZXIgcmVxdWlyZXMgJWQgd29ya2VyIHByb2Nlc3NlcywgYnV0IG9ubHkgJWQg cmVtYWluIiwKKwkJCQkJIGRiYXJyLT5uZGJzICsgMSwgbWF4X3dwcm9jcyk7CisJCXBnX2xvZ19l cnJvcl9oaW50KCJDb25zaWRlciBpbmNyZWFzaW5nIG1heF93b3JrZXJfcHJvY2Vzc2VzIHRvIGF0 IGxlYXN0ICVkLiIsCisJCQkJCQkgIGRiYXJyLT5uZGJzICsgMSk7CiAJCXJldHVybiBmYWxzZTsK IAl9CiAKQEAgLTg4OSwxNCArODg3LDE3IEBAIGNoZWNrX3N1YnNjcmliZXIoTG9naWNhbFJlcElu Zm8gKmRiaW5mbykKICAqIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9ucy4gVGhhdCdzIHRoZSBsYXN0 IHN0ZXAgZm9yIGxvZ2ljYWwgcmVwbGlhdGlvbiBzZXR1cC4KICAqLwogc3RhdGljIGJvb2wKLXNl dHVwX3N1YnNjcmliZXIoTG9naWNhbFJlcEluZm8gKmRiaW5mbywgY29uc3QgY2hhciAqY29uc2lz dGVudF9sc24pCitzZXR1cF9zdWJzY3JpYmVyKFN0YW5kYnlJbmZvICpzdGFuZGJ5LCBQcmltYXJ5 SW5mbyAqcHJpbWFyeSwKKwkJCQkgTG9naWNhbFJlcFBlcmRiSW5mb0FyciAqZGJhcnIsIGNvbnN0 IGNoYXIgKmNvbnNpc3RlbnRfbHNuKQogewogCVBHY29ubgkgICAqY29ubjsKIAotCWZvciAoaW50 IGkgPSAwOyBpIDwgbnVtX2RiczsgaSsrKQorCWZvciAoaW50IGkgPSAwOyBpIDwgZGJhcnItPm5k YnM7IGkrKykKIAl7CisJCUxvZ2ljYWxSZXBQZXJkYkluZm8gKnBlcmRiID0gJmRiYXJyLT5wZXJk YltpXTsKKwogCQkvKiBDb25uZWN0IHRvIHN1YnNjcmliZXIuICovCi0JCWNvbm4gPSBjb25uZWN0 X2RhdGFiYXNlKGRiaW5mb1tpXS5zdWJjb25uaW5mbyk7CisJCWNvbm4gPSBjb25uZWN0X2RhdGFi YXNlKHN0YW5kYnktPmJhc2VfY29ubmluZm8sIHBlcmRiLT5kYm5hbWUpOwogCQlpZiAoY29ubiA9 PSBOVUxMKQogCQkJZXhpdCgxKTsKIApAQCAtOTA1LDE1ICs5MDYsMTUgQEAgc2V0dXBfc3Vic2Ny aWJlcihMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpjb25zaXN0ZW50X2xzbikK IAkJICogYXZhaWxhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIHdoZW4gdGhlIHBoeXNpY2FsIHJlcGxp Y2EgaXMgcHJvbW90ZWQuCiAJCSAqIFJlbW92ZSBwdWJsaWNhdGlvbnMgZnJvbSB0aGUgc3Vic2Ny aWJlciBiZWNhdXNlIGl0IGhhcyBubyB1c2UuCiAJCSAqLwotCQlkcm9wX3B1YmxpY2F0aW9uKGNv bm4sICZkYmluZm9baV0pOworCQlkcm9wX3B1YmxpY2F0aW9uKGNvbm4sIHBlcmRiKTsKIAotCQlj cmVhdGVfc3Vic2NyaXB0aW9uKGNvbm4sICZkYmluZm9baV0pOworCQljcmVhdGVfc3Vic2NyaXB0 aW9uKGNvbm4sIHN0YW5kYnksIHByaW1hcnksIHBlcmRiKTsKIAogCQkvKiBTZXQgdGhlIHJlcGxp Y2F0aW9uIHByb2dyZXNzIHRvIHRoZSBjb3JyZWN0IExTTi4gKi8KLQkJc2V0X3JlcGxpY2F0aW9u X3Byb2dyZXNzKGNvbm4sICZkYmluZm9baV0sIGNvbnNpc3RlbnRfbHNuKTsKKwkJc2V0X3JlcGxp Y2F0aW9uX3Byb2dyZXNzKGNvbm4sIHBlcmRiLCBjb25zaXN0ZW50X2xzbik7CiAKIAkJLyogRW5h YmxlIHN1YnNjcmlwdGlvbi4gKi8KLQkJZW5hYmxlX3N1YnNjcmlwdGlvbihjb25uLCAmZGJpbmZv W2ldKTsKKwkJZW5hYmxlX3N1YnNjcmlwdGlvbihjb25uLCBwZXJkYik7CiAKIAkJZGlzY29ubmVj dF9kYXRhYmFzZShjb25uKTsKIAl9CkBAIC05MjksMzEgKzkzMCwzNSBAQCBzZXR1cF9zdWJzY3Jp YmVyKExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNvbnN0IGNoYXIgKmNvbnNpc3RlbnRfbHNuKQog ICogcmVzdWx0IHNldCB0aGF0IGNvbnRhaW5zIHRoZSBjb25zaXN0ZW50IExTTi4KICAqLwogc3Rh dGljIGNoYXIgKgotY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4s IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sCi0JCQkJCQkJCWNoYXIgKnNsb3RfbmFtZSkKK2NyZWF0 ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoUEdjb25uICpjb25uLCBib29sIHRlbXBvcmFyeSwK KwkJCQkJCQkJTG9naWNhbFJlcFBlcmRiSW5mbyAqcGVyZGIpCiB7CiAJUFFFeHBCdWZmZXIgc3Ry ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAlQR3Jlc3VsdCAgICpyZXMgPSBOVUxMOwogCWNoYXIJ ICAgKmxzbiA9IE5VTEw7Ci0JYm9vbAkJdHJhbnNpZW50X3JlcGxzbG90ID0gZmFsc2U7CisJY2hh cgkJc2xvdF9uYW1lW05BTUVEQVRBTEVOXTsKIAogCUFzc2VydChjb25uICE9IE5VTEwpOwogCiAJ LyoKLQkgKiBJZiBubyBzbG90IG5hbWUgaXMgaW5mb3JtZWQsIGl0IGlzIGEgdHJhbnNpZW50IHJl cGxpY2F0aW9uIHNsb3QgdXNlZAotCSAqIG9ubHkgZm9yIGNhdGNoIHVwIHB1cnBvc2VzLgotCSAq LwotCWlmIChzbG90X25hbWVbMF0gPT0gJ1wwJykKLQl7Ci0JCXNucHJpbnRmKHNsb3RfbmFtZSwg TkFNRURBVEFMRU4sICJwZ19jcmVhdGVzdWJzY3JpYmVyXyVkX3N0YXJ0cG9pbnQiLAorCSAqIENv bnN0cnVjdCBhIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90LiBUaGUgZm9ybWF0dGlu ZyBpcworCSAqIGRpZmZlcmVudCBkZXBlbmRzIG9uIGl0cyBwZXJzaXN0ZW5jeS4KKwkgKgorCSAq IEZvciBwZXJzaXN0ZW50IHNsb3RzOiB0aGUgbmFtZSBtdXN0IGJlIHNhbWUgYXMgdGhlIHN1YnNj cmlwdGlvbi4KKwkgKiBGb3IgdGVtcG9yYXJ5IHNsb3RzOiBPSUQgaXMgbm90IG5lZWRlZCwgYnV0 IGFub3RoZXIgc3RyaW5nIGlzIGFkZGVkLgorIAkgKi8KKwlpZiAodGVtcG9yYXJ5KQorCQlzbnBy aW50ZihzbG90X25hbWUsIE5BTUVEQVRBTEVOLCAicGdfc3Vic2NyaWJlcl8lZF9zdGFydHBvaW50 IiwKIAkJCQkgKGludCkgZ2V0cGlkKCkpOwotCQl0cmFuc2llbnRfcmVwbHNsb3QgPSB0cnVlOwot CX0KKwllbHNlCisJCWdldF9zdWJzY3JpcHRpb25fbmFtZShwZXJkYi0+b2lkLCAoaW50KSBnZXRw aWQoKSwgc2xvdF9uYW1lLAorCQkJCQkJCSAgTkFNRURBVEFMRU4pOwogCi0JcGdfbG9nX2luZm8o ImNyZWF0aW5nIHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCIi LCBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwlwZ19sb2dfaW5mbygiY3JlYXRpbmcgdGhl IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJc2xvdF9u YW1lLCBwZXJkYi0+ZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIlNFTEVDVCAq IEZST00gcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJXMnLCAncGdvdXRwdXQn LCAlcywgZmFsc2UsIGZhbHNlKTsiLAotCQkJCQkgIHNsb3RfbmFtZSwgdHJhbnNpZW50X3JlcGxz bG90ID8gInRydWUiIDogImZhbHNlIik7CisJCQkJCSAgc2xvdF9uYW1lLCB0ZW1wb3JhcnkgPyAi dHJ1ZSIgOiAiZmFsc2UiKTsKIAogCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHIt PmRhdGEpOwogCkBAIC05NjIsMTUgKzk2NywxOSBAQCBjcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlv bl9zbG90KFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbywKIAkJcmVzID0gUFFl eGVjKGNvbm4sIHN0ci0+ZGF0YSk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X1RVUExFU19PSykKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHJlcGxp Y2F0aW9uIHNsb3QgXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIjogJXMiLCBzbG90X25hbWUsIGRi aW5mby0+ZGJuYW1lLAotCQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIGRh dGFiYXNlIFwiJXNcIjogJXMiLAorCQkJCQkJIHNsb3RfbmFtZSwgcGVyZGItPmRibmFtZSwgUFFy ZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQlyZXR1cm4gbHNuOwogCQl9CiAJfQogCisJcGdf bG9nX2luZm8oImNyZWF0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBvbiBwdWJsaXNoZXIiLCBz bG90X25hbWUpOworCiAJLyogZm9yIGNsZWFudXAgcHVycG9zZXMgKi8KLQlpZiAoIXRyYW5zaWVu dF9yZXBsc2xvdCkKLQkJZGJpbmZvLT5tYWRlX3JlcGxzbG90ID0gdHJ1ZTsKKwlpZiAodGVtcG9y YXJ5KQorCQlwcmltYXJ5Lm1hZGVfdHJhbnNpZW50X3JlcGxzbG90ID0gdHJ1ZTsKKwllbHNlCisJ CXBlcmRiLT5tYWRlX3JlcGxzbG90ID0gdHJ1ZTsKIAogCWlmICghZHJ5X3J1bikKIAl7CkBAIC05 ODQsMTQgKzk5MywxNiBAQCBjcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KFBHY29ubiAq Y29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5mbywKIH0KIAogc3RhdGljIHZvaWQKLWRyb3BfcmVw bGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNvbnN0 IGNoYXIgKnNsb3RfbmFtZSkKK2Ryb3BfcmVwbGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIExv Z2ljYWxSZXBQZXJkYkluZm8gKnBlcmRiLAorCQkJCQkgIGNvbnN0IGNoYXIgKnNsb3RfbmFtZSkK IHsKIAlQUUV4cEJ1ZmZlciBzdHIgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCVBHcmVzdWx0ICAg KnJlczsKIAogCUFzc2VydChjb25uICE9IE5VTEwpOwogCi0JcGdfbG9nX2luZm8oImRyb3BwaW5n IHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCIiLCBzbG90X25h bWUsIGRiaW5mby0+ZGJuYW1lKTsKKwlwZ19sb2dfaW5mbygiZHJvcHBpbmcgdGhlIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJc2xvdF9uYW1lLCBwZXJk Yi0+ZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIlNFTEVDVCAqIEZST00gcGdf ZHJvcF9yZXBsaWNhdGlvbl9zbG90KCclcycpOyIsCiAJCQkJCSAgc2xvdF9uYW1lKTsKQEAgLTEw MDIsOCArMTAxMyw4IEBAIGRyb3BfcmVwbGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIExvZ2lj YWxSZXBJbmZvICpkYmluZm8sIGNvbnN0IGNoYXIgKnNsb3RfbmFtCiAJewogCQlyZXMgPSBQUWV4 ZWMoY29ubiwgc3RyLT5kYXRhKTsKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNf VFVQTEVTX09LKQotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZHJvcCByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwgc2xvdF9uYW1lLCBkYmluZm8tPmRi bmFtZSwKLQkJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIjog JXMiLAorCQkJCQkJIHNsb3RfbmFtZSwgcGVyZGItPmRibmFtZSwgUFFlcnJvck1lc3NhZ2UoY29u bikpOwogCiAJCVBRY2xlYXIocmVzKTsKIAl9CkBAIC0xMDM5LDIzICsxMDUwLDI1IEBAIHNlcnZl cl9sb2dmaWxlX25hbWUoY29uc3QgY2hhciAqZGF0YWRpcikKIH0KIAogc3RhdGljIHZvaWQKLXN0 YXJ0X3N0YW5kYnlfc2VydmVyKGNvbnN0IGNoYXIgKnBnX2N0bF9wYXRoLCBjb25zdCBjaGFyICpk YXRhZGlyLCBjb25zdCBjaGFyICpsb2dmaWxlKQorc3RhcnRfc3RhbmRieV9zZXJ2ZXIoU3RhbmRi eUluZm8gKnN0YW5kYnkpCiB7CiAJY2hhcgkgICAqcGdfY3RsX2NtZDsKIAlpbnQJCQlyYzsKIAot CXBnX2N0bF9jbWQgPSBwc3ByaW50ZigiXCIlc1wiIHN0YXJ0IC1EIFwiJXNcIiAtcyAtbCBcIiVz XCIiLCBwZ19jdGxfcGF0aCwgZGF0YWRpciwgbG9nZmlsZSk7CisJcGdfY3RsX2NtZCA9IHBzcHJp bnRmKCJcIiVzL3BnX2N0bFwiIHN0YXJ0IC1EIFwiJXNcIiAtcyAtbCBcIiVzXCIiLAorCQkJCQkJ ICBzdGFuZGJ5LT5iaW5kaXIsIHN0YW5kYnktPnBnZGF0YSwgc3RhbmRieS0+c2VydmVyX2xvZyk7 CiAJcmMgPSBzeXN0ZW0ocGdfY3RsX2NtZCk7CiAJcGdfY3RsX3N0YXR1cyhwZ19jdGxfY21kLCBy YywgMSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1zdG9wX3N0YW5kYnlfc2VydmVyKGNvbnN0IGNoYXIg KnBnX2N0bF9wYXRoLCBjb25zdCBjaGFyICpkYXRhZGlyKQorc3RvcF9zdGFuZGJ5X3NlcnZlcihT dGFuZGJ5SW5mbyAqc3RhbmRieSkKIHsKIAljaGFyCSAgICpwZ19jdGxfY21kOwogCWludAkJCXJj OwogCi0JcGdfY3RsX2NtZCA9IHBzcHJpbnRmKCJcIiVzXCIgc3RvcCAtRCBcIiVzXCIgLXMiLCBw Z19jdGxfcGF0aCwgZGF0YWRpcik7CisJcGdfY3RsX2NtZCA9IHBzcHJpbnRmKCJcIiVzL3BnX2N0 bFwiIHN0b3AgLUQgXCIlc1wiIC1zIiwgc3RhbmRieS0+YmluZGlyLAorCQkJCQkJICBzdGFuZGJ5 LT5wZ2RhdGEpOwogCXJjID0gc3lzdGVtKHBnX2N0bF9jbWQpOwogCXBnX2N0bF9zdGF0dXMocGdf Y3RsX2NtZCwgcmMsIDApOwogfQpAQCAtMTEwNCw3ICsxMTE3LDcgQEAgcGdfY3RsX3N0YXR1cyhj b25zdCBjaGFyICpwZ19jdGxfY21kLCBpbnQgcmMsIGludCBhY3Rpb24pCiAgKiB0aGUgcmVjb3Zl cnkgcHJvY2Vzcy4gQnkgZGVmYXVsdCwgaXQgd2FpdHMgZm9yZXZlci4KICAqLwogc3RhdGljIHZv aWQKLXdhaXRfZm9yX2VuZF9yZWNvdmVyeShjb25zdCBjaGFyICpjb25uaW5mbykKK3dhaXRfZm9y X2VuZF9yZWNvdmVyeShTdGFuZGJ5SW5mbyAqc3RhbmRieSwgY29uc3QgY2hhciAqZGJuYW1lKQog ewogCVBHY29ubgkgICAqY29ubjsKIAlQR3Jlc3VsdCAgICpyZXM7CkBAIC0xMTEzLDcgKzExMjYs NyBAQCB3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoY29uc3QgY2hhciAqY29ubmluZm8pCiAKIAlwZ19s b2dfaW5mbygid2FpdGluZyB0aGUgcG9zdG1hc3RlciB0byByZWFjaCB0aGUgY29uc2lzdGVudCBz dGF0ZSIpOwogCi0JY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoY29ubmluZm8pOworCWNvbm4gPSBj b25uZWN0X2RhdGFiYXNlKHN0YW5kYnktPmJhc2VfY29ubmluZm8sIGRibmFtZSk7CiAJaWYgKGNv bm4gPT0gTlVMTCkKIAkJZXhpdCgxKTsKIApAQCAtMTE1NSw3ICsxMTY4LDcgQEAgd2FpdF9mb3Jf ZW5kX3JlY292ZXJ5KGNvbnN0IGNoYXIgKmNvbm5pbmZvKQogCQlpZiAocmVjb3ZlcnlfdGltZW91 dCA+IDAgJiYgdGltZXIgPj0gcmVjb3ZlcnlfdGltZW91dCkKIAkJewogCQkJcGdfbG9nX2Vycm9y KCJyZWNvdmVyeSB0aW1lZCBvdXQiKTsKLQkJCXN0b3Bfc3RhbmRieV9zZXJ2ZXIocGdfY3RsX3Bh dGgsIHN1YnNjcmliZXJfZGlyKTsKKwkJCXN0b3Bfc3RhbmRieV9zZXJ2ZXIoc3RhbmRieSk7CiAJ CQlleGl0KDEpOwogCQl9CiAKQEAgLTExODAsMTcgKzExOTMsMjEgQEAgd2FpdF9mb3JfZW5kX3Jl Y292ZXJ5KGNvbnN0IGNoYXIgKmNvbm5pbmZvKQogICogQ3JlYXRlIGEgcHVibGljYXRpb24gdGhh dCBpbmNsdWRlcyBhbGwgdGFibGVzIGluIHRoZSBkYXRhYmFzZS4KICAqLwogc3RhdGljIHZvaWQK LWNyZWF0ZV9wdWJsaWNhdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8p CitjcmVhdGVfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBQcmltYXJ5SW5mbyAqcHJpbWFyeSwK KwkJCQkgICBMb2dpY2FsUmVwUGVyZGJJbmZvICpwZXJkYikKIHsKIAlQUUV4cEJ1ZmZlciBzdHIg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCVBHcmVzdWx0ICAgKnJlczsKKwljaGFyCQlwdWJuYW1l W05BTUVEQVRBTEVOXTsKIAogCUFzc2VydChjb25uICE9IE5VTEwpOwogCisJZ2V0X3B1YmxpY2F0 aW9uX25hbWUocGVyZGItPm9pZCwgcHVibmFtZSwgTkFNRURBVEFMRU4pOworCiAJLyogQ2hlY2sg aWYgdGhlIHB1YmxpY2F0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWQuICovCiAJYXBwZW5kUFFFeHBC dWZmZXIoc3RyLAogCQkJCQkgICJTRUxFQ1QgcHViYWxsdGFibGVzIEZST00gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJyVzJyIsCi0JCQkJCSAgZGJpbmZvLT5wdWJu YW1lKTsKKwkJCQkJICBwdWJuYW1lKTsKIAlyZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsK IAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewpAQCAtMTIx MCw3ICsxMjI3LDcgQEAgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNhbFJl cEluZm8gKmRiaW5mbykKIAkJICovCiAJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIDAsIDAp LCAidCIpID09IDApCiAJCXsKLQkJCXBnX2xvZ19pbmZvKCJwdWJsaWNhdGlvbiBcIiVzXCIgYWxy ZWFkeSBleGlzdHMiLCBkYmluZm8tPnB1Ym5hbWUpOworCQkJcGdfbG9nX2luZm8oInB1YmxpY2F0 aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIHB1Ym5hbWUpOwogCQkJcmV0dXJuOwogCQl9CiAJ CWVsc2UKQEAgLTEyMjMsNyArMTI0MCw3IEBAIGNyZWF0ZV9wdWJsaWNhdGlvbihQR2Nvbm4gKmNv bm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJCQkgKiBleGFjdCBkYXRhYmFzZSBvaWQgaW4g d2hpY2ggcHViYWxsdGFibGVzIGlzIGZhbHNlLgogCQkJICovCiAJCQlwZ19sb2dfZXJyb3IoInB1 YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCByZXBsaWNhdGUgY2hhbmdlcyBmb3IgYWxsIHRhYmxl cyIsCi0JCQkJCQkgZGJpbmZvLT5wdWJuYW1lKTsKKwkJCQkJCSBwdWJuYW1lKTsKIAkJCXBnX2xv Z19lcnJvcl9oaW50KCJDb25zaWRlciByZW5hbWluZyB0aGlzIHB1YmxpY2F0aW9uLiIpOwogCQkJ UFFjbGVhcihyZXMpOwogCQkJUFFmaW5pc2goY29ubik7CkBAIC0xMjM0LDkgKzEyNTEsOSBAQCBj cmVhdGVfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQog CVBRY2xlYXIocmVzKTsKIAlyZXNldFBRRXhwQnVmZmVyKHN0cik7CiAKLQlwZ19sb2dfaW5mbygi Y3JlYXRpbmcgcHVibGljYXRpb24gXCIlc1wiIG9uIGRhdGFiYXNlIFwiJXNcIiIsIGRiaW5mby0+ cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCXBnX2xvZ19pbmZvKCJjcmVhdGluZyBwdWJsaWNh dGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwgcHVibmFtZSwgcGVyZGItPmRibmFtZSk7 CiAKLQlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsICJDUkVBVEUgUFVCTElDQVRJT04gJXMgRk9SIEFM TCBUQUJMRVMiLCBkYmluZm8tPnB1Ym5hbWUpOworCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIkNS RUFURSBQVUJMSUNBVElPTiAlcyBGT1IgQUxMIFRBQkxFUyIsIHB1Ym5hbWUpOwogCiAJcGdfbG9n X2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKQEAgLTEyNDYsMTQgKzEyNjMs MTQgQEAgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRi aW5mbykKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJ ewogCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHB1YmxpY2F0aW9uIFwiJXNcIiBv biBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSBkYmluZm8tPnB1Ym5hbWUsIGRiaW5mby0+ ZGJuYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQkJCQkgcHVibmFtZSwgcGVyZGItPmRi bmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOzsKIAkJCVBRZmluaXNoKGNvbm4pOwogCQkJZXhp dCgxKTsKIAkJfQogCX0KIAogCS8qIGZvciBjbGVhbnVwIHB1cnBvc2VzICovCi0JZGJpbmZvLT5t YWRlX3B1YmxpY2F0aW9uID0gdHJ1ZTsKKwlwZXJkYi0+bWFkZV9wdWJsaWNhdGlvbiA9IHRydWU7 CiAKIAlpZiAoIWRyeV9ydW4pCiAJCVBRY2xlYXIocmVzKTsKQEAgLTEyNjUsMTYgKzEyODIsMjAg QEAgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNhbFJlcEluZm8gKmRiaW5m bykKICAqIFJlbW92ZSBwdWJsaWNhdGlvbiBpZiBpdCBjb3VsZG4ndCBmaW5pc2ggYWxsIHN0ZXBz LgogICovCiBzdGF0aWMgdm9pZAotZHJvcF9wdWJsaWNhdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2lj YWxSZXBJbmZvICpkYmluZm8pCitkcm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgTG9naWNh bFJlcFBlcmRiSW5mbyAqcGVyZGIpCiB7CiAJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFFeHBC dWZmZXIoKTsKIAlQR3Jlc3VsdCAgICpyZXM7CisJY2hhcgkJcHVibmFtZVtOQU1FREFUQUxFTl07 CiAKIAlBc3NlcnQoY29ubiAhPSBOVUxMKTsKIAotCXBnX2xvZ19pbmZvKCJkcm9wcGluZyBwdWJs aWNhdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwgZGJpbmZvLT5wdWJuYW1lLCBkYmlu Zm8tPmRibmFtZSk7CisJZ2V0X3B1YmxpY2F0aW9uX25hbWUocGVyZGItPm9pZCwgcHVibmFtZSwg TkFNRURBVEFMRU4pOworCisJcGdfbG9nX2luZm8oImRyb3BwaW5nIHB1YmxpY2F0aW9uIFwiJXNc IiBvbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCXB1Ym5hbWUsIHBlcmRiLT5kYm5hbWUpOwogCi0J YXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiRFJPUCBQVUJMSUNBVElPTiAlcyIsIGRiaW5mby0+cHVi bmFtZSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiRFJPUCBQVUJMSUNBVElPTiAlcyIsIHB1 Ym5hbWUpOwogCiAJcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAK QEAgLTEyODIsNyArMTMwMyw4IEBAIGRyb3BfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBMb2dp Y2FsUmVwSW5mbyAqZGJpbmZvKQogCXsKIAkJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7 CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCi0JCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBkcm9wIHB1YmxpY2F0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBc IiVzXCI6ICVzIiwgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZHJvcCBwdWJsaWNhdGlvbiBc IiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCisJCQkJCQkgcHVibmFtZSwgcGVyZGItPmRi bmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCiAJCVBRY2xlYXIocmVzKTsKIAl9CkBAIC0x MzAzLDIyICsxMzI1LDMyIEBAIGRyb3BfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBMb2dpY2Fs UmVwSW5mbyAqZGJpbmZvKQogICogaW5pdGlhbCBsb2NhdGlvbi4KICAqLwogc3RhdGljIHZvaWQK LWNyZWF0ZV9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZv KQorY3JlYXRlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIFN0YW5kYnlJbmZvICpzdGFuZGJ5 LAorCQkJCQlQcmltYXJ5SW5mbyAqcHJpbWFyeSwKKwkJCQkJTG9naWNhbFJlcFBlcmRiSW5mbyAq cGVyZGIpCiB7CiAJUFFFeHBCdWZmZXIgc3RyID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAlQR3Jl c3VsdCAgICpyZXM7Ci0JY2hhcgkgICAqY29ubmluZm87CisJY2hhcgkJc3VibmFtZVtOQU1FREFU QUxFTl07CisJY2hhcgkJcHVibmFtZVtOQU1FREFUQUxFTl07CisJY2hhcgkgICAqZXNjYXBlZF9j b25uaW5mbzsKIAogCUFzc2VydChjb25uICE9IE5VTEwpOwogCi0JcGdfbG9nX2luZm8oImNyZWF0 aW5nIHN1YnNjcmlwdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwgZGJpbmZvLT5zdWJu YW1lLCBkYmluZm8tPmRibmFtZSk7CisJZ2V0X3N1YnNjcmlwdGlvbl9uYW1lKHBlcmRiLT5vaWQs IChpbnQpIGdldHBpZCgpLCBzdWJuYW1lLCBOQU1FREFUQUxFTik7CisJZ2V0X3B1YmxpY2F0aW9u X25hbWUocGVyZGItPm9pZCwgcHVibmFtZSwgTkFNRURBVEFMRU4pOwogCi0JY29ubmluZm8gPSBl c2NhcGVfc2luZ2xlX3F1b3Rlc19hc2NpaShkYmluZm8tPnB1YmNvbm5pbmZvKTsKKwlwZ19sb2df aW5mbygiY3JlYXRpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCIiLCBz dWJuYW1lLAorCQkJCXBlcmRiLT5kYm5hbWUpOworCisJZXNjYXBlZF9jb25uaW5mbyA9IGVzY2Fw ZV9zaW5nbGVfcXVvdGVzX2FzY2lpKHByaW1hcnktPmJhc2VfY29ubmluZm8pOwogCiAJYXBwZW5k UFFFeHBCdWZmZXIoc3RyLAogCQkJCQkgICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzIENPTk5FQ1RJ T04gJyVzJyBQVUJMSUNBVElPTiAlcyAiCiAJCQkJCSAgIldJVEggKGNyZWF0ZV9zbG90ID0gZmFs c2UsIGNvcHlfZGF0YSA9IGZhbHNlLCBlbmFibGVkID0gZmFsc2UpIiwKLQkJCQkJICBkYmluZm8t PnN1Ym5hbWUsIGNvbm5pbmZvLCBkYmluZm8tPnB1Ym5hbWUpOworCQkJCQkgIHN1Ym5hbWUsCisJ CQkJCSAgY29uY2F0X2Nvbm5pbmZvX2RibmFtZShlc2NhcGVkX2Nvbm5pbmZvLCBwZXJkYi0+ZGJu YW1lKSwKKwkJCQkJICBwdWJuYW1lKTsKIAogCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMi LCBzdHItPmRhdGEpOwogCkBAIC0xMzI4LDE5ICsxMzYwLDE5IEBAIGNyZWF0ZV9zdWJzY3JpcHRp b24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCQlpZiAoUFFyZXN1bHRT dGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQl7CiAJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBjcmVhdGUgc3Vic2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCI6ICVz IiwKLQkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCQkJCQkgc3VibmFtZSwgcGVyZGItPmRibmFtZSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwogCQkJUFFmaW5pc2goY29ubik7CiAJCQlleGl0KDEpOwogCQl9CiAJfQogCiAJLyog Zm9yIGNsZWFudXAgcHVycG9zZXMgKi8KLQlkYmluZm8tPm1hZGVfc3Vic2NyaXB0aW9uID0gdHJ1 ZTsKKwlwZXJkYi0+bWFkZV9zdWJzY3JpcHRpb24gPSB0cnVlOwogCiAJaWYgKCFkcnlfcnVuKQog CQlQUWNsZWFyKHJlcyk7CiAKLQlwZ19mcmVlKGNvbm5pbmZvKTsKKwlwZ19mcmVlKGVzY2FwZWRf Y29ubmluZm8pOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihzdHIpOwogfQogCkBAIC0xMzQ4LDE2ICsx MzgwLDIwIEBAIGNyZWF0ZV9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5m byAqZGJpbmZvKQogICogUmVtb3ZlIHN1YnNjcmlwdGlvbiBpZiBpdCBjb3VsZG4ndCBmaW5pc2gg YWxsIHN0ZXBzLgogICovCiBzdGF0aWMgdm9pZAotZHJvcF9zdWJzY3JpcHRpb24oUEdjb25uICpj b25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQorZHJvcF9zdWJzY3JpcHRpb24oUEdjb25uICpj b25uLCBMb2dpY2FsUmVwUGVyZGJJbmZvICpwZXJkYikKIHsKIAlQUUV4cEJ1ZmZlciBzdHIgPSBj cmVhdGVQUUV4cEJ1ZmZlcigpOwogCVBHcmVzdWx0ICAgKnJlczsKKwljaGFyCQlzdWJuYW1lW05B TUVEQVRBTEVOXTsKIAogCUFzc2VydChjb25uICE9IE5VTEwpOwogCi0JcGdfbG9nX2luZm8oImRy b3BwaW5nIHN1YnNjcmlwdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiIiwgZGJpbmZvLT5z dWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CisJZ2V0X3N1YnNjcmlwdGlvbl9uYW1lKHBlcmRiLT5v aWQsIChpbnQpIGdldHBpZCgpLCBzdWJuYW1lLCBOQU1FREFUQUxFTik7CisKKwlwZ19sb2dfaW5m bygiZHJvcHBpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJ CXN1Ym5hbWUsIHBlcmRiLT5kYm5hbWUpOwogCi0JYXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiRFJP UCBTVUJTQ1JJUFRJT04gJXMiLCBkYmluZm8tPnN1Ym5hbWUpOworCWFwcGVuZFBRRXhwQnVmZmVy KHN0ciwgIkRST1AgU1VCU0NSSVBUSU9OICVzIiwgc3VibmFtZSk7CiAKIAlwZ19sb2dfZGVidWco ImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIApAQCAtMTM2NSw3ICsxNDAxLDggQEAgZHJv cF9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCXsK IAkJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhy ZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCi0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBkcm9w IHN1YnNjcmlwdGlvbiBcIiVzXCIgb24gZGF0YWJhc2UgXCIlc1wiOiAlcyIsIGRiaW5mby0+c3Vi bmFtZSwgZGJpbmZvLT5kYm5hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IGRyb3Agc3Vic2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVz XCI6ICVzIiwKKwkJCQkJCSBzdWJuYW1lLCBwZXJkYi0+ZGJuYW1lLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CiAKIAkJUFFjbGVhcihyZXMpOwogCX0KQEAgLTEzODQsMTggKzE0MjEsMjMgQEAgZHJv cF9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogICog cHJpbnRpbmcgcHVycG9zZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1zZXRfcmVwbGljYXRpb25fcHJv Z3Jlc3MoUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICps c24pCitzZXRfcmVwbGljYXRpb25fcHJvZ3Jlc3MoUEdjb25uICpjb25uLCBMb2dpY2FsUmVwUGVy ZGJJbmZvICpwZXJkYiwKKwkJCQkJCSBjb25zdCBjaGFyICpsc24pCiB7CiAJUFFFeHBCdWZmZXIg c3RyID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJT2lkCQkJc3Vi b2lkOwogCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwogCWNoYXIJCWxzbnN0clsxNyAr IDFdOyAvKiBNQVhQR19MU05MRU4gPSAxNyAqLworCWNoYXIJCXN1Ym5hbWVbTkFNRURBVEFMRU5d OwogCiAJQXNzZXJ0KGNvbm4gIT0gTlVMTCk7CiAKKwlnZXRfc3Vic2NyaXB0aW9uX25hbWUocGVy ZGItPm9pZCwgKGludCkgZ2V0cGlkKCksIHN1Ym5hbWUsIE5BTUVEQVRBTEVOKTsKKwogCWFwcGVu ZFBRRXhwQnVmZmVyKHN0ciwKLQkJCQkJICAiU0VMRUNUIG9pZCBGUk9NIHBnX2NhdGFsb2cucGdf c3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAnJXMnIiwgZGJpbmZvLT5zdWJuYW1lKTsKKwkJ CQkJICAiU0VMRUNUIG9pZCBGUk9NIHBnX2NhdGFsb2cucGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1 Ym5hbWUgPSAnJXMnIiwKKwkJCQkJICBzdWJuYW1lKTsKIAogCXJlcyA9IFBRZXhlYyhjb25uLCBz dHItPmRhdGEpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykK QEAgLTE0MzYsNyArMTQ3OCw3IEBAIHNldF9yZXBsaWNhdGlvbl9wcm9ncmVzcyhQR2Nvbm4gKmNv bm4sIExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNvbnN0IGNoYXIgKmxzbikKIAlQUWNsZWFyKHJl cyk7CiAKIAlwZ19sb2dfaW5mbygic2V0dGluZyB0aGUgcmVwbGljYXRpb24gcHJvZ3Jlc3MgKG5v ZGUgbmFtZSBcIiVzXCIgOyBMU04gJXMpIG9uIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJb3JpZ2lu bmFtZSwgbHNuc3RyLCBkYmluZm8tPmRibmFtZSk7CisJCQkJb3JpZ2lubmFtZSwgbHNuc3RyLCBw ZXJkYi0+ZGJuYW1lKTsKIAogCXJlc2V0UFFFeHBCdWZmZXIoc3RyKTsKIAlhcHBlbmRQUUV4cEJ1 ZmZlcihzdHIsCkBAIC0xNDUwLDcgKzE0OTIsNyBAQCBzZXRfcmVwbGljYXRpb25fcHJvZ3Jlc3Mo UEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpsc24pCiAJ CWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAkJewogCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3Qgc2V0IHJlcGxpY2F0aW9uIHByb2dyZXNzIGZvciB0aGUgc3Vi c2NyaXB0aW9uIFwiJXNcIjogJXMiLAotCQkJCQkJIGRiaW5mby0+c3VibmFtZSwgUFFyZXN1bHRF cnJvck1lc3NhZ2UocmVzKSk7CisJCQkJCQkgc3VibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2Uo cmVzKSk7CiAJCQlQUWZpbmlzaChjb25uKTsKIAkJCWV4aXQoMSk7CiAJCX0KQEAgLTE0NjksMTYg KzE1MTEsMjAgQEAgc2V0X3JlcGxpY2F0aW9uX3Byb2dyZXNzKFBHY29ubiAqY29ubiwgTG9naWNh bFJlcEluZm8gKmRiaW5mbywgY29uc3QgY2hhciAqbHNuKQogICogb2YgdGhpcyBzZXR1cC4KICAq Lwogc3RhdGljIHZvaWQKLWVuYWJsZV9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBMb2dpY2Fs UmVwSW5mbyAqZGJpbmZvKQorZW5hYmxlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIExvZ2lj YWxSZXBQZXJkYkluZm8gKnBlcmRiKQogewogCVBRRXhwQnVmZmVyIHN0ciA9IGNyZWF0ZVBRRXhw QnVmZmVyKCk7CiAJUEdyZXN1bHQgICAqcmVzOworCWNoYXIJCXN1Ym5hbWVbTkFNRURBVEFMRU5d OwogCiAJQXNzZXJ0KGNvbm4gIT0gTlVMTCk7CiAKLQlwZ19sb2dfaW5mbygiZW5hYmxpbmcgc3Vi c2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCIiLCBkYmluZm8tPnN1Ym5hbWUsIGRi aW5mby0+ZGJuYW1lKTsKKwlnZXRfc3Vic2NyaXB0aW9uX25hbWUocGVyZGItPm9pZCwgKGludCkg Z2V0cGlkKCksIHN1Ym5hbWUsIE5BTUVEQVRBTEVOKTsKKwlwZ19sb2dfaW5mbygiZW5hYmxpbmcg c3Vic2NyaXB0aW9uIFwiJXNcIiBvbiBkYXRhYmFzZSBcIiVzXCIiLCBzdWJuYW1lLAorCQkJCXBl cmRiLT5kYm5hbWUpOworCQogCi0JYXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiQUxURVIgU1VCU0NS SVBUSU9OICVzIEVOQUJMRSIsIGRiaW5mby0+c3VibmFtZSk7CisJYXBwZW5kUFFFeHBCdWZmZXIo c3RyLCAiQUxURVIgU1VCU0NSSVBUSU9OICVzIEVOQUJMRSIsIHN1Ym5hbWUpOwogCiAJcGdfbG9n X2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKQEAgLTE0ODcsNyArMTUzMyw3 IEBAIGVuYWJsZV9zdWJzY3JpcHRpb24oUEdjb25uICpjb25uLCBMb2dpY2FsUmVwSW5mbyAqZGJp bmZvKQogCQlyZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKIAkJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3QgZW5hYmxlIHN1YnNjcmlwdGlvbiBcIiVzXCI6ICVzIiwgZGJpbmZvLT5zdWJuYW1lLAor CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZW5hYmxlIHN1YnNjcmlwdGlvbiBcIiVzXCI6ICVz Iiwgc3VibmFtZSwKIAkJCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCQlQUWZpbmlzaChj b25uKTsKIAkJCWV4aXQoMSk7CkBAIC0xNTIwLDE2ICsxNTY2LDEwIEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCWludAkJCW9wdGlvbl9pbmRleDsKIAogCWNoYXIJICAgKmJhc2VfZGly OwotCWNoYXIJICAgKnNlcnZlcl9zdGFydF9sb2c7CiAJaW50CQkJbGVuOwogCi0JY2hhcgkgICAq cHViX2Jhc2VfY29ubmluZm8gPSBOVUxMOwotCWNoYXIJICAgKnN1Yl9iYXNlX2Nvbm5pbmZvID0g TlVMTDsKIAljaGFyCSAgICpkYm5hbWVfY29ubmluZm8gPSBOVUxMOwotCWNoYXIJCXRlbXBfcmVw bHNsb3RbTkFNRURBVEFMRU5dID0gezB9OwogCi0JdWludDY0CQlwdWJfc3lzaWQ7Ci0JdWludDY0 CQlzdWJfc3lzaWQ7CiAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKIAogCVBHY29ubgkgICAqY29ubjsK QEAgLTE1NzksNyArMTYxOSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlzd2l0 Y2ggKGMpCiAJCXsKIAkJCWNhc2UgJ0QnOgotCQkJCXN1YnNjcmliZXJfZGlyID0gcGdfc3RyZHVw KG9wdGFyZyk7CisJCQkJc3RhbmRieS5wZ2RhdGEgPSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQli cmVhazsKIAkJCWNhc2UgJ1MnOgogCQkJCXN1Yl9jb25uaW5mb19zdHIgPSBwZ19zdHJkdXAob3B0 YXJnKTsKQEAgLTE1ODksNyArMTYyOSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CQkJCWlmICghc2ltcGxlX3N0cmluZ19saXN0X21lbWJlcigmZGF0YWJhc2VfbmFtZXMsIG9wdGFy ZykpCiAJCQkJewogCQkJCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKCZkYXRhYmFzZV9uYW1l cywgb3B0YXJnKTsKLQkJCQkJbnVtX2RicysrOworCQkJCQlkYmFyci5uZGJzKys7CiAJCQkJfQog CQkJCWJyZWFrOwogCQkJY2FzZSAnbic6CkBAIC0xNjI1LDcgKzE2NjUsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkvKgogCSAqIFJlcXVpcmVkIGFyZ3VtZW50cwogCSAqLwotCWlm IChzdWJzY3JpYmVyX2RpciA9PSBOVUxMKQorCWlmIChzdGFuZGJ5LnBnZGF0YSA9PSBOVUxMKQog CXsKIAkJcGdfbG9nX2Vycm9yKCJubyBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmll ZCIpOwogCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5m b3JtYXRpb24uIiwgcHJvZ25hbWUpOwpAQCAtMTYzOCw4ICsxNjc4LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCXBnX2xvZ19lcnJvcl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBm b3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQotCXN1Yl9i YXNlX2Nvbm5pbmZvID0gZ2V0X2Jhc2VfY29ubmluZm8oc3ViX2Nvbm5pbmZvX3N0ciwgZGJuYW1l X2Nvbm5pbmZvKTsKLQlpZiAoc3ViX2Jhc2VfY29ubmluZm8gPT0gTlVMTCkKKwlzdGFuZGJ5LmJh c2VfY29ubmluZm8gPSBnZXRfYmFzZV9jb25uaW5mbyhzdWJfY29ubmluZm9fc3RyLCBkYm5hbWVf Y29ubmluZm8pOworCWlmIChzdGFuZGJ5LmJhc2VfY29ubmluZm8gPT0gTlVMTCkKIAkJZXhpdCgx KTsKIAogCWlmIChkYXRhYmFzZV9uYW1lcy5oZWFkID09IE5VTEwpCkBAIC0xNjU0LDcgKzE2OTQs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJaWYgKGRibmFtZV9jb25uaW5mbykK IAkJewogCQkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgmZGF0YWJhc2VfbmFtZXMsIGRibmFt ZV9jb25uaW5mbyk7Ci0JCQludW1fZGJzKys7CisJCQlkYmFyci5uZGJzKys7CiAKIAkJCXBnX2xv Z19pbmZvKCJkYXRhYmFzZSBcIiVzXCIgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBzdWJzY3JpYmVy IGNvbm5lY3Rpb24gc3RyaW5nIiwKIAkJCQkJCWRibmFtZV9jb25uaW5mbyk7CkBAIC0xNjY4LDIw ICsxNzA4LDIwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCX0KIAogCS8qIE9idGFp biBhIGNvbm5lY3Rpb24gc3RyaW5nIGZyb20gdGhlIHRhcmdldCAqLwotCXB1Yl9iYXNlX2Nvbm5p bmZvID0gZ2V0X3ByaW1hcnlfY29ubmluZm8oc3ViX2Jhc2VfY29ubmluZm8pOworCXByaW1hcnku YmFzZV9jb25uaW5mbyA9IGdldF9wcmltYXJ5X2Nvbm5pbmZvKCZzdGFuZGJ5KTsKIAogCS8qCiAJ ICogR2V0IHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHBnX2N0bCBhbmQgcGdfcmVzZXR3YWwgb24gdGhl IHN1YnNjcmliZXIuCiAJICovCi0JaWYgKCFnZXRfZXhlY19wYXRoKGFyZ3ZbMF0pKQorCWlmICgh Z2V0X2V4ZWNfYmFzZV9wYXRoKGFyZ3ZbMF0pKQogCQlleGl0KDEpOwogCiAJLyogcnVkaW1lbnRh cnkgY2hlY2sgZm9yIGEgZGF0YSBkaXJlY3RvcnkuICovCi0JaWYgKCFjaGVja19kYXRhX2RpcmVj dG9yeShzdWJzY3JpYmVyX2RpcikpCisJaWYgKCFjaGVja19kYXRhX2RpcmVjdG9yeShzdGFuZGJ5 LnBnZGF0YSkpCiAJCWV4aXQoMSk7CiAKLQkvKiBTdG9yZSBkYXRhYmFzZSBpbmZvcm1hdGlvbiBm b3IgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiAqLwotCWRiaW5mbyA9IHN0b3JlX3B1Yl9zdWJf aW5mbyhwdWJfYmFzZV9jb25uaW5mbywgc3ViX2Jhc2VfY29ubmluZm8pOworCS8qIFN0b3JlIGRh dGFiYXNlIGluZm9ybWF0aW9uIHRvIGRiYXJyICovCisJc3RvcmVfZGJfbmFtZXMoJmRiYXJyLnBl cmRiLCBkYmFyci5uZGJzKTsKIAogCS8qIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gY2xlYW4gdXAg b2JqZWN0cyBpbiBjYXNlIG9mIGZhaWx1cmUuICovCiAJYXRleGl0KGNsZWFudXBfb2JqZWN0c19h dGV4aXQpOwpAQCAtMTY5MCw5ICsxNzMwLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJICogQ2hlY2sgaWYgdGhlIHN1YnNjcmliZXIgZGF0YSBkaXJlY3RvcnkgaGFzIHRoZSBzYW1l IHN5c3RlbSBpZGVudGlmaWVyCiAJICogdGhhbiB0aGUgcHVibGlzaGVyIGRhdGEgZGlyZWN0b3J5 LgogCSAqLwotCXB1Yl9zeXNpZCA9IGdldF9zeXNpZF9mcm9tX2Nvbm4oZGJpbmZvWzBdLnB1YmNv bm5pbmZvKTsKLQlzdWJfc3lzaWQgPSBnZXRfY29udHJvbF9mcm9tX2RhdGFkaXIoc3Vic2NyaWJl cl9kaXIpOwotCWlmIChwdWJfc3lzaWQgIT0gc3ViX3N5c2lkKQorCWdldF9zeXNpZF9mb3JfcHJp bWFyeSgmcHJpbWFyeSwgZGJhcnIucGVyZGJbMF0uZGJuYW1lKTsKKwlnZXRfc3lzaWRfZm9yX3N0 YW5kYnkoJnN0YW5kYnkpOworCWlmIChwcmltYXJ5LnN5c2lkICE9IHN0YW5kYnkuc3lzaWQpCiAJ ewogCQlwZ19sb2dfZXJyb3IoInN1YnNjcmliZXIgZGF0YSBkaXJlY3RvcnkgaXMgbm90IGEgY29w eSBvZiB0aGUgc291cmNlIGRhdGFiYXNlIGNsdXN0ZXIiKTsKIAkJZXhpdCgxKTsKQEAgLTE3MDIs NyArMTc0Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqIENyZWF0ZSB0aGUg b3V0cHV0IGRpcmVjdG9yeSB0byBzdG9yZSBhbnkgZGF0YSBnZW5lcmF0ZWQgYnkgdGhpcyB0b29s LgogCSAqLwogCWJhc2VfZGlyID0gKGNoYXIgKikgcGdfbWFsbG9jMChNQVhQR1BBVEgpOwotCWxl biA9IHNucHJpbnRmKGJhc2VfZGlyLCBNQVhQR1BBVEgsICIlcy8lcyIsIHN1YnNjcmliZXJfZGly LCBQR1NfT1VUUFVUX0RJUik7CisJbGVuID0gc25wcmludGYoYmFzZV9kaXIsIE1BWFBHUEFUSCwg IiVzLyVzIiwgc3RhbmRieS5wZ2RhdGEsIFBHU19PVVRQVVRfRElSKTsKIAlpZiAobGVuID49IE1B WFBHUEFUSCkKIAl7CiAJCXBnX2xvZ19lcnJvcigiZGlyZWN0b3J5IHBhdGggZm9yIHN1YnNjcmli ZXIgaXMgdG9vIGxvbmciKTsKQEAgLTE3MTUsMTAgKzE3NTUsMTAgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJCWV4aXQoMSk7CiAJfQogCi0Jc2VydmVyX3N0YXJ0X2xvZyA9IHNlcnZl cl9sb2dmaWxlX25hbWUoc3Vic2NyaWJlcl9kaXIpOworCXN0YW5kYnkuc2VydmVyX2xvZyA9IHNl cnZlcl9sb2dmaWxlX25hbWUoc3RhbmRieS5wZ2RhdGEpOwogCiAJLyogc3Vic2NyaWJlciBQSUQg ZmlsZS4gKi8KLQlzbnByaW50ZihwaWRmaWxlLCBNQVhQR1BBVEgsICIlcy9wb3N0bWFzdGVyLnBp ZCIsIHN1YnNjcmliZXJfZGlyKTsKKwlzbnByaW50ZihwaWRmaWxlLCBNQVhQR1BBVEgsICIlcy9w b3N0bWFzdGVyLnBpZCIsIHN0YW5kYnkucGdkYXRhKTsKIAogCS8qCiAJICogVGhlIHN0YW5kYnkg c2VydmVyIG11c3QgYmUgcnVubmluZy4gVGhhdCdzIGJlY2F1c2Ugc29tZSBjaGVja3Mgd2lsbCBi ZQpAQCAtMTczMSw3ICsxNzcxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCS8q CiAJCSAqIENoZWNrIGlmIHRoZSBzdGFuZGJ5IHNlcnZlciBpcyByZWFkeSBmb3IgbG9naWNhbCBy ZXBsaWNhdGlvbi4KIAkJICovCi0JCWlmICghY2hlY2tfc3Vic2NyaWJlcihkYmluZm8pKQorCQlp ZiAoIWNoZWNrX3N1YnNjcmliZXIoJnN0YW5kYnksICZkYmFycikpCiAJCQlleGl0KDEpOwogCiAJ CS8qCkBAIC0xNzQwLDcgKzE3ODAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJ ICogcmVsaWVzIG9uIGNoZWNrX3N1YnNjcmliZXIoKSB0byBvYnRhaW4gdGhlIHByaW1hcnlfc2xv dF9uYW1lLgogCQkgKiBUaGF0J3Mgd2h5IGl0IGlzIGNhbGxlZCBhZnRlciBpdC4KIAkJICovCi0J CWlmICghY2hlY2tfcHVibGlzaGVyKGRiaW5mbykpCisJCWlmICghY2hlY2tfcHVibGlzaGVyKCZw cmltYXJ5LCAmZGJhcnIpKQogCQkJZXhpdCgxKTsKIAogCQkvKgpAQCAtMTc0OSwxMyArMTc4OSwx MyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJICogaWYgdGhlIHByaW1hcnkgc2xv dCBpcyBpbiB1c2UuIFdlIGNvdWxkIHVzZSBhbiBleHRyYSBjb25uZWN0aW9uIGZvcgogCQkgKiBp dCBidXQgaXQgZG9lc24ndCBzZWVtIHdvcnRoLgogCQkgKi8KLQkJaWYgKCFzZXR1cF9wdWJsaXNo ZXIoZGJpbmZvKSkKKwkJaWYgKCFzZXR1cF9wdWJsaXNoZXIoJnByaW1hcnksICZkYmFycikpCiAJ CQlleGl0KDEpOwogCiAJCS8qIFN0b3AgdGhlIHN0YW5kYnkgc2VydmVyLiAqLwogCQlwZ19sb2df aW5mbygic3RhbmRieSBpcyB1cCBhbmQgcnVubmluZyIpOwogCQlwZ19sb2dfaW5mbygic3RvcHBp bmcgdGhlIHNlcnZlciB0byBzdGFydCB0aGUgdHJhbnNmb3JtYXRpb24gc3RlcHMiKTsKLQkJc3Rv cF9zdGFuZGJ5X3NlcnZlcihwZ19jdGxfcGF0aCwgc3Vic2NyaWJlcl9kaXIpOworCQlzdG9wX3N0 YW5kYnlfc2VydmVyKCZzdGFuZGJ5KTsKIAl9CiAJZWxzZQogCXsKQEAgLTE3NzYsMTEgKzE4MTYs MTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogY29uc2lzdGVudCBMU04gYnV0 IGl0IHNob3VsZCBiZSBjaGFuZ2VkIGFmdGVyIGFkZGluZyBwZ19iYXNlYmFja3VwCiAJICogc3Vw cG9ydC4KIAkgKi8KLQljb25uID0gY29ubmVjdF9kYXRhYmFzZShkYmluZm9bMF0ucHViY29ubmlu Zm8pOworCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNlKHByaW1hcnkuYmFzZV9jb25uaW5mbywgZGJh cnIucGVyZGJbMF0uZGJuYW1lKTsKIAlpZiAoY29ubiA9PSBOVUxMKQogCQlleGl0KDEpOwotCWNv bnNpc3RlbnRfbHNuID0gY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdChjb25uLCAmZGJp bmZvWzBdLAotCQkJCQkJCQkJCQkJCSB0ZW1wX3JlcGxzbG90KTsKKwljb25zaXN0ZW50X2xzbiA9 IGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoY29ubiwgdHJ1ZSwgJmRiYXJyLnBlcmRi WzBdKTsKIAogCS8qCiAJICogV3JpdGUgcmVjb3ZlcnkgcGFyYW1ldGVycy4KQEAgLTE4MDYsNyAr MTg0NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXsKIAkJYXBwZW5kUFFFeHBC dWZmZXIocmVjb3Zlcnljb25mY29udGVudHMsICJyZWNvdmVyeV90YXJnZXRfbHNuID0gJyVzJ1xu IiwKIAkJCQkJCSAgY29uc2lzdGVudF9sc24pOwotCQlXcml0ZVJlY292ZXJ5Q29uZmlnKGNvbm4s IHN1YnNjcmliZXJfZGlyLCByZWNvdmVyeWNvbmZjb250ZW50cyk7CisJCVdyaXRlUmVjb3ZlcnlD b25maWcoY29ubiwgc3RhbmRieS5wZ2RhdGEsIHJlY292ZXJ5Y29uZmNvbnRlbnRzKTsKIAl9CiAJ ZGlzY29ubmVjdF9kYXRhYmFzZShjb25uKTsKIApAQCAtMTgxNiwxMiArMTg1NSwxMiBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKiBTdGFydCBzdWJzY3JpYmVyIGFuZCB3YWl0IHVu dGlsIGFjY2VwdGluZyBjb25uZWN0aW9ucy4KIAkgKi8KIAlwZ19sb2dfaW5mbygic3RhcnRpbmcg dGhlIHN1YnNjcmliZXIiKTsKLQlzdGFydF9zdGFuZGJ5X3NlcnZlcihwZ19jdGxfcGF0aCwgc3Vi c2NyaWJlcl9kaXIsIHNlcnZlcl9zdGFydF9sb2cpOworCXN0YXJ0X3N0YW5kYnlfc2VydmVyKCZz dGFuZGJ5KTsKIAogCS8qCiAJICogV2FpdGluZyB0aGUgc3Vic2NyaWJlciB0byBiZSBwcm9tb3Rl ZC4KIAkgKi8KLQl3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoZGJpbmZvWzBdLnN1YmNvbm5pbmZvKTsK Kwl3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoJnN0YW5kYnksIGRiYXJyLnBlcmRiWzBdLmRibmFtZSk7 CiAKIAkvKgogCSAqIENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uIGZvciBlYWNoIGRhdGFiYXNlIG9u IHN1YnNjcmliZXIuIEl0IGRvZXMgbm90CkBAIC0xODMwLDcgKzE4NjksNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkgKiBzZXRfcmVwbGljYXRpb25fcHJvZ3Jlc3MpLiBJdCBhbHNv IGNsZWFucyB1cCBwdWJsaWNhdGlvbnMgY3JlYXRlZCBieQogCSAqIHRoaXMgdG9vbCBhbmQgcmVw bGljYXRpb24gdG8gdGhlIHN0YW5kYnkuCiAJICovCi0JaWYgKCFzZXR1cF9zdWJzY3JpYmVyKGRi aW5mbywgY29uc2lzdGVudF9sc24pKQorCWlmICghc2V0dXBfc3Vic2NyaWJlcigmc3RhbmRieSwg JnByaW1hcnksICZkYmFyciwgY29uc2lzdGVudF9sc24pKQogCQlleGl0KDEpOwogCiAJLyoKQEAg LTE4MzksMTIgKzE4NzgsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogWFhY IHdlIG1pZ2h0IG5vdCBmYWlsIGhlcmUuIEluc3RlYWQsIHdlIHByb3ZpZGUgYSB3YXJuaW5nIHNv IHRoZSB1c2VyCiAJICogZXZlbnR1YWxseSBkcm9wcyB0aGlzIHJlcGxpY2F0aW9uIHNsb3QgbGF0 ZXIuCiAJICovCi0JaWYgKHByaW1hcnlfc2xvdF9uYW1lICE9IE5VTEwpCisJaWYgKHN0YW5kYnku cHJpbWFyeV9zbG90X25hbWUgIT0gTlVMTCkKIAl7Ci0JCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNl KGRiaW5mb1swXS5wdWJjb25uaW5mbyk7CisJCWNoYXIgKnByaW1hcnlfc2xvdF9uYW1lID0gc3Rh bmRieS5wcmltYXJ5X3Nsb3RfbmFtZTsKKwkJTG9naWNhbFJlcFBlcmRiSW5mbyAqcGVyZGIgPSAm ZGJhcnIucGVyZGJbMF07CisKKwkJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UocHJpbWFyeS5iYXNl X2Nvbm5pbmZvLCBwZXJkYi0+ZGJuYW1lKTsKIAkJaWYgKGNvbm4gIT0gTlVMTCkKIAkJewotCQkJ ZHJvcF9yZXBsaWNhdGlvbl9zbG90KGNvbm4sICZkYmluZm9bMF0sIHByaW1hcnlfc2xvdF9uYW1l KTsKKwkJCWRyb3BfcmVwbGljYXRpb25fc2xvdChjb25uLCBwZXJkYiwgcHJpbWFyeV9zbG90X25h bWUpOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTg1OCwxOSArMTkwMCwxOSBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkgKiBTdG9wIHRoZSBzdWJzY3JpYmVyLgogCSAqLwogCXBnX2xv Z19pbmZvKCJzdG9wcGluZyB0aGUgc3Vic2NyaWJlciIpOwotCXN0b3Bfc3RhbmRieV9zZXJ2ZXIo cGdfY3RsX3BhdGgsIHN1YnNjcmliZXJfZGlyKTsKKwlzdG9wX3N0YW5kYnlfc2VydmVyKCZzdGFu ZGJ5KTsKIAogCS8qCiAJICogQ2hhbmdlIHN5c3RlbSBpZGVudGlmaWVyLgogCSAqLwotCW1vZGlm eV9zeXNpZChwZ19yZXNldHdhbF9wYXRoLCBzdWJzY3JpYmVyX2Rpcik7CisJbW9kaWZ5X3N5c2lk KHN0YW5kYnkuYmluZGlyLCBzdGFuZGJ5LnBnZGF0YSk7CiAKIAkvKgogCSAqIFRoZSBsb2cgZmls ZSBpcyBrZXB0IGlmIHJldGFpbiBvcHRpb24gaXMgc3BlY2lmaWVkIG9yIHRoaXMgdG9vbCBkb2Vz CiAJICogbm90IHJ1biBzdWNjZXNzZnVsbHkuIE90aGVyd2lzZSwgbG9nIGZpbGUgaXMgcmVtb3Zl ZC4KIAkgKi8KIAlpZiAoIXJldGFpbikKLQkJdW5saW5rKHNlcnZlcl9zdGFydF9sb2cpOworCQl1 bmxpbmsoc3RhbmRieS5zZXJ2ZXJfbG9nKTsKIAogCXN1Y2Nlc3MgPSB0cnVlOwogCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wNDFfcGdfY3JlYXRlc3Vic2NyaWJlcl9zdGFu ZGJ5LnBsIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQxX3BnX2NyZWF0ZXN1YnNjcmliZXJf c3RhbmRieS5wbAppbmRleCBhOWQwM2FjYzg3Li4xNTQ0OTUzODQzIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2Jhc2ViYWNrdXAvdC8wNDFfcGdfY3JlYXRlc3Vic2NyaWJlcl9zdGFuZGJ5LnBsCisr KyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MV9wZ19jcmVhdGVzdWJzY3JpYmVyX3N0YW5k YnkucGwKQEAgLTE3LDYgKzE3LDcgQEAgbXkgJHJlc3VsdDsKICMgU2V0IHVwIG5vZGUgUCBhcyBw cmltYXJ5CiAkbm9kZV9wID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlX3An KTsKICRub2RlX3AtPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVf cC0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdsb2dfbGluZV9wcmVmaXggPSBcJyVt IFslcF0gWyVkXSBcJycpOwogJG5vZGVfcC0+c3RhcnQ7CiAKICMgU2V0IHVwIG5vZGUgRiBhcyBh Ym91dC10by1mYWlsIG5vZGUKQEAgLTg4LDcgKzg5LDcgQEAgY29tbWFuZF9vaygKIAkJJy0tcGdk YXRhJywgJG5vZGVfcy0+ZGF0YV9kaXIsCiAJCSctLXN1YnNjcmliZXItc2VydmVyJywgJG5vZGVf cy0+Y29ubnN0cigncGcxJyksCiAJCSctLWRhdGFiYXNlJywgJ3BnMScsCi0JCSctLWRhdGFiYXNl JywgJ3BnMicKKwkJJy0tZGF0YWJhc2UnLCAncGcyJywgJy1yJwogCV0sCiAJJ3J1biBwZ19jcmVh dGVzdWJzY3JpYmVyIG9uIG5vZGUgUycpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4 IGY1MWYxZmYyM2YuLjNiMWVjM2ZjZTEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0x NTA1LDkgKzE1MDUsMTAgQEAgTG9naWNhbFJlcEJlZ2luRGF0YQogTG9naWNhbFJlcENvbW1pdERh dGEKIExvZ2ljYWxSZXBDb21taXRQcmVwYXJlZFR4bkRhdGEKIExvZ2ljYWxSZXBDdHhTdHJ1Y3QK LUxvZ2ljYWxSZXBJbmZvCiBMb2dpY2FsUmVwTXNnVHlwZQogTG9naWNhbFJlcFBhcnRNYXBFbnRy eQorTG9naWNhbFJlcFBlcmRiSW5mbworTG9naWNhbFJlcFBlcmRiSW5mb0FycgogTG9naWNhbFJl cFByZXBhcmVkVHhuRGF0YQogTG9naWNhbFJlcFJlbElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkK QEAgLTE4ODYsNiArMTg4Nyw3IEBAIFBSRURJQ0FURUxPQ0sKIFBSRURJQ0FURUxPQ0tUQUcKIFBS RURJQ0FURUxPQ0tUQVJHRVQKIFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcKK1ByaW1hcnlJbmZvCiBQ Uk9DRVNTX0lORk9STUFUSU9OCiBQUk9DTE9DSwogUFJPQ0xPQ0tUQUcKQEAgLTI0NjEsNiArMjQ2 Myw3IEBAIFNRTFZhbHVlRnVuY3Rpb25PcAogU1NMCiBTU0xFeHRlbnNpb25JbmZvQ29udGV4dAog U1NMX0NUWAorU3RhbmRieUluZm8KIFNUQVJUVVBJTkZPCiBTVFJMRU4KIFNWCi0tIAoyLjQzLjAK Cg== --_006_TY3PR01MB98894646568B37FE11E9CC0DF5432TY3PR01MB9889jpnp_--