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 1tiBJo-00CUJS-OR for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Feb 2025 11:54:17 +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 1tiBJm-0095Re-PZ for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Feb 2025 11:54:15 +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 1tiBJm-0095RR-9m for pgsql-hackers@lists.postgresql.org; Wed, 12 Feb 2025 11:54:15 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tiBJk-000RCa-18 for pgsql-hackers@postgresql.org; Wed, 12 Feb 2025 11:54:14 +0000 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2fa8ada6662so5206350a91.1 for ; Wed, 12 Feb 2025 03:54:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739361250; x=1739966050; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=U83Y58NCz7UhMjWLWIJEOx2o6ldQvgmDvng/EIeF5SI=; b=DF7Ix2lpRX5SIOm4weepj5K+7IfthaABBIhuO6uNphywqqcy8Dr1tbxQMHwVKYRwg3 8iIFGcCxGT7qB0+A+GysqNbxkyhHebi6G+tym0Gi28qrKSjjGcayB7AUjd2thOB6B3R+ tBeLjTOTu2qrYT+Xb2fzwSp0ygi1VW0vFh6kday3/aWNuCZK8V81/Ltgb3q9koIESFBj SES3sTowJHM8meLmi1yviJEAEbhAZEKO0ZGOLjHboMUiNOnYvHBRlJFIeaxEVsqm+X6E tyTqCqceJYc7RERasHaywccrlJFdN5jRDdkk7WX/Yg8TaTD8P0CFiK430f5fce9te5Xs Qe+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739361250; x=1739966050; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=U83Y58NCz7UhMjWLWIJEOx2o6ldQvgmDvng/EIeF5SI=; b=wImMdpYLJ/HeHcdIWKxPT7Wimdk0FUM7SBJooC3Asg6TcsyhIAKyNubcN7umB3MPBv cvwcd7+yoPu4DKTk262pMZME2gkG7Wo/A6H2cIVl2yu6jZvZr+2SHl2PgMtcBC33xJTn 6CoF09EoXD1j+Z4ipr5DSyZUjE/cintH7ibwy8iDGs/FuuJH2TDoXIvUFHUtc1cWnsXB xdbxsnYV58LyQC7zo+C51JFauqb/QZ4kUFzzAPO7a3QlWJly27ANmHA8B2Is4iZgFuBa TwRG95kkKQOxWyrimyGaODQAegQltUnnKLmvf12wSAnuRTpvdYNDGTYWYXl8hYcLydgv 2thw== X-Forwarded-Encrypted: i=1; AJvYcCW4pwjKDEnZbcdjKsTdqIJ1tp5kDZlize4SAd1uDiPSkAhsbnW4NAGZVqfu7Wx/xR3s0SHIMfr4yF9vkOs+@postgresql.org X-Gm-Message-State: AOJu0YyvJuzwE17UaAjLZdZOcW54B1qk0yAOCJNwJGKUdcr7cULOdc8+ kMpkXw/jJThWgufHNiGxb6hPEZIurY5d0DtgyVpOHsz/s8MniKCSozYDPV1tQ2XSS7sRwMyST0M eq1VYCji6oQD0XPYKl07xevNdfWM= X-Gm-Gg: ASbGncu9LIyN+2H3Ws5wcNFide+sPv9sBvlssB7BOuFRlcTHJQzaBD3o7WqmQZ81Nl4 VVJ9GW9yzVj57rFezSTDTh4Ieqr8wBcgu6NXRcF5XoLRS1E9f7/qhTmkxyqdGhxS93P1zN0T/6g == X-Google-Smtp-Source: AGHT+IGiU9edZM7rDH2KzXFJ25jbui7s3saftBJedd5QILwUVEvrV0JNUuWyNz5OBcyKFGkXNfmzNnrp0rsl8XzMa/8= X-Received: by 2002:a17:90b:5252:b0:2fa:b84:b301 with SMTP id 98e67ed59e1d1-2fbf5c156ebmr4488192a91.20.1739361250280; Wed, 12 Feb 2025 03:54:10 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> In-Reply-To: From: Amit Langote Date: Wed, 12 Feb 2025 20:53:50 +0900 X-Gm-Features: AWEUYZkgw3NEYI3lNVQ0PLVbKKcKXMmwDMCS6upvrSCkL04kLXeSDaOLQ-okmi8 Message-ID: Subject: Re: generic plans and "initial" pruning To: Tomas Vondra Cc: Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000075a425062df09987" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000075a425062df09987 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Feb 6, 2025 at 11:35=E2=80=AFAM Amit Langote wrote: > Per cfbot-ci, the new test case output in 0002 needed to be updated. > > I plan to push 0001 tomorrow, barring any objections. I pushed that last Friday. With bb3ec16e, d47cbf47, and cbc12791 now in: * Pruning information is now stored separately from parent plan nodes in PlannedStmt. * Initial runtime pruning occurs as a separate step, independent of and before plan initialization in InitPlan(). * The RT indexes of unprunable relations and those of partitions that survive initial pruning are stored in a global bitmapset in EState, allowing us to avoid work that was previously done for pruned partitions. This was difficult before because initial pruning wasn=E2=80=99= t performed before the parent plan node was initialized, meaning that the work we aimed to save had already been done. The final remaining piece is to skip taking locks on partitions pruned during initial pruning, and the attached patch addresses that. I=E2=80=99d like to commit the patch next week, barring objections. -- Thanks, Amit Langote --00000000000075a425062df09987 Content-Type: application/x-patch; name="v63-0001-Don-t-lock-partitions-pruned-by-initial-pruning.patch" Content-Disposition: attachment; filename="v63-0001-Don-t-lock-partitions-pruned-by-initial-pruning.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m71uqc7w0 RnJvbSBjODZkNGU0ZjViMjk3MzgzMWQ4MjBhZjBlOWJjOTZlYTJiNmI2OTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMTIgRmViIDIwMjUgMTg6MzA6MjMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 M10gRG9uJ3QgbG9jayBwYXJ0aXRpb25zIHBydW5lZCBieSBpbml0aWFsIHBydW5pbmcKCkJlZm9y ZSBleGVjdXRpbmcgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuLCBBY3F1aXJlRXhlY3V0b3JMb2Nrcygp IGluCnBsYW5jYWNoZS5jIGxvY2tzIGFsbCByZWxhdGlvbnMgaW4gYSBwbGFuJ3MgcmFuZ2UgdGFi bGUgdG8gZW5zdXJlIHRoZQpwbGFuIGlzIHNhZmUgZm9yIGV4ZWN1dGlvbi4gSG93ZXZlciwgdGhp cyBsb2NrcyBydW50aW1lLXBydW5hYmxlCnJlbGF0aW9ucyB0aGF0IHdpbGwgbGF0ZXIgYmUgcHJ1 bmVkIGR1cmluZyAiaW5pdGlhbCIgcnVudGltZSBwcnVuaW5nLAppbnRyb2R1Y2luZyB1bm5lY2Vz c2FyeSBvdmVyaGVhZC4KClRoaXMgY29tbWl0IGludHJvZHVjZXMgY2hhbmdlcyB0aGF0IGRlZmVy IGxvY2tpbmcgZm9yIHN1Y2ggcmVsYXRpb25zCmFuZCBlbnN1cmVzIHRoYXQgaWYgdGhlIENhY2hl ZFBsYW4gaXMgaW52YWxpZGF0ZWQgZHVlIHRvIGNvbmN1cnJlbnQKRERMIGR1cmluZyB0aGlzIHdp bmRvdywgcmVwbGFubmluZyBpcyB0cmlnZ2VyZWQuCgoqIENoYW5nZXMgdG8gbG9ja2luZyB3aGVu IGV4ZWN1dGluZyBnZW5lcmljIHBsYW5zOgoKQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBub3cgbG9j a3Mgb25seSB1bnBydW5hYmxlIHJlbGF0aW9ucywgdGhhdCBpcywKdGhvc2UgZm91bmQgaW4gUGxh bm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyAoaW50cm9kdWNlZCBpbiBjb21taXQKY2JjMTI3OTE3 ZSksIHRvIGF2b2lkIGxvY2tpbmcgcnVudGltZS1wcnVuYWJsZSBwYXJ0aXRpb25zCnVubmVjZXNz YXJpbHkuICBUaGUgcmVtYWluaW5nIGxvY2tzIGFyZSB0YWtlbiBieQpFeGVjRG9Jbml0aWFsUHJ1 bmluZygpLCB3aGljaCBhY3F1aXJlcyB0aGVtIG9ubHkgZm9yIHBhcnRpdGlvbnMgdGhhdApzdXJ2 aXZlIHBydW5pbmcuIFRoaXMgZGVmZXJyYWwgb2YgbG9ja3MgYWxsb3dzIHJ1bnRpbWUtcHJ1bmFi bGUKcmVsYXRpb25zIHRvIGJlIGhhbmRsZWQgbGF0ZXIgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAs IHJlZHVjaW5nCnVubmVjZXNzYXJ5IGxvY2tpbmcgb3ZlcmhlYWQsIHBhcnRpY3VsYXJseSBmb3Ig Z2VuZXJpYyBwbGFucyB3aXRoCm1hbnkgcGFydGl0aW9ucyB0aGF0IGFyZSBwcnVuYWJsZSB3aXRo IGluaXRpYWwgcnVudGltZSBwcnVuaW5nLgoKVGhpcyBkZWZlcnJhbCBkb2VzIG5vdCBhZmZlY3Qg dGhlIGxvY2tzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9uCmNoZWNraW5nIGluIEluaXRQbGFuKCks IHdoaWNoIHRha2VzIHBsYWNlIGJlZm9yZSBpbml0aWFsIHBydW5pbmcuCkV4ZWNDaGVja1Blcm1p c3Npb25zKCkgbm93IGluY2x1ZGVzIGFuIEFzc2VydCB0byB2ZXJpZnkgdGhhdCBhbGwKcmVsYXRp b25zIHVuZGVyZ29pbmcgcGVybWlzc2lvbiBjaGVja3MsIG5vbmUgb2Ygd2hpY2ggY2FuIGJlIGlu IHRoZQpzZXQgb2YgcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMsIGFyZSBwcm9wZXJseSBsb2Nr ZWQuCgoqIFBsYW4gaW52YWxpZGF0aW9uIGhhbmRsaW5nOgoKRGVmZXJyaW5nIGxvY2tzIGludHJv ZHVjZXMgYSB3aW5kb3cgd2hlcmUgcHJ1bmFibGUgcmVsYXRpb25zIG1heSBiZQphbHRlcmVkIGJ5 IGNvbmN1cnJlbnQgRERMLCBpbnZhbGlkYXRpbmcgdGhlIHBsYW4uIEEgbmV3IGZ1bmN0aW9uLApF eGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpLCB3cmFwcyBFeGVjdXRvclN0YXJ0KCkgdG8gZGV0ZWN0 IGFuZCBoYW5kbGUKaW52YWxpZGF0aW9uIGNhdXNlZCBieSBkZWZlcnJlZCBsb2NraW5nLiBJZiBp bnZhbGlkYXRpb24gb2NjdXJzLApFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpIHVwZGF0ZXMgQ2Fj aGVkUGxhbiB1c2luZyB0aGUgbmV3ClVwZGF0ZUNhY2hlZFBsYW4oKSBmdW5jdGlvbiBhbmQgcmV0 cmllcyBleGVjdXRpb24gd2l0aCB0aGUgdXBkYXRlZApwbGFuLiBUbyBlbnN1cmUgYWxsIGNvZGUg cGF0aHMgdGhhdCBtYXkgYmUgYWZmZWN0ZWQgYnkgdGhpcyBoYW5kbGUKaW52YWxpZGF0aW9uIHBy b3Blcmx5LCBhbGwgY2FsbGVycyBvZiBFeGVjdXRvclN0YXJ0IHRoYXQgbWF5IGV4ZWN1dGUgYQpQ bGFubmVkU3RtdCBmcm9tIGEgQ2FjaGVkUGxhbiBoYXZlIGJlZW4gdXBkYXRlZCB0byB1c2UKRXhl Y3V0b3JTdGFydENhY2hlZFBsYW4oKSBpbnN0ZWFkLgoKVXBkYXRlQ2FjaGVkUGxhbigpIHJlcGxh Y2VzIHN0YWxlIHBsYW5zIGluIENhY2hlZFBsYW4uc3RtdF9saXN0LiBBIG5ldwpDYWNoZWRQbGFu LnN0bXRfY29udGV4dCwgY3JlYXRlZCBhcyBhIGNoaWxkIG9mIENhY2hlZFBsYW4uY29udGV4dCwK YWxsb3dzIGZyZWVpbmcgb2xkIFBsYW5uZWRTdG10cyB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBDYWNo ZWRQbGFuCnN0cnVjdHVyZSBhbmQgaXRzIHN0YXRlbWVudCBsaXN0LiBUaGlzIGVuc3VyZXMgdGhh dCBsb29wcyBvdmVyCnN0YXRlbWVudHMgaW4gdXBzdHJlYW0gY2FsbGVycyBvZiBFeGVjdXRvclN0 YXJ0Q2FjaGVkUGxhbigpIHJlbWFpbgppbnRhY3QuCgpFeGVjdXRvclN0YXJ0KCkgYW5kIEV4ZWN1 dG9yU3RhcnRfaG9vayBpbXBsZW1lbnRhdGlvbnMgbm93IHJldHVybiBhCmJvb2xlYW4gdmFsdWUg aW5kaWNhdGluZyB3aGV0aGVyIHBsYW4gaW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkIHdpdGggYQp2 YWxpZCBQbGFuU3RhdGUgdHJlZSBpbiBRdWVyeURlc2MucGxhbnN0YXRlLCBvciBmYWxzZSBvdGhl cndpc2UsIGluCndoaWNoIGNhc2UgUXVlcnlEZXNjLnBsYW5zdGF0ZSBpcyBOVUxMLiBIb29rIGlt cGxlbWVudGF0aW9ucyBhcmUKcmVxdWlyZWQgdG8gY2FsbCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0 KCkgYXQgdGhlIGJlZ2lubmluZywgYW5kIGlmIGl0CnJldHVybnMgZmFsc2UsIHRoZXkgc2hvdWxk IGRvIHRoZSBzYW1lIHdpdGhvdXQgcHJvY2VlZGluZy4KCiogVGVzdGluZzoKClRvIHZlcmlmeSB0 aGVzZSBjaGFuZ2VzLCB0aGUgZGVsYXlfZXhlY3V0aW9uIG1vZHVsZSB0ZXN0cyBzY2VuYXJpb3MK d2hlcmUgY2FjaGVkIHBsYW5zIGJlY29tZSBpbnZhbGlkIGR1ZSB0byBjaGFuZ2VzIGluIHBydW5h YmxlIHJlbGF0aW9ucwphZnRlciBkZWZlcnJlZCBsb2Nrcy4KCiogTm90ZSB0byBleHRlbnNpb24g YXV0aG9yczoKCkV4ZWN1dG9yU3RhcnRfaG9vayBpbXBsZW1lbnRhdGlvbnMgbXVzdCB2ZXJpZnkg cGxhbiB2YWxpZGl0eSBhZnRlcgpjYWxsaW5nIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoKSwgYXMg ZXhwbGFpbmVkIGVhcmxpZXIuIEZvciBleGFtcGxlOgoKICAgIGlmIChwcmV2X0V4ZWN1dG9yU3Rh cnQpCiAgICAgICAgcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVm bGFncyk7CiAgICBlbHNlCiAgICAgICAgcGxhbl92YWxpZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOwoKICAgIGlmICghcGxhbl92YWxpZCkKICAgICAgICByZXR1 cm4gZmFsc2U7CgogICAgPGV4dGVuc2lvbi1jb2RlPgoKICAgIHJldHVybiB0cnVlOwoKRXh0ZW5z aW9ucyBhY2Nlc3NpbmcgY2hpbGQgcmVsYXRpb25zLCBlc3BlY2lhbGx5IHBydW5hYmxlIHBhcnRp dGlvbnMsCnZpYSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgbXVzdCBub3cgZW5zdXJlIHRo ZWlyIFJUIGluZGV4ZXMgYXJlCnByZXNlbnQgaW4gZXNfdW5wcnVuZWRfcmVsaWRzIChpbnRyb2R1 Y2VkIGluIGNvbW1pdCBjYmMxMjc5MTdlKSwgb3IKdGhleSB3aWxsIGVuY291bnRlciBhbiBlcnJv ci4gVGhpcyBpcyBhIHN0cmljdCByZXF1aXJlbWVudCBhZnRlciB0aGlzCmNoYW5nZSwgYXMgb25s eSByZWxhdGlvbnMgaW4gdGhhdCBzZXQgYXJlIGxvY2tlZC4KClRoZSBpZGVhIG9mIGRlZmVycmlu ZyBzb21lIGxvY2tzIHRvIGV4ZWN1dG9yIHN0YXJ0dXAsIGFsbG93aW5nIGxvY2tzCmZvciBwcnVu YWJsZSBwYXJ0aXRpb25zIHRvIGJlIHNraXBwZWQsIHdhcyBmaXJzdCBwcm9wb3NlZCBieSBUb20g TGFuZS4KSSAoYW1pdGxhbikgaGF2ZSBkaXNjdXNzZWQgdmFyaW91cyBhc3BlY3RzIG9mIHRoaXMg cHJvamVjdCBvZmZsaXN0IHdpdGgKUm9iZXJ0IEhhYXMgYW5kIERhdmlkIFJvd2xleSBtdWx0aXBs ZSB0aW1lcywgYW5kIHRoZWlyIGFkdmljZSBoYXMgYmVlbgp2YWx1YWJsZS4KClJldmlld2VkLWJ5 OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPiAoZWFybGllciB2ZXJzaW9ucykK UmV2aWV3ZWQtYnk6IERhdmlkIFJvd2xleSA8ZGdyb3dsZXltbEBnbWFpbC5jb20+IChlYXJsaWVy IHZlcnNpb25zKQpSZXZpZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPiAoZWFy bGllciB2ZXJzaW9ucykKUmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYSA8dG9tYXNAdm9uZHJhLm1l PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpk ZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIGNvbnRyaWIv YXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAgICB8ICAxNiArLQogLi4uL3BnX3N0 YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgIDE2ICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2NyZWF0ZWFzLmMgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDIyICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL21hdHZpZXcuYyAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvcG9ydGFsY21kcy5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDE1ICsrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9SRUFETUUgICAgICAgICAgICAgICAgICAgfCAgMzUgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAxMzAgKysrKysrKystCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICB8ICAzOCArKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICAyOSArLQogc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAgNTEgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcGxhbmNhY2hlLmMgICAgICAgICAgIHwgMjA0ICsrKysrKysrKysrKy0tCiBzcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1 ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgMzQgKystCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRp bHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDUwICsrKy0KIHNyYy9pbmNsdWRlL3V0 aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL3Rlc3QvbW9kdWxl cy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgICAgIHwgICAzICstCiAuLi4vbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgfCAgNjYgKysrKy0KIC4uLi9leHBlY3RlZC9j YWNoZWQtcGxhbi1pbnZhbC5vdXQgICAgICAgICAgICB8IDI1MCArKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkICB8ICAgMSArCiAu Li4vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyAgICAgICAgICAgICAgfCAgODYgKysrKysr CiAzMyBmaWxlcyBjaGFuZ2VkLCAxMDI1IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVj dGVkL2NhY2hlZC1wbGFuLWludmFsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFsLnNwZWMKCmRpZmYg LS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0 b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4IGYxYWQ4NzZlODIxLi44MmMxN2MwYTI4YSAx MDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29u dHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj IEV4ZWN1dG9yUnVuX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yUnVuID0gTlVMTDsKIHN0YXRpYyBF eGVjdXRvckZpbmlzaF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckZpbmlzaCA9IE5VTEw7CiBzdGF0 aWMgRXhlY3V0b3JFbmRfaG9va190eXBlIHByZXZfRXhlY3V0b3JFbmQgPSBOVUxMOwogCi1zdGF0 aWMgdm9pZCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpOworc3RhdGljIGJvb2wgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0b3JSdW4oUXVl cnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCQkJ CQkJCQl1aW50NjQgY291bnQpOwpAQCAtMjU2LDkgKzI1NiwxMSBAQCBfUEdfaW5pdCh2b2lkKQog LyoKICAqIEV4ZWN1dG9yU3RhcnQgaG9vazogc3RhcnQgdXAgbG9nZ2luZyBpZiBuZWVkZWQKICAq Lwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CisJYm9vbAkJcGxhbl92YWxpZDsKKwogCS8q CiAJICogQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHRvcC1sZXZlbCBzdGF0ZW1lbnQsIGRlY2lk ZSB3aGV0aGVyIHdlJ2xsCiAJICogc2FtcGxlIHRoaXMgc3RhdGVtZW50LiAgSWYgbmVzdGVkLXN0 YXRlbWVudCBleHBsYWluaW5nIGlzIGVuYWJsZWQsCkBAIC0yOTQsOSArMjk2LDEzIEBAIGV4cGxh aW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAl9CiAK IAlpZiAocHJldl9FeGVjdXRvclN0YXJ0KQotCQlwcmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNj LCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg ZWZsYWdzKTsKIAllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxh Z3MpOworCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVm bGFncyk7CisKKwkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3Rh bmRhcmRfRXhlY3V0b3JTdGFydCgpICovCisJaWYgKCFwbGFuX3ZhbGlkKQorCQlyZXR1cm4gZmFs c2U7CiAKIAlpZiAoYXV0b19leHBsYWluX2VuYWJsZWQoKSkKIAl7CkBAIC0zMTQsNiArMzIwLDgg QEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KQogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAJCX0KIAl9CisKKwlyZXR1cm4g dHJ1ZTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Bn X3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9z dGF0ZW1lbnRzLmMKaW5kZXggYmViZjgxMzRlYjAuLmI3MzUzODFjYjBiIDEwMDY0NAotLS0gYS9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpAQCAtMzMyLDcgKzMz Miw3IEBAIHN0YXRpYyBQbGFubmVkU3RtdCAqcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJ CQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJIGludCBjdXJzb3JPcHRp b25zLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7Ci1zdGF0aWMgdm9pZCBw Z3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3Rh dGljIGJvb2wgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKTsKIHN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms CiAJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCQkJCQkJCSB1aW50NjQgY291bnQp OwpAQCAtOTg2LDEzICs5ODYsMTkgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIC8qCiAg KiBFeGVjdXRvclN0YXJ0IGhvb2s6IHN0YXJ0IHVwIHRyYWNraW5nIGlmIG5lZWRlZAogICovCi1z dGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29sCQlwbGFuX3ZhbGlkOworCiAJaWYgKHByZXZf RXhlY3V0b3JTdGFydCkKLQkJcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsK KwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJ ZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxh bl92YWxpZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJ LyogVGhlIHBsYW4gbWF5IGhhdmUgYmVjb21lIGludmFsaWQgZHVyaW5nIHN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQoKSAqLworCWlmICghcGxhbl92YWxpZCkKKwkJcmV0dXJuIGZhbHNlOwogCiAJLyoK IAkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvLCBkb24ndCB0cmFjayBpdC4gIFRoaXMgcHJl dmVudHMgZG91YmxlCkBAIC0xMDE1LDYgKzEwMjEsOCBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKIAkJfQogCX0KKworCXJldHVybiB0cnVlOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYwppbmRleCA5OWNiMjNjYjM0Ny4uMDkxZmJjMTJjYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CkBAIC01NTYsNyArNTU2LDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQko KERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNzdGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVy eURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8KLQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVh dGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAog CQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNo b3QsCiAJCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpAQCAtNTY2LDcgKzU2Niw4IEBA IEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICoKIAkJICogRXhlY3V0b3JTdGFy dCBjb21wdXRlcyBhIHJlc3VsdCB0dXBkZXNjIGZvciB1cwogCQkgKi8KLQkJRXhlY3V0b3JTdGFy dChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CisJCWlmICghRXhlY3V0b3JTdGFydChjc3RhdGUtPnF1 ZXJ5RGVzYywgMCkpCisJCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4 cGVjdGVkbHkiKTsKIAogCQl0dXBEZXNjID0gY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2M7CiAJ fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMjNjZWNkOTljOWUuLjQ0YjQ2NjVjY2QzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTMzMiwxMiArMzMyLDEzIEBAIEV4ZWNDcmVhdGVU YWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVw ZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNj LCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAog CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJ ZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKIAkJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRv IHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRvKSk7CisJCWlmICghRXhlY3V0b3JTdGFydChxdWVy eURlc2MsIEdldEludG9SZWxFRmxhZ3MoaW50bykpKQorCQkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9y U3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CiAKIAkJLyogcnVuIHRoZSBwbGFuIHRvIGNv bXBsZXRpb24gKi8KIAkJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlv biwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggYzI0ZTY2ZjgyZTEuLmFmMjVjMTZkMjE1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC01MTksNyArNTE5LDggQEAgc3RhbmRhcmRfRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyog cnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFu KHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWlu T25lUGxhbihwbGFuLCBOVUxMLCBOVUxMLCAtMSwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJh bXMsCisJCQkJICAgcXVlcnlFbnYsCiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJz ID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMg OiBOVUxMKTsKIH0KQEAgLTY0MSw3ICs2NDIsOSBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1 dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNh bGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgICBDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgsCisJCQkgICBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs IFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs IGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdl ICpidWZ1c2FnZSwKQEAgLTY5Nyw3ICs3MDAsNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRl c3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVl cnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3Ry aW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgY3BsYW4sIHF1 ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3Qs CiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApA QCAtNzExLDggKzcxNCwxNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJaWYgKGludG8pCiAJCWVm bGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwogCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0 IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOworCS8qIFByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8K KwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwl7CisJCUV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKHF1 ZXJ5RGVzYywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CisJCUFzc2VydChxdWVy eURlc2MtPnBsYW5zdGF0ZSk7CisJfQorCWVsc2UKKwl7CisJCWlmICghRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIGVmbGFncykpCisJCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxl ZCB1bmV4cGVjdGVkbHkiKTsKKwl9CiAKIAkvKiBFeGVjdXRlIHRoZSBwbGFuIGZvciBzdGF0aXN0 aWNzIGlmIGFza2VkIGZvciAqLwogCWlmIChlcy0+YW5hbHl6ZSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMKaW5kZXggYmE1NDBlM2RlNWIuLjFiMjhkMjA0MTJlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwpAQCAtOTA3LDExICs5MDcsMTMgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNo YXIgKnNxbCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAK IAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJ CQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJ CQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKLQkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsK KwkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocWRlc2MsIDApKQorCQkJCQllbG9nKEVSUk9SLCAiRXhl Y3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVz YywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDApOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsK IAkJCQlFeGVjdXRvckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggYzEyODE3 MDkxZWQuLjBiZmJjNWNhNmRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2 aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00MzgsMTIgKzQz OCwxMyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVy eSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAq LwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJ CUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVM TCwgTlVMTCwgMCk7CiAKIAkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxh biBmb3IgZXhlY3V0aW9uICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCWlmICgh RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApKQorCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFy dCgpIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKIAogCS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1 dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDApOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cG9ydGFsY21kcy5jCmluZGV4IGU3YzgxNzFjMTAyLi40YzJhYzA0NTIyNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3BvcnRhbGNtZHMuYwpAQCAtMTE3LDYgKzExNyw3IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBh cnNlU3RhdGUgKnBzdGF0ZSwgRGVjbGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZv IHBhCiAJCQkJCSAgcXVlcnlTdHJpbmcsCiAJCQkJCSAgQ01EVEFHX1NFTEVDVCwJLyogY3Vyc29y J3MgcXVlcnkgaXMgYWx3YXlzIGEgU0VMRUNUICovCiAJCQkJCSAgbGlzdF9tYWtlMShwbGFuKSwK KwkJCQkJICBOVUxMLAogCQkJCQkgIE5VTEwpOwogCiAJLyotLS0tLS0tLS0tCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKaW5kZXggODk4OWMwYzg4MmQuLmMwMjViMWY5ZjhjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCkBAIC0yMDIsNyArMjAyLDggQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgZW50cnktPnBsYW5zb3VyY2UtPmNvbW1h bmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJCQkgIGNwbGFuKTsKKwkJCQkJICBjcGxhbiwK KwkJCQkJICBlbnRyeS0+cGxhbnNvdXJjZSk7CiAKIAkvKgogCSAqIEZvciBDUkVBVEUgVEFCTEUg Li4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5IHRoYXQgdGhlIHByZXBhcmVkCkBAIC01ODIs NiArNTgzLDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJTWVtb3J5Q29udGV4dENvdW50ZXJz IG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1v cnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CisJaW50CQkJcXVlcnlfaW5kZXggPSAwOwogCiAJ aWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtNjU0LDcgKzY1Niw4IEBAIEV4cGxhaW5FeGVjdXRlUXVl cnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgcCk7 CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5P bmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBwc3RhdGUtPnBf cXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgY3BsYW4sIGVudHJ5LT5wbGFuc291 cmNlLCBxdWVyeV9pbmRleCwKKwkJCQkJCSAgIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFt TEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKIAkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVm ZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAogCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291 bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQpAQCAtNjY1LDYgKzY2OCw4IEBAIEV4cGxhaW5FeGVjdXRl UXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCQkvKiBTZXBhcmF0ZSBwbGFucyB3aXRoIGFuIGFwcHJvcHJpYXRlIHNlcGFyYXRv ciAqLwogCQlpZiAobG5leHQocGxhbl9saXN0LCBwKSAhPSBOVUxMKQogCQkJRXhwbGFpblNlcGFy YXRlUGxhbnMoZXMpOworCisJCXF1ZXJ5X2luZGV4Kys7CiAJfQogCiAJaWYgKGVzdGF0ZSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYwppbmRleCA5N2MwODc5MjlmMy4uNTY1ZjBkYjBiOWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMKQEAgLTUwNTcsNiArNTA1NywyMSBAQCBBZnRlclRyaWdnZXJCZWdpblF1 ZXJ5KHZvaWQpCiB9CiAKIAorLyogLS0tLS0tLS0tLQorICogQWZ0ZXJUcmlnZ2VyQWJvcnRRdWVy eSgpCisgKgorICogQ2FsbGVkIGJ5IHN0YW5kYXJkX0V4ZWN1dG9yRW5kKCkgaWYgdGhlIHF1ZXJ5 IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZCBkdWUgdG8KKyAqIHRoZSBwbGFuIGJlY29taW5nIGludmFs aWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgorICogLS0tLS0tLS0tLQorICovCit2b2lkCitBZnRl clRyaWdnZXJBYm9ydFF1ZXJ5KHZvaWQpCit7CisJLyogUmV2ZXJ0IHRoZSBhY3Rpb25zIG9mIEFm dGVyVHJpZ2dlckJlZ2luUXVlcnkoKS4gKi8KKwlhZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoLS07 Cit9CisKKwogLyogLS0tLS0tLS0tLQogICogQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoKQogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL1JFQURNRQppbmRleCA2NDJkNjNiZTYxMy4uNDQ5YzYwNjhhZTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFE TUUKQEAgLTI4MCw2ICsyODAsMjggQEAgYXJlIHR5cGljYWxseSByZXNldCB0byBlbXB0eSBvbmNl IHBlciB0dXBsZS4gIFBlci10dXBsZSBjb250ZXh0cyBhcmUgdXN1YWxseQogYXNzb2NpYXRlZCB3 aXRoIEV4cHJDb250ZXh0cywgYW5kIGNvbW1vbmx5IGVhY2ggUGxhblN0YXRlIG5vZGUgaGFzIGl0 cyBvd24KIEV4cHJDb250ZXh0IHRvIGV2YWx1YXRlIGl0cyBxdWFsIGFuZCB0YXJnZXRsaXN0IGV4 cHJlc3Npb25zIGluLgogCitSZWxhdGlvbiBMb2NraW5nCistLS0tLS0tLS0tLS0tLS0tCisKK1R5 cGljYWxseSwgd2hlbiB0aGUgZXhlY3V0b3IgaW5pdGlhbGl6ZXMgYSBwbGFuIHRyZWUgZm9yIGV4 ZWN1dGlvbiwgaXQgZG9lc24ndAorbG9jayBub24taW5kZXggcmVsYXRpb25zIGlmIHRoZSBwbGFu IHRyZWUgaXMgZnJlc2hseSBnZW5lcmF0ZWQgYW5kIG5vdCBkZXJpdmVkCitmcm9tIGEgQ2FjaGVk UGxhbi4gVGhpcyBpcyBiZWNhdXNlIHN1Y2ggbG9ja3MgaGF2ZSBhbHJlYWR5IGJlZW4gZXN0YWJs aXNoZWQKK2R1cmluZyB0aGUgcXVlcnkncyBwYXJzaW5nLCByZXdyaXRpbmcsIGFuZCBwbGFubmlu ZyBwaGFzZXMuIEhvd2V2ZXIsIHdpdGggYQorY2FjaGVkIHBsYW4gdHJlZSwgc29tZSByZWxhdGlv bnMgbWF5IHJlbWFpbiB1bmxvY2tlZC4gVGhlIGZ1bmN0aW9uCitBY3F1aXJlRXhlY3V0b3JMb2Nr cygpIG9ubHkgbG9ja3MgdW5wcnVuYWJsZSByZWxhdGlvbnMgaW4gdGhlIHBsYW4sIGRlZmVycmlu ZwordGhlIGxvY2tpbmcgb2YgcHJ1bmFibGUgb25lcyB0byBleGVjdXRvciBpbml0aWFsaXphdGlv bi4gVGhpcyBhdm9pZHMKK3VubmVjZXNzYXJ5IGxvY2tpbmcgb2YgcmVsYXRpb25zIHRoYXQgd2ls bCBiZSBwcnVuZWQgZHVyaW5nICJpbml0aWFsIiBydW50aW1lCitwcnVuaW5nIGluIEV4ZWNEb0lu aXRpYWxQcnVuaW5nKCkuCisKK1RoaXMgYXBwcm9hY2ggY3JlYXRlcyBhIHdpbmRvdyB3aGVyZSBh IGNhY2hlZCBwbGFuIHRyZWUgd2l0aCBjaGlsZCB0YWJsZXMKK2NvdWxkIGJlY29tZSBvdXRkYXRl ZCBpZiBhbm90aGVyIGJhY2tlbmQgbW9kaWZpZXMgdGhlc2UgdGFibGVzIGJlZm9yZQorRXhlY0Rv SW5pdGlhbFBydW5pbmcoKSBsb2NrcyB0aGVtLiBBcyBhIHJlc3VsdCwgdGhlIGV4ZWN1dG9yIGhh cyB0aGUgYWRkZWQgZHV0eQordG8gdmVyaWZ5IHRoZSBwbGFuIHRyZWUncyB2YWxpZGl0eSB3aGVu ZXZlciBpdCBsb2NrcyBhIGNoaWxkIHRhYmxlIGFmdGVyCitkb2luZyBpbml0aWFsIHBydW5pbmcu IFRoaXMgdmFsaWRhdGlvbiBpcyBkb25lIGJ5IGNoZWNraW5nIHRoZSBDYWNoZWRQbGFuLmlzX3Zh bGlkCitmbGFnLiBJZiB0aGUgcGxhbiB0cmVlIGlzIG91dGRhdGVkIChpc192YWxpZCA9IGZhbHNl KSwgdGhlIGV4ZWN1dG9yIHN0b3BzCitmdXJ0aGVyIGluaXRpYWxpemF0aW9uLCBjbGVhbnMgdXAg YW55dGhpbmcgaW4gRVN0YXRlIHRoYXQgd291bGQgaGF2ZSBiZWVuCithbGxvY2F0ZWQgdXAgdG8g dGhhdCBwb2ludCwgYW5kIHJldHJpZXMgZXhlY3V0aW9uIGFmdGVyIHJlY3JlYXRpbmcgdGhlCitp bnZhbGlkIHBsYW4gaW4gdGhlIENhY2hlZFBsYW4uCiAKIFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJv bCBGbG93CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjg4LDExICszMTAsMTMg QEAgVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vz c2luZzoKIAogCUNyZWF0ZVF1ZXJ5RGVzYwogCi0JRXhlY3V0b3JTdGFydAorCUV4ZWN1dG9yU3Rh cnQgb3IgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4KIAkJQ3JlYXRlRXhlY3V0b3JTdGF0ZQogCQkJ Y3JlYXRlcyBwZXItcXVlcnkgY29udGV4dAotCQlzd2l0Y2ggdG8gcGVyLXF1ZXJ5IGNvbnRleHQg dG8gcnVuIEV4ZWNJbml0Tm9kZQorCQlzd2l0Y2ggdG8gcGVyLXF1ZXJ5IGNvbnRleHQgdG8gcnVu IEV4ZWNEb0luaXRpYWxQcnVuaW5nIGFuZCBFeGVjSW5pdE5vZGUKIAkJQWZ0ZXJUcmlnZ2VyQmVn aW5RdWVyeQorCQlFeGVjRG9Jbml0aWFsUHJ1bmluZworCQkJZG9lcyBpbml0aWFsIHBydW5pbmcg YW5kIGxvY2tzIHN1cnZpdmluZyBwYXJ0aXRpb25zIGlmIG5lZWRlZAogCQlFeGVjSW5pdE5vZGUg LS0tIHJlY3Vyc2l2ZWx5IHNjYW5zIHBsYW4gdHJlZQogCQkJRXhlY0luaXROb2RlCiAJCQkJcmVj dXJzZSBpbnRvIHN1YnNpZGlhcnkgbm9kZXMKQEAgLTMxNiw3ICszNDAsMTIgQEAgVGhpcyBpcyBh IHNrZXRjaCBvZiBjb250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAogCUZy ZWVRdWVyeURlc2MKIAotUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGlj YWwgZm9yIEV4ZWNFbmROb2RlIHRvIGZyZWUgYW55CitBcyBtZW50aW9uZWQgaW4gdGhlICJSZWxh dGlvbiBMb2NraW5nIiBzZWN0aW9uLCBpZiB0aGUgcGxhbiB0cmVlIGlzIGZvdW5kIHRvCitiZSBz dGFsZSBhZnRlciBsb2NraW5nIHBhcnRpdGlvbnMgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKSwg dGhlIGNvbnRyb2wgaXMKK2ltbWVkaWF0ZWx5IHJldHVybmVkIHRvIEV4ZWN1dG9yU3RhcnRDYWNo ZWRQbGFuKCksIHdoaWNoIHdpbGwgY3JlYXRlIGEgbmV3IHBsYW4KK3RyZWUgYW5kIHBlcmZvcm0g dGhlIHN0ZXBzIHN0YXJ0aW5nIGZyb20gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpIGFnYWluLgorCitQ ZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZFBs YW4gdG8gZnJlZSBhbnkKIG1lbW9yeTsgaXQnbGwgYWxsIGdvIGF3YXkgaW4gRnJlZUV4ZWN1dG9y U3RhdGUgYW55d2F5LiAgSG93ZXZlciwgd2UgZG8gbmVlZCB0bwogYmUgY2FyZWZ1bCB0byBjbG9z ZSByZWxhdGlvbnMsIGRyb3AgYnVmZmVyIHBpbnMsIGV0Yywgc28gd2UgZG8gbmVlZCB0byBzY2Fu CiB0aGUgcGxhbiBzdGF0ZSB0cmVlIHRvIGZpbmQgdGhlc2Ugc29ydHMgb2YgcmVzb3VyY2VzLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMzlkODBjY2ZiYWQuLjA3NjRhNWQ4ODU1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTU1LDExICs1NSwxMyBAQAogI2luY2x1ZGUgInBhcnNl ci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJld3Jp dGUvcmV3cml0ZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRl ICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGls cy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIApAQCAtMTE0 LDExICsxMTYsMTYgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVw cXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAgKiBnZXQgY29udHJvbCB3aGVuIEV4ZWN1dG9yU3Rh cnQgaXMgY2FsbGVkLiAgU3VjaCBhIHBsdWdpbiB3b3VsZAogICogbm9ybWFsbHkgY2FsbCBzdGFu ZGFyZF9FeGVjdXRvclN0YXJ0KCkuCiAgKgorICogUmV0dXJuIHZhbHVlIGluZGljYXRlcyBpZiB0 aGUgcGxhbiBoYXMgYmVlbiBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkgc28KKyAqIHRoYXQgcXVl cnlEZXNjLT5wbGFuc3RhdGUgY29udGFpbnMgYSB2YWxpZCBQbGFuU3RhdGUgdHJlZS4gIEl0IG1h eSBub3QKKyAqIGlmIHRoZSBwbGFuIGdvdCBpbnZhbGlkYXRlZCBkdXJpbmcgSW5pdFBsYW4oKS4K ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqLwotdm9pZAorYm9vbAogRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29sCQlwbGFuX3ZhbGlkOworCiAJLyoKIAkgKiBJ biBzb21lIGNhc2VzIChlLmcuIGFuIEVYRUNVVEUgc3RhdGVtZW50IG9yIGFuIGV4ZWN1dGUgbWVz c2FnZSB3aXRoIHRoZQogCSAqIGV4dGVuZGVkIHF1ZXJ5IHByb3RvY29sKSB0aGUgcXVlcnlfaWQg d29uJ3QgYmUgcmVwb3J0ZWQsIHNvIGRvIGl0IG5vdy4KQEAgLTEzMCwxMiArMTM3LDE0IEBAIEV4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJcGdzdGF0X3Jl cG9ydF9xdWVyeV9pZChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkLCBmYWxzZSk7CiAK IAlpZiAoRXhlY3V0b3JTdGFydF9ob29rKQotCQkoKkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1ZXJ5 RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9ICgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVl cnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQogCi12b2lkCitib29sCiBz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog ewogCUVTdGF0ZQkgICAqZXN0YXRlOwpAQCAtMjU5LDYgKzI2OCw2NCBAQCBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUluaXRQbGFuKHF1 ZXJ5RGVzYywgZWZsYWdzKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK KworCXJldHVybiBFeGVjUGxhblN0aWxsVmFsaWQocXVlcnlEZXNjLT5lc3RhdGUpOworfQorCisv KgorICogRXhlY3V0b3JTdGFydENhY2hlZFBsYW4KKyAqCQlTdGFydCBleGVjdXRpb24gZm9yIGEg Z2l2ZW4gcXVlcnkgaW4gdGhlIENhY2hlZFBsYW5Tb3VyY2UsIHJlcGxhbm5pbmcKKyAqCQlpZiB0 aGUgcGxhbiBpcyBpbnZhbGlkYXRlZCBkdWUgdG8gZGVmZXJyZWQgbG9ja3MgdGFrZW4gZHVyaW5n IHRoZQorICoJCXBsYW4ncyBpbml0aWFsaXphdGlvbgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaGFu ZGxlcyBjYXNlcyB3aGVyZSB0aGUgQ2FjaGVkUGxhbiBnaXZlbiBpbiBxdWVyeURlc2MtPmNwbGFu CisgKiBtaWdodCBiZWNvbWUgaW52YWxpZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRo ZSBwbGFuIGdpdmVuIGluCisgKiBxdWVyeURlc2MtPnBsYW5uZWRzdG10LCBwYXJ0aWN1bGFybHkg d2hlbiBwcnVuYWJsZSByZWxhdGlvbnMgaW4gaXQgYXJlCisgKiBsb2NrZWQgYWZ0ZXIgcGVyZm9y bWluZyBpbml0aWFsIHBydW5pbmcuIElmIHRoZSBsb2NrcyBpbnZhbGlkYXRlIHRoZSBwbGFuLAor ICogdGhlIGZ1bmN0aW9uIGNhbGxzIFVwZGF0ZUNhY2hlZFBsYW4oKSB0byByZXBsYW4gYWxsIHF1 ZXJpZXMgaW4gdGhlCisgKiBDYWNoZWRQbGFuLCBhbmQgdGhlbiByZXRyaWVzIGluaXRpYWxpemF0 aW9uLgorICoKKyAqIFRoZSBmdW5jdGlvbiByZXBlYXRzIHRoZSBwcm9jZXNzIHVudGlsIEV4ZWN1 dG9yU3RhcnQoKSBzdWNjZXNzZnVsbHkKKyAqIGluaXRpYWxpemVzIHRoZSBwbGFuLCB0aGF0IGlz IHdpdGhvdXQgdGhlIENhY2hlZFBsYW4gYmVjb21pbmcgaW52YWxpZC4KKyAqLwordm9pZAorRXhl Y3V0b3JTdGFydENhY2hlZFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJ CQkJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCQkJaW50IHF1ZXJ5X2luZGV4 KQoreworCWlmICh1bmxpa2VseShxdWVyeURlc2MtPmNwbGFuID09IE5VTEwpKQorCQllbG9nKEVS Uk9SLCAiRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTogbWlzc2luZyBDYWNoZWRQbGFuIik7CisJ aWYgKHVubGlrZWx5KHBsYW5zb3VyY2UgPT0gTlVMTCkpCisJCWVsb2coRVJST1IsICJFeGVjdXRv clN0YXJ0Q2FjaGVkUGxhbigpOiBtaXNzaW5nIENhY2hlZFBsYW5Tb3VyY2UiKTsKKworCS8qCisJ ICogTG9vcCBhbmQgcmV0cnkgd2l0aCBhbiB1cGRhdGVkIHBsYW4gdW50aWwgbm8gZnVydGhlciBp bnZhbGlkYXRpb24KKwkgKiBvY2N1cnMuCisJICovCisJd2hpbGUgKDEpCisJeworCQlpZiAoIUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpKQorCQl7CisJCQkvKgorCQkJICogQ2xlYW4g dXAgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlIGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3CisJ CQkgKiBwbGFuIHRvIHJldHJ5IEV4ZWN1dG9yU3RhcnQoKS4gIE1hcmsgZXhlY3V0aW9uIGFzIGFi b3J0ZWQgdG8KKwkJCSAqIGVuc3VyZSB0aGF0IEFGVEVSIHRyaWdnZXIgc3RhdGUgaXMgcHJvcGVy bHkgcmVzZXQuCisJCQkgKi8KKwkJCXF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19hYm9ydGVkID0gdHJ1 ZTsKKwkJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisKKwkJCS8qIFJldHJ5IEV4ZWN1dG9yU3Rh cnQoKSB3aXRoIGFuIHVwZGF0ZWQgcGxhbiB0cmVlLiAqLworCQkJcXVlcnlEZXNjLT5wbGFubmVk c3RtdCA9IFVwZGF0ZUNhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgsCisJCQkJCQkJ CQkJCQkJICBxdWVyeURlc2MtPnF1ZXJ5RW52KTsKKwkJfQorCQllbHNlCisKKwkJCS8qCisJCQkg KiBFeGl0IHRoZSBsb29wIGlmIHRoZSBwbGFuIGlzIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSBh bmQgbm8KKwkJCSAqIHNpbnZhbCBtZXNzYWdlcyB3ZXJlIHJlY2VpdmVkIHRoYXQgaW52YWxpZGF0 ZWQgdGhlIENhY2hlZFBsYW4uCisJCQkgKi8KKwkJCWJyZWFrOworCX0KIH0KIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpAQCAtMzE3LDYgKzM4NCw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLAogCWVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwogCiAJQXNzZXJ0KGVzdGF0ZSAh PSBOVUxMKTsKKwlBc3NlcnQoIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7CiAJQXNzZXJ0KCEoZXN0YXRl LT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCiAJLyogY2FsbGVy IG11c3QgZW5zdXJlIHRoZSBxdWVyeSdzIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwpAQCAtNDIzLDgg KzQ5MSwxMSBAQCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykK IAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOwogCUFzc2VydCghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFn cyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAotCS8qIFRoaXMgc2hvdWxkIGJlIHJ1biBv bmNlIGFuZCBvbmx5IG9uY2UgcGVyIEV4ZWN1dG9yIGluc3RhbmNlICovCi0JQXNzZXJ0KCFlc3Rh dGUtPmVzX2ZpbmlzaGVkKTsKKwkvKgorCSAqIFRoaXMgc2hvdWxkIGJlIHJ1biBvbmNlIGFuZCBv bmx5IG9uY2UgcGVyIEV4ZWN1dG9yIGluc3RhbmNlIGFuZCBuZXZlcgorCSAqIGlmIHRoZSBleGVj dXRpb24gd2FzIGFib3J0ZWQuCisJICovCisJQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkICYm ICFlc3RhdGUtPmVzX2Fib3J0ZWQpOwogCiAJLyogU3dpdGNoIGludG8gcGVyLXF1ZXJ5IG1lbW9y eSBjb250ZXh0ICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUt PmVzX3F1ZXJ5X2N4dCk7CkBAIC00ODcsMTEgKzU1OCwxMCBAQCBzdGFuZGFyZF9FeGVjdXRvckVu ZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAkJCQkJCQkJCQkJIChQZ1N0YXRfQ291bnRlcikgZXN0 YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX2xhdW5jaGVkKTsKIAogCS8qCi0JICogQ2hlY2sgdGhh dCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUu IFRoaXMKLQkgKiBBc3NlcnQgaXMgbmVlZGVkIGJlY2F1c2UgRXhlY3V0b3JGaW5pc2ggaXMgbmV3 IGFzIG9mIDkuMSwgYW5kIGNhbGxlcnMKLQkgKiBtaWdodCBmb3JnZXQgdG8gY2FsbCBpdC4KKwkg KiBDaGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQsIHVubGVzcyBpbiBFWFBMQUlO LW9ubHkgbW9kZSBvciBpZgorCSAqIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KIAkgKi8KLQlBc3Nl cnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fAorCUFzc2VydChlc3RhdGUtPmVzX2ZpbmlzaGVkIHx8 IGVzdGF0ZS0+ZXNfYWJvcnRlZCB8fAogCQkgICAoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhF Q19GTEFHX0VYUExBSU5fT05MWSkpOwogCiAJLyoKQEAgLTUwNSw2ICs1NzUsMTQgQEAgc3RhbmRh cmRfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJVW5yZWdpc3RlclNuYXBzaG90 KGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVzX2Ny b3NzY2hlY2tfc25hcHNob3QpOwogCisJLyoKKwkgKiBSZXNldCBBRlRFUiB0cmlnZ2VyIG1vZHVs ZSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBhYm9ydGVkLgorCSAqLworCWlmIChlc3RhdGUt PmVzX2Fib3J0ZWQgJiYKKwkJIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJgorCQkgIChFWEVDX0ZM QUdfU0tJUF9UUklHR0VSUyB8IEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKSkKKwkJQWZ0ZXJUcmln Z2VyQWJvcnRRdWVyeSgpOworCiAJLyoKIAkgKiBNdXN0IHN3aXRjaCBvdXQgb2YgY29udGV4dCBi ZWZvcmUgZGVzdHJveWluZyBpdAogCSAqLwpAQCAtNjAzLDYgKzY4MSwyMSBAQCBFeGVjQ2hlY2tQ ZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAJCQkJICAg KHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYKIAkJCQkJcnRlLT5yZWxraW5kID09IFJF TEtJTkRfVklFVykpOwogCisJCQkvKgorCQkJICogRW5zdXJlIHRoYXQgd2UgaGF2ZSBhdCBsZWFz dCBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gcmVsYXRpb25zCisJCQkgKiB3aG9zZSBwZXJtaXNzaW9u cyBuZWVkIHRvIGJlIGNoZWNrZWQuCisJCQkgKgorCQkJICogU2tpcCB0aGlzIGNoZWNrIGluIGEg cGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgbG9ja3Mgd29uJ3QgYmUKKwkJCSAqIHRha2VuIHVudGls IEV4ZWNJbml0Tm9kZSgpIHBlcmZvcm1zIHBsYW4gaW5pdGlhbGl6YXRpb24uCisJCQkgKgorCQkJ ICogWFhYOiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIGluIGEgcGFyYWxsZWwgd29ya2VyIG1heSBi ZQorCQkJICogcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrcyBkb25lIGluIHRoZSBsZWFkZXIgcHJv Y2Vzcywgc28gdGhpcworCQkJICogc2hvdWxkIGJlIHJldmlld2VkIHRvIGVuc3VyZSBpdOKAmXMg bmVjZXNzYXJ5LgorCQkJICovCisJCQlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpIHx8CisJCQkJ ICAgQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUocnRlLT5yZWxpZCwgQWNjZXNzU2hhcmVMb2Nr LAorCQkJCQkJCQkJCQkgIHRydWUpKTsKKwogCQkJKHZvaWQpIGdldFJURVBlcm1pc3Npb25JbmZv KHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnktdG8tb25lIG1hcHBpbmcgbm90IGFsbG93 ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihydGUtPnBlcm1pbmZvaW5kZXgsIGluZGV4 c2V0KSk7CkBAIC04MjgsNiArOTIxLDEyIEBAIEV4ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQpCiAgKgogICoJCUluaXRpYWxpemVzIHRoZSBxdWVyeSBwbGFuOiBv cGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9yYWdlCiAgKgkJYW5kIHN0YXJ0IHVwIHRoZSBydWxlIG1h bmFnZXIKKyAqCisgKgkJSWYgdGhlIHBsYW4gb3JpZ2luYXRlcyBmcm9tIGEgQ2FjaGVkUGxhbiAo Z2l2ZW4gaW4gcXVlcnlEZXNjLT5jcGxhbiksCisgKgkJaXQgY2FuIGJlY29tZSBpbnZhbGlkIGR1 cmluZyBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nIHdoZW4gdGhlCisgKgkJcmVtYWluaW5nIHNl dCBvZiBsb2NrcyBpcyB0YWtlbi4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIGVhcmx5IGluIHRoYXQK KyAqCQljYXNlIHdpdGhvdXQgaW5pdGlhbGl6aW5nIHRoZSBwbGFuLCBhbmQgdGhlIGNhbGxlciBp cyBleHBlY3RlZCB0bworICoJCXJldHJ5IHdpdGggYSBuZXcgdmFsaWQgcGxhbi4KICAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqLwogc3RhdGljIHZvaWQKQEAgLTgzNSw2ICs5MzQsNyBAQCBJbml0UGxhbihRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVy eURlc2MtPm9wZXJhdGlvbjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2Mt PnBsYW5uZWRzdG10OworCUNhY2hlZFBsYW4gKmNhY2hlZHBsYW4gPSBxdWVyeURlc2MtPmNwbGFu OwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFu Z2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVy eURlc2MtPmVzdGF0ZTsKQEAgLTg1NSw2ICs5NTUsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQkJICAgYm1zX2NvcHkocGxhbm5lZHN0bXQtPnVucHJ1 bmFibGVSZWxpZHMpKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsK Kwllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBjYWNoZWRwbGFuOwogCWVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKIAogCS8qCkBAIC04NjUs OSArOTY2LDE1IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CSAqIGV4ZWN1dGVkLCBhcmUgc2F2ZWQgaW4gZXNfcGFydF9wcnVuZV9yZXN1bHRzLiAgVGhlc2Ug cmVzdWx0cyBjb3JyZXNwb25kCiAJICogdG8gZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnks IGFuZCB0aGUgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGxpc3QgaXMKIAkgKiBwYXJhbGxlbCB0byBl c19wYXJ0X3BydW5lX2luZm9zLgorCSAqCisJICogVGhpcyB3aWxsIGFsc28gYWRkIHRoZSBSVCBp bmRleGVzIG9mIHN1cnZpdmluZyBsZWFmIHBhcnRpdGlvbnMgdG8KKwkgKiBlc191bnBydW5lZF9y ZWxpZHMuCiAJICovCiAJRXhlY0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKIAorCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybjsKKwogCS8qCiAJICogTmV4dCwgYnVp bGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnku CiAJICovCkBAIC0yODcxLDYgKzI5NzgsOSBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAq ZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqIHRoZSBzbmFwc2hvdCwgcmFuZ2V0YWJsZSwg YW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5IG5lZWQgdGhlaXIgb3duCiAJICogY29waWVz IG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0dXBsZSB0YWJsZSwgZXNfcGFyYW1fZXhlY192 YWxzLAogCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLgorCSAqCisJICogZXNfY2FjaGVkcGxhbiBp cyBub3QgY29waWVkIGJlY2F1c2UgRVBRIHBsYW4gZXhlY3V0aW9uIGRvZXMgbm90IGFjcXVpcmUK KwkgKiBhbnkgbmV3IGxvY2tzIHRoYXQgY291bGQgaW52YWxpZGF0ZSB0aGUgQ2FjaGVkUGxhbi4K IAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAJ cmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFyZW50ZXN0YXRlLT5lc19zbmFwc2hvdDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggMTM0ZmY2MmY1Y2IuLjFiZWRiODA4MzY4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI1OCw4ICsxMjU4LDE1IEBAIEV4 ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2 ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFN TElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFj ZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KKwkvKgorCSAq IENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAgV2UgcGFzcyBOVUxMIGZvciBjYWNo ZWRwbGFuLCBiZWNhdXNlCisJICogd2UgZG9uJ3QgaGF2ZSBhIHBvaW50ZXIgdG8gdGhlIENhY2hl ZFBsYW4gaW4gdGhlIGxlYWRlcidzIHByb2Nlc3MuIEl0J3MKKwkgKiBmaW5lIGJlY2F1c2UgdGhl IG9ubHkgcmVhc29uIHRoZSBleGVjdXRvciBuZWVkcyB0byBzZWUgaXQgaXMgdG8gZGVjaWRlCisJ ICogaWYgaXQgc2hvdWxkIHRha2UgbG9ja3Mgb24gY2VydGFpbiByZWxhdGlvbnMsIGJ1dCBwYXJh bGxlbCB3b3JrZXJzCisJICogYWx3YXlzIHRha2UgbG9ja3MgYW55d2F5LgorCSAqLwogCXJldHVy biBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlT dHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJ CQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAg LTE0NDAsNyArMTQ0Nyw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAogCS8qIFN0YXJ0IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+ cGxhbm5lZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+aml0X2ZsYWdzOwotCUV4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBmcGVzLT5lZmxhZ3MpOworCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IGZwZXMtPmVmbGFncykpCisJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVu ZXhwZWN0ZWRseSIpOwogCiAJLyogU3BlY2lhbCBleGVjdXRvciBpbml0aWFsaXphdGlvbiBzdGVw cyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlLT5zdGF0ZS0+ ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRl eCBiNmU4OWQwNjIwZC4uNDMyZWVhZjkwMzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2Mu aCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydHBydW5lLmgiCiAjaW5jbHVkZSAicmV3cml0 ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9wYXJ0Y2FjaGUuaCIKQEAgLTE3NjgsNyArMTc2OSw4IEBAIGFkanVzdF9wYXJ0aXRpb25fY29s bm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKiBFeGVjRG9J bml0aWFsUHJ1bmluZzoKICAqCQlQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlm IG5lY2Vzc2FyeSwgdG8gZGV0ZXJtaW5lIHRoZSBzZXQKICAqCQlvZiBjaGlsZCBzdWJub2RlcyB0 aGF0IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgotICoJ CWFsbCBwbGFuIG5vZGVzIHRoYXQgY29udGFpbiBhIFBhcnRpdGlvblBydW5lSW5mby4KKyAqCQlh bGwgcGxhbiBub2RlcyB0aGF0IGNvbnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8uICBUaGlzIGFs c28gbG9ja3MgdGhlCisgKgkJbGVhZiBwYXJ0aXRpb25zIHdob3NlIHN1Ym5vZGVzIHdpbGwgYmUg aW5pdGlhbGl6ZWQgaWYgbmVlZGVkLgogICoKICAqIEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5p bmc6CiAgKgkJVXBkYXRlcyB0aGUgUGFydGl0aW9uUHJ1bmVTdGF0ZSBmb3VuZCBhdCBnaXZlbiBw YXJ0X3BydW5lX2luZGV4IGluCkBAIC0xNzg5LDExICsxNzkxLDEzIEBAIGFkanVzdF9wYXJ0aXRp b25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqLwogCisKIC8qCiAgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZwogICoJ CVBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVjZXNzYXJ5LCB0byBkZXRl cm1pbmUgdGhlIHNldAogICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQgbmVlZCB0byBiZSBpbml0 aWFsaXplZCBkdXJpbmcgRXhlY0luaXROb2RlKCkgZm9yCi0gKgkJcGxhbiBub2RlcyB0aGF0IHN1 cHBvcnQgcGFydGl0aW9uIHBydW5pbmcuCisgKgkJcGxhbiBub2RlcyB0aGF0IHN1cHBvcnQgcGFy dGl0aW9uIHBydW5pbmcuICBUaGlzIGFsc28gbG9ja3MgdGhlIGxlYWYKKyAqCQlwYXJ0aXRpb25z IHdob3NlIHN1Ym5vZGVzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaWYgbmVlZGVkLgogICoKICAqIFRo aXMgZnVuY3Rpb24gaXRlcmF0ZXMgb3ZlciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBp bgogICogZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3Jl YXRlcyBhIFBhcnRpdGlvblBydW5lU3RhdGUKQEAgLTE4MTYsNiArMTgyMCw3IEBAIHZvaWQKIEV4 ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogewogCUxpc3RDZWxsICAgKmxjOwor CUxpc3QJICAgKmxvY2tlZF9yZWxpZHMgPSBOSUw7CiAKIAlmb3JlYWNoKGxjLCBlc3RhdGUtPmVz X3BhcnRfcHJ1bmVfaW5mb3MpCiAJewpAQCAtMTg0MSwxMSArMTg0Niw0MCBAQCBFeGVjRG9Jbml0 aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJZWxzZQogCQkJdmFsaWRzdWJwbGFuX3J0aXMg PSBhbGxfbGVhZnBhcnRfcnRpczsKIAorCQlpZiAoRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoZXN0 YXRlKSkKKwkJeworCQkJaW50CQkJcnRpbmRleCA9IC0xOworCisJCQl3aGlsZSAoKHJ0aW5kZXgg PSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFuX3J0aXMsCisJCQkJCQkJCQkJCSAgcnRpbmRl eCkpID49IDApCisJCQl7CisJCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChy dGluZGV4LCBlc3RhdGUpOworCisJCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJ T04gJiYKKwkJCQkJICAgcnRlLT5yZWxsb2NrbW9kZSAhPSBOb0xvY2spOworCQkJCUxvY2tSZWxh dGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJCQlsb2NrZWRfcmVsaWRz ID0gbGFwcGVuZF9pbnQobG9ja2VkX3JlbGlkcywgcnRpbmRleCk7CisJCQl9CisJCX0KIAkJZXN0 YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoZXN0YXRlLT5lc191bnBy dW5lZF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIHZhbGlkc3VicGxhbl9ydGlzKTsKIAkJZXN0YXRl LT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9y ZXN1bHRzLAogCQkJCQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CiAJfQorCisJLyoKKwkgKiBSZWxl YXNlIHRoZSB1c2VsZXNzIGxvY2tzIGlmIHRoZSBwbGFuIHdvbid0IGJlIGV4ZWN1dGVkLiAgVGhp cyBpcyB0aGUKKwkgKiBzYW1lIGFzIHdoYXQgQ2hlY2tDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hl LmMgZG9lcy4KKwkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJ Zm9yZWFjaChsYywgbG9ja2VkX3JlbGlkcykKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0g ZXhlY19ydF9mZXRjaChsZmlyc3RfaW50KGxjKSwgZXN0YXRlKTsKKworCQkJVW5sb2NrUmVsYXRp b25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwl9CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDQ0OGZjMDlhYWFjLi4zOWQ2ZjRkODE5ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE0Nyw2ICsxNDcsNyBAQCBDcmVhdGVFeGVjdXRv clN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2lu c3RydW1lbnQgPSAwOwogCWVzdGF0ZS0+ZXNfZmluaXNoZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVz X2Fib3J0ZWQgPSBmYWxzZTsKIAogCWVzdGF0ZS0+ZXNfZXhwcmNvbnRleHRzID0gTklMOwogCkBA IC04MTMsNiArODE0LDEwIEBAIEV4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlz dCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zLAogICoJCU9wZW4gdGhlIFJlbGF0aW9uIGZv ciBhIHJhbmdlIHRhYmxlIGVudHJ5LCBpZiBub3QgYWxyZWFkeSBkb25lCiAgKgogICogVGhlIFJl bGF0aW9ucyB3aWxsIGJlIGNsb3NlZCBpbiBFeGVjRW5kUGxhbigpLgorICoKKyAqIE5vdGU6IFRo ZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCAncnRpJyByZWZlcnMgdG8gYW4gdW5wcnVuZWQgcmVs YXRpb24KKyAqIChpLmUuLCBpdCBpcyBhIG1lbWJlciBvZiBlc3RhdGUtPmVzX3VucHJ1bmVkX3Jl bGlkcykgYmVmb3JlIGNhbGxpbmcgdGhpcworICogZnVuY3Rpb24uIEF0dGVtcHRpbmcgdG8gb3Bl biBhIHBydW5lZCByZWxhdGlvbiB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4KICAqLwogUmVsYXRp b24KIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkK QEAgLTgyMSw2ICs4MjYsOSBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0 YXRlLCBJbmRleCBydGkpCiAKIAlBc3NlcnQocnRpID4gMCAmJiBydGkgPD0gZXN0YXRlLT5lc19y YW5nZV90YWJsZV9zaXplKTsKIAorCWlmICghYm1zX2lzX21lbWJlcihydGksIGVzdGF0ZS0+ZXNf dW5wcnVuZWRfcmVsaWRzKSkKKwkJZWxvZyhFUlJPUiwgInRyeWluZyB0byBvcGVuIGEgcHJ1bmVk IHJlbGF0aW9uIik7CisKIAlyZWwgPSBlc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXTsKIAlp ZiAocmVsID09IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVu Y3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA3NTdmODA2 OGUyMS4uNmFhOGU5YzRkOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0 aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDAsNiAr ODQwLDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25D YWNoZVB0ciBmY2FjaGUpCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJZXMtPnFkID0gQ3Jl YXRlUXVlcnlEZXNjKGVzLT5zdG10LAorCQkJCQkJCSBOVUxMLAogCQkJCQkJCSBmY2FjaGUtPnNy YywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90 LApAQCAtODY0LDcgKzg2NSw4IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMs IFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBf VFJJR0dFUlM7CiAJCWVsc2UKIAkJCWVmbGFncyA9IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29t cGxldGlvbiBmbGFncyAqLwotCQlFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKwkJaWYg KCFFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKSkKKwkJCWVsb2coRVJST1IsICJFeGVjdXRv clN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VY RUNfUlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYwppbmRleCBlY2IyZTRjY2FhMS4uMzI4ODM5NmRlZjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jCkBAIC03MCw3ICs3MCw4IEBAIHN0YXRpYyBpbnQJX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIHN0YXRp YyBQYXJhbUxpc3RJbmZvIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5 cGVzLAogCQkJCQkJCQkJCSBEYXR1bSAqVmFsdWVzLCBjb25zdCBjaGFyICpOdWxscyk7CiAKLXN0 YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmln Z2VycywgdWludDY0IHRjb3VudCk7CitzdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQsCisJCQkJCQlDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpOwogCiBzdGF0aWMgdm9p ZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiAKQEAgLTE2ODUsNyArMTY4Niw4IEBA IFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBs YW4sCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBsYW5zb3VyY2UtPmNvbW1hbmRUYWcs CiAJCQkJCSAgc3RtdF9saXN0LAotCQkJCQkgIGNwbGFuKTsKKwkJCQkJICBjcGxhbiwKKwkJCQkJ ICBwbGFuc291cmNlKTsKIAogCS8qCiAJICogU2V0IHVwIG9wdGlvbnMgZm9yIHBvcnRhbC4gIERl ZmF1bHQgU0NST0xMIHR5cGUgaXMgY2hvc2VuIHRoZSBzYW1lIHdheQpAQCAtMjUwMCw2ICsyNTAy LDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRl T3B0aW9ucyAqb3B0aW9ucywKIAkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSA9IChDYWNo ZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEpOwogCQlMaXN0CSAgICpzdG10X2xpc3Q7CiAJCUxp c3RDZWxsICAgKmxjMjsKKwkJaW50CQkJcXVlcnlfaW5kZXggPSAwOwogCiAJCXNwaWNhbGxiYWNr YXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0yNjkwLDE0ICsyNjkz LDE2IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0 ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkJCQlx ZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCWNwbGFuLAogCQkJCQkJCQkJ CXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNrX3Nu YXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCiAJCQkJCQkJCQkJb3B0aW9ucy0+cGFyYW1zLAogCQkJ CQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7Ci0JCQkJcmVzID0g X1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAgY2FuU2V0VGFnID8g b3B0aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmly ZV90cmlnZ2VycywgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDogMCwKKwkJCQkJCQkJICBw bGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJCQl9 CiAJCQllbHNlCkBAIC0yNzk0LDYgKzI3OTksOCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFu UHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCW15X3JlcyA9 IHJlczsKIAkJCQlnb3RvIGZhaWw7CiAJCQl9CisKKwkJCXF1ZXJ5X2luZGV4Kys7CiAJCX0KIAog CQkvKiBEb25lIHdpdGggdGhpcyBwbGFuLCBzbyByZWxlYXNlIHJlZmNvdW50ICovCkBAIC0yODcx LDcgKzI4NzgsOCBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBl cywKIH0KIAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJv b2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQsCisJCQlDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpCiB7CiAJaW50CQkJb3BlcmF0 aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJaW50CQkJZWZsYWdzOwpAQCAtMjkyNyw3ICsy OTM1LDE2IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJp Z2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJZWxzZQogCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9U UklHR0VSUzsKIAotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCWlmIChxdWVy eURlc2MtPmNwbGFuKQorCXsKKwkJRXhlY3V0b3JTdGFydENhY2hlZFBsYW4ocXVlcnlEZXNjLCBl ZmxhZ3MsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsKKwkJQXNzZXJ0KHF1ZXJ5RGVzYy0+cGxh bnN0YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg ZWZsYWdzKSkKKwkJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0 ZWRseSIpOworCX0KIAogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rp b24sIHRjb3VudCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBi L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCA1NjU1MzQ4YTJlMi4uZjYwZjI3ODVi YzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMjQsNiArMTIyNCw3IEBAIGV4ZWNfc2ltcGxlX3F1 ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJ CQkJICBjb21tYW5kVGFnLAogCQkJCQkJICBwbGFudHJlZV9saXN0LAorCQkJCQkJICBOVUxMLAog CQkJCQkJICBOVUxMKTsKIAogCQkvKgpAQCAtMjAyNSw3ICsyMDI2LDggQEAgZXhlY19iaW5kX21l c3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJ CQkJICBwc3JjLT5jb21tYW5kVGFnLAogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAg Y3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIHBzcmMpOwogCiAJLyogRG9uZSB3aXRoIHRo ZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJhbWV0ZXIgSS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICov CiAJaWYgKHNuYXBzaG90X3NldCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDZmMjI0OTYzMDVhLi5kZWEyNDQ1 M2E2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv eGFjdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKKyNpbmNsdWRlICJleGVjdXRv ci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKQEAgLTM2LDYgKzM3LDkg QEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAKIHN0YXRpYyB2b2lkIFByb2Nlc3NR dWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCQkJCSBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkJ CSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCQkJIGludCBxdWVyeV9pbmRleCwK IAkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFy YW1zLAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtNjUsNiArNjksNyBA QCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlE ZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJQ2Fj aGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hv dCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiAr ODIsNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQt Pm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJ cWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+Y3BsYW4gPSBj cGxhbjsJCQkvKiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUgcGxhbm5lZHN0bXQgKi8KIAlxZC0+ c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3Qg PSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVj ayBzbmFwc2hvdCAqLwpAQCAtMTIyLDYgKzEyOCw5IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNj ICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9SVEFMX09ORV9NT0RfV0lU SCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0aGUgcXVlcnkKKyAqCWNw bGFuOiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUgcGxhbgorICoJcGxhbnNvdXJjZTogQ2FjaGVk UGxhblNvdXJjZSBzdXBwbHlpbmcgdGhlIGNwbGFuCisgKglxdWVyeV9pbmRleDogaW5kZXggb2Yg dGhlIHF1ZXJ5IGluIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QKICAqCXNvdXJjZVRleHQ6IHRoZSBz b3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVk CiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNCw2ICsxNDMsOSBAQCBGcmVl UXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVl cnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCSBpbnQgcXVlcnlfaW5kZXgsCiAJCQkgY29uc3Qg Y2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSwxNCArMTU3LDIzIEBAIFByb2Nlc3NRdWVyeShQ bGFubmVkU3RtdCAqcGxhbiwKIAkvKgogCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAog CSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAorCXF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBjcGxhbiwgc291cmNlVGV4dCwKIAkJCQkJ CQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBw YXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAogCS8qCi0JICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHBy ZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCSAqIFByZXBhcmUgdGhlIHBsYW4gZm9yIGV4 ZWN1dGlvbgogCSAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlpZiAocXVlcnlE ZXNjLT5jcGxhbikKKwl7CisJCUV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKHF1ZXJ5RGVzYywgMCwg cGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOworCQlBc3NlcnQocXVlcnlEZXNjLT5wbGFuc3RhdGUp OworCX0KKwllbHNlCisJeworCQlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKSkKKwkJ CWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOworCX0K IAogCS8qCiAJICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24uCkBAIC00OTMsNiArNTE0LDcg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJ ICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRz KSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VU ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlk U25hcHNob3QsCkBAIC01MTIsOSArNTM0LDE5IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWws IFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAogCQkJCS8q Ci0JCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1 dGlvbgorCQkJCSAqIFByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4KIAkJCQkgKi8KLQkJ CQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpOworCQkJCWlmIChwb3J0YWwtPmNw bGFuKQorCQkJCXsKKwkJCQkJRXhlY3V0b3JTdGFydENhY2hlZFBsYW4ocXVlcnlEZXNjLCBteWVm bGFncywKKwkJCQkJCQkJCQkJcG9ydGFsLT5wbGFuc291cmNlLCAwKTsKKwkJCQkJQXNzZXJ0KHF1 ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaWYgKCFF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpKQorCQkJCQkJZWxvZyhFUlJPUiwgIkV4 ZWN1dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CisJCQkJfQogCiAJCQkJLyoKIAkJ CQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgpA QCAtMTE4OCw2ICsxMjIwLDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIHsKIAli b29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqc3RtdGxpc3Rf aXRlbTsKKwlpbnQJCQlxdWVyeV9pbmRleCA9IDA7CiAKIAkvKgogCSAqIElmIHRoZSBkZXN0aW5h dGlvbiBpcyBEZXN0UmVtb3RlRXhlY3V0ZSwgY2hhbmdlIHRvIERlc3ROb25lLiAgVGhlCkBAIC0x MjY5LDYgKzEzMDIsOSBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJewogCQkJ CS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KIAkJCQlQcm9jZXNzUXVlcnkocHN0 bXQsCisJCQkJCQkJIHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJIHBvcnRhbC0+cGxhbnNvdXJjZSwK KwkJCQkJCQkgcXVlcnlfaW5kZXgsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJ CQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBAIC0x Mjc4LDYgKzEzMTQsOSBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJewogCQkJ CS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwogCQkJCVByb2Nlc3NR dWVyeShwc3RtdCwKKwkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKKwkJCQkJCQkgcG9ydGFsLT5wbGFu c291cmNlLAorCQkJCQkJCSBxdWVyeV9pbmRleCwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0 LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVu diwKQEAgLTEzNDIsNiArMTM4MSw4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ CSAqLwogCQlpZiAobG5leHQocG9ydGFsLT5zdG10cywgc3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkK IAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJcXVlcnlfaW5kZXgrKzsKIAl9CiAK IAkvKiBQb3AgdGhlIHNuYXBzaG90IGlmIHdlIHB1c2hlZCBvbmUuICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jCmluZGV4IDU1ZGI4ZjUzNzA1Li43ZmZkOWRhZmFlMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTEwMSw3ICsxMDEsOCBAQCBzdGF0aWMgZGxpc3Rf aGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQoY2FjaGVkX2V4 cHJlc3Npb25fbAogCiBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0JCQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKKwkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJ CQkJCSAgIGJvb2wgcmVsZWFzZV9nZW5lcmljKTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWls ZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJ CQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52KTsKQEAgLTU3OCwxMCArNTc5LDE3IEBAIFJlbGVhc2VHZW5lcmljUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlKQogICogVGhlIHJlc3VsdCB2YWx1ZSBpcyB0aGUgdHJhbnNp ZW50IGFuYWx5emVkLWFuZC1yZXdyaXR0ZW4gcXVlcnkgdHJlZSBpZiB3ZQogICogaGFkIHRvIGRv IHJlLWFuYWx5c2lzLCBhbmQgTklMIG90aGVyd2lzZS4gIChUaGlzIGlzIHJldHVybmVkIGp1c3Qg dG8gc2F2ZQogICogYSB0cmVlIGNvcHlpbmcgc3RlcCBpbiBhIHN1YnNlcXVlbnQgQnVpbGRDYWNo ZWRQbGFuIGNhbGwuKQorICoKKyAqIFRoaXMgYWxzbyByZWxlYXNlcyBhbmQgZHJvcHMgdGhlIGdl bmVyaWMgcGxhbiAocGxhbnNvdXJjZS0+Z3BsYW4pLCBpZiBhbnksCisgKiBhcyBtb3N0IGNhbGxl cnMgd2lsbCB0eXBpY2FsbHkgYnVpbGQgYSBuZXcgQ2FjaGVkUGxhbiBmb3IgdGhlIHBsYW5zb3Vy Y2UKKyAqIHJpZ2h0IGFmdGVyIHRoaXMuIEhvd2V2ZXIsIHdoZW4gY2FsbGVkIGZyb20gVXBkYXRl Q2FjaGVkUGxhbigpLCB0aGUKKyAqIGZ1bmN0aW9uIGRvZXMgbm90IHJlbGVhc2UgdGhlIGdlbmVy aWMgcGxhbiwgYXMgVXBkYXRlQ2FjaGVkUGxhbigpIHVwZGF0ZXMKKyAqIGFuIGV4aXN0aW5nIENh Y2hlZFBsYW4gaW4gcGxhY2UuCiAgKi8KIHN0YXRpYyBMaXN0ICoKIFJldmFsaWRhdGVDYWNoZWRR dWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAotCQkJCQkgIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52KQorCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkg IGJvb2wgcmVsZWFzZV9nZW5lcmljKQogewogCWJvb2wJCXNuYXBzaG90X3NldDsKIAlSYXdTdG10 ICAgICpyYXd0cmVlOwpAQCAtNjc4LDggKzY4Niw5IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHFjeHQp OwogCX0KIAotCS8qIERyb3AgdGhlIGdlbmVyaWMgcGxhbiByZWZlcmVuY2UgaWYgYW55ICovCi0J UmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOworCS8qIERyb3AgdGhlIGdlbmVyaWMgcGxh biByZWZlcmVuY2UsIGlmIGFueSwgYW5kIGlmIHJlcXVlc3RlZCAqLworCWlmIChyZWxlYXNlX2dl bmVyaWMpCisJCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKIAogCS8qCiAJICogTm93 IHJlLWRvIHBhcnNlIGFuYWx5c2lzIGFuZCByZXdyaXRlLiAgVGhpcyBub3QgaW5jaWRlbnRhbGx5 IGFjcXVpcmVzCkBAIC04MTUsOCArODI0LDExIEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNh bGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVyeXRy ZWUgaXMgdXAgdG8gZGF0ZS4KICAqCi0gKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNx dWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBkbyB0 aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKKyAq IE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCBsb2NrcyBvbiB0aGUgInVucHJ1 bmFibGVSZWxpZHMiIHNldAorICogZm9yIGFsbCBwbGFucyBpbiBwbGFuc291cmNlLT5zdG10X2xp c3QuIEhvd2V2ZXIsIHRoZSBwbGFucyBhcmUgbm90IGZ1bGx5CisgKiByYWNlLWNvbmRpdGlvbi1m cmVlIHVudGlsIHRoZSBleGVjdXRvciBhY3F1aXJlcyBsb2NrcyBvbiB0aGUgcHJ1bmFibGUKKyAq IHJlbGF0aW9ucyB0aGF0IHN1cnZpdmUgaW5pdGlhbCBydW50aW1lIHBydW5pbmcgZHVyaW5nIGV4 ZWN1dG9yCisgKiBpbml0aWFsaXphdGlvbi4KICAqLwogc3RhdGljIGJvb2wKIENoZWNrQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQpAQCAtODcwLDcgKzg4MiwxMSBAQCBD aGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAkJICovCiAJCWlm IChwbGFuLT5pc192YWxpZCkKIAkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFu ZCBsb2NrZWQgdGhlIHF1ZXJ5LiAqLworCQkJLyoKKwkJCSAqIFN1Y2Nlc3NmdWxseSByZXZhbGlk YXRlZCBhbmQgbG9ja2VkIHRoZSBxdWVyeS4gIFNldCBpc19yZXVzZWQKKwkJCSAqIHRvIHRydWUg c28gdGhhdCBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKCkgcmV0dXJucyB0cnVlLgorCQkJICov CisJCQlwbGFuLT5pc19yZXVzZWQgPSB0cnVlOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KIApAQCAt ODk1LDEyICs5MTEsMTQgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpCiAgKiBUbyBidWlsZCBhIGdlbmVyaWMsIHBhcmFtZXRlci12YWx1ZS1pbmRlcGVuZGVu dCBwbGFuLCBwYXNzIE5VTEwgZm9yCiAgKiBib3VuZFBhcmFtcy4gIFRvIGJ1aWxkIGEgY3VzdG9t IHBsYW4sIHBhc3MgdGhlIGFjdHVhbCBwYXJhbWV0ZXIgdmFsdWVzIHZpYQogICogYm91bmRQYXJh bXMuICBGb3IgYmVzdCBlZmZlY3QsIHRoZSBQQVJBTV9GTEFHX0NPTlNUIGZsYWcgc2hvdWxkIGJl IHNldCBvbgotICogZWFjaCBwYXJhbWV0ZXIgdmFsdWU7IG90aGVyd2lzZSB0aGUgcGxhbm5lciB3 aWxsIHRyZWF0IHRoZSB2YWx1ZSBhcyBhCi0gKiBoaW50IHJhdGhlciB0aGFuIGEgaGFyZCBjb25z dGFudC4KKyAqIGVhY2ggcGFyYW1ldGVyIHZhbHVlOyBvdGhlcndpc2UgdGhlIHBsYW5uZXIgd2ls bCB0cmVhdCB0aGUgdmFsdWUgYXMgYSBoaW50CisgKiByYXRoZXIgdGhhbiBhIGhhcmQgY29uc3Rh bnQuCiAgKgogICogUGxhbm5pbmcgd29yayBpcyBkb25lIGluIHRoZSBjYWxsZXIncyBtZW1vcnkg Y29udGV4dC4gIFRoZSBmaW5pc2hlZCBwbGFuCiAgKiBpcyBpbiBhIGNoaWxkIG1lbW9yeSBjb250 ZXh0LCB3aGljaCB0eXBpY2FsbHkgc2hvdWxkIGdldCByZXBhcmVudGVkCiAgKiAodW5sZXNzIHRo aXMgaXMgYSBvbmUtc2hvdCBwbGFuLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IGNvcHkgdGhlIHBs YW4pLgorICoKKyAqIE5vdGU6IFdoZW4gY2hhbmdpbmcgdGhpcywgeW91IHNob3VsZCBhbHNvIGxv b2sgYXQgVXBkYXRlQ2FjaGVkUGxhbigpLgogICovCiBzdGF0aWMgQ2FjaGVkUGxhbiAqCiBCdWls ZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCkBA IC05MTEsNiArOTI5LDcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIExpc3QgKnFsaXN0LAogCWJvb2wJCXNuYXBzaG90X3NldDsKIAlib29sCQlpc190cmFu c2llbnQ7CiAJTWVtb3J5Q29udGV4dCBwbGFuX2NvbnRleHQ7CisJTWVtb3J5Q29udGV4dCBzdG10 X2NvbnRleHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gQ3VycmVudE1lbW9yeUNv bnRleHQ7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAgLTkyOCw3ICs5NDcsNyBAQCBCdWlsZENhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJICogbGV0 J3MgdHJlYXQgaXQgYXMgcmVhbCBhbmQgcmVkbyB0aGUgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IGNh bGwuCiAJICovCiAJaWYgKCFwbGFuc291cmNlLT5pc192YWxpZCkKLQkJcWxpc3QgPSBSZXZhbGlk YXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYpOworCQlxbGlzdCA9IFJldmFsaWRh dGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgdHJ1ZSk7CiAKIAkvKgogCSAqIElm IHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIGNvcHkgb2YgdGhlIHF1ZXJ5dHJlZSBsaXN0IHRoYXQg Y2FuIGJlCkBAIC05NjcsMTAgKzk4NiwxOSBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAK IAkvKgotCSAqIE5vcm1hbGx5IHdlIG1ha2UgYSBkZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQgZm9y IHRoZSBDYWNoZWRQbGFuIGFuZCBpdHMKLQkgKiBzdWJzaWRpYXJ5IGRhdGEuICAoSXQncyBwcm9i YWJseSBub3QgZ29pbmcgdG8gYmUgbGFyZ2UsIGJ1dCBqdXN0IGluCi0JICogY2FzZSwgYWxsb3cg aXQgdG8gZ3JvdyBsYXJnZS4gIEl0J3MgdHJhbnNpZW50IGZvciB0aGUgbW9tZW50LikgIEJ1dCBm b3IKLQkgKiBhIG9uZS1zaG90IHBsYW4sIHdlIGp1c3QgbGVhdmUgaXQgaW4gdGhlIGNhbGxlcidz IG1lbW9yeSBjb250ZXh0LgorCSAqIE5vcm1hbGx5LCB3ZSBjcmVhdGUgYSBkZWRpY2F0ZWQgbWVt b3J5IGNvbnRleHQgZm9yIHRoZSBDYWNoZWRQbGFuIGFuZAorCSAqIGl0cyBzdWJzaWRpYXJ5IGRh dGEuIEFsdGhvdWdoIGl0J3MgdXN1YWxseSBub3QgdmVyeSBsYXJnZSwgdGhlIGNvbnRleHQKKwkg KiBpcyBkZXNpZ25lZCB0byBhbGxvdyBncm93dGggaWYgbmVjZXNzYXJ5LgorCSAqCisJICogVGhl IFBsYW5uZWRTdG10cyBhcmUgc3RvcmVkIGluIGEgc2VwYXJhdGUgY2hpbGQgY29udGV4dCAoc3Rt dF9jb250ZXh0KQorCSAqIG9mIHRoZSBDYWNoZWRQbGFuJ3MgbWVtb3J5IGNvbnRleHQuIFRoaXMg c2VwYXJhdGlvbiBhbGxvd3MKKwkgKiBVcGRhdGVDYWNoZWRQbGFuKCkgdG8gZnJlZSBhbmQgcmVw bGFjZSB0aGUgUGxhbm5lZFN0bXRzIHdpdGhvdXQKKwkgKiBhZmZlY3RpbmcgdGhlIENhY2hlZFBs YW4gc3RydWN0dXJlIG9yIGl0cyBzdG10X2xpc3QgTGlzdC4KKwkgKgorCSAqIEZvciBvbmUtc2hv dCBwbGFucywgd2UgaW5zdGVhZCB1c2UgdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LCBhcyB0 aGUKKwkgKiBDYWNoZWRQbGFuIHdpbGwgbm90IHBlcnNpc3QuICBzdG10X2NvbnRleHQgd2lsbCBi ZSBzZXQgdG8gTlVMTCBpbiB0aGlzCisJICogY2FzZSwgYmVjYXVzZSBVcGRhdGVDYWNoZWRQbGFu KCkgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQgb24gYSBvbmUtc2hvdAorCSAqIHBsYW4uCiAJICov CiAJaWYgKCFwbGFuc291cmNlLT5pc19vbmVzaG90KQogCXsKQEAgLTk3OSwxMiArMTAwNywxNyBA QCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxp c3QsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9TVEFSVF9TTUFMTF9TSVpFUyk7CiAJCU1lbW9yeUNv bnRleHRDb3B5QW5kU2V0SWRlbnRpZmllcihwbGFuX2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1ZXJ5 X3N0cmluZyk7CiAKLQkJLyoKLQkJICogQ29weSBwbGFuIGludG8gdGhlIG5ldyBjb250ZXh0Lgot CQkgKi8KLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5fY29udGV4dCk7CisJCXN0bXRfY29u dGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJ CQkJCQkJICJDYWNoZWRQbGFuIFBsYW5uZWRTdG10cyIsCisJCQkJCQkJCQkJCSBBTExPQ1NFVF9T VEFSVF9TTUFMTF9TSVpFUyk7CisJCU1lbW9yeUNvbnRleHRDb3B5QW5kU2V0SWRlbnRpZmllcihz dG10X2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZyk7CisJCU1lbW9yeUNvbnRleHRT ZXRQYXJlbnQoc3RtdF9jb250ZXh0LCBwbGFuX2NvbnRleHQpOwogCisJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhzdG10X2NvbnRleHQpOwogCQlwbGlzdCA9IGNvcHlPYmplY3QocGxpc3QpOworCisJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFuX2NvbnRleHQpOworCQlwbGlzdCA9IGxpc3RfY29w eShwbGlzdCk7CiAJfQogCWVsc2UKIAkJcGxhbl9jb250ZXh0ID0gQ3VycmVudE1lbW9yeUNvbnRl eHQ7CkBAIC0xMDI1LDggKzEwNTgsMTAgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQlwbGFuLT5zYXZlZF94bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJcGxhbi0+cmVmY291bnQgPSAwOwogCXBsYW4tPmNvbnRleHQgPSBw bGFuX2NvbnRleHQ7CisJcGxhbi0+c3RtdF9jb250ZXh0ID0gc3RtdF9jb250ZXh0OwogCXBsYW4t PmlzX29uZXNob3QgPSBwbGFuc291cmNlLT5pc19vbmVzaG90OwogCXBsYW4tPmlzX3NhdmVkID0g ZmFsc2U7CisJcGxhbi0+aXNfcmV1c2VkID0gZmFsc2U7CiAJcGxhbi0+aXNfdmFsaWQgPSB0cnVl OwogCiAJLyogYXNzaWduIGdlbmVyYXRpb24gbnVtYmVyIHRvIG5ldyBwbGFuICovCkBAIC0xMDM3 LDYgKzEwNzIsMTEzIEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLCBMaXN0ICpxbGlzdCwKIAlyZXR1cm4gcGxhbjsKIH0KIAorLyoKKyAqIFVwZGF0ZUNhY2hl ZFBsYW4KKyAqCQlDcmVhdGUgZnJlc2ggcGxhbnMgZm9yIGFsbCBxdWVyaWVzIGluIHRoZSBDYWNo ZWRQbGFuU291cmNlLCByZXBsYWNpbmcKKyAqCQl0aG9zZSBpbiB0aGUgZ2VuZXJpYyBwbGFuJ3Mg c3RtdF9saXN0LCBhbmQgcmV0dXJuIHRoZSBwbGFuIGZvciB0aGUKKyAqCQlxdWVyeV9pbmRleCd0 aCBxdWVyeS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHByaW1hcmlseSB1c2VkIGJ5IEV4ZWN1 dG9yU3RhcnRDYWNoZWRQbGFuKCkgdG8gaGFuZGxlCisgKiBjYXNlcyB3aGVyZSB0aGUgb3JpZ2lu YWwgZ2VuZXJpYyBDYWNoZWRQbGFuIGJlY29tZXMgaW52YWxpZC4gU3VjaAorICogaW52YWxpZGF0 aW9uIG1heSBvY2N1ciB3aGVuIHBydW5hYmxlIHJlbGF0aW9ucyBpbiB0aGUgb2xkIHBsYW4gZm9y IHRoZQorICogcXVlcnlfaW5kZXgndGggcXVlcnkgYXJlIGxvY2tlZCBpbiBwcmVwYXJhdGlvbiBm b3IgZXhlY3V0aW9uLgorICoKKyAqIE5vdGUgdGhhdCBpbnZhbGlkYXRpb25zIHJlY2VpdmVkIGR1 cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBxdWVyeV9pbmRleCd0aAorICogcXVlcnkgY2FuIGFm ZmVjdCBib3RoIHRoZSBxdWVyaWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkIGV4ZWN1dGlv bgorICogKGUuZy4sIGR1ZSB0byBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgb24gcHJ1bmFibGUg cmVsYXRpb25zIHRoYXQgd2VyZSBub3QKKyAqIGxvY2tlZCBkdXJpbmcgdGhlaXIgZXhlY3V0aW9u KSBhbmQgYWxzbyB0aGUgcXVlcmllcyB0aGF0IGhhdmUgbm90IHlldCBiZWVuCisgKiBleGVjdXRl ZC4gIEFzIGEgcmVzdWx0LCB0aGlzIGZ1bmN0aW9uIHVwZGF0ZXMgYWxsIHBsYW5zIHRvIGVuc3Vy ZQorICogQ2FjaGVkUGxhbi5pc192YWxpZCBpcyBzYWZlbHkgc2V0IHRvIHRydWUuCisgKgorICog VGhlIG9sZCBQbGFubmVkU3RtdHMgaW4gcGxhbnNvdXJjZS0+Z3BsYW4tPnN0bXRfbGlzdCBhcmUg ZnJlZWQgaGVyZSwgc28KKyAqIHRoZSBjYWxsZXIgYW5kIGFueSBvZiBpdHMgY2FsbGVycyBtdXN0 IG5vdCByZWx5IG9uIHRoZW0gcmVtYWluaW5nIGFjY2Vzc2libGUKKyAqIGFmdGVyIHRoaXMgZnVu Y3Rpb24gaXMgY2FsbGVkLgorICovCitQbGFubmVkU3RtdCAqCitVcGRhdGVDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCwKKwkJCQkgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJTGlzdAkgICAqcXVlcnlfbGlzdCA9IHBsYW5zb3Vy Y2UtPnF1ZXJ5X2xpc3QsCisJCQkgICAqcGxhbl9saXN0OworCUxpc3RDZWxsICAgKmwxLAorCQkJ ICAgKmwyOworCUNhY2hlZFBsYW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKKwlNZW1vcnlD b250ZXh0IG9sZGN4dDsKKworCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNh bml0eSBjaGVja3MgKi8KKwlpZiAocGxhbiA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAiVXBkYXRl Q2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJjZS0+Z3Bs YW4gaXMgTlVMTCIpOworCWVsc2UgaWYgKHBsYW4tPmlzX3ZhbGlkKQorCQllbG9nKEVSUk9SLCAi VXBkYXRlQ2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJj ZS0+Z3BsYW4tPmlzX3ZhbGlkIGlzIHRydWUiKTsKKwllbHNlIGlmIChwbGFuLT5pc19vbmVzaG90 KQorCQllbG9nKEVSUk9SLCAiVXBkYXRlQ2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3Jvbmcg Y29udGV4dDogcGxhbnNvdXJjZS0+Z3BsYW4tPmlzX29uZXNob3QgaXMgdHJ1ZSIpOworCisJLyoK KwkgKiBUaGUgcGxhbnNvdXJjZSBtaWdodCBoYXZlIGJlY29tZSBpbnZhbGlkIHNpbmNlIEdldENh Y2hlZFBsYW4oKSByZXR1cm5lZAorCSAqIHRoZSBDYWNoZWRQbGFuLiBTZWUgdGhlIGNvbW1lbnQg aW4gQnVpbGRDYWNoZWRQbGFuKCkgZm9yIGRldGFpbHMgb24gd2h5CisJICogdGhpcyBtaWdodCBo YXBwZW4uICBBbHRob3VnaCBpbnZhbGlkYXRpb24gaXMgbGlrZWx5IGEgZmFsc2UgcG9zaXRpdmUg YXMKKwkgKiBzdGF0ZWQgdGhlcmUsIHdlIG1ha2UgdGhlIHBsYW4gdmFsaWQgdG8gZW5zdXJlIHRo ZSBxdWVyeSBsaXN0IHVzZWQgZm9yCisJICogcGxhbm5pbmcgaXMgdXAgdG8gZGF0ZS4KKwkgKgor CSAqIFRoZSByaXNrIG9mIGNhdGNoaW5nIGFuIGludmFsaWRhdGlvbiBpcyBoaWdoZXIgaGVyZSB0 aGFuIHdoZW4KKwkgKiBCdWlsZENhY2hlZFBsYW4oKSBpcyBjYWxsZWQgZnJvbSBHZXRDYWNoZWRQ bGFuKCksIGJlY2F1c2UgdGhpcyBmdW5jdGlvbgorCSAqIGlzIG5vcm1hbGx5IGNhbGxlZCBsb25n IGFmdGVyIEdldENhY2hlZFBsYW4oKSByZXR1cm5zIHRoZSBDYWNoZWRQbGFuLAorCSAqIHNvIG11 Y2ggbW9yZSBwcm9jZXNzaW5nIGNvdWxkIGhhdmUgb2NjdXJyZWQgaW5jbHVkaW5nIHRoaW5ncyB0 aGF0IG1hcmsKKwkgKiB0aGUgQ2FjaGVkUGxhblNvdXJjZSBpbnZhbGlkLgorCSAqCisJICogTm90 ZTogRG8gbm90IHJlbGVhc2UgcGxhbnNvdXJjZS0+Z3BsYW4sIGJlY2F1c2UgdGhlIHVwc3RyZWFt IGNhbGxlcnMKKwkgKiAoc3VjaCBhcyB0aGUgY2FsbGVycyBvZiBFeGVjdXRvclN0YXJ0Q2FjaGVk UGxhbigpKSB3b3VsZCBzdGlsbCBiZQorCSAqIHJlZmVyZW5jaW5nIGl0LgorCSAqLworCWlmICgh cGxhbnNvdXJjZS0+aXNfdmFsaWQpCisJCXF1ZXJ5X2xpc3QgPSBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkocGxhbnNvdXJjZSwgcXVlcnlFbnYsIGZhbHNlKTsKKwlBc3NlcnQocXVlcnlfbGlzdCAhPSBO SUwpOworCisJLyoKKwkgKiBCdWlsZCBhIG5ldyBnZW5lcmljIHBsYW4gZm9yIGFsbCB0aGUgcXVl cmllcyBhZnRlciBtYWtpbmcgYSBjb3B5IHRvIGJlCisJICogc2NyaWJibGVkIG9uIGJ5IHRoZSBw bGFubmVyLgorCSAqLworCXF1ZXJ5X2xpc3QgPSBjb3B5T2JqZWN0KHF1ZXJ5X2xpc3QpOworCisJ LyoKKwkgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250 ZXh0LiAgVGhlIHJlc3VsdGluZworCSAqIFBsYW5uZWRTdG10IGlzIHRoZW4gY29waWVkIGludG8g cGxhbi0+c3RtdF9jb250ZXh0IGFmdGVyIHRocm93aW5nIGF3YXkKKwkgKiB0aGUgb2xkIG9uZXMu CisJICovCisJcGxhbl9saXN0ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5X2xpc3QsIHBsYW5zb3Vy Y2UtPnF1ZXJ5X3N0cmluZywKKwkJCQkJCQkJcGxhbnNvdXJjZS0+Y3Vyc29yX29wdGlvbnMsIE5V TEwpOworCUFzc2VydChsaXN0X2xlbmd0aChwbGFuX2xpc3QpID09IGxpc3RfbGVuZ3RoKHBsYW4t PnN0bXRfbGlzdCkpOworCisJTWVtb3J5Q29udGV4dFJlc2V0KHBsYW4tPnN0bXRfY29udGV4dCk7 CisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW4tPnN0bXRfY29udGV4dCk7CisJ Zm9yYm90aChsMSwgcGxhbl9saXN0LCBsMiwgcGxhbi0+c3RtdF9saXN0KQorCXsKKwkJUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0KGwxKTsKKworCQlsZmlyc3QobDIpID0gY29weU9i amVjdChwbGFubmVkc3RtdCk7CisJfQorCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwor CisJLyoKKwkgKiBYWFggU2hvdWxkIHRoaXMgYWxzbyAocmUpc2V0IHRoZSBwcm9wZXJ0aWVzIG9m IHRoZSBDYWNoZWRQbGFuIHRoYXQgYXJlCisJICogc2V0IGluIEJ1aWxkQ2FjaGVkUGxhbigpIGFm dGVyIGNyZWF0aW5nIHRoZSBmcmVzaCBwbGFucyBzdWNoIGFzCisJICogcGxhblJvbGVJZCwgZGVw ZW5kc09uUm9sZSwgYW5kIHNhdmVfeG1pbj8KKwkgKi8KKworCS8qCisJICogV2UndmUgdXBkYXRl ZCBhbGwgdGhlIHBsYW5zIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCBzbyBtYXJr CisJICogdGhlIENhY2hlZFBsYW4gYXMgdmFsaWQuCisJICovCisJcGxhbi0+aXNfdmFsaWQgPSB0 cnVlOworCisJLyogQWxzbyB1cGRhdGUgZ2VuZXJpY19jb3N0IGJlY2F1c2Ugd2UganVzdCBjcmVh dGVkIGEgbmV3IGdlbmVyaWMgcGxhbi4gKi8KKwlwbGFuc291cmNlLT5nZW5lcmljX2Nvc3QgPSBj YWNoZWRfcGxhbl9jb3N0KHBsYW4sIGZhbHNlKTsKKworCXJldHVybiBsaXN0X250aF9ub2RlKFBs YW5uZWRTdG10LCBwbGFuLT5zdG10X2xpc3QsIHF1ZXJ5X2luZGV4KTsKK30KKwogLyoKICAqIGNo b29zZV9jdXN0b21fcGxhbjogY2hvb3NlIHdoZXRoZXIgdG8gdXNlIGN1c3RvbSBvciBnZW5lcmlj IHBsYW4KICAqCkBAIC0xMTUzLDggKzEyOTUsMTEgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQ bGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxh biBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICog d2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBh bmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRpb24uCisgKiBP biByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkLCBidXQgbm90IGFsbCBsb2NrcyBhcmUgYWNxdWly ZWQgaWYgdGhlCisgKiByZXR1cm5lZCBwbGFuIGlzIGEgcmV1c2VkIGdlbmVyaWMgcGxhbi4gIElu IHN1Y2ggY2FzZXMsIGxvY2tzIG9uIHJlbGF0aW9ucworICogc3ViamVjdCB0byBpbml0aWFsIHJ1 bnRpbWUgcHJ1bmluZyBhcmUgbm90IHRha2VuIGJ5IENoZWNrQ2FjaGVkUGxhbigpIGJ1dAorICog ZGVmZXJyZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBzdGFydHVwIHBoYXNlLCBzcGVjaWZpY2FsbHkg d2hlbgorICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBwZXJmb3JtcyBpbml0aWFsIHBydW5pbmcu CiAgKgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2YgdGhlIHBsYW4gaGFzIGJlZW4gaW5j cmVtZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQbGFuKCkgY2FsbCBpcyBleHBlY3Rl ZC4gIElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgpAQCAtMTE4MCw3ICsxMzI1LDcgQEAgR2V0 Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJv dW5kUGFyYW1zLAogCQllbG9nKEVSUk9SLCAiY2Fubm90IGFwcGx5IFJlc291cmNlT3duZXIgdG8g bm9uLXNhdmVkIGNhY2hlZCBwbGFuIik7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHF1ZXJ5dHJlZSBs aXN0IGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHBhcnNlLXRpbWUgbG9ja3MgKi8KLQlxbGlzdCA9IFJl dmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudik7CisJcWxpc3QgPSBSZXZh bGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYsIHRydWUpOwogCiAJLyogRGVj aWRlIHdoZXRoZXIgdG8gdXNlIGEgY3VzdG9tIHBsYW4gKi8KIAljdXN0b21wbGFuID0gY2hvb3Nl X2N1c3RvbV9wbGFuKHBsYW5zb3VyY2UsIGJvdW5kUGFyYW1zKTsKQEAgLTE2NTQsNyArMTc5OSw3 IEBAIENhY2hlZFBsYW5HZXRUYXJnZXRMaXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us CiAJCXJldHVybiBOSUw7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHF1ZXJ5dHJlZSBsaXN0IGlzIHZh bGlkIGFuZCB3ZSBoYXZlIHBhcnNlLXRpbWUgbG9ja3MgKi8KLQlSZXZhbGlkYXRlQ2FjaGVkUXVl cnkocGxhbnNvdXJjZSwgcXVlcnlFbnYpOworCVJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291 cmNlLCBxdWVyeUVudiwgdHJ1ZSk7CiAKIAkvKiBHZXQgdGhlIHByaW1hcnkgc3RhdGVtZW50IGFu ZCBmaW5kIG91dCB3aGF0IGl0IHJldHVybnMgKi8KIAlwc3RtdCA9IFF1ZXJ5TGlzdEdldFByaW1h cnlTdG10KHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QpOwpAQCAtMTc3Niw3ICsxOTIxLDcgQEAgQWNx dWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJZm9yZWFj aChsYzEsIHN0bXRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCWludAkJCXJ0 aW5kZXg7CiAKIAkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkK IAkJewpAQCAtMTc5NCwxMyArMTkzOSwxNiBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpz dG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yZWFjaChs YzIsIHBsYW5uZWRzdG10LT5ydGFibGUpCisJCXJ0aW5kZXggPSAtMTsKKwkJd2hpbGUgKChydGlu ZGV4ID0gYm1zX25leHRfbWVtYmVyKHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzLAorCQkJ CQkJCQkJCSAgcnRpbmRleCkpID49IDApCiAJCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChS YW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbGlz dF9udGhfbm9kZShSYW5nZVRibEVudHJ5LAorCQkJCQkJCQkJCQkgICBwbGFubmVkc3RtdC0+cnRh YmxlLAorCQkJCQkJCQkJCQkgICBydGluZGV4IC0gMSk7CiAKLQkJCWlmICghKHJ0ZS0+cnRla2lu ZCA9PSBSVEVfUkVMQVRJT04gfHwKLQkJCQkgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZ ICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKSkKLQkJCQljb250aW51ZTsKKwkJCUFzc2VydChy dGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CisJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBS VEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpOwogCiAJCQkvKgogCQkJICog QWNxdWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiBsb2NrIG9uIGVhY2ggcmVsYXRpb24gT0lE LiBOb3RlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCAwYmUxYzJiMGZmZi4uZTM1 MjZlNzgwNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMjg0LDcgKzI4NCw4 IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJICBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCSAgTGlzdCAqc3Rt dHMsCi0JCQkJICBDYWNoZWRQbGFuICpjcGxhbikKKwkJCQkgIENhY2hlZFBsYW4gKmNwbGFuLAor CQkJCSAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIHsKIAlBc3NlcnQoUG9ydGFsSXNW YWxpZChwb3J0YWwpKTsKIAlBc3NlcnQocG9ydGFsLT5zdGF0dXMgPT0gUE9SVEFMX05FVyk7CkBA IC0yOTksNiArMzAwLDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0 YWwtPmNvbW1hbmRUYWcgPSBjb21tYW5kVGFnOwogCXBvcnRhbC0+c3RtdHMgPSBzdG10czsKIAlw b3J0YWwtPmNwbGFuID0gY3BsYW47CisJcG9ydGFsLT5wbGFuc291cmNlID0gcGxhbnNvdXJjZTsK IAlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9ERUZJTkVEOwogfQogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWlu LmgKaW5kZXggZWE3NDE5OTUxZjQuLjU3MGU3Y2FkMWZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5o CkBAIC0xMDMsOCArMTAzLDEwIEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUg KnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICpl cywgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMpOwog Ci1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIElu dG9DbGF1c2UgKmludG8sCi0JCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpx dWVyeVN0cmluZywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgICBDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLCBpbnQgcGxhbl9pbmRleCwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCisJCQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJ CSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJ CQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCQkJCSAgIGNvbnN0IEJ1 ZmZlclVzYWdlICpidWZ1c2FnZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Ry aWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRleCAyZWQyYzRiYjM3 OC4uNDE4MDYwMWRjZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIu aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTI1OCw2ICsyNTgsNyBA QCBleHRlcm4gdm9pZCBFeGVjQVNUcnVuY2F0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLAogZXh0 ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5YYWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJU cmlnZ2VyQmVnaW5RdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5 KEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckFib3J0UXVlcnkodm9p ZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJGaXJlRGVmZXJyZWQodm9pZCk7CiBleHRlcm4g dm9pZCBBZnRlclRyaWdnZXJFbmRYYWN0KGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQWZ0 ZXJUcmlnZ2VyQmVnaW5TdWJYYWN0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXgg ODZkYjNkYzhkMGQuLmJhNTMzMDVhZDQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTM1 LDYgKzM1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFy ZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkv KiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJQ2Fj aGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiB0aGF0IHN1cHBsaWVzIHRoZSBwbGFubmVk c3RtdCAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUg cXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVl cnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBS SSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2ICs1OCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5 RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlE ZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxh biwKIAkJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCQkgIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkgIFNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaAppbmRleCAzMGUyYTgyMzQ2Zi4uZDEyZTNmNDUxZDIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tv cHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAKIAogLyoKQEAgLTcy LDcgKzczLDcgQEAKIAogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4 ZWN1dG9yU3RhcnQoKSAqLwotdHlwZWRlZiB2b2lkICgqRXhlY3V0b3JTdGFydF9ob29rX3R5cGUp IChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7Cit0eXBlZGVmIGJvb2wgKCpFeGVj dXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsK IGV4dGVybiBQR0RMTElNUE9SVCBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0 X2hvb2s7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JS dW4oKSAqLwpAQCAtMTkxLDggKzE5MiwxMSBAQCBFeGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRh YmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNOdWxsKQogLyoKICAqIHBy b3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY01haW4uYwogICovCi1leHRlcm4gdm9pZCBF eGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKLWV4dGVybiB2 b2lkIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpOworZXh0ZXJuIGJvb2wgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncywKKwkJCQkJCQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsCisJCQkJCQkJCQlpbnQgcXVlcnlfaW5kZXgpOworZXh0ZXJuIGJvb2wgc3RhbmRhcmRf RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4g dm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rp b24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCkBAIC0yNTUsNiArMjU5LDMwIEBAIGV4dGVybiB2 b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRv d25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2V0VHVwbGVCb3VuZChp bnQ2NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUpOwogCisvKgorICogSXMg dGhlIENhY2hlZFBsYW4gaW4gZXNfY2FjaGVkcGxhbiBzdGlsbCB2YWxpZD8KKyAqCisgKiBDYWxs ZWQgZnJvbSBJbml0UGxhbigpIGJlY2F1c2UgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIHRoYXQgYWZm ZWN0IHRoZSBwbGFuCisgKiBtaWdodCBiZSByZWNlaXZlZCBhZnRlciBsb2NrcyBoYXZlIGJlZW4g dGFrZW4gb24gcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMuCisgKiBUaGUgY2FsbGVyIHNob3Vs ZCB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbiBpZiB0aGUgcGxhbiBoYXMgYmVjb21lIGludmFsaWQu CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZhbGlkKEVTdGF0ZSAqZXN0 YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/IHRydWUgOgor CQlDYWNoZWRQbGFuVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRwbGFuKTsKK30KKworLyoKKyAqIExv Y2tzIGFyZSBuZWVkZWQgb25seSBpZiBydW5uaW5nIGEgY2FjaGVkIHBsYW4gdGhhdCBtaWdodCBj b250YWluIHVubG9ja2VkCisgKiByZWxhdGlvbnMsIHN1Y2ggYXMgYSByZXVzZWQgZ2VuZXJpYyBw bGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNTaG91bGRMb2NrUmVsYXRpb25zKEVT dGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/ IGZhbHNlIDoKKwkJQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZyhlc3RhdGUtPmVzX2NhY2hlZHBs YW4pOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CmluZGV4IGUyZDFkYzFlMDY3Li5kODM4Yjc2YmI3ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAg LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25t ZW50LmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs dHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNsdWRl ICJ1dGlscy9zbmFwc2hvdC5oIgpAQCAtNjU3LDYgKzY1OCw3IEBAIHR5cGVkZWYgc3RydWN0IEVT dGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlz dAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJ UGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUg Ki8KKwlDYWNoZWRQbGFuICplc19jYWNoZWRwbGFuOwkvKiBDYWNoZWRQbGFuIHByb3ZpZGluZyB0 aGUgcGxhbiB0cmVlICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogTGlzdCBv ZiBQYXJ0aXRpb25QcnVuZUluZm8gKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX3N0YXRlczsJ LyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0YXRlICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVu ZV9yZXN1bHRzOwkvKiBMaXN0IG9mIEJpdG1hcHNldCAqLwpAQCAtNzA5LDYgKzcxMSw3IEBAIHR5 cGVkZWYgc3RydWN0IEVTdGF0ZQogCWludAkJCWVzX3RvcF9lZmxhZ3M7CS8qIGVmbGFncyBwYXNz ZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWludAkJCWVzX2luc3RydW1lbnQ7CS8qIE9SIG9mIElu c3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KIAlib29sCQllc19maW5pc2hlZDsJLyogdHJ1ZSB3aGVu IEV4ZWN1dG9yRmluaXNoIGlzIGRvbmUgKi8KKwlib29sCQllc19hYm9ydGVkOwkJLyogdHJ1ZSB3 aGVuIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZCAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRz OwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmgKaW5kZXggNDYwNzJkMzExYjEuLjJkODNmN2Q0OTMwIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aApAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVk ZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCisjaW5jbHVkZSAibm9k ZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1ZGUg InRjb3AvY21kdGFnLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgogI2lu Y2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCkBAIC0xMzksMTAgKzE0MSwxMSBAQCB0eXBlZGVmIHN0 cnVjdCBDYWNoZWRQbGFuU291cmNlCiAgKiBUaGUgcmVmZXJlbmNlIGNvdW50IGluY2x1ZGVzIGJv dGggdGhlIGxpbmsgZnJvbSB0aGUgcGFyZW50IENhY2hlZFBsYW5Tb3VyY2UKICAqIChpZiBhbnkp LCBhbmQgYW55IGFjdGl2ZSBwbGFuIGV4ZWN1dGlvbnMsIHNvIHRoZSBwbGFuIGNhbiBiZSBkaXNj YXJkZWQKICAqIGV4YWN0bHkgd2hlbiByZWZjb3VudCBnb2VzIHRvIHplcm8uICBCb3RoIHRoZSBz dHJ1Y3QgaXRzZWxmIGFuZCB0aGUKLSAqIHN1YnNpZGlhcnkgZGF0YSBsaXZlIGluIHRoZSBjb250 ZXh0IGRlbm90ZWQgYnkgdGhlIGNvbnRleHQgZmllbGQuCi0gKiBUaGlzIG1ha2VzIGl0IGVhc3kg dG8gZnJlZSBhIG5vLWxvbmdlci1uZWVkZWQgY2FjaGVkIHBsYW4uICAoSG93ZXZlciwKLSAqIGlm IGlzX29uZXNob3QgaXMgdHJ1ZSwgdGhlIGNvbnRleHQgZG9lcyBub3QgYmVsb25nIHNvbGVseSB0 byB0aGUgQ2FjaGVkUGxhbgotICogc28gbm8gZnJlZWluZyBpcyBwb3NzaWJsZS4pCisgKiBzdWJz aWRpYXJ5IGRhdGEsIGV4Y2VwdCB0aGUgUGxhbm5lZFN0bXRzIGluIHN0bXRfbGlzdCBsaXZlIGlu IHRoZSBjb250ZXh0CisgKiBkZW5vdGVkIGJ5IHRoZSBjb250ZXh0IGZpZWxkOyB0aGUgUGxhbm5l ZFN0bXRzIGxpdmUgaW4gdGhlIGNvbnRleHQgZGVub3RlZAorICogYnkgc3RtdF9jb250ZXh0LiAg U2VwYXJhdGUgY29udGV4dHMgbWFrZXMgaXQgZWFzeSB0byBmcmVlIGEgbm8tbG9uZ2VyLW5lZWRl ZAorICogY2FjaGVkIHBsYW4uIChIb3dldmVyLCBpZiBpc19vbmVzaG90IGlzIHRydWUsIHRoZSBj b250ZXh0IGRvZXMgbm90IGJlbG9uZworICogc29sZWx5IHRvIHRoZSBDYWNoZWRQbGFuIHNvIG5v IGZyZWVpbmcgaXMgcG9zc2libGUuKQogICovCiB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiB7 CkBAIC0xNTAsNiArMTUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhbgogCUxpc3QJICAg KnN0bXRfbGlzdDsJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJYm9vbAkJaXNfb25lc2hv dDsJCS8qIGlzIGl0IGEgIm9uZXNob3QiIHBsYW4/ICovCiAJYm9vbAkJaXNfc2F2ZWQ7CQkvKiBp cyBDYWNoZWRQbGFuIGluIGEgbG9uZy1saXZlZCBjb250ZXh0PyAqLworCWJvb2wJCWlzX3JldXNl ZDsJCS8qIGlzIGl0IGEgcmV1c2VkIGdlbmVyaWMgcGxhbj8gKi8KIAlib29sCQlpc192YWxpZDsJ CS8qIGlzIHRoZSBzdG10X2xpc3QgY3VycmVudGx5IHZhbGlkPyAqLwogCU9pZAkJCXBsYW5Sb2xl SWQ7CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdhcyBjcmVhdGVkIGZvciAqLwogCWJvb2wJCWRlcGVu ZHNPblJvbGU7CS8qIGlzIHBsYW4gc3BlY2lmaWMgdG8gdGhhdCByb2xlPyAqLwpAQCAtMTU4LDYg KzE2MiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJaW50CQkJZ2VuZXJhdGlvbjsJ CS8qIHBhcmVudCdzIGdlbmVyYXRpb24gbnVtYmVyIGZvciB0aGlzIHBsYW4gKi8KIAlpbnQJCQly ZWZjb3VudDsJCS8qIGNvdW50IG9mIGxpdmUgcmVmZXJlbmNlcyB0byB0aGlzIHN0cnVjdCAqLwog CU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIGNvbnRleHQgY29udGFpbmluZyB0aGlzIENhY2hl ZFBsYW4gKi8KKwlNZW1vcnlDb250ZXh0IHN0bXRfY29udGV4dDsgLyogY29udGV4dCBjb250YWlu aW5nIHRoZSBQbGFubmVkU3RtdHMgaW4KKwkJCQkJCQkJICogc3RtdF9saXN0LCBidXQgbm90IHRo ZSBMaXN0IGl0c2VsZiB3aGljaCBpcworCQkJCQkJCQkgKiBpbiB0aGUgYWJvdmUgY29udGV4dDsg TlVMTCBpZiBpc19vbmVzaG90IGlzCisJCQkJCQkJCSAqIHRydWUuICovCiB9IENhY2hlZFBsYW47 CiAKIC8qCkBAIC0yMjMsNiArMjMxLDEwIEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4dGVybiBQbGFubmVkU3RtdCAqVXBkYXRlQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCQkJCQkJIGludCBxdWVy eV9pbmRleCwKKwkJCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKIGV4dGVy biB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIg b3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVj ayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMjM1LDQgKzI0NywzNCBAQCBleHRl cm4gYm9vbCBDYWNoZWRQbGFuSXNTaW1wbHlWYWxpZChDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogZXh0ZXJuIENhY2hlZEV4cHJlc3Npb24gKkdldENhY2hlZEV4cHJlc3Npb24oTm9kZSAq ZXhwcik7CiBleHRlcm4gdm9pZCBGcmVlQ2FjaGVkRXhwcmVzc2lvbihDYWNoZWRFeHByZXNzaW9u ICpjZXhwcik7CiAKKy8qCisgKiBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nOiBzaG91bGQgdGhl IGV4ZWN1dG9yIGFjcXVpcmUgYWRkaXRpb25hbCBsb2Nrcz8KKyAqCisgKiBJZiB0aGUgcGxhbiBp cyBhIHNhdmVkIGdlbmVyaWMgcGxhbiwgdGhlIGV4ZWN1dG9yIG11c3QgYWNxdWlyZSBsb2NrcyBm b3IKKyAqIHJlbGF0aW9ucyB0aGF0IGFyZSBub3QgY292ZXJlZCBieSBBY3F1aXJlRXhlY3V0b3JM b2NrcygpLCBzdWNoIGFzIHBhcnRpdGlvbnMKKyAqIHRoYXQgYXJlIHN1YmplY3QgdG8gaW5pdGlh bCBydW50aW1lIHBydW5pbmcuCisgKgorICogTm90ZTogVGhlc2UgbG9ja3MgYXJlIHVubmVjZXNz YXJ5IGlmIHRoZSBwbGFuIGlzIGV4ZWN1dGVkIGltbWVkaWF0ZWx5IGFmdGVyCisgKiBpdHMgY3Jl YXRpb24sIHNpbmNlIHRoZSBwbGFubmVyIHdvdWxkIGhhdmUgYWxyZWFkeSBhY3F1aXJlZCB0aGVt LiBIb3dldmVyLAorICogd2UgZG8gbm90IG9wdGltaXplIGZvciB0aGF0IGNhc2UuCisgKi8KK3N0 YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZyhDYWNoZWRQbGFuICpj cGxhbikKK3sKKwlyZXR1cm4gIWNwbGFuLT5pc19vbmVzaG90ICYmIGNwbGFuLT5pc19yZXVzZWQ7 Cit9CisKKy8qCisgKiBDYWNoZWRQbGFuVmFsaWQKKyAqICAgICAgUmV0dXJucyB3aGV0aGVyIGEg Y2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGlsbCB2YWxpZC4KKyAqCisgKiBJbnZva2VkIGJ5IHRo ZSBleGVjdXRvciB0byBjaGVjayBpZiB0aGUgcGxhbiBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQg YWZ0ZXIKKyAqIHRha2luZyBsb2NrcyBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBw bGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5WYWxpZChDYWNoZWRQbGFu ICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiAjZW5kaWYJCQkJCQkJ LyogUExBTkNBQ0hFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggMGI2MjE0M2FmOGIuLmRkZWUwMzFm NTUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBv cnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRh dGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQ bGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBz dG10cyBhcmUgZnJvbSBvbmUgKi8KKwlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwkvKiBD YWNoZWRQbGFuU291cmNlLCBmb3IgY3BsYW4gKi8KIAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFy YW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KQEAgLTI0MCw3ICsyNDEsOCBAQCBl eHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJCQkJCSAgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJ CQkJCQkgIExpc3QgKnN0bXRzLAotCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworCQkJCQkJ CSAgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBv cnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7 CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmRhLi4zZWViMDk3 ZmRlNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZp bGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKQEAgLTgs NyArOCw4IEBAIE9CSlMgPSBcCiAJZGVsYXlfZXhlY3V0aW9uLm8KIAogSVNPTEFUSU9OID0gcGFy dGl0aW9uLWFkZGl0aW9uIFwKLQkgICAgcGFydGl0aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0aXRp b24tcmVtb3ZhbC0xIFwKKwkJY2FjaGVkLXBsYW4taW52YWwKIAogaWZkZWYgVVNFX1BHWFMKIFBH X0NPTkZJRyA9IHBnX2NvbmZpZwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9l eGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1 dGlvbi9kZWxheV9leGVjdXRpb24uYwppbmRleCA3YmM5N2Y4NGExYy4uYWQyMmJjOWYyYTggMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlv bi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlv bi5jCkBAIC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9l eGVjdXRpb24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2lu ZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNl IGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5 IHRvIHRlc3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1 cnJlbnQKKyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0 YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkg bG9jay4gIElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ss IHRoZQogICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBp cyByZWxlYXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93 cyBhbiBpc29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9y cyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQK LSAqIGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5Lgor ICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4g YW5vdGhlciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJz aW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhl IHBsYW5uZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAq IEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgog ICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNp bmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVy LmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5o IgpAQCAtMzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5 IGxvY2sgSUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBp bnQJcG9zdF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUg YSBnb29kIGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdv b2QgY2l0aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29r ID0gTlVMTDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3Rh cnRfaG9vayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUg dGhlIGRlc2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0NSBAQCBkZWxheV9leGVjdXRpb25f cGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4g cmVzdWx0OwogfQogCisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0 aGUgZGVzaXJlZCBkZWxheSAqLworc3RhdGljIGJvb2wKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRv clN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCWJvb2wJCXBsYW5f dmFsaWQ7CisKKwkvKiBJZiBlbmFibGVkLCBkZWxheSBieSB0YWtpbmcgYW5kIHJlbGVhc2luZyB0 aGUgc3BlY2lmaWVkIGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQor CXsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV9sb2NrX2ludDgsCisJCQkJCQkJ SW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKwkJRGlyZWN0 RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV91bmxvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERh dHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCisJCS8qCisJCSAqIEVuc3Vy ZSB0aGF0IHdlIG5vdGljZSBhbnkgcGVuZGluZyBpbnZhbGlkYXRpb25zLCBzaW5jZSB0aGUgYWR2 aXNvcnkKKwkJICogbG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8gdGhpcy4KKwkJICovCisJCUFjY2Vw dEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJfQorCisJLyogTm93IHN0YXJ0IHRoZSBleGVjdXRv ciwgcG9zc2libHkgdmlhIGEgcHJldmlvdXMgaG9vayB1c2VyICovCisJaWYgKHByZXZfRXhlY3V0 b3JTdGFydF9ob29rKQorCQlwbGFuX3ZhbGlkID0gcHJldl9FeGVjdXRvclN0YXJ0X2hvb2socXVl cnlEZXNjLCBlZmxhZ3MpOworCWVsc2UKKwkJcGxhbl92YWxpZCA9IHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQg IT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBs YW4gaXMgJXMiLAorCQkJIHBsYW5fdmFsaWQgPyAidmFsaWQiIDogIm5vdCB2YWxpZCIpOworCisJ cmV0dXJuIHBsYW5fdmFsaWQ7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2b2lk CiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hpY2gg bG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2NrIGlz IHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBvc3Rf cGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8g YmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlzYWJs ZXMgdGhlIGRlbGF5LiIsCkBAIC04Nyw5ICsxMjgsMjIgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJ CQlOVUxMLAogCQkJCQkJCU5VTEwpOwogCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5 X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2 aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1 dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVj dXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJ CQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJ CQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwog Ci0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXBy ZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4 ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFy dF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0 YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhw ZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVj dXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi40NDRlMDZiNDNlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91 dApAQCAtMCwwICsxLDI1MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcCBzMmxvY2sgczFleGVjIHMyZHJvcGkgczJ1bmxv Y2sKK3N0ZXAgczFwcmVwOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFu OworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZPUiBV UERBVEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMb2NrUm93cyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMg UmVtb3ZlZDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBJbmRleCBT Y2FuIHVzaW5nIGZvbzFfMV9hIG9uIGZvbzFfMSBmb29fMQorICAgICAgICAgICAgICBJbmRleCBD b25kOiAoYSA9ICQxKSAgICAgICAgICAgICAgICAgICAKKyg1IHJvd3MpCisKK3N0ZXAgczJsb2Nr OiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBM T0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzFfMV9hOwor c3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZp c29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK3N0ZXAgczFleGVjOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hl ZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBl bmQgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMiAg ICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMV8xIGZvb18xCisgICAgICAgICAg ICAgIEZpbHRlcjogKGEgPSAkMSkgICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMxcHJlcDIgczJsb2NrIHMxZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXBy ZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBB UkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOworczE6IE5PVElDRTogIEZpbmlz aGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGZvbzFfMV9h IG9uIGZvbzFfMSBmb29fMSAgICAKKyAgICAgICAgSW5kZXggQ29uZDogKGEgPSBBTlkgKEFSUkFZ W29uZSgpLCB0d28oKV0pKQorICAtPiAgU2VxIFNjYW4gb24gZm9vMV8yIGZvb18yICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkp KSAgICAgICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsK KwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czJkcm9waTogRFJPUCBJTkRFWCBmb28xXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19h ZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0t LS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IDwuLi4g Y29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6 IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor QXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxhbnMg UmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28x XzEgZm9vXzEgICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAo YSA9IHR3bygpKSkKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzFfMiBmb29fMiAgICAgICAgICAgICAg CisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorKDYgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMyBzMmxvY2sgczFleGVjMyBzMmRyb3Bp IHMydW5sb2NrCitzdGVwIHMxcHJlcDM6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5l cmljX3BsYW47CisJCSAgUFJFUEFSRSBxMyBBUyBVUERBVEUgZm9vdiBTRVQgYSA9IGEgV0hFUkUg YSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cTM7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFu IGlzIHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmVzdGVkIExvb3AgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBlbmQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3Vi cGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGZvbzFfMV9hIG9uIGZvbzFfMSBmb29fMSAg ICAgCisgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZIChBUlJBWVtvbmUoKSwgdHdv KCldKSkgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzFfMiBmb29fMiAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBP UiAoYSA9IHR3bygpKSkgICAgICAgICAgICAgCisgIC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24gYmFyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGJhcjEgYmFyXzEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgTmVzdGVkIExvb3AgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBB cHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBmb28xXzFfYSBvbiBmb28xXzEg Zm9vXzEgICAgCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZIChBUlJB WVtvbmUoKSwgdHdvKCldKSkKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzFfMiBm b29fMiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgCisgICAgICAgIC0+ICBNYXRlcmlhbGl6 ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg LT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9IG9uZSgpKSAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24gZm9vICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzFfMSBmb29f MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9v MV8yIGZvb18yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBB cHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBmb28xXzFfYSBvbiBmb28xXzEg Zm9vXzEgICAgICAgICAgCisgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZIChBUlJB WVtvbmUoKSwgdHdvKCldKSkgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzFfMiBm b29fMiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgICAgCisoMzcgcm93cykKKworc3Rl cCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xv Y2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBz MWV4ZWMzOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24u ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikg RVhFQ1VURSBxMzsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzFf MV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5P VElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAor czE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxp ZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitOZXN0ZWQgTG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xXzEgZm9vXzEgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygp KSkgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzFfMiBmb29fMiAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdv KCkpKSAgICAgIAorICAtPiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmFyMSBiYXJfMSAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9IG9uZSgpKSAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGJhciAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGJhcjEgYmFyXzEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgIC0+ICBOZXN0ZWQgTG9vcCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28x XzEgZm9vXzEgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9 IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzFfMiBmb29fMiAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKChh ID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorICAgICAgICAtPiAgTWF0ZXJpYWxpemUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEFwcGVuZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFN1YnBsYW5z IFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gYmFyMSBiYXJfMSAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg RmlsdGVyOiAoYSA9IG9uZSgpKSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzFfMSBmb29f MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28xXzIgZm9v XzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVt b3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBmb28xXzEgZm9vXzEgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0 ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIGZvbzFfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIEZp bHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorKDM3IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDQgczJsb2NrIHMxZXhlYzQgczJkcm9waSBzMnVu bG9jaworc3RlcCBzMXByZXA0OiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19w bGFuOworCQkgIFBSRVBBUkUgcTQgQVMgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MSkgV0hFUkUgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZPUiBVUERB VEUpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7CitzMTogTk9USUNF OiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgIE9uZS1UaW1lIEZpbHRlcjogKEluaXRQbGFuIDEpLmNvbDEgICAgICAgICAg ICAgICAgICAgICAgICAgCisgIEluaXRQbGFuIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExvY2tSb3dzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgLT4gIEFwcGVuZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU3VicGxh bnMgUmVtb3ZlZDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg LT4gIEluZGV4IFNjYW4gdXNpbmcgZm9vMV8xX2Egb24gZm9vMV8xIGZvb18xCisgICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSAkMSkgICAgICAgICAgICAgICAgICAgCisgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyAgICAgICAgICAgICAgICAgICAgICAg CisoOSByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUp OworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VU IGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRy b3BpOiBEUk9QIElOREVYIGZvbzFfMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlz b3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0t LQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjNDogPC4uLiBjb21w bGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFu IGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2Fj aGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZXN1 bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBPbmUtVGltZSBGaWx0 ZXI6IChJbml0UGxhbiAxKS5jb2wxICAgICAgICAKKyAgSW5pdFBsYW4gMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExvY2tSb3dzICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgCisgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGZvbzFfMSBmb29fMQorICAgICAgICAgICAgICAgICAgICAgIEZp bHRlcjogKGEgPSAkMSkgICAgICAKKyAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2Vy aWVzICAgICAgCisoOSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L21lc29uLmJ1aWxkCmluZGV4IGI1MzQ4OGY3NmQyLi41ODE1OWJmYzU3NCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQKQEAgLTI0LDYgKzI0LDcgQEAg dGVzdHMgKz0gewogICAgICdzcGVjcyc6IFsKICAgICAgICdwYXJ0aXRpb24tYWRkaXRpb24nLAog ICAgICAgJ3BhcnRpdGlvbi1yZW1vdmFsLTEnLAorICAgICAgJ2NhY2hlZC1wbGFuLWludmFsJywK ICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVj dXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFsLnNwZWMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYwY2YwNmY5MDYwCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwu c3BlYwpAQCAtMCwwICsxLDg2IEBACisjIFRlc3QgdG8gY2hlY2sgdGhhdCBpbnZhbGlkYXRpb24g b2YgY2FjaGVkIGdlbmVyaWMgcGxhbnMgZHVyaW5nIEV4ZWN1dG9yU3RhcnQKKyMgaXMgY29ycmVj dGx5IGRldGVjdGVkIGNhdXNpbmcgYW4gdXBkYXRlZCBwbGFuIHRvIGJlIHJlLWV4ZWN1dGVkLgor CitzZXR1cAoreworICBDUkVBVEUgVEFCTEUgZm9vIChhIGludCwgYiB0ZXh0KSBQQVJUSVRJT04g QlkgUkFOR0UgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBW QUxVRVMgRlJPTSAoTUlOVkFMVUUpIFRPICgzKSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworICBD UkVBVEUgVEFCTEUgZm9vMV8xIFBBUlRJVElPTiBPRiBmb28xIEZPUiBWQUxVRVMgRlJPTSAoTUlO VkFMVUUpIFRPICgyKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzFfMiBQQVJUSVRJT04gT0YgZm9vMSBG T1IgVkFMVUVTIEZST00gKDIpIFRPICgzKTsKKyAgQ1JFQVRFIElOREVYIGZvbzFfMV9hIE9OIGZv bzFfMSAoYSk7CisgIENSRUFURSBUQUJMRSBmb28yIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVF UyBGUk9NICgzKSBUTyAoTUFYVkFMVUUpOworICBJTlNFUlQgSU5UTyBmb28gU0VMRUNUIGdlbmVy YXRlX3NlcmllcygtMTAwMCwgMTAwMCk7CisgIENSRUFURSBWSUVXIGZvb3YgQVMgU0VMRUNUICog RlJPTSBmb287CisgIENSRUFURSBGVU5DVElPTiBvbmUgKCkgUkVUVVJOUyBpbnQgQVMgJCQgQkVH SU4gUkVUVVJOIDE7IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7CisgIENSRUFURSBG VU5DVElPTiB0d28gKCkgUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOIDI7IEVORDsgJCQg TEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7CisgIENSRUFURSBUQUJMRSBiYXIgKGEgaW50LCBiIHRl eHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUgYmFyMSBQQVJUSVRJT04g T0YgYmFyIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggT04gYmFyMShhKTsKKyAg Q1JFQVRFIFRBQkxFIGJhcjIgUEFSVElUSU9OIE9GIGJhciBGT1IgVkFMVUVTIElOICgyKTsKKyAg Q1JFQVRFIFJVTEUgdXBkYXRlX2ZvbyBBUyBPTiBVUERBVEUgVE8gZm9vIERPIEFMU08gVVBEQVRF IGJhciBTRVQgYSA9IGEgV0hFUkUgYSA9IG9uZSgpOworICBDUkVBVEUgUlVMRSB1cGRhdGVfYmFy IEFTIE9OIFVQREFURSBUTyBiYXIgRE8gQUxTTyBTRUxFQ1QgMTsKKyAgQU5BTFlaRTsKK30KKwor dGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgUlVMRSB1cGRhdGVfZm9vIE9O IGZvbzsKKyAgRFJPUCBUQUJMRSBmb28sIGJhcjsKKyAgRFJPUCBGVU5DVElPTiBvbmUoKSwgdHdv KCk7Cit9CisKK3Nlc3Npb24gInMxIgorc3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJP TSBmb292IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikg RVhFQ1VURSBxICgxKTsgfQorCitzdGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9k ZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00g Zm9vdiBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4gKENPU1RTIE9G RikgRVhFQ1VURSBxMjsgfQorCitzdGVwICJzMXByZXAzIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9k ZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEzIEFTIFVQREFURSBmb292IFNF VCBhID0gYSBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4gKENPU1RT IE9GRikgRVhFQ1VURSBxMzsgfQorCitzdGVwICJzMXByZXA0IiAgIHsgU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHE0IEFTIFNFTEVDVCAqIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpIFdIRVJFIEVYSVNUUyAoU0VMRUNUICogRlJPTSBmb292 IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNV VEUgcTQgKDEpOyB9CisKK3N0ZXAgInMxZXhlYyIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOwor CQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1Owor CQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQorc3RlcCAiczFleGVjMiIJ eyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0 b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxMjsgfQorc3RlcCAiczFleGVjMyIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNF VCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorc3RlcCAiczFleGVjNCIJeyBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7 IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xv Y2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2Nr KDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9QIElOREVYIGZvbzFfMV9hOyB9CisKKyMg SW4gYWxsIHBlcm11dGF0aW9ucyBiZWxvdywgd2hpbGUgInMxZXhlYyIsICJzMWV4ZWMyIiwgZXRj LiB3YWl0IHRvCisjIGFjcXVpcmUgdGhlIGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGRyb3BzIHRo ZSBpbmRleCBiZWluZyB1c2VkIGluIHRoZQorIyBjYWNoZWQgcGxhbi4gV2hlbiAiczFleGVjIiBh bmQgb3RoZXJzIGFyZSB1bmJsb2NrZWQgYW5kIGJlZ2luIGluaXRpYWxpemluZworIyB0aGUgcGxh biwgaW5jbHVkaW5nIGFjcXVpcmluZyBuZWNlc3NhcnkgbG9ja3Mgb24gcGFydGl0aW9ucywgdGhl IGNvbmN1cnJlbnQKKyMgaW5kZXggZHJvcCBpcyBkZXRlY3RlZC4gVGhpcyBjYXVzZXMgcGxhbiBp bml0aWFsaXphdGlvbiB0byBiZSBhYm9ydGVkLAorIyBwcm9tcHRpbmcgdGhlIGNhbGxlciB0byBy ZXRyeSB3aXRoIGEgbmV3IHBsYW4uCisKKyMgQ2FzZSB3aXRoIHJ1bnRpbWUgcHJ1bmluZyB1c2lu ZyBFWFRFUk4gcGFyYW1ldGVyCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVj IiAiczJkcm9waSIgInMydW5sb2NrIgorCisjIENhc2Ugd2l0aCBydW50aW1lIHBydW5pbmcgdXNp bmcgc3RhYmxlIGZ1bmN0aW9uCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMxZXhl YzIiICJzMmRyb3BpIiAiczJ1bmxvY2siCisKKyMgQ2FzZSB3aXRoIGEgcnVsZSBhZGRpbmcgYW5v dGhlciBxdWVyeSBjYXVzaW5nIHRoZSBDYWNoZWRQbGFuIHRvIGNvbnRhaW4KKyMgbXVsdGlwbGUg UGxhbm5lZFN0bXRzCitwZXJtdXRhdGlvbiAiczFwcmVwMyIgInMybG9jayIgInMxZXhlYzMiICJz MmRyb3BpIiAiczJ1bmxvY2siCisKKyMgQ2FzZSB3aXRoIHJ1bi10aW1lIHBydW5pbmcgaW5zaWRl IGEgc3VicXVlcnkKK3Blcm11dGF0aW9uICJzMXByZXA0IiAiczJsb2NrIiAiczFleGVjNCIgInMy ZHJvcGkiICJzMnVubG9jayIKLS0gCjIuNDMuMAoK --00000000000075a425062df09987--