Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o5l41-000779-GO for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Jun 2022 09:29:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o5l3z-0007pc-Jo for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Jun 2022 09:29:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o5l3z-0007pR-46 for pgsql-hackers@lists.postgresql.org; Mon, 27 Jun 2022 09:29:47 +0000 Received: from mail-db8eur05on2117.outbound.protection.outlook.com ([40.107.20.117] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o5l3w-0007u0-7r for pgsql-hackers@lists.postgresql.org; Mon, 27 Jun 2022 09:29:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=no0keRvdjZKGbk5A12Taii3zzfP6KEubPWR1QjV+od7/jKa+GvC9jqGlfhaFaVwKRwy8mnZZh90wnXmOI04VI03G02o0/f+8Ucb0e8AP845hhNUguDVL5ZGLufaQVhFo9c685cNXqp4R8UTzMRCmmZh3BBlkHqrNOkNiCzgNM8uQOA8dopHZAEk+upqd96jK5PMHKDvRaIUkmzp3OY37LYaixwF/cjtS+SFlYQ/azqwoxLg8xMTiOLcLzAdLDPNj1NTUV5wPv30mdHyUQT2pQfw2JVLJ93ypGqWAFO1moJ9I+d0rmyjRUkijYwI6b8GpIsOg3NV6T6GztGUK/CsotQ== 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=4PaR0hl9QH+VoJHPTp9VuY0+Ovef+LvW/7vR4yG5F44=; b=QDOLOodTcp2yq1AMtTD4DLBlEznaNryYVAIgs8sbmCikXX6k61lRx/tTmA6nLbtSeVychTUX6WSUz92H3qYnXAzFMbsA0+1pe4NGnsckQGCrP2d42SCZMYSycO+ndpol3nyBL6aQ9veUO7csFMqO8YS2By8TtGwpm52/bTZ0W+cmx0cRpQa02JgMEWCE97NvbTrbeNhZ5AGswroMn2g3pb3Cr6Pb5Lpsq7R/Mm8CkpW5rC1GCXYGXX62g/sUo2ArPFGP3KWf3qF4aWkFFcGM+il/lWNDXSqv6oBLoIDW6X+RspnuC+ECCSRnRFRu0BxVzC+7mFgHQlH5ZFLGw0Njbg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4PaR0hl9QH+VoJHPTp9VuY0+Ovef+LvW/7vR4yG5F44=; b=GFp7l+7bHAshjX/eiS2xgZUvIFo563Gqh54xd2FDMz8NfTJX3amx3inByAhFGRF4eqhb5MCVIYD5p8LCDMlhVLQTsj6lmplYHQI8r4U92MwyEqNaBgeoD/7QrOKhaLxqNxzL6BlINctLaIK6YnDVY/F6QGcW2EZ9GRiV8T7moJ8= Received: from PR3PR83MB0476.EURPRD83.prod.outlook.com (2603:10a6:102:75::19) by PR3PR83MB0441.EURPRD83.prod.outlook.com (2603:10a6:102:76::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.3; Mon, 27 Jun 2022 09:29:40 +0000 Received: from PR3PR83MB0476.EURPRD83.prod.outlook.com ([fe80::f529:8ede:833b:862e]) by PR3PR83MB0476.EURPRD83.prod.outlook.com ([fe80::f529:8ede:833b:862e%9]) with mapi id 15.20.5395.012; Mon, 27 Jun 2022 09:29:40 +0000 From: Jelte Fennema To: Andres Freund CC: Justin Pryzby , Tom Lane , Robert Haas , "pgsql-hackers@lists.postgresql.org" Subject: Re: [EXTERNAL] Re: Add non-blocking version of PQcancel Thread-Topic: [EXTERNAL] Re: Add non-blocking version of PQcancel Thread-Index: AQHYReNf4fx8DGCPWkeBY7c0mwFEGqzf4NS5gH/7UoCAA6cltQ== Date: Mon, 27 Jun 2022 09:29:39 +0000 Message-ID: References: <20220324224909.4tnubqv2owmfoyoc@alap3.anarazel.de> <3453535.1648234019@sss.pgh.pa.us> <3457746.1648236890@sss.pgh.pa.us> <20220331054704.GL28503@telsasoft.com> <20220625013617.e4qvy6qlaukgvfpo@alap3.anarazel.de> In-Reply-To: <20220625013617.e4qvy6qlaukgvfpo@alap3.anarazel.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-06-27T09:29:39.157Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7c0af8d2-ced5-4037-baf6-08da581f8f79 x-ms-traffictypediagnostic: PR3PR83MB0441:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QLXojDIy+kQ1pixvXSsXmyAHugnszP6y5KZUBgtBpqo1g+Q0JGcWIFbqEqqOzAeNZQ3HYVOZcCmzjkJh5hT32ErjsPSK0ByesY48qC7U/RzEydXXxb8SbmwQmKY51GN9vDDqPmwcsd2uhSupLiLzP49rjy3QgIYBo6oaPtPNBo/uaKtdHuM9xouXvbzuXhpKbqw/MfWvStpNXQFGWwft8jgWf8MGLCFMo4YcWc/QMh1jKgtXJzgEHXWwoEWf71Zt2q55Mn7b48pRnYK4WhNl4JFGrU2dqfyQPwqe5BDDViLjQMZbkE4RgHUIplEJg197Xf6FMPYfGk/Cug/Kcj5lIqRx2ZxnBSOzlv38WrYFmWz2DyU914IJaYO6FPxbvQCSIVnMwFzsJ8eTLv0+Gj4e8g52e+UF96cs7dpojZYMooItWNG21nflHMBnaeQMWEuiqSl1iHLZy80yrRvAAyfeD0rsxG2YpmPoGihCkLi6/h4xZQbIAnStxs58FDkryvF551F8m77fKdg/AkG8xe5RdietPcYrnHaITt6xgyZedWr16qvL0/aCWgyLp4P/uqi5yPoLYWr+MmGxaoxz5UNuiPWK4QZzAR6JdpY+d70GPy/4gsbk8K44WrMpXgfLzNoAsIAGF9KOhqRUZgD8eZRiuDBDX5RUb1MKODrZmOVWFaBdc76u/Z2QMcupRCejijja206EH1RHAHysL0DPIOD/Tdjbpkfucjzsch149a49FI8EQxSAHj1nayDKMfMgnL335RDQfXs324Z4jeIkbfEaET9mp/aiZtIdfKI2X7QuybEbTWmbLA9gUIMxUDwVrPlsYWKcXNdM+jwFwN66C6tpPw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR3PR83MB0476.EURPRD83.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(376002)(346002)(366004)(39860400002)(396003)(136003)(451199009)(86362001)(71200400001)(5660300002)(83380400001)(52536014)(6506007)(7696005)(66476007)(66946007)(8676002)(66446008)(66556008)(64756008)(76116006)(6916009)(91956017)(53546011)(26005)(4326008)(38100700002)(8990500004)(99936003)(9686003)(10290500003)(54906003)(41300700001)(38070700005)(316002)(186003)(122000001)(82950400001)(55016003)(8936002)(33656002)(2906002)(478600001)(82960400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?H+t4hVxHhTKVSg0FafoLJNEuRLhXZ4xhWtmqkvWg2Sj9DUfJUqzz3r6AES?= =?iso-8859-1?Q?yXAlEcliZFzxoi+KNX6DkF8a0H4FES5VlgZ3kZOztjE48YIirwwuw2QXc6?= =?iso-8859-1?Q?wusGI3q23r9KTztBHVE/KM9CVn+wfiYpk1gXW4otWxY/mLOtM9OBbqKfir?= =?iso-8859-1?Q?jTvqd7TE2pisJ/1lK9pwurCSqvaj2pT2OFRmD1lNSIhHrKBAv3thWNmnUE?= =?iso-8859-1?Q?0AGyoABLFcjCjVlew9F1nwMu2RhGtUFfOQ7gJZsxAzj/plZAOrwqlh8wIx?= =?iso-8859-1?Q?eIRdduU6CHv0Bb5ZEyvspGQEwwJ6oSjw/T2qtarcM3KcFFrzhceGif9uk0?= =?iso-8859-1?Q?mWL4Lcs4klDa/eulXdm73qEajv6CQMgDNiEsOiTEROlEKU2U5vz/kXC2NC?= =?iso-8859-1?Q?wcr7Kr/CVSajTYl7Q0Ahtt5LrUUYjGKZcSYbphVuterPIrNV2OtDVwQInm?= =?iso-8859-1?Q?QIjRuPs/M7rItqPiPc6aIcK1y+ngbn+iQ3+Z3ti7rKHBFJHxWhwxEJm9rR?= =?iso-8859-1?Q?FhWPnI9ogaxRM7y+esgCkt5KRMER4+6LKDi7ol/UORzDodtm9Pv1U3g84E?= =?iso-8859-1?Q?TJ0Ze2Ytjz386NPmJ4cciKIs0IU/zz7WhJdGuCW0FVKC7KAgbQ1WbJSSnD?= =?iso-8859-1?Q?btZMmGqF/raa+ETB7H1A22HaXkab8rX/j5Tcf5Xss9FQTlyWQ6SUSG/Jjc?= =?iso-8859-1?Q?2sCtyxZRzXensDFXX4QtM6Xt4R/pyED5hdSfI+He/AAgv3wjUZ4N8llb4S?= =?iso-8859-1?Q?cqU22cW1L1OZFUSJRSbegj/hAkzofqHTlAgqfg/1j9kMaTG47NHSjBmELU?= =?iso-8859-1?Q?QY59jPUBf3D2n9xdQUFCdSsKfhf7StWEFfIY95WgM28ia+z8nbORVnDx3e?= =?iso-8859-1?Q?Wendsbpr3VJbY6RZcF9P79Un8xy/VW5QeWdmG5nVj+1o/20Ghn+qBQo1U5?= =?iso-8859-1?Q?IoMKln9+4Pw6qe28sBJ/R/8FMhksPpCGEqV6nt8aBQNidrL0QgUj5D6bE3?= =?iso-8859-1?Q?J0isLvoqjZn5EsBhhDigOACmihs70Dz5rrgFjc7X7lmdA3J00HNBTkxjkX?= =?iso-8859-1?Q?aoCU8kjoAeUmTV3GE7iym9aHzNv/uKeriZN2VRJGnGHEf9KxnEREyiRXnu?= =?iso-8859-1?Q?Iu7Um2qeJCTWiaWWhmuQvT36v0pdZxTcQgN4e5An/Y45/IB7AmRJhwyzLU?= =?iso-8859-1?Q?TKVXqk+ufdgEv+dn4cNMXtNu1TUtw8fRIpEKIn5yWSX23YBEpt2AOkmFnb?= =?iso-8859-1?Q?tpqG1NvpwRMzlLhzgy73u89rNrWd5/jOCCuQaBQvp1MTMLYWrDtvqGLMYr?= =?iso-8859-1?Q?MPJKGsVRRR1tDzKWEVKBE1XQnn1FKRZxeHVuQF9YFEcihQoOwlAC3RxMZn?= =?iso-8859-1?Q?f37v/2RwcO7ZNCrwDLHuJjEUgDRbEZdejEuYKAhq4nsOJPY4F18nWFkGKy?= =?iso-8859-1?Q?omcGGMJ5j0iribbBe4bZM83++pMlRn+0zlruw0dfHzJCKtBjhyr7ChHiaM?= =?iso-8859-1?Q?2L/94QBu3xNPwsSeWcNEFWvScKcCKUVVetZ5AIhj4lA6shLNrRSqpQZiEv?= =?iso-8859-1?Q?iflWlP8xaeTcssLqWbdqtDYRmeFMmde7gauy2A996T8m77wHcYKI3fQvMH?= =?iso-8859-1?Q?LjIneFIoJXfeQDtyizHY9Qzqd/4GJ2nfsc?= Content-Type: multipart/mixed; boundary="_003_PR3PR83MB04765D30B272D65DE9E42CF1F7B99PR3PR83MB0476EURP_" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PR3PR83MB0476.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c0af8d2-ced5-4037-baf6-08da581f8f79 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jun 2022 09:29:40.0071 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: P9FCiwauRGSp+DkTnW3571iI9vou3bew4bzCmgbPk20ox0Gj9qhEqRBCmgVjWqEwnJbEa0Ykb/P2DXGWe9/suQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR83MB0441 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_PR3PR83MB04765D30B272D65DE9E42CF1F7B99PR3PR83MB0476EURP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable (resent because it was blocked from the mailing-list due to inclusion of a = blocked email address in the To line)=0A= =0A= From: Andres Freund =0A= > On 2022-04-04 15:21:54 +0000, Jelte Fennema wrote:=0A= > > 2. Added some extra sleeps to the cancellation test, to remove random= =0A= > > failures on FreeBSD.=0A= > =0A= > That's extremely extremely rarely the solution to address test reliabilit= y=0A= > issues. It'll fail when running test under valgrind etc.=0A= > =0A= > Why do you need sleeps / can you find another way to make the test reliab= le?=0A= =0A= The problem they are solving is racy behaviour between sending the query=0A= and sending the cancellation. If the cancellation is handled before the que= ry=0A= is started, then the query doesn't get cancelled. To solve this problem I u= sed=0A= the sleeps to wait a bit before sending the cancelation request.=0A= =0A= When I wrote this, I couldn't think of a better way to do it then with slee= ps.=0A= But I didn't like it either (and I still don't). These emails made me start= to think=0A= again, about other ways of solving the problem. I think I've found another = =0A= solution (see attached patch). The way I solve it now is by using another = =0A= connection to check the state of the first one.=0A= =0A= Jelte= --_003_PR3PR83MB04765D30B272D65DE9E42CF1F7B99PR3PR83MB0476EURP_ Content-Type: application/octet-stream; name="0001-Add-documentation-for-libpq_pipeline-tests.patch" Content-Description: 0001-Add-documentation-for-libpq_pipeline-tests.patch Content-Disposition: attachment; filename="0001-Add-documentation-for-libpq_pipeline-tests.patch"; size=1518; creation-date="Mon, 27 Jun 2022 09:29:18 GMT"; modification-date="Mon, 27 Jun 2022 09:29:18 GMT" Content-Transfer-Encoding: base64 RnJvbSAyYmUyMGI2NDkyNDM5MzRkNGZlYzE4MjlkNTZmZGE3ZmMwNWI3MjY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hIDxqZWx0ZS5mZW5uZW1hQG1pY3Jvc29m dC5jb20+CkRhdGU6IFRodSwgMTMgSmFuIDIwMjIgMTU6MjY6MzUgKzAxMDAKU3ViamVjdDogW1BB VENIIDEvMl0gQWRkIGRvY3VtZW50YXRpb24gZm9yIGxpYnBxX3BpcGVsaW5lIHRlc3RzCgpUaGlz IGFkZHMgc29tZSBleHBsYW5hdGlvbiBvbiBob3cgdG8gcnVuIGFuZCBhZGQgbGlicHEgdGVzdHMu Ci0tLQogc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS9SRUFETUUgfCAyMCArKysrKysr KysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL1JFQURNRSBiL3NyYy90ZXN0L21v ZHVsZXMvbGlicHFfcGlwZWxpbmUvUkVBRE1FCmluZGV4IGQ4MTc0ZGQ1NzkuLjZlZGE2YzU3NTYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvUkVBRE1FCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvUkVBRE1FCkBAIC0xICsxLDIxIEBACiBU ZXN0IHByb2dyYW1zIGFuZCBsaWJyYXJpZXMgZm9yIGxpYnBxCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisKK1lvdSBjYW4gbWFudWFsbHkgcnVuIGEgc3BlY2lmaWMgdGVz dCBieSBydW5uaW5nOgorCisgICAgLi9saWJwcV9waXBlbGluZSA8bmFtZSBvZiB0ZXN0PgorCitU byBhZGQgYSBuZXcgbGlicHEgdGVzdCB0byB0aGlzIG1vZHVsZSB5b3UgbmVlZCB0byBlZGl0IGxp YnBxX3BpcGVsaW5lLmMuIFRoZXJlCit5b3Ugc2hvdWxkIGFkZCB0aGUgbmFtZSBvZiB5b3VyIG5l dyB0ZXN0IHRvIHRoZSAicHJpbnRfdGVzdF9saXN0IiBmdW5jdGlvbi4KK1RoZW4gaW4gbWFpbiB5 b3Ugc2hvdWxkIGRvIHNvbWV0aGluZyB3aGVuIHRoaXMgdGVzdCBuYW1lIGlzIHBhc3NlZCB0byB0 aGUKK3Byb2dyYW0uCisKK0lmIHRoZSBvcmRlciBpbiB3aGljaCBwb3N0Z3JlcyBwcm90b2NvbCBt ZXNzYWdlcyBhcmUgc2VudCBpcyBkZXRlcm1pbmlzdGljIGZvcgoreW91ciB0ZXN0LiBUaGVuIHlv dSBjYW4gZ2VuZXJhdGUgYSB0cmFjZSBvZiB0aGVzZSBtZXNzYWdlcyB1c2luZyB0aGUgZm9sbG93 aW5nCitjb21tYW5kOgorCisgICAuL2xpYnBxX3BpcGVsaW5lIG15bmV3dGVzdCAtdCB0cmFjZXMv bXluZXd0ZXN0LnRyYWNlCisKK09uY2UgeW91J3ZlIGRvbmUgdGhhdCB5b3Ugc2hvdWxkIG1ha2Ug c3VyZSB0aGF0IHdoZW4gcnVubmluZyAibWFrZSBjaGVjayIKK3RoZSBnZW5lcmF0ZWQgdHJhY2Ug aXMgY29tcGFyZWQgdG8gdGhlIGV4cGVjdGVkIHRyYWNlLiBUaGlzIGlzIGRvbmUgYnkgYWRkaW5n Cit5b3VyIHRlc3QgbmFtZSB0byB0aGUgJGNtcHRyYWNlIGRlZmluaXRpb24gaW4gdGhlIHQvMDAx X2xpYnBxX3BpcGVsaW5lLnBsIGZpbGUKLS0gCjIuMzQuMQoK --_003_PR3PR83MB04765D30B272D65DE9E42CF1F7B99PR3PR83MB0476EURP_ Content-Type: application/octet-stream; name="0002-Add-non-blocking-version-of-PQcancel.patch" Content-Description: 0002-Add-non-blocking-version-of-PQcancel.patch Content-Disposition: attachment; filename="0002-Add-non-blocking-version-of-PQcancel.patch"; size=53300; creation-date="Mon, 27 Jun 2022 09:29:19 GMT"; modification-date="Mon, 27 Jun 2022 09:29:19 GMT" Content-Transfer-Encoding: base64 RnJvbSA0MzdiMDk4YjJlYzYzMzRhZmZiMmQ4MThjZjkxNTRjN2YxNzBlMmRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hIDxqZWx0ZS5mZW5uZW1hQG1pY3Jvc29m dC5jb20+CkRhdGU6IFdlZCwgMTIgSmFuIDIwMjIgMDk6NTI6MDUgKzAxMDAKU3ViamVjdDogW1BB VENIIDIvMl0gQWRkIG5vbi1ibG9ja2luZyB2ZXJzaW9uIG9mIFBRY2FuY2VsCgpUaGlzIHBhdGNo IGRvZXMgZm91ciB0aGluZ3M6CjEuIENoYW5nZSB0aGUgUFFyZXF1ZXN0Q2FuY2VsIGltcGxlbWVu dGF0aW9uIHRvIHVzZSB0aGUgcmVndWxhcgogICAgY29ubmVjdGlvbiBlc3RhYmxpc2hlbWVudCBj b2RlLCB0byBzdXBwb3J0IGFsbCBjb25uZWN0aW9uIG9wdGlvbnMKICAgIGluY2x1ZGluZyBlbmNy eXB0aW9uLgoyLiBBZGQgUFFyZXF1ZXN0Q2FuY2VsU3RhcnQgd2hpY2ggaXMgYSB0aHJlYWQtc2Fm ZSBhbmQgbm9uLWJsb2NraW5nCiAgICB2ZXJzaW9uIG9mIHRoaXMgbmV3IFBRcmVxdWVzdENhbmNl bCBpbXBsZW1lbnRhdGlvbi4KMy4gQWRkIFBRY29ubmVjdENvbXBsZXRlLCB3aGljaCBjb21wbGV0 ZXMgYSBjb25uZWN0aW9uIHN0YXJ0ZWQgYnkKICAgIFBRcmVxdWVzdENhbmNlbFN0YXJ0LiBUaGlz IGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCBhIHRocmVhZC1zYWZlIGJ1dAogICAgYmxvY2tpbmcgY2Fu Y2VsICh3aXRob3V0IGhhdmluZyBhIG5lZWQgZm9yIHNpZ25hbC1zYWZldHkpLgo0LiBVc2UgdGhp cyBuZXcgY2FuY2VsbGF0aW9uIEFQSSBldmVyeXdoZXJlIGluIHRoZSBjb2RlYmFzZSB3aGVyZQog ICAgc2lnbmFsLXNhZmV0eSBpcyBub3QgYSBuZWNlc3NpdHkuCgpUaGlzIGNoYW5nZSB1bi1kZXBy ZWNhdGVzIFBRcmVxdWVzdENhbmNlbCwgc2luY2Ugbm93IHRoZXJlJ3MgYWN0dWFsbHkgYW4KYWR2 YW50YWdlIHRvIHVzaW5nIGl0IG92ZXIgUFFjYW5jZWwuIEl0IGFsc28gaW5jbHVkZXMgdXNlciBm YWNpbmcKZG9jdW1lbnRhdGlvbiBmb3IgYWxsIHRoZSBuZXdseSBhZGRlZCBmdW5jdGlvbnMuCgpU aGUgZXhpc3RpbmcgUFFjYW5jZWwgQVBJIGlzIHVzaW5nIGJsb2NraW5nIElPLiBUaGlzIG1ha2Vz IFBRY2FuY2VsCmltcG9zc2libGUgdG8gdXNlIGluIGFuIGV2ZW50IGxvb3AgYmFzZWQgY29kZWJh c2UsIHdpdGhvdXQgYmxvY2tpbmcgdGhlCmV2ZW50IGxvb3AgdW50aWwgdGhlIGNhbGwgcmV0dXJu cy4gUFFyZXF1ZXN0Q2FuY2VsU3RhcnQgY2FuIG5vdyBiZSB1c2VkCmluc3RlYWQsIHRvIGhhdmUg YSBub24tYmxvY2tpbmcgd2F5IG9mIHNlbmRpbmcgY2FuY2VsIHJlcXVlc3RzLiBUaGUKcG9zdGdy ZXNfZmR3IGNhbmNlbGxhdGlvbiBjb2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIG1ha2UgdXNlIG9m IHRoaXMuCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYSB0ZXN0IGZvciBhbGwgb2YgbGlicHEg Y2FuY2VsbGF0aW9uIEFQSXMuIFRoZQp0ZXN0IGNhbiBiZSBlYXNpbHkgcnVuIGxpa2UgdGhpczoK CiAgICBjZCBzcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lCiAgICBtYWtlICYmIC4vbGli cHFfcGlwZWxpbmUgY2FuY2VsCi0tLQogY29udHJpYi9kYmxpbmsvZGJsaW5rLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgIDI4ICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMg ICAgICAgICAgICAgfCAgOTMgKysrKy0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdy ZXNfZmR3Lm91dCAgICB8ICAxNSArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNf ZmR3LnNxbCAgICAgfCAgIDggKwogZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICAgICAg ICAgICAgICAgIHwgMjEyICsrKysrKysrKy0tCiBzcmMvZmVfdXRpbHMvY29ubmVjdF91dGlscy5j ICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMu dHh0ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0 LmMgICAgICAgICAgICAgfCAzNDEgKysrKysrKysrKysrKysrLS0tCiBzcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1taXNjLmMgICAgICAgICAgICAgICAgfCAgMTUgKy0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMgICAgICB8ICAgMiArLQogc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtc2VjdXJlLmMgICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWZlLmggICAgICAgICAgICAgICB8ICAgOSArLQogc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtaW50LmggICAgICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb250ZXN0ZXIuYyAgICAgICAgICB8ICAyOCArLQogLi4uL21vZHVsZXMvbGlicHFfcGlwZWxp bmUvbGlicHFfcGlwZWxpbmUuYyAgIHwgMjc0ICsrKysrKysrKysrKystCiAxNSBmaWxlcyBjaGFu Z2VkLCA4OTQgaW5zZXJ0aW9ucygrKSwgMTUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKaW5kZXggYTU2 MWQxZDY1Mi4uYjU3MmNmNmQ1YiAxMDA2NDQKLS0tIGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMK KysrIGIvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKQEAgLTEzNzksMjIgKzEzNzksMzAgQEAgUEdf RlVOQ1RJT05fSU5GT19WMShkYmxpbmtfY2FuY2VsX3F1ZXJ5KTsKIERhdHVtCiBkYmxpbmtfY2Fu Y2VsX3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JaW50CQkJcmVzOwogCVBHY29ubgkgICAq Y29ubjsKLQlQR2NhbmNlbCAgICpjYW5jZWw7Ci0JY2hhcgkJZXJyYnVmWzI1Nl07CisJUEdjb25u CSAgICpjYW5jZWxDb25uOworCWNoYXIJICAgKm1zZzsKIAogCWRibGlua19pbml0KCk7CiAJY29u biA9IGRibGlua19nZXRfbmFtZWRfY29ubih0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRf UFAoMCkpKTsKLQljYW5jZWwgPSBQUWdldENhbmNlbChjb25uKTsKLQotCXJlcyA9IFBRY2FuY2Vs KGNhbmNlbCwgZXJyYnVmLCAyNTYpOwotCVBRZnJlZUNhbmNlbChjYW5jZWwpOworCWNhbmNlbENv bm4gPSBQUXJlcXVlc3RDYW5jZWxTdGFydChjb25uKTsKKwlpZiAoUFFzdGF0dXMoY2FuY2VsQ29u bikgPT0gQ09OTkVDVElPTl9CQUQpCisJeworCQltc2cgPSBwY2hvbXAoUFFlcnJvck1lc3NhZ2Uo Y2FuY2VsQ29ubikpOworCQlQUWZpbmlzaChjYW5jZWxDb25uKTsKKwkJUEdfUkVUVVJOX1RFWFRf UChjc3RyaW5nX3RvX3RleHQobXNnKSk7CisJfQogCi0JaWYgKHJlcyA9PSAxKQotCQlQR19SRVRV Uk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dCgiT0siKSk7CisJaWYgKFBRY29ubmVjdENvbXBsZXRl KGNhbmNlbENvbm4pKQorCXsKKwkJbXNnID0gIk9LIjsKKwl9CiAJZWxzZQotCQlQR19SRVRVUk5f VEVYVF9QKGNzdHJpbmdfdG9fdGV4dChlcnJidWYpKTsKKwl7CisJCW1zZyA9IHBjaG9tcChQUWVy cm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisJfQorCVBRZmluaXNoKGNhbmNlbENvbm4pOworCVBH X1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KG1zZykpOwogfQogCiAKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2Nvbm5lY3Rpb24uYwppbmRleCAwNjFmZmFmMzI5Li5mYTQ3Mjc0ZDE1IDEwMDY0NAotLS0gYS9j b250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvY29ubmVjdGlvbi5jCkBAIC0xMjY0LDM1ICsxMjY0LDk4IEBAIHBnZmR3X3Jlc2V0X3hhY3Rf c3RhdGUoQ29ubkNhY2hlRW50cnkgKmVudHJ5LCBib29sIHRvcGxldmVsKQogc3RhdGljIGJvb2wK IHBnZmR3X2NhbmNlbF9xdWVyeShQR2Nvbm4gKmNvbm4pCiB7Ci0JUEdjYW5jZWwgICAqY2FuY2Vs OwotCWNoYXIJCWVycmJ1ZlsyNTZdOwogCVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7Ci0JVGlt ZXN0YW1wVHogZW5kdGltZTsKLQlib29sCQl0aW1lZF9vdXQ7CiAKIAkvKgogCSAqIElmIGl0IHRh a2VzIHRvbyBsb25nIHRvIGNhbmNlbCB0aGUgcXVlcnkgYW5kIGRpc2NhcmQgdGhlIHJlc3VsdCwg YXNzdW1lCiAJICogdGhlIGNvbm5lY3Rpb24gaXMgZGVhZC4KIAkgKi8KLQllbmR0aW1lID0gVGlt ZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKEdldEN1cnJlbnRUaW1lc3RhbXAoKSwgMzAwMDApOwor CVRpbWVzdGFtcFR6IGVuZHRpbWUgPSBUaW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMoR2V0Q3Vy cmVudFRpbWVzdGFtcCgpLCAzMDAwMCk7CisJYm9vbAkJdGltZWRfb3V0ID0gZmFsc2U7CisJYm9v bAkJZmFpbGVkID0gZmFsc2U7CisJUEdjb25uCSAgICpjYW5jZWxfY29ubiA9IFBRcmVxdWVzdENh bmNlbFN0YXJ0KGNvbm4pOwogCi0JLyoKLQkgKiBJc3N1ZSBjYW5jZWwgcmVxdWVzdC4gIFVuZm9y dHVuYXRlbHksIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gbGltaXQgdGhlCi0JICogYW1vdW50IG9m IHRpbWUgdGhhdCB3ZSBtaWdodCBibG9jayBpbnNpZGUgUFFnZXRDYW5jZWwoKS4KLQkgKi8KLQlp ZiAoKGNhbmNlbCA9IFBRZ2V0Q2FuY2VsKGNvbm4pKSkKKworCWlmIChQUXN0YXR1cyhjYW5jZWxf Y29ubikgPT0gQ09OTkVDVElPTl9CQUQpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5v dCBzZW5kIGNhbmNlbCByZXF1ZXN0OiAlcyIsCisJCQkJCQlwY2hvbXAoUFFlcnJvck1lc3NhZ2Uo Y2FuY2VsX2Nvbm4pKSkpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIEluIHdoYXQgZm9s bG93cywgZG8gbm90IGxlYWsgYW55IFBHY29ubiBvbiBhbiBlcnJvci4gKi8KKwlQR19UUlkoKTsK Kwl7CisJCXdoaWxlICh0cnVlKQorCQl7CisJCQlUaW1lc3RhbXBUeiBub3cgPSBHZXRDdXJyZW50 VGltZXN0YW1wKCk7CisJCQlsb25nCQljdXJfdGltZW91dDsKKwkJCVBvc3RncmVzUG9sbGluZ1N0 YXR1c1R5cGUgcG9sbHJlcyA9IFBRY29ubmVjdFBvbGwoY2FuY2VsX2Nvbm4pOworCQkJaW50CQkJ d2FpdEV2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRIOworCisJCQlpZiAocG9sbHJlcyA9PSBQR1JFU19QT0xMSU5HX09LKQorCQkJeworCQkJCWJy ZWFrOworCQkJfQorCisJCQkvKiBJZiB0aW1lb3V0IGhhcyBleHBpcmVkLCBnaXZlIHVwLCBlbHNl IGdldCBzbGVlcCB0aW1lLiAqLworCQkJY3VyX3RpbWVvdXQgPSBUaW1lc3RhbXBEaWZmZXJlbmNl TWlsbGlzZWNvbmRzKG5vdywgZW5kdGltZSk7CisJCQlpZiAoY3VyX3RpbWVvdXQgPD0gMCkKKwkJ CXsKKwkJCQl0aW1lZF9vdXQgPSB0cnVlOworCQkJCWZhaWxlZCA9IHRydWU7CisJCQkJZ290byBl eGl0OworCQkJfQorCisJCQlzd2l0Y2ggKHBvbGxyZXMpCisJCQl7CisJCQkJY2FzZSBQR1JFU19Q T0xMSU5HX1JFQURJTkc6CisJCQkJCXdhaXRFdmVudHMgfD0gV0xfU09DS0VUX1JFQURBQkxFOwor CQkJCQlicmVhazsKKwkJCQljYXNlIFBHUkVTX1BPTExJTkdfV1JJVElORzoKKwkJCQkJd2FpdEV2 ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOworCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0Ogor CQkJCQlmYWlsZWQgPSB0cnVlOworCQkJCQlnb3RvIGV4aXQ7CisJCQl9CisKKwkJCS8qIFNsZWVw IHVudGlsIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGRvICovCisJCQlXYWl0TGF0Y2hPclNvY2tldChN eUxhdGNoLCB3YWl0RXZlbnRzLCBQUXNvY2tldChjYW5jZWxfY29ubiksCisJCQkJCQkJICBjdXJf dGltZW91dCwgUEdfV0FJVF9FWFRFTlNJT04pOworCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwor CQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorZXhpdDoJOworCX0KKwlQR19DQVRDSCgp OwogCXsKLQkJaWYgKCFQUWNhbmNlbChjYW5jZWwsIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpKQor CQlQUWZpbmlzaChjYW5jZWxfY29ubik7CisJCVBHX1JFX1RIUk9XKCk7CisJfQorCVBHX0VORF9U UlkoKTsKKworCWlmIChmYWlsZWQpCisJeworCQlpZiAodGltZWRfb3V0KQorCQl7CisJCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJCShlcnJtc2coImNvdWxkIG5vdCBjYW5jZWwgcmVxdWVzdCBkdWUg dG8gdGltZW91dCIpKSk7CisJCX0KKwkJZWxzZQogCQl7CiAJCQllcmVwb3J0KFdBUk5JTkcsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKIAkJCQkJIGVycm1zZygi Y291bGQgbm90IHNlbmQgY2FuY2VsIHJlcXVlc3Q6ICVzIiwKLQkJCQkJCQllcnJidWYpKSk7Ci0J CQlQUWZyZWVDYW5jZWwoY2FuY2VsKTsKLQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCQlwY2hvbXAo UFFlcnJvck1lc3NhZ2UoY2FuY2VsX2Nvbm4pKSkpKTsKIAkJfQotCQlQUWZyZWVDYW5jZWwoY2Fu Y2VsKTsKKwkJUFFmaW5pc2goY2FuY2VsX2Nvbm4pOworCQlyZXR1cm4gZmFpbGVkOwogCX0KKwlQ UWZpbmlzaChjYW5jZWxfY29ubik7CiAKIAkvKiBHZXQgYW5kIGRpc2NhcmQgdGhlIHJlc3VsdCBv ZiB0aGUgcXVlcnkuICovCiAJaWYgKHBnZmR3X2dldF9jbGVhbnVwX3Jlc3VsdChjb25uLCBlbmR0 aW1lLCAmcmVzdWx0LCAmdGltZWRfb3V0KSkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDQ0NDU3ZjkzMGMuLjZkMTA4YjU2ZWYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysr IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMjU2 Nyw2ICsyNTY3LDIxIEBAIFNFTEVDVCB0MS5jMSwgdDIuYzIgRlJPTSB2NCB0MSBMRUZUIEpPSU4g ZnQ1IHQyIE9OICh0MS5jMSA9IHQyLmMxKSBPUkRFUiBCWSB0MS5jCiAoMTAgcm93cykKIAogQUxU RVIgVklFVyB2NCBPV05FUiBUTyByZWdyZXNzX3ZpZXdfb3duZXI7CistLSBNYWtlIHN1cmUgdGhp cyBiaWcgQ1JPU1MgSk9JTiBxdWVyeSBpcyBwdXNoZWQgZG93bgorRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBmdDEgQ1JPU1MgSk9JTiBmdDIgQ1JPU1Mg Sk9JTiBmdDQgQ1JPU1MgSk9JTiBmdDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEZvcmVpZ24gU2NhbgorICAgT3V0cHV0OiAoY291bnQoKikpCisg ICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAoKCgocHVibGljLmZ0MSkgSU5ORVIgSk9JTiAocHVi bGljLmZ0MikpIElOTkVSIEpPSU4gKHB1YmxpYy5mdDQpKSBJTk5FUiBKT0lOIChwdWJsaWMuZnQ1 KSkKKyAgIFJlbW90ZSBTUUw6IFNFTEVDVCBjb3VudCgqKSBGUk9NICgoKCJTIDEiLiJUIDEiIHIx IElOTkVSIEpPSU4gIlMgMSIuIlQgMSIgcjIgT04gKFRSVUUpKSBJTk5FUiBKT0lOICJTIDEiLiJU IDMiIHI0IE9OIChUUlVFKSkgSU5ORVIgSk9JTiAiUyAxIi4iVCA0IiByNiBPTiAoVFJVRSkpCiso NCByb3dzKQorCistLSBNYWtlIHN1cmUgcXVlcnkgY2FuY2VsbGF0aW9uIHdvcmtzCitTRVQgc3Rh dGVtZW50X3RpbWVvdXQgPSAnMTBtcyc7CitzZWxlY3QgY291bnQoKikgZnJvbSBmdDEgQ1JPU1Mg Sk9JTiBmdDIgQ1JPU1MgSk9JTiBmdDQgQ1JPU1MgSk9JTiBmdDU7IC0tIHRoaXMgdGFrZXMgdmVy eSBsb25nCitFUlJPUjogIGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1l b3V0CitSRVNFVCBzdGF0ZW1lbnRfdGltZW91dDsKIC0tIGNsZWFudXAKIERST1AgT1dORUQgQlkg cmVncmVzc192aWV3X293bmVyOwogRFJPUCBST0xFIHJlZ3Jlc3Nfdmlld19vd25lcjsKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJp Yi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggOTJkMTIxMjAyNy4uN2Uw MmVkNjgwMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zk dy5zcWwKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKQEAg LTMyNiw2ICszMjYsNyBAQCBERUxFVEUgRlJPTSBsb2N0X2VtcHR5OwogQU5BTFlaRSBmdF9lbXB0 eTsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBmdF9lbXB0eSBP UkRFUiBCWSBjMTsKIAorCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBXSEVSRSB3aXRoIHJlbW90ZWx5LWV4 ZWN1dGFibGUgY29uZGl0aW9ucwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNjgxLDYgKzY4MiwxMyBAQCBT RUxFQ1QgdDEuYzEsIHQyLmMyIEZST00gdjQgdDEgTEVGVCBKT0lOIGZ0NSB0MiBPTiAodDEuYzEg PSB0Mi5jMSkgT1JERVIgQlkgdDEuYwogU0VMRUNUIHQxLmMxLCB0Mi5jMiBGUk9NIHY0IHQxIExF RlQgSk9JTiBmdDUgdDIgT04gKHQxLmMxID0gdDIuYzEpIE9SREVSIEJZIHQxLmMxLCB0Mi5jMSBP RkZTRVQgMTAgTElNSVQgMTA7CiBBTFRFUiBWSUVXIHY0IE9XTkVSIFRPIHJlZ3Jlc3Nfdmlld19v d25lcjsKIAorLS0gTWFrZSBzdXJlIHRoaXMgYmlnIENST1NTIEpPSU4gcXVlcnkgaXMgcHVzaGVk IGRvd24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00g ZnQxIENST1NTIEpPSU4gZnQyIENST1NTIEpPSU4gZnQ0IENST1NTIEpPSU4gZnQ1OworLS0gTWFr ZSBzdXJlIHF1ZXJ5IGNhbmNlbGxhdGlvbiB3b3JrcworU0VUIHN0YXRlbWVudF90aW1lb3V0ID0g JzEwbXMnOworc2VsZWN0IGNvdW50KCopIGZyb20gZnQxIENST1NTIEpPSU4gZnQyIENST1NTIEpP SU4gZnQ0IENST1NTIEpPSU4gZnQ1OyAtLSB0aGlzIHRha2VzIHZlcnkgbG9uZworUkVTRVQgc3Rh dGVtZW50X3RpbWVvdXQ7CisKIC0tIGNsZWFudXAKIERST1AgT1dORUQgQlkgcmVncmVzc192aWV3 X293bmVyOwogRFJPUCBST0xFIHJlZ3Jlc3Nfdmlld19vd25lcjsKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9saWJwcS5zZ21sIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKaW5kZXggMzdlYzNj YjRlNS4uOGUwMzNiYjhmMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAgLTI2NSw3ICsyNjUsNyBAQCBQR2Nvbm4gKlBR c2V0ZGIoY2hhciAqcGdob3N0LAogICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRY29ubmVj dFN0YXJ0UGFyYW1zIj4KICAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY29ubmVjdFN0YXJ0UGFyYW1z PC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRY29ubmVjdFN0YXJ0UGFyYW1zPC9wcmlt YXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KICAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY29ubmVjdFN0 YXJ0PC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRY29ubmVjdFN0YXJ0PC9wcmltYXJ5 PjwvaW5kZXh0ZXJtPjwvdGVybT4KLSAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY29ubmVjdFBvbGw8 L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFjb25uZWN0UG9sbDwvcHJpbWFyeT48L2lu ZGV4dGVybT48L3Rlcm0+CisgICAgIDx0ZXJtIGlkPSJsaWJwcS1QUWNvbm5lY3RQb2xsIj48ZnVu Y3Rpb24+UFFjb25uZWN0UG9sbDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUWNvbm5l Y3RQb2xsPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KICAgICAgPGxpc3RpdGVtPgogICAg ICAgPHBhcmE+CiAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5ub25ibG9ja2luZyBjb25uZWN0 aW9uPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgpAQCAtNDk5LDYgKzQ5OSwzMCBAQCBzd2l0Y2goUFFz dGF0dXMoY29ubikpCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg ICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWNvbm5lY3RDb21wbGV0ZSI+CisgICAgIDx0ZXJt PjxmdW5jdGlvbj5QUWNvbm5lY3RDb21wbGV0ZTwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFy eT5QUWNvbm5lY3RDb21wbGV0ZTwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIENvbXBsZXRlIHRoZSBjb25uZWN0aW9uIGF0 dGVtcHQgb24gYSBub25ibG9ja2luZyBjb25uZWN0aW9uIGFuZCBibG9jaworICAgICAgIHVudGls IGl0IGlzIGNvbXBsZXRlZC4KKworPHN5bm9wc2lzPgoraW50IFBRY29ubmVjdFBvbGwoUEdjb25u ICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAg ICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW5zdGVhZCBvZgorICAgICAgIDx4cmVmIGxp bmtlbmQ9ImxpYnBxLVBRY29ubmVjdFBvbGwiLz4KKyAgICAgICB0byBjb21wbGV0ZSBhIGNvbm5l Y3Rpb24gdGhhdCB3YXMgaW5pdGlhbGx5IHN0YXJ0ZWQgaW4gYSBub24gYmxvY2tpbmcKKyAgICAg ICBtYW5uZXIuIEhvd2V2ZXIsIGluc3RlYWQgb2YgY29udGludWluZyB0byBjb21wbGV0ZSB0aGUg Y29ubmVjdGlvbiBpbiBhCisgICAgICAgbm9uIGJsb2NraW5nIHdheSwgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uIHdpbGwgYmxvY2sgdW50aWwgdGhlIGNvbm5lY3Rpb24KKyAgICAgICBpcyBjb21wbGV0 ZWQuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8gY29tcGxldGUgY29ubmVjdGlvbnMgdGhh dCB3ZXJlCisgICAgICAgc3RhcnRlZCBieSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlcXVlc3RD YW5jZWxTdGFydCIvPi4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRY29ubmRlZmF1bHRz Ij4KICAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY29ubmRlZmF1bHRzPC9mdW5jdGlvbj48aW5kZXh0 ZXJtPjxwcmltYXJ5PlBRY29ubmRlZmF1bHRzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4K ICAgICAgPGxpc3RpdGVtPgpAQCAtNjYwLDcgKzY4NCw3IEBAIHZvaWQgUFFyZXNldChQR2Nvbm4g KmNvbm4pOwogCiAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFyZXNldFN0YXJ0Ij4KICAg ICAgPHRlcm0+PGZ1bmN0aW9uPlBRcmVzZXRTdGFydDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJp bWFyeT5QUXJlc2V0U3RhcnQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgotICAgICA8dGVy bT48ZnVuY3Rpb24+UFFyZXNldFBvbGw8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFy ZXNldFBvbGw8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorICAgICA8dGVybSBpZD0ibGli cHEtUFFyZXNldFBvbGwiPjxmdW5jdGlvbj5QUXJlc2V0UG9sbDwvZnVuY3Rpb24+PGluZGV4dGVy bT48cHJpbWFyeT5QUXJlc2V0UG9sbDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CiAgICAg IDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFJlc2V0IHRoZSBjb21tdW5pY2F0aW9u IGNoYW5uZWwgdG8gdGhlIHNlcnZlciwgaW4gYSBub25ibG9ja2luZyBtYW5uZXIuCkBAIC01NjE3 LDEzICs1NjQxLDEzNyBAQCBpbnQgUFFzZXRTaW5nbGVSb3dNb2RlKFBHY29ubiAqY29ubik7CiAg ICB0aGlzIHNlY3Rpb24uCiAKICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgPHZhcmxpc3RlbnRyeSBp ZD0ibGlicHEtUFFyZXF1ZXN0Q2FuY2VsIj4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRcmVxdWVz dENhbmNlbDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUXJlcXVlc3RDYW5jZWw8L3By aW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgIFJlcXVlc3RzIHRoYXQgdGhlIHNlcnZlciBhYmFuZG9ucyBwcm9jZXNzaW5nIG9m IHRoZSBjdXJyZW50IGNvbW1hbmQuCis8c3lub3BzaXM+CitpbnQgUFFyZXF1ZXN0Q2FuY2VsKFBH Y29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4K KyAgICAgICBUaGlzIHJlcXVlc3QgaXMgbWFkZSBvdmVyIGEgY29ubmVjdGlvbiB0aGF0IHVzZXMg dGhlIHNhbWUgY29ubmVjdGlvbgorICAgICAgIG9wdGlvbnMgYXMgdGhlIHRoZSBvcmlnaW5hbCA8 c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+LiBTbyB3aGVuIHRoZQorICAgICAgIG9yaWdp bmFsIGNvbm5lY3Rpb24gaXMgZW5jcnlwdGVkICh1c2luZyBUTFMgb3IgR1NTKSwgdGhlIGNvbm5l Y3Rpb24gZm9yCisgICAgICAgdGhlIGNhbmNlbCByZXF1ZXN0IGNvbm5lY3Rpb24gaXMgZW5jcnlw dGVkIGluIHRoZSBzYW1lLiBBbnkgY29ubmVjdGlvbgorICAgICAgIG9wdGlvbnMgdGhhdCBvbmx5 IG1ha2Ugc2Vuc2UgZm9yIGF1dGhlbnRpY2F0aW9uIG9yIGFmdGVyIGF1dGhlbnRpY2F0aW9uCisg ICAgICAgYXJlIGlnbm9yZWQgdGhvdWdoLCBiZWNhdXNlIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyBk byBub3QgcmVxdWlyZQorICAgICAgIGF1dGhlbnRpY2F0aW9uLgorICAgICAgPC9wYXJhPgorCisg ICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZ1bmN0aW9uIG9wZXJhdGVzIGRpcmVjdGx5IG9uIHRo ZSA8c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+CisgICAgICAgb2JqZWN0LCBhbmQgaW4g Y2FzZSBvZiBmYWlsdXJlIHN0b3JlcyB0aGUgZXJyb3IgbWVzc2FnZSBpbiB0aGUKKyAgICAgICA8 c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+IG9iamVjdCAod2hlbmNlIGl0IGNhbiBiZSBy ZXRyaWV2ZWQKKyAgICAgICBieSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWVycm9yTWVzc2FnZSIv PikuIFRoaXMgYmVoYXZpb3VyIG1ha2VzIHRoaXMKKyAgICAgICBmdW5jdGlvbiB1bnNhZmUgdG8g Y2FsbCBmcm9tIHdpdGhpbiBtdWx0aS10aHJlYWRlZCBwcm9ncmFtcyBvcgorICAgICAgIHNpZ25h bCBoYW5kbGVycywgc2luY2UgaXQgaXMgcG9zc2libGUgdGhhdCBvdmVyd3JpdGluZyB0aGUKKyAg ICAgICA8c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+J3MgZXJyb3IgbWVzc2FnZSB3aWxs CisgICAgICAgbWVzcyB1cCB0aGUgb3BlcmF0aW9uIGN1cnJlbnRseSBpbiBwcm9ncmVzcyBvbiB0 aGUgY29ubmVjdGlvbiBpbiBhbm90aGVyCisgICAgICAgdGhyZWFkLgorICAgICAgPC9wYXJhPgor CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIDEgaWYgdGhlIGNhbmNl bCByZXF1ZXN0IHdhcyBzdWNjZXNzZnVsbHkKKyAgICAgICBkaXNwYXRjaGVkIGFuZCAwIGlmIG5v dC4gU3VjY2Vzc2Z1bCBkaXNwYXRjaCBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUKKyAgICAgICBy ZXF1ZXN0IHdpbGwgaGF2ZSBhbnkgZWZmZWN0LCBob3dldmVyLiBJZiB0aGUgY2FuY2VsbGF0aW9u IGlzIGVmZmVjdGl2ZSwKKyAgICAgICB0aGUgY3VycmVudCBjb21tYW5kIHdpbGwgdGVybWluYXRl IGVhcmx5IGFuZCByZXR1cm4gYW4gZXJyb3IgcmVzdWx0LiBJZgorICAgICAgIHRoZSBjYW5jZWxs YXRpb24gZmFpbHMgKHNheSwgYmVjYXVzZSB0aGUgc2VydmVyIHdhcyBhbHJlYWR5IGRvbmUKKyAg ICAgICBwcm9jZXNzaW5nIHRoZSBjb21tYW5kKSwgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIHZpc2li bGUgcmVzdWx0IGF0CisgICAgICAgYWxsLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVt PgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFy ZXF1ZXN0Q2FuY2VsU3RhcnQiPgorICAgICA8dGVybT48ZnVuY3Rpb24+UFFyZXF1ZXN0Q2FuY2Vs U3RhcnQ8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFyZXF1ZXN0Q2FuY2VsU3RhcnQ8 L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxw YXJhPgorICAgICAgIEEgdmVyc2lvbiBvZgorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBR cmVxdWVzdENhbmNlbCIvPgorICAgICAgIHRoYXQgY2FuIGJlIHVzZWQgaW4gdGhyZWFkLXNhZmUg YW5kL29yIG5vbi1ibG9ja2luZyBtYW5uZXIuCis8c3lub3BzaXM+CitQR2Nvbm4gKlBRcmVxdWVz dENhbmNlbFN0YXJ0KFBHY29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgor CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgPHN0cnVj dG5hbWU+UEdjb25uPC9zdHJ1Y3RuYW1lPi4gVGhpcworICAgICAgIGNvbm5lY3Rpb24gb2JqZWN0 IGNhbiBiZSB1c2VkIHRvIGNhbmNlbCB0aGUgcXVlcnkgdGhhdCdzIHJ1bm5pbmcgb24gdGhlCisg ICAgICAgb3JpZ2luYWwgY29ubmVjdGlvbiBpbiBhIHRocmVhZC1zYWZlIHdheS4gVG8gZG8gc28K KyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlcXVlc3RDYW5jZWwiLz4KKyAgICAgICBt dXN0IGJlIGNhbGxlZCB3aGlsZSBubyBvdGhlciB0aHJlYWQgaXMgdXNpbmcgdGhlIG9yaWdpbmFs IFBHY29ubi4gVGhlbgorICAgICAgIHRoZSByZXR1cm5lZCA8c3RydWN0bmFtZT5QR2Nvbm48L3N0 cnVjdG5hbWU+CisgICAgICAgY2FuIGJlIHVzZWQgYXQgYSBsYXRlciBwb2ludCBpbiBhbnkgdGhy ZWFkIHRvIHNlbmQgYSBjYW5jZWwgcmVxdWVzdC4KKyAgICAgICBBIGNhbmNlbCByZXF1ZXN0IGNh biBiZSBzZW50IHVzaW5nIHRoZSByZXR1cm5lZCBQR2Nvbm4gaW4gdHdvIHdheXMsCisgICAgICAg bm9uLWJsb2NraW5nIHVzaW5nIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY29ubmVjdFBvbGwiLz4K KyAgICAgICBvciBibG9ja2luZyB1c2luZyAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjb25uZWN0 Q29tcGxldGUiLz4uCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIEluIGFk ZGl0aW9uIHRvIGFsbCB0aGUgc3RhdHVzZXMgdGhhdCBhIHJlZ3VsYXIKKyAgICAgICA8c3RydWN0 bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+CisgICAgICAgY2FuIGhhdmUgcmV0dXJuZWQgY29ubmVj dGlvbiBjYW4gaGF2ZSB0d28gYWRkaXRpb25hbCBzdGF0dXNlczoKKworICAgICAgIDx2YXJpYWJs ZWxpc3Q+CisgICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLWNvbm5lY3Rpb24tc3RhcnRp bmciPgorICAgICAgICAgPHRlcm0+PHN5bWJvbD5DT05ORUNUSU9OX1NUQVJUSU5HPC9zeW1ib2w+ PC90ZXJtPgorICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAg ICBXYWl0aW5nIGZvciB0aGUgZmlyc3QgY2FsbCB0byA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNv bm5lY3RQb2xsIi8+LAorICAgICAgICAgICB0byBhY3R1YWxseSBvcGVuIHRoZSBzb2NrZXQuIFRo aXMgaXMgdGhlIGNvbm5lY3Rpb24gc3RhdGUgcmlnaHQgYWZ0ZXIKKyAgICAgICAgICAgY2FsbGlu ZyA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlcXVlc3RDYW5jZWwiLz4uIE5vIGNvbm5lY3Rpb24g dG8gdGhlCisgICAgICAgICAgIHNlcnZlciBoYXMgYmVlbiBpbml0aWF0ZWQgeWV0IGF0IHRoaXMg cG9pbnQuIFRvIHN0YXJ0IGNhbmNlbCByZXF1ZXN0CisgICAgICAgICAgIGluaXRpYXRpb24gdXNl IDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY29ubmVjdFBvbGwiLz4KKyAgICAgICAgICAgZm9yIG5v bi1ibG9ja2luZyBiZWhhdmlvdXIgYW5kIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY29ubmVjdENv bXBsZXRlIi8+CisgICAgICAgICAgIGZvciBibG9ja2luZyBiZWhhdmlvdXIuCisgICAgICAgICAg PC9wYXJhPgorICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisK KyAgICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtY29ubmVjdGlvbi1jYW5jZWwtZmluaXNo ZWQiPgorICAgICAgICAgPHRlcm0+PHN5bWJvbD5DT05ORUNUSU9OX0NBTkNFTF9GSU5JU0hFRDwv c3ltYm9sPjwvdGVybT4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICAgQ2FuY2VsIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWxseSBzZW50LiBJdCdzIG5vdCBw b3NzaWJsZSB0byBjb250aW51ZQorICAgICAgICAgICB1c2luZyB0aGUgY2FuY2VsbGF0aW9uIGNv bm5lY3Rpb24gbm93LCBzbyBpdCBzaG91bGQgYmUgZnJlZWQgdXNpbmcKKyAgICAgICAgICAgPHhy ZWYgbGlua2VuZD0ibGlicHEtUFFmaW5pc2giLz4uIEl0J3MgYWxzbyBwb3NzaWJsZSB0byByZXNl dCB0aGUKKyAgICAgICAgICAgY2FuY2VsbGF0aW9uIGNvbm5lY3Rpb24gaW5zdGVhZCB1c2luZwor ICAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlc2V0U3RhcnQiLz4sIHRoYXQgd2F5 IGl0IGNhbiBiZSByZXVzZWQgdG8KKyAgICAgICAgICAgY2FuY2VsIGEgZnV0dXJlIHF1ZXJ5IG9u IHRoZSBzYW1lIGNvbm5lY3Rpb24uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgPC92YXJpYWJsZWxpc3Q+Cisg ICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFNpbmNlIHRoaXMgb2JqZWN0IHJl cHJlc2VudHMgYSBjb25uZWN0aW9uIG9ubHkgbWVhbnQgZm9yIGNhbmNlbGxhdGlvbnMgaXQKKyAg ICAgICBjYW4gb25seSBiZSB1c2VkIHdpdGggYSBsaW1pdGVkIHN1YnNldCBvZiB0aGUgZnVuY3Rp b25zIHRoYXQgY2FuIGJlIHVzZWQKKyAgICAgICBmb3IgYSByZWd1bGFyIDxzdHJ1Y3RuYW1lPlBH Y29ubjwvc3RydWN0bmFtZT4gb2JqZWN0LiBUaGUgZnVuY3Rpb25zIHRoYXQKKyAgICAgICB0aGlz IG9iamVjdCBjYW4gYmUgcGFzc2VkIHRvIGFyZQorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc3RhdHVzIi8+LAorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZXJyb3JNZXNzYWdl Ii8+LAorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY29ubmVjdENvbXBsZXRlIi8+LAor ICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY29ubmVjdFBvbGwiLz4sCisgICAgICAgPHhy ZWYgbGlua2VuZD0ibGlicHEtUFFzb2NrZXQiLz4sCisgICAgICAgPHhyZWYgbGlua2VuZD0ibGli cHEtUFFyZXNldFN0YXJ0Ii8+LCBhbmQKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWZp bmlzaCIvPi4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRZ2V0Q2FuY2VsIj4KICAgICAg PHRlcm0+PGZ1bmN0aW9uPlBRZ2V0Q2FuY2VsPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5 PlBRZ2V0Q2FuY2VsPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KIAogICAgICA8bGlzdGl0 ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBDcmVhdGVzIGEgZGF0YSBzdHJ1Y3R1cmUgY29udGFp bmluZyB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNhbmNlbAotICAgICAgIGEgY29tbWFuZCBp c3N1ZWQgdGhyb3VnaCBhIHBhcnRpY3VsYXIgZGF0YWJhc2UgY29ubmVjdGlvbi4KKyAgICAgICBh IGNvbW1hbmQgdXNpbmcgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4uCiA8c3lub3Bz aXM+CiBQR2NhbmNlbCAqUFFnZXRDYW5jZWwoUEdjb25uICpjb25uKTsKIDwvc3lub3BzaXM+CkBA IC01NjY1LDcgKzU4MTMsOSBAQCB2b2lkIFBRZnJlZUNhbmNlbChQR2NhbmNlbCAqY2FuY2VsKTsK IAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBSZXF1ZXN0cyB0aGF0IHRo ZSBzZXJ2ZXIgYWJhbmRvbiBwcm9jZXNzaW5nIG9mIHRoZSBjdXJyZW50IGNvbW1hbmQuCisgICAg ICAgQSBsZXNzIHNlY3VyZSB2ZXJzaW9uIG9mCisgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFyZXF1ZXN0Q2FuY2VsIi8+CisgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBzYWZlbHkgZnJvbSB3 aXRoaW4gYSBzaWduYWwgaGFuZGxlci4KIDxzeW5vcHNpcz4KIGludCBQUWNhbmNlbChQR2NhbmNl bCAqY2FuY2VsLCBjaGFyICplcnJidWYsIGludCBlcnJidWZzaXplKTsKIDwvc3lub3BzaXM+CkBA IC01Njc5LDE1ICs1ODI5LDYgQEAgaW50IFBRY2FuY2VsKFBHY2FuY2VsICpjYW5jZWwsIGNoYXIg KmVycmJ1ZiwgaW50IGVycmJ1ZnNpemUpOwogICAgICAgIHJlY29tbWVuZGVkIHNpemUgaXMgMjU2 IGJ5dGVzKS4KICAgICAgIDwvcGFyYT4KIAotICAgICAgPHBhcmE+Ci0gICAgICAgU3VjY2Vzc2Z1 bCBkaXNwYXRjaCBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgcmVxdWVzdCB3aWxsIGhhdmUKLSAg ICAgICBhbnkgZWZmZWN0LCBob3dldmVyLiAgSWYgdGhlIGNhbmNlbGxhdGlvbiBpcyBlZmZlY3Rp dmUsIHRoZSBjdXJyZW50Ci0gICAgICAgY29tbWFuZCB3aWxsIHRlcm1pbmF0ZSBlYXJseSBhbmQg cmV0dXJuIGFuIGVycm9yIHJlc3VsdC4gIElmIHRoZQotICAgICAgIGNhbmNlbGxhdGlvbiBmYWls cyAoc2F5LCBiZWNhdXNlIHRoZSBzZXJ2ZXIgd2FzIGFscmVhZHkgZG9uZQotICAgICAgIHByb2Nl c3NpbmcgdGhlIGNvbW1hbmQpLCB0aGVuIHRoZXJlIHdpbGwgYmUgbm8gdmlzaWJsZSByZXN1bHQg YXQKLSAgICAgICBhbGwuCi0gICAgICA8L3BhcmE+Ci0KICAgICAgIDxwYXJhPgogICAgICAgIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsIi8+IGNhbiBzYWZlbHkgYmUgaW52b2tlZCBmcm9t IGEgc2lnbmFsCiAgICAgICAgaGFuZGxlciwgaWYgdGhlIDxwYXJhbWV0ZXI+ZXJyYnVmPC9wYXJh bWV0ZXI+IGlzIGEgbG9jYWwgdmFyaWFibGUgaW4gdGhlCkBAIC01Njk2LDMzICs1ODM3LDI0IEBA IGludCBQUWNhbmNlbChQR2NhbmNlbCAqY2FuY2VsLCBjaGFyICplcnJidWYsIGludCBlcnJidWZz aXplKTsKICAgICAgICBhbHNvIGJlIGludm9rZWQgZnJvbSBhIHRocmVhZCB0aGF0IGlzIHNlcGFy YXRlIGZyb20gdGhlIG9uZQogICAgICAgIG1hbmlwdWxhdGluZyB0aGUgPHN0cnVjdG5hbWU+UEdj b25uPC9zdHJ1Y3RuYW1lPiBvYmplY3QuCiAgICAgICA8L3BhcmE+Ci0gICAgIDwvbGlzdGl0ZW0+ Ci0gICAgPC92YXJsaXN0ZW50cnk+Ci0gICA8L3ZhcmlhYmxlbGlzdD4KLQotICAgPHZhcmlhYmxl bGlzdD4KLSAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUXJlcXVlc3RDYW5jZWwiPgotICAg ICA8dGVybT48ZnVuY3Rpb24+UFFyZXF1ZXN0Q2FuY2VsPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxw cmltYXJ5PlBRcmVxdWVzdENhbmNlbDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+Ci0KLSAg ICAgPGxpc3RpdGVtPgotICAgICAgPHBhcmE+Ci0gICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFyZXF1ZXN0Q2FuY2VsIi8+IGlzIGEgZGVwcmVjYXRlZCB2YXJpYW50IG9mCi0gICAgICAgPHhy ZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4uCi08c3lub3BzaXM+Ci1pbnQgUFFyZXF1ZXN0 Q2FuY2VsKFBHY29ubiAqY29ubik7Ci08L3N5bm9wc2lzPgotICAgICAgPC9wYXJhPgogCiAgICAg ICA8cGFyYT4KLSAgICAgICBSZXF1ZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgYWJhbmRvbiBwcm9jZXNz aW5nIG9mIHRoZSBjdXJyZW50Ci0gICAgICAgY29tbWFuZC4gIEl0IG9wZXJhdGVzIGRpcmVjdGx5 IG9uIHRoZQotICAgICAgIDxzdHJ1Y3RuYW1lPlBHY29ubjwvc3RydWN0bmFtZT4gb2JqZWN0LCBh bmQgaW4gY2FzZSBvZiBmYWlsdXJlIHN0b3JlcyB0aGUKLSAgICAgICBlcnJvciBtZXNzYWdlIGlu IHRoZSA8c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+IG9iamVjdCAod2hlbmNlIGl0IGNh bgotICAgICAgIGJlIHJldHJpZXZlZCBieSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWVycm9yTWVz c2FnZSIvPikuICBBbHRob3VnaAotICAgICAgIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHRoZSBzYW1l LCB0aGlzIGFwcHJvYWNoIGlzIG5vdCBzYWZlIHdpdGhpbgotICAgICAgIG11bHRpcGxlLXRocmVh ZCBwcm9ncmFtcyBvciBzaWduYWwgaGFuZGxlcnMsIHNpbmNlIGl0IGlzIHBvc3NpYmxlCi0gICAg ICAgdGhhdCBvdmVyd3JpdGluZyB0aGUgPHN0cnVjdG5hbWU+UEdjb25uPC9zdHJ1Y3RuYW1lPidz IGVycm9yIG1lc3NhZ2Ugd2lsbAotICAgICAgIG1lc3MgdXAgdGhlIG9wZXJhdGlvbiBjdXJyZW50 bHkgaW4gcHJvZ3Jlc3Mgb24gdGhlIGNvbm5lY3Rpb24uCisgICAgICAgVG8gYWNoaWV2ZSBzaWdu YWwtc2FmZXR5LCBzb21lIGNvbmNlc3Npb25zIG5lZWRlZCB0byBiZSBtYWRlIGluIHRoZQorICAg ICAgIGltcGxlbWVudGF0aW9uIG9mIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsIi8+LiBO b3QgYWxsIGNvbm5lY3Rpb24KKyAgICAgICBvcHRpb25zIG9mIHRoZSBvcmlnaW5hbCBjb25uZWN0 aW9uIGFyZSB1c2VkIHdoZW4gZXN0YWJsaXNoaW5nIGEKKyAgICAgICBjb25uZWN0aW9uIGZvciB0 aGUgY2FuY2VsbGF0aW9uIHJlcXVlc3QuIFdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGEKKyAg ICAgICBjb25uZWN0aW9uIGlzIG1hZGUgdG8gdGhlIHBvc3RncmVzIGhvc3QgdXNpbmcgdGhlIHNh bWUgcG9ydC4gVGhlIG9ubHkKKyAgICAgICBjb25uZWN0aW9uIG9wdGlvbnMgdGhhdCBhcmUgaG9u b3JlZCBkdXJpbmcgdGhpcyBjb25uZWN0aW9uIGFyZQorICAgICAgIDx2YXJuYW1lPmtlZXBhbGl2 ZXM8L3Zhcm5hbWU+LAorICAgICAgIDx2YXJuYW1lPmtlZXBhbGl2ZXNfaWRsZTwvdmFybmFtZT4s CisgICAgICAgPHZhcm5hbWU+a2VlcGFsaXZlc19pbnRlcnZhbDwvdmFybmFtZT4sCisgICAgICAg PHZhcm5hbWU+a2VlcGFsaXZlc19jb3VudDwvdmFybmFtZT4sIGFuZAorICAgICAgIDx2YXJuYW1l PnRjcF91c2VyX3RpbWVvdXQ8L3Zhcm5hbWU+LgorICAgICAgIFNvLCBmb3IgZXhhbXBsZQorICAg ICAgIDx2YXJuYW1lPmNvbm5lY3RfdGltZW91dDwvdmFybmFtZT4sCisgICAgICAgPHZhcm5hbWU+ Z3NzZW5jbW9kZTwvdmFybmFtZT4sIGFuZAorICAgICAgIDx2YXJuYW1lPnNzbG1vZGU8L3Zhcm5h bWU+IGFyZSBpZ25vcmVkLiBUaGlzIG1lYW5zIHRoZSBjb25uZWN0aW9uCisgICAgICAgaXMgbmV2 ZXIgZW5jcnlwdGVkIHVzaW5nIFRMUyBvciBHU1MuCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlz dGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC04ODU2LDEwICs4OTg4LDEwIEBAIGludCBQ UWlzdGhyZWFkc2FmZSgpOwogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUaGUgZGVwcmVjYXRl ZCBmdW5jdGlvbnMgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFyZXF1ZXN0Q2FuY2VsIi8+IGFuZAor ICAgVGhlIGZ1bmN0aW9ucyA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlcXVlc3RDYW5jZWwiLz4g YW5kCiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUW9pZFN0YXR1cyIvPiBhcmUgbm90IHRocmVh ZC1zYWZlIGFuZCBzaG91bGQgbm90IGJlCiAgICB1c2VkIGluIG11bHRpdGhyZWFkIHByb2dyYW1z LiAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFyZXF1ZXN0Q2FuY2VsIi8+Ci0gICBjYW4gYmUgcmVw bGFjZWQgYnkgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4uCisgICBjYW4gYmUgcmVw bGFjZWQgYnkgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFyZXF1ZXN0Q2FuY2VsU3RhcnQiLz4uCiAg ICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUW9pZFN0YXR1cyIvPiBjYW4gYmUgcmVwbGFjZWQgYnkK ICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRb2lkVmFsdWUiLz4uCiAgIDwvcGFyYT4KZGlmZiAt LWdpdCBhL3NyYy9mZV91dGlscy9jb25uZWN0X3V0aWxzLmMgYi9zcmMvZmVfdXRpbHMvY29ubmVj dF91dGlscy5jCmluZGV4IGYyZTU4M2Y5ZmEuLmI5ZjBjMDU1OGMgMTAwNjQ0Ci0tLSBhL3NyYy9m ZV91dGlscy9jb25uZWN0X3V0aWxzLmMKKysrIGIvc3JjL2ZlX3V0aWxzL2Nvbm5lY3RfdXRpbHMu YwpAQCAtMTU4LDE5ICsxNTgsMTEgQEAgY29ubmVjdE1haW50ZW5hbmNlRGF0YWJhc2UoQ29ublBh cmFtcyAqY3BhcmFtcywKIHZvaWQKIGRpc2Nvbm5lY3REYXRhYmFzZShQR2Nvbm4gKmNvbm4pCiB7 Ci0JY2hhcgkJZXJyYnVmWzI1Nl07Ci0KIAlBc3NlcnQoY29ubiAhPSBOVUxMKTsKIAogCWlmIChQ UXRyYW5zYWN0aW9uU3RhdHVzKGNvbm4pID09IFBRVFJBTlNfQUNUSVZFKQogCXsKLQkJUEdjYW5j ZWwgICAqY2FuY2VsOwotCi0JCWlmICgoY2FuY2VsID0gUFFnZXRDYW5jZWwoY29ubikpKQotCQl7 Ci0JCQkodm9pZCkgUFFjYW5jZWwoY2FuY2VsLCBlcnJidWYsIHNpemVvZihlcnJidWYpKTsKLQkJ CVBRZnJlZUNhbmNlbChjYW5jZWwpOwotCQl9CisJCSh2b2lkKSBQUXJlcXVlc3RDYW5jZWwoY29u bik7CiAJfQogCiAJUFFmaW5pc2goY29ubik7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9leHBvcnRzLnR4dCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CmluZGV4 IGU4YmNjODgzNzAuLmY3NjA5ZDBjNjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2V4cG9ydHMudHh0CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CkBAIC0x ODYsMyArMTg2LDUgQEAgUFFwaXBlbGluZVN0YXR1cyAgICAgICAgICAxODMKIFBRc2V0VHJhY2VG bGFncyAgICAgICAgICAgMTg0CiBQUW1ibGVuQm91bmRlZCAgICAgICAgICAgIDE4NQogUFFzZW5k Rmx1c2hSZXF1ZXN0ICAgICAgICAxODYKK1BRcmVxdWVzdENhbmNlbFN0YXJ0ICAgICAgMTg3CitQ UWNvbm5lY3RDb21wbGV0ZSAgICAgICAgIDE4OApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmlu ZGV4IDZlOTM2YmJmZjMuLjczOTBmYmVjN2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWNvbm5lY3QuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMK QEAgLTM3OSw2ICszNzksNyBAQCBzdGF0aWMgUEdQaW5nIGludGVybmFsX3BpbmcoUEdjb25uICpj b25uKTsKIHN0YXRpYyBQR2Nvbm4gKm1ha2VFbXB0eVBHY29ubih2b2lkKTsKIHN0YXRpYyB2b2lk IHBxRnJlZUNvbW1hbmRRdWV1ZShQR2NtZFF1ZXVlRW50cnkgKnF1ZXVlKTsKIHN0YXRpYyBib29s IGZpbGxQR2Nvbm4oUEdjb25uICpjb25uLCBQUWNvbm5pbmZvT3B0aW9uICpjb25uT3B0aW9ucyk7 CitzdGF0aWMgYm9vbCBjb3B5UEdjb25uKFBHY29ubiAqc3JjQ29ubiwgUEdjb25uICpkc3RDb25u KTsKIHN0YXRpYyB2b2lkIGZyZWVQR2Nvbm4oUEdjb25uICpjb25uKTsKIHN0YXRpYyB2b2lkIGNs b3NlUEdjb25uKFBHY29ubiAqY29ubik7CiBzdGF0aWMgdm9pZCByZWxlYXNlX2Nvbm5fYWRkcmlu Zm8oUEdjb25uICpjb25uKTsKQEAgLTYwNSw4ICs2MDYsMTcgQEAgcHFEcm9wU2VydmVyRGF0YShQ R2Nvbm4gKmNvbm4pCiAJaWYgKGNvbm4tPndyaXRlX2Vycl9tc2cpCiAJCWZyZWUoY29ubi0+d3Jp dGVfZXJyX21zZyk7CiAJY29ubi0+d3JpdGVfZXJyX21zZyA9IE5VTEw7Ci0JY29ubi0+YmVfcGlk ID0gMDsKLQljb25uLT5iZV9rZXkgPSAwOworCisJLyoKKwkgKiBDYW5jZWwgY29ubmVjdGlvbnMg c2hvdWxkIHNhdmUgdGhlaXIgYmVfcGlkIGFuZCBiZV9rZXkgYWNyb3NzCisJICogUFFyZXNldFN0 YXJ0IGludm9jYXRpb25zLiBPdGhlcndpc2UgdGhleSBkb24ndCBrbm93IHRoZSBzZWNyZXQgdG9r ZW4gb2YKKwkgKiB0aGUgY29ubmVjdGlvbiB0aGV5IGFyZSBzdXBwb3NlZCB0byBjYW5jZWwgYW55 bW9yZS4KKwkgKi8KKwlpZiAoIWNvbm4tPmNhbmNlbFJlcXVlc3QpCisJeworCQljb25uLT5iZV9w aWQgPSAwOworCQljb25uLT5iZV9rZXkgPSAwOworCX0KIH0KIAogCkBAIC03MzcsNiArNzQ3LDY4 IEBAIFBRcGluZyhjb25zdCBjaGFyICpjb25uaW5mbykKIAlyZXR1cm4gcmV0OwogfQogCisvKgor ICoJCVBRY2FuY2VsQ29ubmVjdFN0YXJ0CisgKgorICogQXN5bmNocm9ub3VzbHkgY2FuY2VsIGEg cmVxdWVzdCBvbiB0aGUgZ2l2ZW4gY29ubmVjdGlvbi4gVGhpcyByZXF1aXJlcworICogcG9sbGlu ZyB0aGUgcmV0dXJuZWQgUEdjb25uIHRvIGFjdHVhbGx5IGNvbXBsZXRlIHRoZSBjYW5jZWxsYXRp b24gb2YgdGhlCisgKiByZXF1ZXN0LgorICovCitQR2Nvbm4gKgorUFFyZXF1ZXN0Q2FuY2VsU3Rh cnQoUEdjb25uICpjb25uKQoreworCVBHY29ubgkgICAqY2FuY2VsQ29ubiA9IG1ha2VFbXB0eVBH Y29ubigpOworCisJaWYgKGNhbmNlbENvbm4gPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwkv KiBDaGVjayB3ZSBoYXZlIGFuIG9wZW4gY29ubmVjdGlvbiAqLworCWlmICghY29ubikKKwl7CisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjYW5jZWxDb25uLT5lcnJvck1lc3NhZ2UsIGxpYnBxX2dl dHRleHQoInBhc3NlZCBjb25uZWN0aW9uIHdhcyBOVUxMXG4iKSk7CisJCXJldHVybiBjYW5jZWxD b25uOworCX0KKworCWlmIChjb25uLT5zb2NrID09IFBHSU5WQUxJRF9TT0NLRVQpCisJeworCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY2FuY2VsQ29ubi0+ZXJyb3JNZXNzYWdlLCBsaWJwcV9nZXR0 ZXh0KCJwYXNzZWQgY29ubmVjdGlvbiBpcyBub3Qgb3BlblxuIikpOworCQlyZXR1cm4gY2FuY2Vs Q29ubjsKKwl9CisKKwkvKgorCSAqIEluZGljYXRlIHRoYXQgdGhpcyBjb25uZWN0aW9uIGlzIHVz ZWQgdG8gc2VuZCBhIGNhbmNlbGxhdGlvbgorCSAqLworCWNhbmNlbENvbm4tPmNhbmNlbFJlcXVl c3QgPSB0cnVlOworCisJaWYgKCFjb3B5UEdjb25uKGNvbm4sIGNhbmNlbENvbm4pKQorCQlyZXR1 cm4gKFBHY29ubiAqKSBjYW5jZWxDb25uOworCisJLyoKKwkgKiBDb21wdXRlIGRlcml2ZWQgb3B0 aW9ucworCSAqLworCWlmICghY29ubmVjdE9wdGlvbnMyKGNhbmNlbENvbm4pKQorCQlyZXR1cm4g Y2FuY2VsQ29ubjsKKworCS8qCisJICogQ29weSBjYW5jZWxhdGlvbiB0b2tlbiBkYXRhIGZyb20g dGhlIG9yaWdpbmFsIGNvbm5uZWN0aW9uCisJICovCisJY2FuY2VsQ29ubi0+YmVfcGlkID0gY29u bi0+YmVfcGlkOworCWNhbmNlbENvbm4tPmJlX2tleSA9IGNvbm4tPmJlX2tleTsKKworCS8qCisJ ICogQ2FuY2VsIHJlcXVlc3RzIHNob3VsZCBub3QgaXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBo b3N0cy4gVGhlIHJlcXVlc3QKKwkgKiBuZWVkcyB0byBiZSBzZW50IHRvIHRoZSBleGFjdCBob3N0 IGFuZCBhZGRyZXNzIHRoYXQgdGhlIG9yaWdpbmFsCisJICogY29ubmVjdGlvbiB1c2VkLgorCSAq LworCW1lbWNweSgmY2FuY2VsQ29ubi0+cmFkZHIsICZjb25uLT5yYWRkciwgc2l6ZW9mKFNvY2tB ZGRyKSk7CisJY2FuY2VsQ29ubi0+d2hpY2hob3N0ID0gY29ubi0+d2hpY2hob3N0OworCWNvbm4t PnRyeV9uZXh0X2hvc3QgPSBmYWxzZTsKKwljb25uLT50cnlfbmV4dF9hZGRyID0gZmFsc2U7CisK KwljYW5jZWxDb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX1NUQVJUSU5HOworCXJldHVybiBjYW5j ZWxDb25uOworfQorCiAvKgogICoJCVBRY29ubmVjdFN0YXJ0UGFyYW1zCiAgKgpAQCAtOTE0LDYg Kzk4Niw0NiBAQCBmaWxsUEdjb25uKFBHY29ubiAqY29ubiwgUFFjb25uaW5mb09wdGlvbiAqY29u bk9wdGlvbnMpCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBDb3B5IG92ZXIgb3B0aW9uIHZh bHVlcyBmcm9tIHNyY0Nvbm4gdG8gZHN0Q29ubgorICoKKyAqIERvbid0IHB1dCBhbnl0aGluZyBj dXRlIGhlcmUgLS0tIGludGVsbGlnZW5jZSBzaG91bGQgYmUgaW4KKyAqIGNvbm5lY3RPcHRpb25z MiAuLi4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4gT24gZmFpbHVyZSwgcmV0dXJu cyBmYWxzZSBhbmQgc2V0cyBlcnJvciBtZXNzYWdlIG9mCisgKiBkc3RDb25uLgorICovCitzdGF0 aWMgYm9vbAorY29weVBHY29ubihQR2Nvbm4gKnNyY0Nvbm4sIFBHY29ubiAqZHN0Q29ubikKK3sK Kwljb25zdCBpbnRlcm5hbFBRY29ubmluZm9PcHRpb24gKm9wdGlvbjsKKworCS8qIGNvcHkgb3Zl ciBjb25uZWN0aW9uIG9wdGlvbnMgKi8KKwlmb3IgKG9wdGlvbiA9IFBRY29ubmluZm9PcHRpb25z OyBvcHRpb24tPmtleXdvcmQ7IG9wdGlvbisrKQorCXsKKwkJaWYgKG9wdGlvbi0+Y29ubm9mcyA+ PSAwKQorCQl7CisJCQljb25zdCBjaGFyICoqdG1wID0gKGNvbnN0IGNoYXIgKiopICgoY2hhciAq KSBzcmNDb25uICsgb3B0aW9uLT5jb25ub2ZzKTsKKworCQkJaWYgKCp0bXApCisJCQl7CisJCQkJ Y2hhcgkgICoqZHN0Q29ubm1lbWJlciA9IChjaGFyICoqKSAoKGNoYXIgKikgZHN0Q29ubiArIG9w dGlvbi0+Y29ubm9mcyk7CisKKwkJCQlpZiAoKmRzdENvbm5tZW1iZXIpCisJCQkJCWZyZWUoKmRz dENvbm5tZW1iZXIpOworCQkJCSpkc3RDb25ubWVtYmVyID0gc3RyZHVwKCp0bXApOworCQkJCWlm ICgqZHN0Q29ubm1lbWJlciA9PSBOVUxMKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmRzdENvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0 IG9mIG1lbW9yeVxuIikpOworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQorCQkJfQorCQl9CisJ fQorCXJldHVybiB0cnVlOworfQorCiAvKgogICoJCWNvbm5lY3RPcHRpb25zMQogICoKQEAgLTIw ODIsMTAgKzIxOTQsMTcgQEAgY29ubmVjdERCU3RhcnQoUEdjb25uICpjb25uKQogCSAqIFNldCB1 cCB0byB0cnkgdG8gY29ubmVjdCB0byB0aGUgZmlyc3QgaG9zdC4gIChTZXR0aW5nIHdoaWNoaG9z dCA9IC0xIGlzCiAJICogYSBiaXQgb2YgYSBjaGVhdCwgYnV0IFBRY29ubmVjdFBvbGwgd2lsbCBh ZHZhbmNlIGl0IHRvIDAgYmVmb3JlCiAJICogYW55dGhpbmcgZWxzZSBsb29rcyBhdCBpdC4pCisJ ICoKKwkgKiBDYW5jZWwgcmVxdWVzdHMgYXJlIHNwZWNpYWwgdGhvdWdoLCB0aGV5IHNob3VsZCBv bmx5IHRyeSBvbmUgaG9zdCwKKwkgKiB3aGljaCBpcyBkZXRlcm1pbmVkIGluIFBRY2FuY2VsQ29u bmVjdFN0YXJ0LiBTbyBsZWF2ZSB0aGVzZSBzZXR0aW5ncworCSAqIGFsb25lIGZvciBjYW5jZWwg cmVxdWVzdHMuCiAJICovCi0JY29ubi0+d2hpY2hob3N0ID0gLTE7Ci0JY29ubi0+dHJ5X25leHRf YWRkciA9IGZhbHNlOwotCWNvbm4tPnRyeV9uZXh0X2hvc3QgPSB0cnVlOworCWlmICghY29ubi0+ Y2FuY2VsUmVxdWVzdCkKKwl7CisJCWNvbm4tPndoaWNoaG9zdCA9IC0xOworCQljb25uLT50cnlf bmV4dF9ob3N0ID0gdHJ1ZTsKKwkJY29ubi0+dHJ5X25leHRfYWRkciA9IGZhbHNlOworCX0KIAlj b25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX05FRURFRDsKIAogCS8qIEFsc28gcmVzZXQgdGhlIHRh cmdldF9zZXJ2ZXJfdHlwZSBzdGF0ZSBpZiBuZWVkZWQgKi8KQEAgLTIxMzQsNiArMjI1MywxNSBA QCBjb25uZWN0REJDb21wbGV0ZShQR2Nvbm4gKmNvbm4pCiAJaWYgKGNvbm4gPT0gTlVMTCB8fCBj b25uLT5zdGF0dXMgPT0gQ09OTkVDVElPTl9CQUQpCiAJCXJldHVybiAwOwogCisJaWYgKGNvbm4t PnN0YXR1cyA9PSBDT05ORUNUSU9OX1NUQVJUSU5HKQorCXsKKwkJaWYgKCFjb25uZWN0REJTdGFy dChjb25uKSkKKwkJeworCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7CisJCQlyZXR1 cm4gMDsKKwkJfQorCX0KKwogCS8qCiAJICogU2V0IHVwIGEgdGltZSBsaW1pdCwgaWYgY29ubmVj dF90aW1lb3V0IGlzbid0IHplcm8uCiAJICovCkBAIC0yMjc0LDEzICsyNDAyLDE1IEBAIFBRY29u bmVjdFBvbGwoUEdjb25uICpjb25uKQogCXN3aXRjaCAoY29ubi0+c3RhdHVzKQogCXsKIAkJCS8q Ci0JCQkgKiBXZSByZWFsbHkgc2hvdWxkbid0IGhhdmUgYmVlbiBwb2xsZWQgaW4gdGhlc2UgdHdv IGNhc2VzLCBidXQgd2UKLQkJCSAqIGNhbiBoYW5kbGUgaXQuCisJCQkgKiBXZSByZWFsbHkgc2hv dWxkbid0IGhhdmUgYmVlbiBwb2xsZWQgaW4gdGhlc2UgdGhyZWUgY2FzZXMsIGJ1dAorCQkJICog d2UgY2FuIGhhbmRsZSBpdC4KIAkJCSAqLwogCQljYXNlIENPTk5FQ1RJT05fQkFEOgogCQkJcmV0 dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwogCQljYXNlIENPTk5FQ1RJT05fT0s6CiAJCQlyZXR1 cm4gUEdSRVNfUE9MTElOR19PSzsKKwkJY2FzZSBDT05ORUNUSU9OX0NBTkNFTF9GSU5JU0hFRDoK KwkJCXJldHVybiBQR1JFU19QT0xMSU5HX09LOwogCiAJCQkvKiBUaGVzZSBhcmUgcmVhZGluZyBz dGF0ZXMgKi8KIAkJY2FzZSBDT05ORUNUSU9OX0FXQUlUSU5HX1JFU1BPTlNFOgpAQCAtMjI5Miw2 ICsyNDIyLDM0IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCS8qIExvYWQgd2Fp dGluZyBkYXRhICovCiAJCQkJaW50CQkJbiA9IHBxUmVhZERhdGEoY29ubik7CiAKKyNpZm5kZWYg V0lOMzIKKwkJCQlpZiAobiA9PSAtMiAmJiBjb25uLT5jYW5jZWxSZXF1ZXN0KQorI2Vsc2UKKwor CQkJCS8qCisJCQkJICogV2luZG93cyBpcyBhIGJpdCBzcGVjaWFsIGluIGl0cyBFT0YgYmVoYXZp b3VyIGZvciBUQ1AuCisJCQkJICogU29tZXRpbWVzIGl0IHdpbGwgZXJyb3Igd2l0aCBhbiBFQ09O TlJFU0VUIHdoZW4gdGhlcmUgaXMgYQorCQkJCSAqIGNsZWFuIGNvbm5lY3Rpb24gY2xvc3VyZS4g U2VlIHRoZXNlIHRocmVhZHMgZm9yIGRldGFpbHM6CisJCQkJICogaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzkwYjM0MDU3LTQxNzYtN2JiMC0wZGJiLTk4MjJhNWY2 NDI1YiU0MGdyZWl6LXJlaW5zZG9yZi5kZQorCQkJCSAqCisJCQkJICogaHR0cHM6Ly93d3cucG9z dGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBJTJCaFVLRyUyQk9lb0VUWlElM0RRdzVVYjVo M3Rtd1FoQm1EQSUzRG51Tk8zS0clM0R6V2ZVeXBGQXclNDBtYWlsLmdtYWlsLmNvbQorCQkJCSAq CisJCQkJICogUFFjYW5jZWwgaWdub3JlcyBzdWNoIGVycm9ycyBhbmQgcmVwb3J0cyBzdWNjZXNz IGZvciB0aGUKKwkJCQkgKiBjYW5jZWxsYXRpb24gYW55d2F5LCBzbyBldmVuIGlmIHRoaXMgaXMg bm90IGFsd2F5cyBjb3JyZWN0CisJCQkJICogd2UgZG8gdGhlIHNhbWUgaGVyZS4KKwkJCQkgKi8K KwkJCQlpZiAobiA8IDAgJiYgY29ubi0+Y2FuY2VsUmVxdWVzdCkKKyNlbmRpZgorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogVGhpcyBpcyB0aGUgZXhwZWN0ZWQgZW5kIHN0YXRlIGZvciBjYW5jZWwg Y29ubmVjdGlvbnMuCisJCQkJCSAqIFRoZXkgYXJlIGNsb3NlZCBvbmNlIHRoZSBjYW5jZWwgaXMg cHJvY2Vzc2VkIGJ5IHRoZQorCQkJCQkgKiBzZXJ2ZXIuCisJCQkJCSAqLworCQkJCQljb25uLT5z dGF0dXMgPSBDT05ORUNUSU9OX0NBTkNFTF9GSU5JU0hFRDsKKwkJCQkJcmVzZXRQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlKTsKKwkJCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfT0s7CisJ CQkJfQogCQkJCWlmIChuIDwgMCkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJaWYgKG4g PT0gMCkKQEAgLTIzMDEsNiArMjQ1OSw3IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQog CQkJfQogCiAJCQkvKiBUaGVzZSBhcmUgd3JpdGluZyBzdGF0ZXMsIHNvIHdlIGp1c3QgcHJvY2Vl ZC4gKi8KKwkJY2FzZSBDT05ORUNUSU9OX1NUQVJUSU5HOgogCQljYXNlIENPTk5FQ1RJT05fU1RB UlRFRDoKIAkJY2FzZSBDT05ORUNUSU9OX01BREU6CiAJCQlicmVhazsKQEAgLTIzMjUsNiArMjQ4 NCwxNCBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50 aWwgdGhlcmUgaXMKIAkvKiBUaW1lIHRvIGFkdmFuY2UgdG8gbmV4dCBhZGRyZXNzLCBvciBuZXh0 IGhvc3QgaWYgbm8gbW9yZSBhZGRyZXNzZXM/ICovCiAJaWYgKGNvbm4tPnRyeV9uZXh0X2FkZHIp CiAJeworCQkvKgorCQkgKiBDYW5jZWwgcmVxdWVzdHMgbmV2ZXIgaGF2ZSBtb3JlIGFkZHJlc3Nl cyB0byB0cnkuIFRoZXkgc2hvdWxkIG9ubHkKKwkJICogdHJ5IGEgc2luZ2xlIG9uZS4KKwkJICov CisJCWlmIChjb25uLT5jYW5jZWxSZXF1ZXN0KQorCQl7CisJCQlnb3RvIGVycm9yX3JldHVybjsK KwkJfQogCQlpZiAoY29ubi0+YWRkcl9jdXIgJiYgY29ubi0+YWRkcl9jdXItPmFpX25leHQpCiAJ CXsKIAkJCWNvbm4tPmFkZHJfY3VyID0gY29ubi0+YWRkcl9jdXItPmFpX25leHQ7CkBAIC0yMzQ0 LDYgKzI1MTEsMTUgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBo ZXJlIHVudGlsIHRoZXJlIGlzCiAJCWludAkJCXJldDsKIAkJY2hhcgkJcG9ydHN0cltNQVhQR1BB VEhdOwogCisJCS8qCisJCSAqIENhbmNlbCByZXF1ZXN0cyBuZXZlciBoYXZlIG1vcmUgaG9zdHMg dG8gdHJ5LiBUaGV5IHNob3VsZCBvbmx5IHRyeQorCQkgKiBhIHNpbmdsZSBvbmUuCisJCSAqLwor CQlpZiAoY29ubi0+Y2FuY2VsUmVxdWVzdCkKKwkJeworCQkJZ290byBlcnJvcl9yZXR1cm47CisJ CX0KKwogCQlpZiAoY29ubi0+d2hpY2hob3N0ICsgMSA8IGNvbm4tPm5jb25uaG9zdCkKIAkJCWNv bm4tPndoaWNoaG9zdCsrOwogCQllbHNlCkBAIC0yNTI5LDE5ICsyNzA1LDI3IEBAIGtlZXBfZ29p bmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJ CQljaGFyCQlob3N0X2FkZHJbTklfTUFYSE9TVF07CiAKIAkJCQkJLyoKLQkJCQkJICogQWR2YW5j ZSB0byBuZXh0IHBvc3NpYmxlIGhvc3QsIGlmIHdlJ3ZlIHRyaWVkIGFsbCBvZgotCQkJCQkgKiB0 aGUgYWRkcmVzc2VzIGZvciB0aGUgY3VycmVudCBob3N0LgorCQkJCQkgKiBDYW5jZWwgcmVxdWVz dHMgZG9uJ3QgdXNlIGFkZHJfY3VyIGF0IGFsbC4gVGhleSBoYXZlCisJCQkJCSAqIHRoZWlyIHJh ZGRyIGZpZWxkIGFscmVhZHkgZmlsbGVkIGluIGR1cmluZworCQkJCQkgKiBpbml0aWFsaXphdGlv biBpbiBQUWNhbmNlbENvbm5lY3RTdGFydC4KIAkJCQkJICovCi0JCQkJCWlmIChhZGRyX2N1ciA9 PSBOVUxMKQorCQkJCQlpZiAoIWNvbm4tPmNhbmNlbFJlcXVlc3QpCiAJCQkJCXsKLQkJCQkJCWNv bm4tPnRyeV9uZXh0X2hvc3QgPSB0cnVlOwotCQkJCQkJZ290byBrZWVwX2dvaW5nOwotCQkJCQl9 CisJCQkJCQkvKgorCQkJCQkJICogQWR2YW5jZSB0byBuZXh0IHBvc3NpYmxlIGhvc3QsIGlmIHdl J3ZlIHRyaWVkIGFsbAorCQkJCQkJICogb2YgdGhlIGFkZHJlc3NlcyBmb3IgdGhlIGN1cnJlbnQg aG9zdC4KKwkJCQkJCSAqLworCQkJCQkJaWYgKGFkZHJfY3VyID09IE5VTEwpCisJCQkJCQl7CisJ CQkJCQkJY29ubi0+dHJ5X25leHRfaG9zdCA9IHRydWU7CisJCQkJCQkJZ290byBrZWVwX2dvaW5n OworCQkJCQkJfQogCi0JCQkJCS8qIFJlbWVtYmVyIGN1cnJlbnQgYWRkcmVzcyBmb3IgcG9zc2li bGUgdXNlIGxhdGVyICovCi0JCQkJCW1lbWNweSgmY29ubi0+cmFkZHIuYWRkciwgYWRkcl9jdXIt PmFpX2FkZHIsCi0JCQkJCQkgICBhZGRyX2N1ci0+YWlfYWRkcmxlbik7Ci0JCQkJCWNvbm4tPnJh ZGRyLnNhbGVuID0gYWRkcl9jdXItPmFpX2FkZHJsZW47CisJCQkJCQkvKiBSZW1lbWJlciBjdXJy ZW50IGFkZHJlc3MgZm9yIHBvc3NpYmxlIHVzZSBsYXRlciAqLworCQkJCQkJbWVtY3B5KCZjb25u LT5yYWRkci5hZGRyLCBhZGRyX2N1ci0+YWlfYWRkciwKKwkJCQkJCQkgICBhZGRyX2N1ci0+YWlf YWRkcmxlbik7CisJCQkJCQljb25uLT5yYWRkci5zYWxlbiA9IGFkZHJfY3VyLT5haV9hZGRybGVu OworCQkJCQl9CiAKIAkJCQkJLyoKIAkJCQkJICogU2V0IGNvbm5pcCwgdG9vLiAgTm90ZSB3ZSBw dXJwb3NlbHkgaWdub3JlIHN0cmR1cApAQCAtMjU1Nyw3ICsyNzQxLDcgQEAga2VlcF9nb2luZzoJ CQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCQlj b25uLT5jb25uaXAgPSBzdHJkdXAoaG9zdF9hZGRyKTsKIAogCQkJCQkvKiBUcnkgdG8gY3JlYXRl IHRoZSBzb2NrZXQgKi8KLQkJCQkJY29ubi0+c29jayA9IHNvY2tldChhZGRyX2N1ci0+YWlfZmFt aWx5LCBTT0NLX1NUUkVBTSwgMCk7CisJCQkJCWNvbm4tPnNvY2sgPSBzb2NrZXQoY29ubi0+cmFk ZHIuYWRkci5zc19mYW1pbHksIFNPQ0tfU1RSRUFNLCAwKTsKIAkJCQkJaWYgKGNvbm4tPnNvY2sg PT0gUEdJTlZBTElEX1NPQ0tFVCkKIAkJCQkJewogCQkJCQkJaW50CQkJZXJyb3JubyA9IFNPQ0tf RVJSTk87CkBAIC0yNTY3LDEyICsyNzUxLDE4IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2ls bCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQkJICogYWRkcmVzc2VzIHRv IHRyeTsgdGhpcyByZWR1Y2VzIHVzZWxlc3MgY2hhdHRlciBpbgogCQkJCQkJICogY2FzZXMgd2hl cmUgdGhlIGFkZHJlc3MgbGlzdCBpbmNsdWRlcyBib3RoIElQdjQgYW5kCiAJCQkJCQkgKiBJUHY2 IGJ1dCBrZXJuZWwgb25seSBhY2NlcHRzIG9uZSBmYW1pbHkuCisJCQkJCQkgKgorCQkJCQkJICog Q2FuY2VsIHJlcXVlc3RzIG5ldmVyIGhhdmUgbW9yZSBhZGRyZXNzZXMgdG8gdHJ5LgorCQkJCQkJ ICogVGhleSBzaG91bGQgb25seSB0cnkgYSBzaW5nbGUgb25lLgogCQkJCQkJICovCi0JCQkJCQlp ZiAoYWRkcl9jdXItPmFpX25leHQgIT0gTlVMTCB8fAotCQkJCQkJCWNvbm4tPndoaWNoaG9zdCAr IDEgPCBjb25uLT5uY29ubmhvc3QpCisJCQkJCQlpZiAoIWNvbm4tPmNhbmNlbFJlcXVlc3QpCiAJ CQkJCQl7Ci0JCQkJCQkJY29ubi0+dHJ5X25leHRfYWRkciA9IHRydWU7Ci0JCQkJCQkJZ290byBr ZWVwX2dvaW5nOworCQkJCQkJCWlmIChhZGRyX2N1ci0+YWlfbmV4dCAhPSBOVUxMIHx8CisJCQkJ CQkJCWNvbm4tPndoaWNoaG9zdCArIDEgPCBjb25uLT5uY29ubmhvc3QpCisJCQkJCQkJeworCQkJ CQkJCQljb25uLT50cnlfbmV4dF9hZGRyID0gdHJ1ZTsKKwkJCQkJCQkJZ290byBrZWVwX2dvaW5n OworCQkJCQkJCX0KIAkJCQkJCX0KIAkJCQkJCWVtaXRIb3N0SWRlbnRpdHlJbmZvKGNvbm4sIGhv c3RfYWRkcik7CiAJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLApA QCAtMjU5NSw3ICsyNzg1LDcgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFj ayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCSAqIFRDUCBzb2NrZXRzLCBub25ibG9jayBt b2RlLCBjbG9zZS1vbi1leGVjLiAgVHJ5IHRoZQogCQkJCQkgKiBuZXh0IGFkZHJlc3MgaWYgYW55 IG9mIHRoaXMgZmFpbHMuCiAJCQkJCSAqLwotCQkJCQlpZiAoYWRkcl9jdXItPmFpX2ZhbWlseSAh PSBBRl9VTklYKQorCQkJCQlpZiAoY29ubi0+cmFkZHIuYWRkci5zc19mYW1pbHkgIT0gQUZfVU5J WCkKIAkJCQkJewogCQkJCQkJaWYgKCFjb25uZWN0Tm9EZWxheShjb25uKSkKIAkJCQkJCXsKQEAg LTI2MjQsNyArMjgxNCw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sg dG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQl9CiAjZW5kaWYJCQkJCQkJLyogRl9TRVRGRCAq LwogCi0JCQkJCWlmIChhZGRyX2N1ci0+YWlfZmFtaWx5ICE9IEFGX1VOSVgpCisJCQkJCWlmIChj b25uLT5yYWRkci5hZGRyLnNzX2ZhbWlseSAhPSBBRl9VTklYKQogCQkJCQl7CiAjaWZuZGVmIFdJ TjMyCiAJCQkJCQlpbnQJCQlvbiA9IDE7CkBAIC0yNzE4LDggKzI5MDgsOSBAQCBrZWVwX2dvaW5n OgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJ ICogU3RhcnQvbWFrZSBjb25uZWN0aW9uLiAgVGhpcyBzaG91bGQgbm90IGJsb2NrLCBzaW5jZSB3 ZQogCQkJCQkgKiBhcmUgaW4gbm9uYmxvY2sgbW9kZS4gIElmIGl0IGRvZXMsIHdlbGwsIHRvbyBi YWQuCiAJCQkJCSAqLwotCQkJCQlpZiAoY29ubmVjdChjb25uLT5zb2NrLCBhZGRyX2N1ci0+YWlf YWRkciwKLQkJCQkJCQkJYWRkcl9jdXItPmFpX2FkZHJsZW4pIDwgMCkKKwkJCQkJaWYgKGNvbm5l Y3QoY29ubi0+c29jaywKKwkJCQkJCQkJKHN0cnVjdCBzb2NrYWRkciAqKSAmY29ubi0+cmFkZHIu YWRkciwKKwkJCQkJCQkJY29ubi0+cmFkZHIuc2FsZW4pIDwgMCkKIAkJCQkJewogCQkJCQkJaWYg KFNPQ0tfRVJSTk8gPT0gRUlOUFJPR1JFU1MgfHwKICNpZmRlZiBXSU4zMgpAQCAtMjc1OCw2ICsy OTQ5LDE2IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1 bnRpbCB0aGVyZSBpcwogCQkJCX0KIAkJCX0KIAorCQljYXNlIENPTk5FQ1RJT05fU1RBUlRJTkc6 CisJCQl7CisJCQkJaWYgKCFjb25uZWN0REJTdGFydChjb25uKSkKKwkJCQl7CisJCQkJCWdvdG8g ZXJyb3JfcmV0dXJuOworCQkJCX0KKwkJCQljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX1NUQVJU RUQ7CisJCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfV1JJVElORzsKKwkJCX0KKwogCQljYXNlIENP Tk5FQ1RJT05fU1RBUlRFRDoKIAkJCXsKIAkJCQlzb2NrbGVuX3QJb3B0bGVuID0gc2l6ZW9mKG9w dHZhbCk7CkBAIC0yOTY2LDYgKzMxNjcsMjUgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxs IGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJfQogI2VuZGlmCQkJCQkJCS8q IFVTRV9TU0wgKi8KIAorCQkJCWlmIChjb25uLT5jYW5jZWxSZXF1ZXN0KQorCQkJCXsKKwkJCQkJ Q2FuY2VsUmVxdWVzdFBhY2tldCBjYW5jZWxwYWNrZXQ7CisKKwkJCQkJcGFja2V0bGVuID0gc2l6 ZW9mKGNhbmNlbHBhY2tldCk7CisJCQkJCWNhbmNlbHBhY2tldC5jYW5jZWxSZXF1ZXN0Q29kZSA9 IChNc2dUeXBlKSBwZ19odG9uMzIoQ0FOQ0VMX1JFUVVFU1RfQ09ERSk7CisJCQkJCWNhbmNlbHBh Y2tldC5iYWNrZW5kUElEID0gcGdfaHRvbjMyKGNvbm4tPmJlX3BpZCk7CisJCQkJCWNhbmNlbHBh Y2tldC5jYW5jZWxBdXRoQ29kZSA9IHBnX2h0b24zMihjb25uLT5iZV9rZXkpOworCQkJCQlpZiAo cHFQYWNrZXRTZW5kKGNvbm4sIDAsICZjYW5jZWxwYWNrZXQsIHBhY2tldGxlbikgIT0gU1RBVFVT X09LKQorCQkJCQl7CisJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAorCQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNlbmQgY2FuY2VsIHBhY2tl dDogJXNcbiIpLAorCQkJCQkJCQkJCSAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwg c2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCQkJCX0KKwkJCQkJ Y29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9BV0FJVElOR19SRVNQT05TRTsKKwkJCQkJcmV0dXJu IFBHUkVTX1BPTExJTkdfUkVBRElORzsKKwkJCQl9CisKIAkJCQkvKgogCQkJCSAqIEJ1aWxkIHRo ZSBzdGFydHVwIHBhY2tldC4KIAkJCQkgKi8KQEAgLTQxOTQsNiArNDQxNCwxMSBAQCByZWxlYXNl X2Nvbm5fYWRkcmluZm8oUEdjb25uICpjb25uKQogc3RhdGljIHZvaWQKIHNlbmRUZXJtaW5hdGVD b25uKFBHY29ubiAqY29ubikKIHsKKwlpZiAoY29ubi0+Y2FuY2VsUmVxdWVzdCkKKwl7CisJCXJl dHVybjsKKwl9CisKIAkvKgogCSAqIE5vdGUgdGhhdCB0aGUgcHJvdG9jb2wgZG9lc24ndCBhbGxv dyB1cyB0byBzZW5kIFRlcm1pbmF0ZSBtZXNzYWdlcwogCSAqIGR1cmluZyB0aGUgc3RhcnR1cCBw aGFzZS4KQEAgLTQzMTEsNiArNDUzNiwxMiBAQCBQUXJlc2V0U3RhcnQoUEdjb25uICpjb25uKQog CXsKIAkJY2xvc2VQR2Nvbm4oY29ubik7CiAKKwkJaWYgKGNvbm4tPmNhbmNlbFJlcXVlc3QpCisJ CXsKKwkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fU1RBUlRJTkc7CisJCQlyZXR1cm4gMTsK KwkJfQorCiAJCXJldHVybiBjb25uZWN0REJTdGFydChjb25uKTsKIAl9CiAKQEAgLTQ2NjMsNiAr NDg5NCwyMiBAQCBjYW5jZWxfZXJyUmV0dXJuOgogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAq IFBRY29ubmVjdENvbXBsZXRlOiB0YWtlcyBhIG5vbiBibG9ja2luZyBjYW5jZWwgY29ubmVjdGlv biBhbmQgY29tcGxldGVzIGl0CisgKiBpbiBhIGJsb2NraW5nIG1hbm5lci4KKyAqCisgKiBSZXR1 cm5zIDEgaWYgYWJsZSB0byBjb25uZWN0IHN1Y2Nlc3NmdWxseSBhbmQgMCBpZiBub3QuCisgKgor ICogVGhpcyBjYW4gdXNlZnVsIGlmIHlvdSBvbmx5IGNhcmUgYWJvdXQgdGhlIHRocmVhZCBzYWZl dHkgb2YKKyAqIFBRcmVxdWVzdENhbmNlbFN0YXJ0IGFuZCBub3QgYWJvdXQgaXRzIG5vbiBibG9j a2luZyBmdW5jdGlvbmFsaXR5LgorICovCitpbnQKK1BRY29ubmVjdENvbXBsZXRlKFBHY29ubiAq Y2FuY2VsQ29ubikKK3sKKwljb25uZWN0REJDb21wbGV0ZShjYW5jZWxDb25uKTsKKwlyZXR1cm4g Y2FuY2VsQ29ubi0+c3RhdHVzICE9IENPTk5FQ1RJT05fQkFEOworfQorCiAKIC8qCiAgKiBQUXJl cXVlc3RDYW5jZWw6IG9sZCwgbm90IHRocmVhZC1zYWZlIGZ1bmN0aW9uIGZvciByZXF1ZXN0aW5n IHF1ZXJ5IGNhbmNlbApAQCAtNDY3OSw0NSArNDkyNiwzMSBAQCBjYW5jZWxfZXJyUmV0dXJuOgog aW50CiBQUXJlcXVlc3RDYW5jZWwoUEdjb25uICpjb25uKQogewotCWludAkJCXI7Ci0JUEdjYW5j ZWwgICAqY2FuY2VsOwotCi0JLyogQ2hlY2sgd2UgaGF2ZSBhbiBvcGVuIGNvbm5lY3Rpb24gKi8K LQlpZiAoIWNvbm4pCi0JCXJldHVybiBmYWxzZTsKKwlQR2Nvbm4JICAgKmNhbmNlbENvbm4gPSBO VUxMOwogCi0JaWYgKGNvbm4tPnNvY2sgPT0gUEdJTlZBTElEX1NPQ0tFVCkKKwljYW5jZWxDb25u ID0gUFFyZXF1ZXN0Q2FuY2VsU3RhcnQoY29ubik7CisJaWYgKCFjYW5jZWxDb25uKQogCXsKLQkJ c3RybGNweShjb25uLT5lcnJvck1lc3NhZ2UuZGF0YSwKLQkJCQkiUFFyZXF1ZXN0Q2FuY2VsKCkg LS0gY29ubmVjdGlvbiBpcyBub3Qgb3BlblxuIiwKLQkJCQljb25uLT5lcnJvck1lc3NhZ2UubWF4 bGVuKTsKLQkJY29ubi0+ZXJyb3JNZXNzYWdlLmxlbiA9IHN0cmxlbihjb25uLT5lcnJvck1lc3Nh Z2UuZGF0YSk7Ci0JCWNvbm4tPmVycm9yUmVwb3J0ZWQgPSAwOwotCisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlc biIpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWNhbmNlbCA9IFBRZ2V0Q2FuY2VsKGNvbm4p OwotCWlmIChjYW5jZWwpCi0JewotCQlyID0gUFFjYW5jZWwoY2FuY2VsLCBjb25uLT5lcnJvck1l c3NhZ2UuZGF0YSwKLQkJCQkJIGNvbm4tPmVycm9yTWVzc2FnZS5tYXhsZW4pOwotCQlQUWZyZWVD YW5jZWwoY2FuY2VsKTsKLQl9Ci0JZWxzZQorCWlmIChjYW5jZWxDb25uLT5zdGF0dXMgPT0gQ09O TkVDVElPTl9CQUQpCiAJewotCQlzdHJsY3B5KGNvbm4tPmVycm9yTWVzc2FnZS5kYXRhLCAib3V0 IG9mIG1lbW9yeSIsCi0JCQkJY29ubi0+ZXJyb3JNZXNzYWdlLm1heGxlbik7Ci0JCXIgPSBmYWxz ZTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgUFFlcnJvck1l c3NhZ2UoY2FuY2VsQ29ubikpOworCQlmcmVlUEdjb25uKGNhbmNlbENvbm4pOworCQlyZXR1cm4g ZmFsc2U7CiAJfQogCi0JaWYgKCFyKQorCWlmICghUFFjb25uZWN0Q29tcGxldGUoY2FuY2VsQ29u bikpCiAJewotCQljb25uLT5lcnJvck1lc3NhZ2UubGVuID0gc3RybGVuKGNvbm4tPmVycm9yTWVz c2FnZS5kYXRhKTsKLQkJY29ubi0+ZXJyb3JSZXBvcnRlZCA9IDA7CisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsIFBRZXJyb3JNZXNzYWdlKGNhbmNlbENvbm4pKTsK KwkJZnJlZVBHY29ubihjYW5jZWxDb25uKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCXJldHVy biByOworCWZyZWVQR2Nvbm4oY2FuY2VsQ29ubik7CisJcmV0dXJuIHRydWU7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtbWlzYy5jCmluZGV4IGQ3NmJiMzk1N2EuLmE5NDRjYjJjMTIgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1taXNjLmMKQEAgLTU1OCw4ICs1NTgsMTEgQEAgcHFQdXRNc2dFbmQoUEdjb25uICpjb25u KQogICogUG9zc2libGUgcmV0dXJuIHZhbHVlczoKICAqCSAxOiBzdWNjZXNzZnVsbHkgbG9hZGVk IGF0IGxlYXN0IG9uZSBtb3JlIGJ5dGUKICAqCSAwOiBubyBkYXRhIGlzIHByZXNlbnRseSBhdmFp bGFibGUsIGJ1dCBubyBlcnJvciBkZXRlY3RlZAotICoJLTE6IGVycm9yIGRldGVjdGVkIChpbmNs dWRpbmcgRU9GID0gY29ubmVjdGlvbiBjbG9zdXJlKTsKKyAqCS0xOiBlcnJvciBkZXRlY3RlZCAo ZXhjbHVkaW5nIEVPRiA9IGNvbm5lY3Rpb24gY2xvc3VyZSk7CiAgKgkJY29ubi0+ZXJyb3JNZXNz YWdlIHNldAorICoJLTI6IEVPRiBkZXRlY3RlZCwgY29ubmVjdGlvbiBpcyBjbG9zZWQKKyAqCQlj b25uLT5lcnJvck1lc3NhZ2Ugc2V0CisgKgogICogTk9URTogY2FsbGVycyBtdXN0IG5vdCBhc3N1 bWUgdGhhdCBwb2ludGVycyBvciBpbmRleGVzIGludG8gY29ubi0+aW5CdWZmZXIKICAqIHJlbWFp biB2YWxpZCBhY3Jvc3MgdGhpcyBjYWxsIQogICogLS0tLS0tLS0tLQpAQCAtNjQyLDcgKzY0NSw3 IEBAIHJldHJ5MzoKIAogCQkJZGVmYXVsdDoKIAkJCQkvKiBwcXNlY3VyZV9yZWFkIHNldCB0aGUg ZXJyb3IgbWVzc2FnZSBmb3IgdXMgKi8KLQkJCQlyZXR1cm4gLTE7CisJCQkJcmV0dXJuIG5yZWFk OwogCQl9CiAJfQogCWlmIChucmVhZCA+IDApCkBAIC03MzcsNyArNzQwLDcgQEAgcmV0cnk0Ogog CiAJCQlkZWZhdWx0OgogCQkJCS8qIHBxc2VjdXJlX3JlYWQgc2V0IHRoZSBlcnJvciBtZXNzYWdl IGZvciB1cyAqLwotCQkJCXJldHVybiAtMTsKKwkJCQlyZXR1cm4gbnJlYWQ7CiAJCX0KIAl9CiAJ aWYgKG5yZWFkID4gMCkKQEAgLTc1NSwxMyArNzU4LDE3IEBAIGRlZmluaXRlbHlFT0Y6CiAJCQkJ CQkgbGlicHFfZ2V0dGV4dCgic2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVk bHlcbiIKIAkJCQkJCQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhlIHNlcnZlciB0ZXJt aW5hdGVkIGFibm9ybWFsbHlcbiIKIAkJCQkJCQkJCSAgICJcdGJlZm9yZSBvciB3aGlsZSBwcm9j ZXNzaW5nIHRoZSByZXF1ZXN0LlxuIikpOworCS8qIERvICpub3QqIGRyb3AgYW55IGFscmVhZHkt cmVhZCBkYXRhOyBjYWxsZXIgc3RpbGwgd2FudHMgaXQgKi8KKwlwcURyb3BDb25uZWN0aW9uKGNv bm4sIGZhbHNlKTsKKwljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX0JBRDsJLyogTm8gbW9yZSBj b25uZWN0aW9uIHRvIGJhY2tlbmQgKi8KKwlyZXR1cm4gLTI7CiAKIAkvKiBDb21lIGhlcmUgaWYg bG93ZXItbGV2ZWwgY29kZSBhbHJlYWR5IHNldCBhIHN1aXRhYmxlIGVycm9yTWVzc2FnZSAqLwog ZGVmaW5pdGVseUZhaWxlZDoKIAkvKiBEbyAqbm90KiBkcm9wIGFueSBhbHJlYWR5LXJlYWQgZGF0 YTsgY2FsbGVyIHN0aWxsIHdhbnRzIGl0ICovCiAJcHFEcm9wQ29ubmVjdGlvbihjb25uLCBmYWxz ZSk7CiAJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7CS8qIE5vIG1vcmUgY29ubmVjdGlv biB0byBiYWNrZW5kICovCi0JcmV0dXJuIC0xOworCXJldHVybiBucmVhZCA8IDAgPyBucmVhZCA6 IC0xOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJl LW9wZW5zc2wuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMKaW5k ZXggODExN2NiZDQwZi4uYzU1M2E3NDg5OCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1 cmUtb3BlbnNzbC5jCkBAIC0yNTUsNyArMjU1LDcgQEAgcmxvb3A6CiAJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAogCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiU1NM IGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIHVuZXhwZWN0ZWRseVxuIikpOwogCQkJcmVzdWx0 X2Vycm5vID0gRUNPTk5SRVNFVDsKLQkJCW4gPSAtMTsKKwkJCW4gPSAtMjsKIAkJCWJyZWFrOwog CQlkZWZhdWx0OgogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5jIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtc2VjdXJlLmMKaW5kZXggYTFkYzdiNzk2ZC4uOTc3MTgwNWRkMyAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtc2VjdXJlLmMKQEAgLTIwMSw2ICsyMDEsMTIgQEAgcHFzZWN1cmVfY2xvc2Uo UEdjb25uICpjb25uKQogICogT24gZmFpbHVyZSwgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJs ZSBmb3IgYXBwZW5kaW5nIGEgc3VpdGFibGUgbWVzc2FnZQogICogdG8gY29ubi0+ZXJyb3JNZXNz YWdlLiAgVGhlIGNhbGxlciBtdXN0IHN0aWxsIGluc3BlY3QgZXJybm8sIGJ1dCBvbmx5CiAgKiB0 byBkZXRlcm1pbmUgd2hldGhlciB0byBjb250aW51ZS9yZXRyeSBhZnRlciBlcnJvci4KKyAqCisg KiBSZXR1cm5zIC0xIGluIGNhc2Ugb2YgZmFpbHVyZXMsIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiB3 aGVyZSBhIGZhaWx1cmUgbWVhbnMKKyAqIHRoYXQgdGhlcmUgd2FzIGEgY2xlYW4gY29ubmVjdGlv biBjbG9zdXJlLCBpbiB0aG9zZSBjYXNlcyAtMiBpcyByZXR1cm4uCisgKiBDdXJyZW50bHkgb25s eSB0aGUgVExTIGltcGxlbWVudGF0aW9uIG9mIHBxc2VjdXJlX3JlYWQgZXZlciByZXR1cm5zIC0y LiBGb3IKKyAqIHRoZSBvdGhlciBpbXBsZW1lbnRhdGlvbnMgYSBjbGVhbiBjb25uZWN0aW9uIGNs b3N1cmUgaXMgZGV0ZWN0ZWQgaW4KKyAqIHBxUmVhZERhdGEgaW5zdGVhZC4KICAqLwogc3NpemVf dAogcHFzZWN1cmVfcmVhZChQR2Nvbm4gKmNvbm4sIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMvaW50ZXJmYWNl cy9saWJwcS9saWJwcS1mZS5oCmluZGV4IDc5ODY0NDVmMWEuLjI0Njk1YTYwMjYgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMv bGlicHEvbGlicHEtZmUuaApAQCAtNTksMTIgKzU5LDE1IEBAIHR5cGVkZWYgZW51bQogewogCUNP Tk5FQ1RJT05fT0ssCiAJQ09OTkVDVElPTl9CQUQsCisJQ09OTkVDVElPTl9DQU5DRUxfRklOSVNI RUQsCiAJLyogTm9uLWJsb2NraW5nIG1vZGUgb25seSBiZWxvdyBoZXJlICovCiAKIAkvKgogCSAq IFRoZSBleGlzdGVuY2Ugb2YgdGhlc2Ugc2hvdWxkIG5ldmVyIGJlIHJlbGllZCB1cG9uIC0gdGhl eSBzaG91bGQgb25seQogCSAqIGJlIHVzZWQgZm9yIHVzZXIgZmVlZGJhY2sgb3Igc2ltaWxhciBw dXJwb3Nlcy4KIAkgKi8KKwlDT05ORUNUSU9OX1NUQVJUSU5HLAkJLyogV2FpdGluZyBmb3IgY29u bmVjdGlvbiBhdHRlbXB0IHRvIGJlCisJCQkJCQkJCSAqIHN0YXJ0ZWQuICAqLwogCUNPTk5FQ1RJ T05fU1RBUlRFRCwJCQkvKiBXYWl0aW5nIGZvciBjb25uZWN0aW9uIHRvIGJlIG1hZGUuICAqLwog CUNPTk5FQ1RJT05fTUFERSwJCQkvKiBDb25uZWN0aW9uIE9LOyB3YWl0aW5nIHRvIHNlbmQuICAg ICAqLwogCUNPTk5FQ1RJT05fQVdBSVRJTkdfUkVTUE9OU0UsCS8qIFdhaXRpbmcgZm9yIGEgcmVz cG9uc2UgZnJvbSB0aGUKQEAgLTI4Miw2ICsyODUsNyBAQCBleHRlcm4gUEdjb25uICpQUWNvbm5l Y3RTdGFydChjb25zdCBjaGFyICpjb25uaW5mbyk7CiBleHRlcm4gUEdjb25uICpQUWNvbm5lY3RT dGFydFBhcmFtcyhjb25zdCBjaGFyICpjb25zdCAqa2V5d29yZHMsCiAJCQkJCQkJCQljb25zdCBj aGFyICpjb25zdCAqdmFsdWVzLCBpbnQgZXhwYW5kX2RibmFtZSk7CiBleHRlcm4gUG9zdGdyZXNQ b2xsaW5nU3RhdHVzVHlwZSBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubik7CitleHRlcm4gaW50 CVBRY29ubmVjdENvbXBsZXRlKFBHY29ubiAqY29ubik7CiAKIC8qIFN5bmNocm9ub3VzIChibG9j a2luZykgKi8KIGV4dGVybiBQR2Nvbm4gKlBRY29ubmVjdGRiKGNvbnN0IGNoYXIgKmNvbm5pbmZv KTsKQEAgLTMzMCw5ICszMzQsMTIgQEAgZXh0ZXJuIHZvaWQgUFFmcmVlQ2FuY2VsKFBHY2FuY2Vs ICpjYW5jZWwpOwogLyogaXNzdWUgYSBjYW5jZWwgcmVxdWVzdCAqLwogZXh0ZXJuIGludAlQUWNh bmNlbChQR2NhbmNlbCAqY2FuY2VsLCBjaGFyICplcnJidWYsIGludCBlcnJidWZzaXplKTsKIAot LyogYmFja3dhcmRzIGNvbXBhdGlibGUgdmVyc2lvbiBvZiBQUWNhbmNlbDsgbm90IHRocmVhZC1z YWZlICovCisvKiBtb3JlIHNlY3VyZSB2ZXJzaW9uIG9mIFBRY2FuY2VsOyBub3QgdGhyZWFkLXNh ZmUgKi8KIGV4dGVybiBpbnQJUFFyZXF1ZXN0Q2FuY2VsKFBHY29ubiAqY29ubik7CiAKKy8qIG5v bi1ibG9ja2luZyBhbmQgdGhyZWFkLXNhZmUgdmVyc2lvbiBvZiBQUXJlcXVlc3RDYW5jZWwgKi8K K2V4dGVybiBQR2Nvbm4gKlBRcmVxdWVzdENhbmNlbFN0YXJ0KFBHY29ubiAqY29ubik7CisKIC8q IEFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgUEdjb25uIG9iamVjdHMgKi8KIGV4dGVybiBjaGFyICpQ UWRiKGNvbnN0IFBHY29ubiAqY29ubik7CiBleHRlcm4gY2hhciAqUFF1c2VyKGNvbnN0IFBHY29u biAqY29ubik7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCmluZGV4IDNkYjZhMTdkYjQuLmI5Y2Ux ZDU4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCisrKyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCkBAIC0zOTQsNiArMzk0LDEwIEBAIHN0 cnVjdCBwZ19jb25uCiAJY2hhcgkgICAqc3NsX21heF9wcm90b2NvbF92ZXJzaW9uOwkvKiBtYXhp bXVtIFRMUyBwcm90b2NvbCB2ZXJzaW9uICovCiAJY2hhcgkgICAqdGFyZ2V0X3Nlc3Npb25fYXR0 cnM7CS8qIGRlc2lyZWQgc2Vzc2lvbiBwcm9wZXJ0aWVzICovCiAKKwlib29sCQljYW5jZWxSZXF1 ZXN0OwkvKiB0cnVlIGlmIHRoaXMgY29ubmVjdGlvbiBpcyB1c2VkIHRvIHNlbmQgYQorCQkJCQkJ CQkgKiBjYW5jZWwgcmVxdWVzdCwgaW5zdGVhZCBvZiBiZWluZyBhIG5vcm1hbAorCQkJCQkJCQkg KiBjb25uZWN0aW9uIHRoYXQncyB1c2VkIGZvciBxdWVyaWVzICovCisKIAkvKiBPcHRpb25hbCBm aWxlIHRvIHdyaXRlIHRyYWNlIGluZm8gdG8gKi8KIAlGSUxFCSAgICpQZmRlYnVnOwogCWludAkJ CXRyYWNlRmxhZ3M7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVz dGVyLmMgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKaW5kZXggMTIxNzlm MjUxNC4uYjA3MzIzNTE5NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bnRlc3Rlci5jCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYwpAQCAt OTQ4LDI2ICs5NDgsMTggQEAgdHJ5X2NvbXBsZXRlX3N0ZXAoVGVzdFNwZWMgKnRlc3RzcGVjLCBQ ZXJtdXRhdGlvblN0ZXAgKnBzdGVwLCBpbnQgZmxhZ3MpCiAJCQkgKi8KIAkJCWlmICh0ZCA+IG1h eF9zdGVwX3dhaXQgJiYgIWNhbmNlbGVkKQogCQkJewotCQkJCVBHY2FuY2VsICAgKmNhbmNlbCA9 IFBRZ2V0Q2FuY2VsKGNvbm4pOwotCi0JCQkJaWYgKGNhbmNlbCAhPSBOVUxMKQorCQkJCWlmIChQ UXJlcXVlc3RDYW5jZWwoY29ubikpCiAJCQkJewotCQkJCQljaGFyCQlidWZbMjU2XTsKLQotCQkJ CQlpZiAoUFFjYW5jZWwoY2FuY2VsLCBidWYsIHNpemVvZihidWYpKSkKLQkJCQkJewotCQkJCQkJ LyoKLQkJCQkJCSAqIHByaW50IHRvIHN0ZG91dCBub3Qgc3RkZXJyLCBhcyB0aGlzIHNob3VsZCBh cHBlYXIKLQkJCQkJCSAqIGluIHRoZSB0ZXN0IGNhc2UncyByZXN1bHRzCi0JCQkJCQkgKi8KLQkJ CQkJCXByaW50ZigiaXNvbGF0aW9udGVzdGVyOiBjYW5jZWxpbmcgc3RlcCAlcyBhZnRlciAlZCBz ZWNvbmRzXG4iLAotCQkJCQkJCSAgIHN0ZXAtPm5hbWUsIChpbnQpICh0ZCAvIFVTRUNTX1BFUl9T RUMpKTsKLQkJCQkJCWNhbmNlbGVkID0gdHJ1ZTsKLQkJCQkJfQotCQkJCQllbHNlCi0JCQkJCQlm cHJpbnRmKHN0ZGVyciwgIlBRY2FuY2VsIGZhaWxlZDogJXNcbiIsIGJ1Zik7Ci0JCQkJCVBRZnJl ZUNhbmNlbChjYW5jZWwpOworCQkJCQkvKgorCQkJCQkgKiBwcmludCB0byBzdGRvdXQgbm90IHN0 ZGVyciwgYXMgdGhpcyBzaG91bGQgYXBwZWFyIGluCisJCQkJCSAqIHRoZSB0ZXN0IGNhc2UncyBy ZXN1bHRzCisJCQkJCSAqLworCQkJCQlwcmludGYoImlzb2xhdGlvbnRlc3RlcjogY2FuY2VsaW5n IHN0ZXAgJXMgYWZ0ZXIgJWQgc2Vjb25kc1xuIiwKKwkJCQkJCSAgIHN0ZXAtPm5hbWUsIChpbnQp ICh0ZCAvIFVTRUNTX1BFUl9TRUMpKTsKKwkJCQkJY2FuY2VsZWQgPSB0cnVlOwogCQkJCX0KKwkJ CQllbHNlCisJCQkJCWZwcmludGYoc3RkZXJyLCAiUFFjYW5jZWwgZmFpbGVkOiAlc1xuIiwgUFFl cnJvck1lc3NhZ2UoY29ubikpOwogCQkJfQogCiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGluZS5jIGIvc3JjL3Rlc3QvbW9kdWxl cy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGluZS5jCmluZGV4IDBmZjU2M2Y1OWEuLjUyNTAz OTA3YmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFf cGlwZWxpbmUuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xpYnBxX3Bp cGVsaW5lLmMKQEAgLTg2LDYgKzg2LDI3NSBAQCBwZ19mYXRhbF9pbXBsKGludCBsaW5lLCBjb25z dCBjaGFyICpmbXQsLi4uKQogCWV4aXQoMSk7CiB9CiAKKy8qCisgKiBDaGVjayB0aGF0IHRoZSBx dWVyeSBvbiB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBnb3QgY2FuY2VsbGVkLgorICoKKyAqIFRoaXMg aXMgYSBmdW5jdGlvbiB3cmFwcGVkIGluIGEgbWFjcmNvIHRvIG1ha2UgdGhlIHJlcG9ydGVkIGxp bmUgbnVtYmVyCisgKiBpbiBhbiBlcnJvciBtYXRjaCB0aGUgbGluZSBudW1iZXIgb2YgdGhlIGlu dm9jYXRpb24uCisgKi8KKyNkZWZpbmUgY29uZmlybV9xdWVyeV9jYW5jZWxsZWQoY29ubikgY29u ZmlybV9xdWVyeV9jYW5jZWxsZWRfaW1wbChfX0xJTkVfXywgY29ubikKK3N0YXRpYyB2b2lkCitj b25maXJtX3F1ZXJ5X2NhbmNlbGxlZF9pbXBsKGludCBsaW5lLCBQR2Nvbm4gKmNvbm4pCit7CisJ UEdyZXN1bHQgICAqcmVzID0gTlVMTDsKKworCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOworCWlm IChyZXMgPT0gTlVMTCkKKwkJcGdfZmF0YWxfaW1wbChsaW5lLCAiUFFnZXRSZXN1bHQgcmV0dXJu ZWQgbnVsbDogJXMiLAorCQkJCQkgIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19GQVRBTF9FUlJPUikKKwkJcGdfZmF0YWxfaW1wbChsaW5l LCAicXVlcnkgZGlkIG5vdCBmYWlsIHdoZW4gaXQgd2FzIGV4cGVjdGVkIik7CisJaWYgKHN0cmNt cChQUXJlc3VsdEVycm9yRmllbGQocmVzLCBQR19ESUFHX1NRTFNUQVRFKSwgIjU3MDE0IikgIT0g MCkKKwkJcGdfZmF0YWxfaW1wbChsaW5lLCAicXVlcnkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQg ZXJyb3IgdGhhbiBjYW5jZWxsYXRpb246ICVzIiwKKwkJCQkJICBQUWVycm9yTWVzc2FnZShjb25u KSk7CisJUFFjbGVhcihyZXMpOworCXdoaWxlIChQUWlzQnVzeShjb25uKSkKKwl7CisJCVBRY29u c3VtZUlucHV0KGNvbm4pOworCX0KK30KKworI2RlZmluZSBzZW5kX2NhbmNlbGxhYmxlX3F1ZXJ5 KGNvbm4sIG1vbml0b3JDb25uKSBzZW5kX2NhbmNlbGxhYmxlX3F1ZXJ5X2ltcGwoX19MSU5FX18s IGNvbm4sIG1vbml0b3JDb25uKQorc3RhdGljIHZvaWQKK3NlbmRfY2FuY2VsbGFibGVfcXVlcnlf aW1wbChpbnQgbGluZSwgUEdjb25uICpjb25uLCBQR2Nvbm4gKm1vbml0b3JDb25uKQoreworCWlm IChQUXNlbmRRdWVyeShjb25uLCAiU0VMRUNUIHBnX3NsZWVwKDMwKSIpICE9IDEpCisJCXBnX2Zh dGFsX2ltcGwobGluZSwgImZhaWxlZCB0byBzZW5kIHF1ZXJ5OiAlcyIsIFBRZXJyb3JNZXNzYWdl KGNvbm4pKTsKKworCS8qCisJICogV2FpdCB1bnRpbCB0aGUgcXVlcnkgaXMgYWN0dWFsbHkgcnVu bmluZy4gT3RoZXJ3aXNlIHNlbmRpbmcgYQorCSAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0IG1pZ2h0 IG5vdCBjYW5jZWwgdGhlIHF1ZXJ5IGR1ZSB0byByYWNlIGNvbmRpdGlvbnMuCisJICovCisJd2hp bGUgKHRydWUpCisJeworCQljaGFyCSAgICp2YWx1ZSA9IE5VTEw7CisJCVBHcmVzdWx0ICAgKnJl cyA9IFBRZXhlYygKKwkJCQkJCQkJIG1vbml0b3JDb25uLAorCQkJCQkJCQkgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgIgorCQkJCQkJCQkgInF1ZXJ5ID0gJ1NF TEVDVCBwZ19zbGVlcCgzMCknICIKKwkJCQkJCQkJICJBTkQgc3RhdGUgPSAnYWN0aXZlJyIpOwor CisJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKKwkJeworCQkJ cGdfZmF0YWwoIkNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNz YWdlKG1vbml0b3JDb25uKSk7CisJCX0KKwkJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCisJCXsK KwkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIG51bWJlciBvZiByb3dzIHJlY2VpdmVkOiAlZCIsIFBR bnR1cGxlcyhyZXMpKTsKKwkJfQorCQlpZiAoUFFuZmllbGRzKHJlcykgIT0gMSkKKwkJeworCQkJ cGdfZmF0YWwoInVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbHVtbnMgcmVjZWl2ZWQ6ICVkIiwgUFFu ZmllbGRzKHJlcykpOworCQl9CisJCXZhbHVlID0gUFFnZXR2YWx1ZShyZXMsIDAsIDApOworCQlp ZiAoKnZhbHVlICE9ICcwJykKKwkJeworCQkJUFFjbGVhcihyZXMpOworCQkJYnJlYWs7CisJCX0K KwkJUFFjbGVhcihyZXMpOworCisJCS8qCisJCSAqIHdhaXQgMTBtcyBiZWZvcmUgcG9sbGluZyBh Z2FpbgorCQkgKi8KKwkJcGdfdXNsZWVwKDEwMDAwKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit0 ZXN0X2NhbmNlbChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmNvbm5pbmZvKQoreworCVBHY2Fu Y2VsICAgKmNhbmNlbCA9IE5VTEw7CisJUEdjb25uCSAgICpjYW5jZWxDb25uID0gTlVMTDsKKwlQ R2Nvbm4JICAgKm1vbml0b3JDb25uID0gTlVMTDsKKwljaGFyCQllcnJvcmJ1ZlsyNTZdOworCisJ ZnByaW50ZihzdGRlcnIsICJ0ZXN0IGNhbmNlbGxhdGlvbnMuLi4gIik7CisKKwlpZiAoUFFzZXRu b25ibG9ja2luZyhjb25uLCAxKSAhPSAwKQorCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHNldCBub25i bG9ja2luZyBtb2RlOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKworCS8qCisJICogTWFr ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlIHRvIG1vbml0b3IgdGhlIHF1ZXJ5IG9uIHRo ZSBtYWluCisJICogY29ubmVjdGlvbi4KKwkgKi8KKwltb25pdG9yQ29ubiA9IFBRY29ubmVjdGRi KGNvbm5pbmZvKTsKKwlpZiAoUFFzdGF0dXMoY29ubikgIT0gQ09OTkVDVElPTl9PSykKKwl7CisJ CXBnX2ZhdGFsKCJDb25uZWN0aW9uIHRvIGRhdGFiYXNlIGZhaWxlZDogJXMiLAorCQkJCSBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJfQorCisJLyogdGVzdCBQUWNhbmNlbCAqLworCXNlbmRfY2Fu Y2VsbGFibGVfcXVlcnkoY29ubiwgbW9uaXRvckNvbm4pOworCWNhbmNlbCA9IFBRZ2V0Q2FuY2Vs KGNvbm4pOworCWlmICghUFFjYW5jZWwoY2FuY2VsLCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVm KSkpCisJeworCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHJ1biBQUWNhbmNlbDogJXMiLCBlcnJvcmJ1 Zik7CisJfTsKKwljb25maXJtX3F1ZXJ5X2NhbmNlbGxlZChjb25uKTsKKworCS8qIFBHY2FuY2Vs IG9iamVjdCBjYW4gYmUgcmV1c2VkIGZvciB0aGUgbmV4dCBxdWVyeSAqLworCXNlbmRfY2FuY2Vs bGFibGVfcXVlcnkoY29ubiwgbW9uaXRvckNvbm4pOworCWlmICghUFFjYW5jZWwoY2FuY2VsLCBl cnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSkpCisJeworCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHJ1 biBQUWNhbmNlbDogJXMiLCBlcnJvcmJ1Zik7CisJfTsKKwljb25maXJtX3F1ZXJ5X2NhbmNlbGxl ZChjb25uKTsKKworCVBRZnJlZUNhbmNlbChjYW5jZWwpOworCisJLyogdGVzdCBQUXJlcXVlc3RD YW5jZWwgKi8KKwlzZW5kX2NhbmNlbGxhYmxlX3F1ZXJ5KGNvbm4sIG1vbml0b3JDb25uKTsKKwlp ZiAoIVBRcmVxdWVzdENhbmNlbChjb25uKSkKKwkJcGdfZmF0YWwoImZhaWxlZCB0byBydW4gUFFy ZXF1ZXN0Q2FuY2VsOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwljb25maXJtX3F1ZXJ5 X2NhbmNlbGxlZChjb25uKTsKKworCS8qIHRlc3QgUFFyZXF1ZXN0Q2FuY2VsU3RhcnQgYW5kIHRo ZW4gcG9sbGluZyB3aXRoIFBRY2FuY2VsQ29ubmVjdFBvbGwgKi8KKwlzZW5kX2NhbmNlbGxhYmxl X3F1ZXJ5KGNvbm4sIG1vbml0b3JDb25uKTsKKwljYW5jZWxDb25uID0gUFFyZXF1ZXN0Q2FuY2Vs U3RhcnQoY29ubik7CisJaWYgKFBRc3RhdHVzKGNhbmNlbENvbm4pID09IENPTk5FQ1RJT05fQkFE KQorCQlwZ19mYXRhbCgiYmFkIGNhbmNlbCBjb25uZWN0aW9uOiAlcyIsIFBRZXJyb3JNZXNzYWdl KGNhbmNlbENvbm4pKTsKKwl3aGlsZSAodHJ1ZSkKKwl7CisJCXN0cnVjdCB0aW1ldmFsIHR2Owor CQlmZF9zZXQJCWlucHV0X21hc2s7CisJCWZkX3NldAkJb3V0cHV0X21hc2s7CisJCVBvc3RncmVz UG9sbGluZ1N0YXR1c1R5cGUgcG9sbHJlcyA9IFBRY29ubmVjdFBvbGwoY2FuY2VsQ29ubik7CisJ CWludAkJCXNvY2sgPSBQUXNvY2tldChjYW5jZWxDb25uKTsKKworCQlpZiAocG9sbHJlcyA9PSBQ R1JFU19QT0xMSU5HX09LKQorCQl7CisJCQlicmVhazsKKwkJfQorCisJCUZEX1pFUk8oJmlucHV0 X21hc2spOworCQlGRF9aRVJPKCZvdXRwdXRfbWFzayk7CisJCXN3aXRjaCAocG9sbHJlcykKKwkJ eworCQkJY2FzZSBQR1JFU19QT0xMSU5HX1JFQURJTkc6CisJCQkJcGdfZGVidWcoInBvbGxpbmcg Zm9yIHJlYWRzXG4iKTsKKwkJCQlGRF9TRVQoc29jaywgJmlucHV0X21hc2spOworCQkJCWJyZWFr OworCQkJY2FzZSBQR1JFU19QT0xMSU5HX1dSSVRJTkc6CisJCQkJcGdfZGVidWcoInBvbGxpbmcg Zm9yIHdyaXRlc1xuIik7CisJCQkJRkRfU0VUKHNvY2ssICZvdXRwdXRfbWFzayk7CisJCQkJYnJl YWs7CisJCQlkZWZhdWx0OgorCQkJCXBnX2ZhdGFsKCJiYWQgY2FuY2VsIGNvbm5lY3Rpb246ICVz IiwgUFFlcnJvck1lc3NhZ2UoY2FuY2VsQ29ubikpOworCQl9CisKKwkJaWYgKHNvY2sgPCAwKQor CQkJcGdfZmF0YWwoInNvY2sgZGlkIG5vdCBleGlzdDogJXMiLCBQUWVycm9yTWVzc2FnZShjYW5j ZWxDb25uKSk7CisKKwkJdHYudHZfc2VjID0gMzsKKwkJdHYudHZfdXNlYyA9IDA7CisKKwkJd2hp bGUgKHRydWUpCisJCXsKKwkJCWlmIChzZWxlY3Qoc29jayArIDEsICZpbnB1dF9tYXNrLCAmb3V0 cHV0X21hc2ssIE5VTEwsICZ0dikgPCAwKQorCQkJeworCQkJCWlmIChlcnJubyA9PSBFSU5UUikK KwkJCQkJY29udGludWU7CisJCQkJcGdfZmF0YWwoInNlbGVjdCgpIGZhaWxlZDogJW0iKTsKKwkJ CX0KKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChQUXN0YXR1cyhjYW5jZWxDb25uKSAhPSBDT05O RUNUSU9OX0NBTkNFTF9GSU5JU0hFRCkKKwkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgY2FuY2VsIGNv bm5lY3Rpb24gc3RhdHVzOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNhbmNlbENvbm4pKTsKKwljb25m aXJtX3F1ZXJ5X2NhbmNlbGxlZChjb25uKTsKKworCS8qCisJICogdGVzdCBQUXJlc2V0U3RhcnQg d29ya3Mgb24gdGhlIGNhbmNlbCBjb25uZWN0aW9uIGFuZCBpdCBjYW4gYmUgcmV1c2VkCisJICog YWZ0ZXIKKwkgKi8KKwlpZiAoIVBRcmVzZXRTdGFydChjYW5jZWxDb25uKSkKKwl7CisJCXBnX2Zh dGFsKCJjYW5jZWwgY29ubmVjdGlvbiByZXNldCBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2Uo Y2FuY2VsQ29ubikpOworCX0KKworCXNlbmRfY2FuY2VsbGFibGVfcXVlcnkoY29ubiwgbW9uaXRv ckNvbm4pOworCWlmIChQUXN0YXR1cyhjYW5jZWxDb25uKSA9PSBDT05ORUNUSU9OX0JBRCkKKwkJ cGdfZmF0YWwoImJhZCBjYW5jZWwgY29ubmVjdGlvbjogJXMiLCBQUWVycm9yTWVzc2FnZShjYW5j ZWxDb25uKSk7CisJd2hpbGUgKHRydWUpCisJeworCQlzdHJ1Y3QgdGltZXZhbCB0djsKKwkJZmRf c2V0CQlpbnB1dF9tYXNrOworCQlmZF9zZXQJCW91dHB1dF9tYXNrOworCQlQb3N0Z3Jlc1BvbGxp bmdTdGF0dXNUeXBlIHBvbGxyZXMgPSBQUXJlc2V0UG9sbChjYW5jZWxDb25uKTsKKwkJaW50CQkJ c29jayA9IFBRc29ja2V0KGNhbmNlbENvbm4pOworCisJCWlmIChwb2xscmVzID09IFBHUkVTX1BP TExJTkdfT0spCisJCXsKKwkJCWJyZWFrOworCQl9CisKKwkJRkRfWkVSTygmaW5wdXRfbWFzayk7 CisJCUZEX1pFUk8oJm91dHB1dF9tYXNrKTsKKwkJc3dpdGNoIChwb2xscmVzKQorCQl7CisJCQlj YXNlIFBHUkVTX1BPTExJTkdfUkVBRElORzoKKwkJCQlwZ19kZWJ1ZygicG9sbGluZyBmb3IgcmVh ZHNcbiIpOworCQkJCUZEX1NFVChzb2NrLCAmaW5wdXRfbWFzayk7CisJCQkJYnJlYWs7CisJCQlj YXNlIFBHUkVTX1BPTExJTkdfV1JJVElORzoKKwkJCQlwZ19kZWJ1ZygicG9sbGluZyBmb3Igd3Jp dGVzXG4iKTsKKwkJCQlGRF9TRVQoc29jaywgJm91dHB1dF9tYXNrKTsKKwkJCQlicmVhazsKKwkJ CWRlZmF1bHQ6CisJCQkJcGdfZmF0YWwoImJhZCBjYW5jZWwgY29ubmVjdGlvbjogJXMiLCBQUWVy cm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisJCX0KKworCQlpZiAoc29jayA8IDApCisJCQlwZ19m YXRhbCgic29jayBkaWQgbm90IGV4aXN0OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNhbmNlbENvbm4p KTsKKworCQl0di50dl9zZWMgPSAzOworCQl0di50dl91c2VjID0gMDsKKworCQl3aGlsZSAodHJ1 ZSkKKwkJeworCQkJaWYgKHNlbGVjdChzb2NrICsgMSwgJmlucHV0X21hc2ssICZvdXRwdXRfbWFz aywgTlVMTCwgJnR2KSA8IDApCisJCQl7CisJCQkJaWYgKGVycm5vID09IEVJTlRSKQorCQkJCQlj b250aW51ZTsKKwkJCQlwZ19mYXRhbCgic2VsZWN0KCkgZmFpbGVkOiAlbSIpOworCQkJfQorCQkJ YnJlYWs7CisJCX0KKwl9CisJaWYgKFBRc3RhdHVzKGNhbmNlbENvbm4pICE9IENPTk5FQ1RJT05f Q0FOQ0VMX0ZJTklTSEVEKQorCQlwZ19mYXRhbCgidW5leHBlY3RlZCBjYW5jZWwgY29ubmVjdGlv biBzdGF0dXM6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY2FuY2VsQ29ubikpOworCWNvbmZpcm1fcXVl cnlfY2FuY2VsbGVkKGNvbm4pOworCisJUFFmaW5pc2goY2FuY2VsQ29ubik7CisKKwkvKiB0ZXN0 IFBRY29ubmVjdENvbXBsZXRlICovCisJc2VuZF9jYW5jZWxsYWJsZV9xdWVyeShjb25uLCBtb25p dG9yQ29ubik7CisJY2FuY2VsQ29ubiA9IFBRcmVxdWVzdENhbmNlbFN0YXJ0KGNvbm4pOworCWlm IChQUXN0YXR1cyhjYW5jZWxDb25uKSA9PSBDT05ORUNUSU9OX0JBRCkKKwkJcGdfZmF0YWwoImJh ZCBjYW5jZWwgY29ubmVjdGlvbjogJXMiLCBQUWVycm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisJ aWYgKCFQUWNvbm5lY3RDb21wbGV0ZShjYW5jZWxDb25uKSkKKwkJcGdfZmF0YWwoImZhaWxlZCB0 byBzZW5kIGNhbmNlbDogJXMiLCBQUWVycm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisJY29uZmly bV9xdWVyeV9jYW5jZWxsZWQoY29ubik7CisKKwkvKiB0ZXN0IFBRY29ubmVjdENvbXBsZXRlIHdp dGggcmVzZXQgY29ubmVjdGlvbiAqLworCWlmICghUFFyZXNldFN0YXJ0KGNhbmNlbENvbm4pKQor CXsKKwkJcGdfZmF0YWwoImNhbmNlbCBjb25uZWN0aW9uIHJlc2V0IGZhaWxlZDogJXMiLCBQUWVy cm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisJfQorCisJc2VuZF9jYW5jZWxsYWJsZV9xdWVyeShj b25uLCBtb25pdG9yQ29ubik7CisJaWYgKFBRc3RhdHVzKGNhbmNlbENvbm4pID09IENPTk5FQ1RJ T05fQkFEKQorCQlwZ19mYXRhbCgiYmFkIGNhbmNlbCBjb25uZWN0aW9uOiAlcyIsIFBRZXJyb3JN ZXNzYWdlKGNhbmNlbENvbm4pKTsKKwlpZiAoIVBRY29ubmVjdENvbXBsZXRlKGNhbmNlbENvbm4p KQorCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHNlbmQgY2FuY2VsOiAlcyIsIFBRZXJyb3JNZXNzYWdl KGNhbmNlbENvbm4pKTsKKwljb25maXJtX3F1ZXJ5X2NhbmNlbGxlZChjb25uKTsKKwlQUWZpbmlz aChjYW5jZWxDb25uKTsKKworCWZwcmludGYoc3RkZXJyLCAib2tcbiIpOworfQorCiBzdGF0aWMg dm9pZAogdGVzdF9kaXNhbGxvd2VkX2luX3BpcGVsaW5lKFBHY29ubiAqY29ubikKIHsKQEAgLTE1 NDUsNiArMTgxNCw3IEBAIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQogc3RhdGljIHZvaWQK IHByaW50X3Rlc3RfbGlzdCh2b2lkKQogeworCXByaW50ZigiY2FuY2VsXG4iKTsKIAlwcmludGYo ImRpc2FsbG93ZWRfaW5fcGlwZWxpbmVcbiIpOwogCXByaW50ZigibXVsdGlfcGlwZWxpbmVzXG4i KTsKIAlwcmludGYoIm5vc3luY1xuIik7CkBAIC0xNjQyLDcgKzE5MTIsOSBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJCQkJCVBRVFJBQ0VfU1VQUFJFU1NfVElNRVNUQU1QUyB8IFBR VFJBQ0VfUkVHUkVTU19NT0RFKTsKIAl9CiAKLQlpZiAoc3RyY21wKHRlc3RuYW1lLCAiZGlzYWxs b3dlZF9pbl9waXBlbGluZSIpID09IDApCisJaWYgKHN0cmNtcCh0ZXN0bmFtZSwgImNhbmNlbCIp ID09IDApCisJCXRlc3RfY2FuY2VsKGNvbm4sIGNvbm5pbmZvKTsKKwllbHNlIGlmIChzdHJjbXAo dGVzdG5hbWUsICJkaXNhbGxvd2VkX2luX3BpcGVsaW5lIikgPT0gMCkKIAkJdGVzdF9kaXNhbGxv d2VkX2luX3BpcGVsaW5lKGNvbm4pOwogCWVsc2UgaWYgKHN0cmNtcCh0ZXN0bmFtZSwgIm11bHRp X3BpcGVsaW5lcyIpID09IDApCiAJCXRlc3RfbXVsdGlfcGlwZWxpbmVzKGNvbm4pOwotLSAKMi4z NC4xCgo= --_003_PR3PR83MB04765D30B272D65DE9E42CF1F7B99PR3PR83MB0476EURP_--